diff --git a/accessible/base/Logging.cpp b/accessible/base/Logging.cpp index f345cc3bcdc..ab1dc0f89da 100644 --- a/accessible/base/Logging.cpp +++ b/accessible/base/Logging.cpp @@ -45,14 +45,16 @@ static ModuleRep sModuleMap[] = { { "events", logging::eEvents }, { "platforms", logging::ePlatforms }, - { "stack", logging::eStack }, { "text", logging::eText }, { "tree", logging::eTree }, { "DOMEvents", logging::eDOMEvents }, { "focus", logging::eFocus }, { "selection", logging::eSelection }, - { "notifications", logging::eNotifications } + { "notifications", logging::eNotifications }, + + { "stack", logging::eStack }, + { "verbose", logging::eVerbose } }; static void @@ -606,6 +608,61 @@ logging::SelChange(nsISelection* aSelection, DocAccessible* aDocument, Stack(); } +void +logging::TreeInfo(const char* aMsg, uint32_t aExtraFlags, ...) +{ + if (IsEnabledAll(logging::eTree | aExtraFlags)) { + MsgBegin("TREE", aMsg); + + va_list vl; + va_start(vl, aExtraFlags); + const char* descr = nullptr; + while ((descr = va_arg(vl, const char*))) { + AccessibleInfo(descr, va_arg(vl, Accessible*)); + } + va_end(vl); + + MsgEnd(); + + if (aExtraFlags & eStack) { + Stack(); + } + } +} + +void +logging::TreeInfo(const char* aMsg, uint32_t aExtraFlags, + const char* aMsg1, Accessible* aAcc, + const char* aMsg2, nsINode* aNode) +{ + if (IsEnabledAll(logging::eTree | logging::eVerbose)) { + MsgBegin("TREE", aMsg); + AccessibleInfo(aMsg1, aAcc); + Accessible* acc = aAcc->Document()->GetAccessible(aNode); + if (acc) { + AccessibleInfo(aMsg2, acc); + } + else { + Node(aMsg2, aNode); + } + MsgEnd(); + } +} + + +void +logging::TreeInfo(const char* aMsg, uint32_t aExtraFlags, Accessible* aParent) +{ + if (IsEnabledAll(logging::eTree | aExtraFlags)) { + MsgBegin("TREE", aMsg); + AccessibleInfo("container", aParent); + for (uint32_t idx = 0; idx < aParent->ChildCount(); idx++) { + AccessibleInfo("child", aParent->GetChildAt(idx)); + } + MsgEnd(); + } +} + void logging::MsgBegin(const char* aTitle, const char* aMsgText, ...) { @@ -736,6 +793,62 @@ logging::Document(DocAccessible* aDocument) printf("\n"); } +void +logging::AccessibleInfo(const char* aDescr, Accessible* aAccessible) +{ + printf(" %s: %p; ", aDescr, static_cast(aAccessible)); + if (!aAccessible) { + printf("\n"); + return; + } + if (aAccessible->IsDefunct()) { + printf("defunct\n"); + return; + } + if (!aAccessible->Document() || aAccessible->Document()->IsDefunct()) { + printf("document is shutting down, no info\n"); + return; + } + + nsAutoString role; + GetAccService()->GetStringRole(aAccessible->Role(), role); + printf("role: %s", NS_ConvertUTF16toUTF8(role).get()); + + nsAutoString name; + aAccessible->Name(name); + if (!name.IsEmpty()) { + printf(", name: '%s'", NS_ConvertUTF16toUTF8(name).get()); + } + + printf(", idx: %d", aAccessible->IndexInParent()); + + nsINode* node = aAccessible->GetNode(); + if (!node) { + printf(", node: null\n"); + } + else if (node->IsNodeOfType(nsINode::eDOCUMENT)) { + printf(", document node: %p\n", static_cast(node)); + } + else if (node->IsNodeOfType(nsINode::eTEXT)) { + printf(", text node: %p\n", static_cast(node)); + } + else if (node->IsElement()) { + dom::Element* el = node->AsElement(); + + nsAutoCString tag; + el->NodeInfo()->NameAtom()->ToUTF8String(tag); + + nsIAtom* idAtom = el->GetID(); + nsAutoCString id; + if (idAtom) { + idAtom->ToUTF8String(id); + } + + printf(", element node: %p, %s@id='%s'\n", + static_cast(el), tag.get(), id.get()); + } +} + void logging::AccessibleNNode(const char* aDescr, Accessible* aAccessible) { @@ -814,6 +927,12 @@ logging::IsEnabled(uint32_t aModules) return sModules & aModules; } +bool +logging::IsEnabledAll(uint32_t aModules) +{ + return (sModules & aModules) == aModules; +} + bool logging::IsEnabled(const nsAString& aModuleStr) { diff --git a/accessible/base/Logging.h b/accessible/base/Logging.h index 09fc7767ee2..43d0ed63c23 100644 --- a/accessible/base/Logging.h +++ b/accessible/base/Logging.h @@ -35,14 +35,17 @@ enum EModules { eEvents = 1 << 3, ePlatforms = 1 << 4, - eStack = 1 << 5, - eText = 1 << 6, - eTree = 1 << 7, + eText = 1 << 5, + eTree = 1 << 6, - eDOMEvents = 1 << 8, - eFocus = 1 << 9, - eSelection = 1 << 10, - eNotifications = eDOMEvents | eSelection | eFocus + eDOMEvents = 1 << 7, + eFocus = 1 << 8, + eSelection = 1 << 9, + eNotifications = eDOMEvents | eSelection | eFocus, + + // extras + eStack = 1 << 10, + eVerbose = 1 << 11 }; /** @@ -50,6 +53,11 @@ enum EModules { */ bool IsEnabled(uint32_t aModules); +/** + * Return true if all of the given modules are logged. + */ +bool IsEnabledAll(uint32_t aModules); + /** * Return true if the given module is logged. */ @@ -121,6 +129,15 @@ void FocusDispatched(Accessible* aTarget); void SelChange(nsISelection* aSelection, DocAccessible* aDocument, int16_t aReason); +/** + * Log the given accessible elements info. + */ +void TreeInfo(const char* aMsg, uint32_t aExtraFlags, ...); +void TreeInfo(const char* aMsg, uint32_t aExtraFlags, + const char* aMsg1, Accessible* aAcc, + const char* aMsg2, nsINode* aNode); +void TreeInfo(const char* aMsg, uint32_t aExtraFlags, Accessible* aParent); + /** * Log the message ('title: text' format) on new line. Print the start and end * boundaries of the message body designated by '{' and '}' (2 spaces indent for @@ -164,6 +181,7 @@ void Document(DocAccessible* aDocument); /** * Log the accessible and its DOM node as a message entry. */ +void AccessibleInfo(const char* aDescr, Accessible* aAccessible); void AccessibleNNode(const char* aDescr, Accessible* aAccessible); void AccessibleNNode(const char* aDescr, nsINode* aNode); @@ -189,7 +207,8 @@ void Enable(const nsAFlatCString& aModules); */ void CheckEnv(); -} // namespace logs +} // namespace logging + } // namespace a11y } // namespace mozilla diff --git a/accessible/generic/Accessible.h b/accessible/generic/Accessible.h index 1c700f86ce9..d7996f6611a 100644 --- a/accessible/generic/Accessible.h +++ b/accessible/generic/Accessible.h @@ -590,6 +590,7 @@ public: HyperTextAccessible* AsHyperText(); bool IsHTMLBr() const { return mType == eHTMLBRType; } + bool IsHTMLCaption() const { return mType == eHTMLCaptionType; } bool IsHTMLCombobox() const { return mType == eHTMLComboboxType; } bool IsHTMLFileInput() const { return mType == eHTMLFileInputType; } diff --git a/accessible/html/HTMLTableAccessible.cpp b/accessible/html/HTMLTableAccessible.cpp index 5a8de9ff0bc..04bb744897f 100644 --- a/accessible/html/HTMLTableAccessible.cpp +++ b/accessible/html/HTMLTableAccessible.cpp @@ -393,24 +393,14 @@ NS_IMPL_ISUPPORTS_INHERITED0(HTMLTableAccessible, Accessible) //////////////////////////////////////////////////////////////////////////////// // HTMLTableAccessible: Accessible -void -HTMLTableAccessible::CacheChildren() +bool +HTMLTableAccessible::InsertChildAt(uint32_t aIndex, Accessible* aChild) { // Move caption accessible so that it's the first child. Check for the first // caption only, because nsAccessibilityService ensures we don't create // accessibles for the other captions, since only the first is actually // visible. - TreeWalker walker(this, mContent); - - Accessible* child = nullptr; - while ((child = walker.Next())) { - if (child->Role() == roles::CAPTION) { - InsertChildAt(0, child); - while ((child = walker.Next()) && AppendChild(child)); - break; - } - AppendChild(child); - } + return Accessible::InsertChildAt(aChild->IsHTMLCaption() ? 0 : aIndex, aChild); } role diff --git a/accessible/html/HTMLTableAccessible.h b/accessible/html/HTMLTableAccessible.h index 5bef8e00d40..4bab484962d 100644 --- a/accessible/html/HTMLTableAccessible.h +++ b/accessible/html/HTMLTableAccessible.h @@ -157,12 +157,13 @@ public: virtual already_AddRefed NativeAttributes() override; virtual Relation RelationByType(RelationType aRelationType) override; + bool InsertChildAt(uint32_t aIndex, Accessible* aChild) override; + protected: virtual ~HTMLTableAccessible() {} // Accessible virtual ENameValueFlag NativeName(nsString& aName) override; - virtual void CacheChildren() override; // HTMLTableAccessible @@ -209,7 +210,7 @@ class HTMLCaptionAccessible : public HyperTextAccessibleWrap { public: HTMLCaptionAccessible(nsIContent* aContent, DocAccessible* aDoc) : - HyperTextAccessibleWrap(aContent, aDoc) { } + HyperTextAccessibleWrap(aContent, aDoc) { mType = eHTMLCaptionType; } // Accessible virtual a11y::role NativeRole() override; diff --git a/accessible/tests/mochitest/treeupdate/a11y.ini b/accessible/tests/mochitest/treeupdate/a11y.ini index bdb1b957017..e9294409873 100644 --- a/accessible/tests/mochitest/treeupdate/a11y.ini +++ b/accessible/tests/mochitest/treeupdate/a11y.ini @@ -29,6 +29,7 @@ skip-if = buildapp == "mulet" [test_recreation.html] [test_select.html] [test_shutdown.xul] +[test_table.html] [test_textleaf.html] [test_visibility.html] [test_whitespace.html] diff --git a/accessible/tests/mochitest/treeupdate/test_table.html b/accessible/tests/mochitest/treeupdate/test_table.html new file mode 100644 index 00000000000..abadefdb028 --- /dev/null +++ b/accessible/tests/mochitest/treeupdate/test_table.html @@ -0,0 +1,81 @@ + + + + Table update tests + + + + + + + + + + + +

+ +
+  
+ + + + + + +
cell1cell2
+ + diff --git a/b2g/chrome/content/settings.js b/b2g/chrome/content/settings.js index 17864c29721..7f0a6b80415 100644 --- a/b2g/chrome/content/settings.js +++ b/b2g/chrome/content/settings.js @@ -650,7 +650,6 @@ var settingsToObserve = { 'dom.mozApps.signed_apps_installable_from': 'https://marketplace.firefox.com', 'dom.presentation.discovery.enabled': false, 'dom.presentation.discoverable': false, - 'dom.serviceWorkers.interception.enabled': true, 'dom.serviceWorkers.testing.enabled': false, 'gfx.layerscope.enabled': false, 'layers.draw-borders': false, diff --git a/b2g/components/test/mochitest/test_aboutserviceworkers.html b/b2g/components/test/mochitest/test_aboutserviceworkers.html index b239bf41c8a..d30e58f4f65 100644 --- a/b2g/components/test/mochitest/test_aboutserviceworkers.html +++ b/b2g/components/test/mochitest/test_aboutserviceworkers.html @@ -210,7 +210,6 @@ function setup() { ["dom.serviceWorkers.exemptFromPerDomainMax", true], ["dom.serviceWorkers.enabled", true], ["dom.serviceWorkers.testing.enabled", true], - ["dom.serviceWorkers.interception.enabled", true] ]}, () => { SpecialPowers.pushPermissions([ { "type": "webapps-manage", "allow": 1, "context": document }, diff --git a/b2g/installer/package-manifest.in b/b2g/installer/package-manifest.in index cf98e6481a7..cced5bbfe41 100644 --- a/b2g/installer/package-manifest.in +++ b/b2g/installer/package-manifest.in @@ -792,18 +792,6 @@ @RESPATH@/res/table-remove-row-active.gif @RESPATH@/res/table-remove-row-hover.gif @RESPATH@/res/table-remove-row.gif -@RESPATH@/res/accessiblecaret.png -@RESPATH@/res/accessiblecaret@1.5x.png -@RESPATH@/res/accessiblecaret@2.25x.png -@RESPATH@/res/accessiblecaret@2x.png -@RESPATH@/res/accessiblecaret_tilt_left.png -@RESPATH@/res/accessiblecaret_tilt_left@1.5x.png -@RESPATH@/res/accessiblecaret_tilt_left@2.25x.png -@RESPATH@/res/accessiblecaret_tilt_left@2x.png -@RESPATH@/res/accessiblecaret_tilt_right.png -@RESPATH@/res/accessiblecaret_tilt_right@1.5x.png -@RESPATH@/res/accessiblecaret_tilt_right@2.25x.png -@RESPATH@/res/accessiblecaret_tilt_right@2x.png @RESPATH@/res/grabber.gif #ifdef XP_MACOSX @RESPATH@/res/cursors/* diff --git a/browser/app/profile/firefox.js b/browser/app/profile/firefox.js index a5aa5b0a843..32f4c694531 100644 --- a/browser/app/profile/firefox.js +++ b/browser/app/profile/firefox.js @@ -1635,7 +1635,6 @@ pref("reader.errors.includeURLs", true); pref("view_source.tab", true); pref("dom.serviceWorkers.enabled", true); -pref("dom.serviceWorkers.interception.enabled", true); pref("dom.serviceWorkers.openWindow.enabled", true); pref("dom.webnotifications.serviceworker.enabled", true); diff --git a/browser/components/sessionstore/SessionStorage.jsm b/browser/components/sessionstore/SessionStorage.jsm index fb15fda18ce..2b94edf0704 100644 --- a/browser/components/sessionstore/SessionStorage.jsm +++ b/browser/components/sessionstore/SessionStorage.jsm @@ -108,7 +108,8 @@ var SessionStorageInternal = { let principal; try { - let attrs = ChromeUtils.createOriginAttributesWithUserContextId(origin, aDocShell.userContextId); + let attrs = ChromeUtils.createDefaultOriginAttributes(); + attrs.userContextId = aDocShell.userContextId; let originURI = Services.io.newURI(origin, null, null); principal = Services.scriptSecurityManager.createCodebasePrincipal(originURI, attrs); } catch (e) { diff --git a/browser/installer/package-manifest.in b/browser/installer/package-manifest.in index 9f026b5bdeb..95045bb3b6f 100644 --- a/browser/installer/package-manifest.in +++ b/browser/installer/package-manifest.in @@ -735,18 +735,6 @@ @RESPATH@/res/table-remove-row-active.gif @RESPATH@/res/table-remove-row-hover.gif @RESPATH@/res/table-remove-row.gif -@RESPATH@/res/accessiblecaret.png -@RESPATH@/res/accessiblecaret@1.5x.png -@RESPATH@/res/accessiblecaret@2.25x.png -@RESPATH@/res/accessiblecaret@2x.png -@RESPATH@/res/accessiblecaret_tilt_left.png -@RESPATH@/res/accessiblecaret_tilt_left@1.5x.png -@RESPATH@/res/accessiblecaret_tilt_left@2.25x.png -@RESPATH@/res/accessiblecaret_tilt_left@2x.png -@RESPATH@/res/accessiblecaret_tilt_right.png -@RESPATH@/res/accessiblecaret_tilt_right@1.5x.png -@RESPATH@/res/accessiblecaret_tilt_right@2.25x.png -@RESPATH@/res/accessiblecaret_tilt_right@2x.png @RESPATH@/res/grabber.gif #ifdef XP_MACOSX @RESPATH@/res/cursors/* diff --git a/caps/tests/unit/test_origin.js b/caps/tests/unit/test_origin.js index 9290a2b13fd..3236df092ad 100644 --- a/caps/tests/unit/test_origin.js +++ b/caps/tests/unit/test_origin.js @@ -33,9 +33,28 @@ function checkOriginAttributes(prin, attrs, suffix) { } else { checkThrows(() => ssm.createCodebasePrincipalFromOrigin(prin.origin)); } +} - do_check_eq(ChromeUtils.createOriginAttributesWithUserContextId("http://example.org", 2).userContextId, 2); - do_check_eq(ChromeUtils.createOriginAttributesWithUserContextId("https://www.example.com:123^userContextId=4", 2).userContextId, 2); +// utility function useful for debugging +function printAttrs(name, attrs) { + do_print(name + " {\n" + + "\tappId: " + attrs.appId + ",\n" + + "\tuserContextId: " + attrs.userContextId + ",\n" + + "\tinBrowser: " + attrs.inBrowser + ",\n" + + "\taddonId: '" + attrs.addonId + "',\n" + + "\tsignedPkg: '" + attrs.signedPkg + "'\n}"); +} + + +function checkValues(attrs, values) { + values = values || {}; + //printAttrs("attrs", attrs); + //printAttrs("values", values); + do_check_eq(attrs.appId, values.appId || 0); + do_check_eq(attrs.userContextId, values.userContextId || 0); + do_check_eq(attrs.inBrowser, values.inBrowser || false); + do_check_eq(attrs.addonId, values.addonId || ''); + do_check_eq(attrs.signedPkg, values.signedPkg || ''); } function run_test() { @@ -177,4 +196,83 @@ function run_test() { checkKind(ssm.createCodebasePrincipal(makeURI('http://www.example.com'), {}), 'codebasePrincipal'); checkKind(ssm.createExpandedPrincipal([ssm.createCodebasePrincipal(makeURI('http://www.example.com'), {})]), 'expandedPrincipal'); checkKind(ssm.getSystemPrincipal(), 'systemPrincipal'); + + // + // Test Origin Attribute Manipulation + // + + // check that we can create an empty origin attributes dict with default + // members and values. + emptyAttrs = ChromeUtils.createDefaultOriginAttributes(); + checkValues(emptyAttrs); + + var uri = "http://example.org"; + var tests = [ + [ "", {} ], + [ "^appId=5", {appId: 5} ], + [ "^userContextId=3", {userContextId: 3} ], + [ "^addonId=fooBar", {addonId: "fooBar"} ], + [ "^inBrowser=1", {inBrowser: true} ], + [ "^signedPkg=bazQux", {signedPkg: "bazQux"} ], + [ "^appId=3&inBrowser=1&userContextId=6", + {appId: 3, userContextId: 6, inBrowser: true} ] ]; + + // check that we can create an origin attributes from an origin properly + tests.forEach(function(t) { + let attrs = ChromeUtils.createOriginAttributesFromOrigin(uri + t[0]); + checkValues(attrs, t[1]); + do_check_eq(ChromeUtils.originAttributesToSuffix(attrs), t[0]); + }); + + // check that we can create an origin attributes from a dict properly + tests.forEach(function(t) { + let attrs = ChromeUtils.createOriginAttributesFromDict(t[1]); + checkValues(attrs, t[1]); + do_check_eq(ChromeUtils.originAttributesToSuffix(attrs), t[0]); + }); + + // each row in the set_tests array has these values: + // [0] - the suffix used to create an origin attribute from + // [1] - the expected result of creating an origin attribute from [0] + // [2] - the pattern to set on the origin attributes + // [3] - the expected result of setting [2] values on [1] + // [4] - the expected result of creating a suffix from [3] + var set_tests = [ + [ "", {}, {appId: 5}, {appId: 5}, "^appId=5" ], + [ "^appId=5", {appId: 5}, {appId: 3}, {appId: 3}, "^appId=3" ], + [ "^appId=5", {appId: 5}, {userContextId: 3}, {appId: 5, userContextId: 3}, "^appId=5&userContextId=3" ], + [ "^appId=5", {appId: 5}, {appId: 3, userContextId: 7}, {appId: 3, userContextId: 7}, "^appId=3&userContextId=7" ] ]; + + // check that we can set origin attributes values properly + set_tests.forEach(function(t) { + let orig = ChromeUtils.createOriginAttributesFromOrigin(uri + t[0]); + checkValues(orig, t[1]); + let mod = orig; + for (var key in t[2]) { + mod[key] = t[2][key]; + } + checkValues(mod, t[3]); + do_check_eq(ChromeUtils.originAttributesToSuffix(mod), t[4]); + }); + + // each row in the dflt_tests array has these values: + // [0] - the suffix used to create an origin attribute from + // [1] - the expected result of creating an origin attributes from [0] + // [2] - the expected result after setting userContextId to the default + // [3] - the expected result of creating a suffix from [2] + var dflt_tests = [ + [ "", {}, {}, "" ], + [ "^userContextId=3", {userContextId: 3}, {}, "" ], + [ "^appId=5", {appId: 5}, {appId: 5}, "^appId=5" ], + [ "^appId=5&userContextId=3", {appId: 5, userContextId: 3}, {appId: 5}, "^appId=5" ] ]; + + // check that we can set the userContextId to default properly + dflt_tests.forEach(function(t) { + let orig = ChromeUtils.createOriginAttributesFromOrigin(uri + t[0]); + checkValues(orig, t[1]); + let mod = orig; + mod['userContextId'] = 0; + checkValues(mod, t[2]); + do_check_eq(ChromeUtils.originAttributesToSuffix(mod), t[3]); + }); } diff --git a/config/rules.mk b/config/rules.mk index e40e1792b5d..d6fad629473 100644 --- a/config/rules.mk +++ b/config/rules.mk @@ -1158,18 +1158,6 @@ ifneq (,$(DIST_SUBDIR)$(XPI_NAME)) PREF_DIR = defaults/preferences endif -################################################################################ -# Copy each element of AUTOCFG_JS_EXPORTS to $(FINAL_TARGET)/defaults/autoconfig - -ifneq ($(AUTOCFG_JS_EXPORTS),) -ifndef NO_DIST_INSTALL -AUTOCFG_JS_EXPORTS_FILES := $(AUTOCFG_JS_EXPORTS) -AUTOCFG_JS_EXPORTS_DEST := $(FINAL_TARGET)/defaults/autoconfig -AUTOCFG_JS_EXPORTS_TARGET := export -INSTALL_TARGETS += AUTOCFG_JS_EXPORTS -endif -endif - ################################################################################ # SDK diff --git a/devtools/client/aboutdebugging/test/browser_service_workers.js b/devtools/client/aboutdebugging/test/browser_service_workers.js index f45b60cfd58..a559d9cae0e 100644 --- a/devtools/client/aboutdebugging/test/browser_service_workers.js +++ b/devtools/client/aboutdebugging/test/browser_service_workers.js @@ -16,6 +16,7 @@ const TAB_URL = HTTP_ROOT + "service-workers/empty-sw.html"; add_task(function* () { yield new Promise(done => { let options = {"set": [ + ["dom.serviceWorkers.enabled", true], ["dom.serviceWorkers.testing.enabled", true], ]}; SpecialPowers.pushPrefEnv(options, done); diff --git a/devtools/client/locales/en-US/markers.properties b/devtools/client/locales/en-US/markers.properties index c463cb03e49..bdf354a233a 100644 --- a/devtools/client/locales/en-US/markers.properties +++ b/devtools/client/locales/en-US/markers.properties @@ -32,6 +32,7 @@ marker.label.cycleCollection=Cycle Collection marker.label.cycleCollection.forgetSkippable=CC Graph Reduction marker.label.timestamp=Timestamp marker.label.worker=Worker +marker.label.messagePort=MessagePort marker.label.unknown=Unknown # LOCALIZATION NOTE (marker.label.javascript.*): @@ -82,6 +83,9 @@ marker.worker.serializeDataOffMainThread=Serialize data in Worker marker.worker.serializeDataOnMainThread=Serialize data on the main thread marker.worker.deserializeDataOffMainThread=Deserialize data in Worker marker.worker.deserializeDataOnMainThread=Deserialize data on the main thread +# The type of operation performed by a MessagePort +marker.messagePort.serializeData=Serialize data +marker.messagePort.deserializeData=Deserialize data # Strings used in the waterfall sidebar as values. marker.value.unknownFrame= diff --git a/devtools/client/performance/modules/logic/marker-formatters.js b/devtools/client/performance/modules/logic/marker-formatters.js index 1acca0bf835..15e7c09beff 100644 --- a/devtools/client/performance/modules/logic/marker-formatters.js +++ b/devtools/client/performance/modules/logic/marker-formatters.js @@ -147,6 +147,13 @@ const Formatters = { [L10N.getStr("marker.field.type")]: L10N.getStr(`marker.worker.${marker.workerOperation}`) }; + }, + + MessagePortFields: function(marker) { + return { + [L10N.getStr("marker.field.type")]: + L10N.getStr(`marker.messagePort.${marker.messagePortOperation}`) + }; } }; diff --git a/devtools/client/performance/modules/markers.js b/devtools/client/performance/modules/markers.js index a927aa74874..4757801549c 100644 --- a/devtools/client/performance/modules/markers.js +++ b/devtools/client/performance/modules/markers.js @@ -147,6 +147,12 @@ const TIMELINE_BLUEPRINT = { label: L10N.getStr("marker.label.worker"), fields: Formatters.WorkerFields }, + "MessagePort": { + group: 1, + colorName: "graphs-orange", + label: L10N.getStr("marker.label.messagePort"), + fields: Formatters.MessagePortFields + }, /* Group 2 - User Controlled */ "ConsoleTime": { diff --git a/devtools/client/responsive.html/index.css b/devtools/client/responsive.html/index.css index 7e78f734a6d..728cefff6d5 100644 --- a/devtools/client/responsive.html/index.css +++ b/devtools/client/responsive.html/index.css @@ -105,7 +105,7 @@ body { } .viewport-rotate-button { - mask-image: url("./images/rotate-viewport.svg"); + mask: url("./images/rotate-viewport.svg"); } /** diff --git a/devtools/shared/webconsole/test/test_console_serviceworker.html b/devtools/shared/webconsole/test/test_console_serviceworker.html index 75bc0946594..5dee68481ca 100644 --- a/devtools/shared/webconsole/test/test_console_serviceworker.html +++ b/devtools/shared/webconsole/test/test_console_serviceworker.html @@ -56,6 +56,7 @@ let startTest = Task.async(function*() { yield new Promise(resolve => { SpecialPowers.pushPrefEnv({"set": [ + ["dom.serviceWorkers.enabled", true], ["devtools.webconsole.filter.serviceworkers", true] ]}, resolve); }); diff --git a/devtools/shared/webconsole/test/test_console_serviceworker_cached.html b/devtools/shared/webconsole/test/test_console_serviceworker_cached.html index 3fbd8dffd48..5aab64d7ff9 100644 --- a/devtools/shared/webconsole/test/test_console_serviceworker_cached.html +++ b/devtools/shared/webconsole/test/test_console_serviceworker_cached.html @@ -49,6 +49,7 @@ let startTest = Task.async(function*() { yield new Promise(resolve => { SpecialPowers.pushPrefEnv({"set": [ + ["dom.serviceWorkers.enabled", true], ["devtools.webconsole.filter.serviceworkers", true] ]}, resolve); }); diff --git a/docshell/base/nsDocShell.cpp b/docshell/base/nsDocShell.cpp index 36f1b1cf950..b766dc6aae4 100644 --- a/docshell/base/nsDocShell.cpp +++ b/docshell/base/nsDocShell.cpp @@ -14157,11 +14157,6 @@ nsDocShell::ShouldPrepareForIntercept(nsIURI* aURI, bool aIsNonSubresourceReques bool* aShouldIntercept) { *aShouldIntercept = false; - // Preffed off. - if (!nsContentUtils::ServiceWorkerInterceptionEnabled()) { - return NS_OK; - } - // No in private browsing if (mInPrivateBrowsing) { return NS_OK; diff --git a/docshell/base/timeline/AbstractTimelineMarker.h b/docshell/base/timeline/AbstractTimelineMarker.h index 5fde6631da2..516b44eb0b6 100644 --- a/docshell/base/timeline/AbstractTimelineMarker.h +++ b/docshell/base/timeline/AbstractTimelineMarker.h @@ -30,12 +30,12 @@ private: void operator=(const AbstractTimelineMarker& aOther) = delete; public: - explicit AbstractTimelineMarker(const char* aName, - MarkerTracingType aTracingType); + AbstractTimelineMarker(const char* aName, + MarkerTracingType aTracingType); - explicit AbstractTimelineMarker(const char* aName, - const TimeStamp& aTime, - MarkerTracingType aTracingType); + AbstractTimelineMarker(const char* aName, + const TimeStamp& aTime, + MarkerTracingType aTracingType); virtual ~AbstractTimelineMarker(); diff --git a/docshell/base/timeline/AutoTimelineMarker.h b/docshell/base/timeline/AutoTimelineMarker.h index e8a335a60d0..47bb25046a9 100644 --- a/docshell/base/timeline/AutoTimelineMarker.h +++ b/docshell/base/timeline/AutoTimelineMarker.h @@ -38,8 +38,8 @@ class MOZ_RAII AutoTimelineMarker RefPtr mDocShell; public: - explicit AutoTimelineMarker(nsIDocShell* aDocShell, const char* aName - MOZ_GUARD_OBJECT_NOTIFIER_PARAM); + AutoTimelineMarker(nsIDocShell* aDocShell, + const char* aName MOZ_GUARD_OBJECT_NOTIFIER_PARAM); ~AutoTimelineMarker(); AutoTimelineMarker(const AutoTimelineMarker& aOther) = delete; diff --git a/docshell/base/timeline/CompositeTimelineMarker.h b/docshell/base/timeline/CompositeTimelineMarker.h index 571f5d7a30e..45faefbd629 100644 --- a/docshell/base/timeline/CompositeTimelineMarker.h +++ b/docshell/base/timeline/CompositeTimelineMarker.h @@ -15,8 +15,8 @@ namespace mozilla { class CompositeTimelineMarker : public TimelineMarker { public: - explicit CompositeTimelineMarker(const TimeStamp& aTime, - MarkerTracingType aTracingType) + CompositeTimelineMarker(const TimeStamp& aTime, + MarkerTracingType aTracingType) : TimelineMarker("Composite", aTime, aTracingType) { // Even though these markers end up being created on the main thread in the diff --git a/docshell/base/timeline/ConsoleTimelineMarker.h b/docshell/base/timeline/ConsoleTimelineMarker.h index 39036494957..f397830c2da 100644 --- a/docshell/base/timeline/ConsoleTimelineMarker.h +++ b/docshell/base/timeline/ConsoleTimelineMarker.h @@ -15,8 +15,8 @@ namespace mozilla { class ConsoleTimelineMarker : public TimelineMarker { public: - explicit ConsoleTimelineMarker(const nsAString& aCause, - MarkerTracingType aTracingType) + ConsoleTimelineMarker(const nsAString& aCause, + MarkerTracingType aTracingType) : TimelineMarker("ConsoleTime", aTracingType) , mCause(aCause) { diff --git a/docshell/base/timeline/EventTimelineMarker.h b/docshell/base/timeline/EventTimelineMarker.h index 74dfb5e5c07..095bc528e9b 100644 --- a/docshell/base/timeline/EventTimelineMarker.h +++ b/docshell/base/timeline/EventTimelineMarker.h @@ -15,9 +15,9 @@ namespace mozilla { class EventTimelineMarker : public TimelineMarker { public: - explicit EventTimelineMarker(const nsAString& aType, - uint16_t aPhase, - MarkerTracingType aTracingType) + EventTimelineMarker(const nsAString& aType, + uint16_t aPhase, + MarkerTracingType aTracingType) : TimelineMarker("DOMEvent", aTracingType) , mType(aType) , mPhase(aPhase) diff --git a/docshell/base/timeline/JavascriptTimelineMarker.h b/docshell/base/timeline/JavascriptTimelineMarker.h index 124dc82612b..0214857d39b 100644 --- a/docshell/base/timeline/JavascriptTimelineMarker.h +++ b/docshell/base/timeline/JavascriptTimelineMarker.h @@ -17,13 +17,13 @@ namespace mozilla { class JavascriptTimelineMarker : public TimelineMarker { public: - explicit JavascriptTimelineMarker(const char* aReason, - const char16_t* aFunctionName, - const char16_t* aFileName, - uint32_t aLineNumber, - MarkerTracingType aTracingType, - JS::Handle aAsyncStack, - JS::Handle aAsyncCause) + JavascriptTimelineMarker(const char* aReason, + const char16_t* aFunctionName, + const char16_t* aFileName, + uint32_t aLineNumber, + MarkerTracingType aTracingType, + JS::Handle aAsyncStack, + JS::Handle aAsyncCause) : TimelineMarker("Javascript", aTracingType, MarkerStackRequest::NO_STACK) , mCause(NS_ConvertUTF8toUTF16(aReason)) , mFunctionName(aFunctionName) diff --git a/docshell/base/timeline/MessagePortTimelineMarker.h b/docshell/base/timeline/MessagePortTimelineMarker.h new file mode 100644 index 00000000000..f578cf128be --- /dev/null +++ b/docshell/base/timeline/MessagePortTimelineMarker.h @@ -0,0 +1,47 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=8 sts=2 et sw=2 tw=80: */ +/* 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/. */ + +#ifndef mozilla_MessagePortTimelineMarker_h_ +#define mozilla_MessagePortTimelineMarker_h_ + +#include "TimelineMarker.h" +#include "mozilla/dom/ProfileTimelineMarkerBinding.h" + +namespace mozilla { + +class MessagePortTimelineMarker : public TimelineMarker +{ +public: + MessagePortTimelineMarker(dom::ProfileTimelineMessagePortOperationType aOperationType, + MarkerTracingType aTracingType) + : TimelineMarker("MessagePort", aTracingType, MarkerStackRequest::NO_STACK) + , mOperationType(aOperationType) + {} + + virtual UniquePtr Clone() override + { + MessagePortTimelineMarker* clone = + new MessagePortTimelineMarker(mOperationType, GetTracingType()); + clone->SetCustomTime(GetTime()); + return UniquePtr(clone); + } + + virtual void AddDetails(JSContext* aCx, dom::ProfileTimelineMarker& aMarker) override + { + TimelineMarker::AddDetails(aCx, aMarker); + + if (GetTracingType() == MarkerTracingType::START) { + aMarker.mMessagePortOperation.Construct(mOperationType); + } + } + +private: + dom::ProfileTimelineMessagePortOperationType mOperationType; +}; + +} // namespace mozilla + +#endif /* mozilla_MessagePortTimelineMarker_h_ */ diff --git a/docshell/base/timeline/RestyleTimelineMarker.h b/docshell/base/timeline/RestyleTimelineMarker.h index fcc37b05d85..71055b08e58 100644 --- a/docshell/base/timeline/RestyleTimelineMarker.h +++ b/docshell/base/timeline/RestyleTimelineMarker.h @@ -15,8 +15,8 @@ namespace mozilla { class RestyleTimelineMarker : public TimelineMarker { public: - explicit RestyleTimelineMarker(nsRestyleHint aRestyleHint, - MarkerTracingType aTracingType) + RestyleTimelineMarker(nsRestyleHint aRestyleHint, + MarkerTracingType aTracingType) : TimelineMarker("Styles", aTracingType) { if (aRestyleHint) { diff --git a/docshell/base/timeline/TimelineMarker.h b/docshell/base/timeline/TimelineMarker.h index 468d95d9c12..2e0b4dd0210 100644 --- a/docshell/base/timeline/TimelineMarker.h +++ b/docshell/base/timeline/TimelineMarker.h @@ -18,14 +18,14 @@ namespace mozilla { class TimelineMarker : public AbstractTimelineMarker { public: - explicit TimelineMarker(const char* aName, - MarkerTracingType aTracingType, - MarkerStackRequest aStackRequest = MarkerStackRequest::STACK); + TimelineMarker(const char* aName, + MarkerTracingType aTracingType, + MarkerStackRequest aStackRequest = MarkerStackRequest::STACK); - explicit TimelineMarker(const char* aName, - const TimeStamp& aTime, - MarkerTracingType aTracingType, - MarkerStackRequest aStackRequest = MarkerStackRequest::STACK); + TimelineMarker(const char* aName, + const TimeStamp& aTime, + MarkerTracingType aTracingType, + MarkerStackRequest aStackRequest = MarkerStackRequest::STACK); virtual void AddDetails(JSContext* aCx, dom::ProfileTimelineMarker& aMarker) override; virtual JSObject* GetStack() override; diff --git a/docshell/base/timeline/WorkerTimelineMarker.h b/docshell/base/timeline/WorkerTimelineMarker.h index 2b2b6950030..ae24066f56d 100644 --- a/docshell/base/timeline/WorkerTimelineMarker.h +++ b/docshell/base/timeline/WorkerTimelineMarker.h @@ -15,8 +15,8 @@ namespace mozilla { class WorkerTimelineMarker : public TimelineMarker { public: - explicit WorkerTimelineMarker(ProfileTimelineWorkerOperationType aOperationType, - MarkerTracingType aTracingType) + WorkerTimelineMarker(ProfileTimelineWorkerOperationType aOperationType, + MarkerTracingType aTracingType) : TimelineMarker("Worker", aTracingType, MarkerStackRequest::NO_STACK) , mOperationType(aOperationType) {} diff --git a/docshell/base/timeline/moz.build b/docshell/base/timeline/moz.build index a0462bf3bd2..23ba5d0f628 100644 --- a/docshell/base/timeline/moz.build +++ b/docshell/base/timeline/moz.build @@ -15,6 +15,7 @@ EXPORTS.mozilla += [ 'JavascriptTimelineMarker.h', 'LayerTimelineMarker.h', 'MarkersStorage.h', + 'MessagePortTimelineMarker.h', 'ObservedDocShell.h', 'RestyleTimelineMarker.h', 'TimelineConsumers.h', diff --git a/docshell/build/nsDocShellModule.cpp b/docshell/build/nsDocShellModule.cpp index 18dd0402c68..1e62e147947 100644 --- a/docshell/build/nsDocShellModule.cpp +++ b/docshell/build/nsDocShellModule.cpp @@ -179,9 +179,7 @@ const mozilla::Module::ContractIDEntry kDocShellContracts[] = { { NS_ABOUT_MODULE_CONTRACTID_PREFIX "neterror", &kNS_ABOUT_REDIRECTOR_MODULE_CID }, { NS_ABOUT_MODULE_CONTRACTID_PREFIX "networking", &kNS_ABOUT_REDIRECTOR_MODULE_CID }, { NS_ABOUT_MODULE_CONTRACTID_PREFIX "newaddon", &kNS_ABOUT_REDIRECTOR_MODULE_CID }, -#ifdef NIGHTLY_BUILD { NS_ABOUT_MODULE_CONTRACTID_PREFIX "performance", &kNS_ABOUT_REDIRECTOR_MODULE_CID }, -#endif { NS_ABOUT_MODULE_CONTRACTID_PREFIX "plugins", &kNS_ABOUT_REDIRECTOR_MODULE_CID }, { NS_ABOUT_MODULE_CONTRACTID_PREFIX "serviceworkers", &kNS_ABOUT_REDIRECTOR_MODULE_CID }, #ifndef ANDROID diff --git a/dom/base/ChromeUtils.cpp b/dom/base/ChromeUtils.cpp index d80499d2426..73903478b02 100644 --- a/dom/base/ChromeUtils.cpp +++ b/dom/base/ChromeUtils.cpp @@ -50,7 +50,7 @@ ThreadSafeChromeUtils::NondeterministicGetWeakSetKeys(GlobalObject& aGlobal, } } - /* static */ void +/* static */ void ChromeUtils::OriginAttributesToSuffix(dom::GlobalObject& aGlobal, const dom::OriginAttributesDictionary& aAttrs, nsCString& aSuffix) @@ -71,11 +71,17 @@ ChromeUtils::OriginAttributesMatchPattern(dom::GlobalObject& aGlobal, } /* static */ void -ChromeUtils::CreateOriginAttributesWithUserContextId(dom::GlobalObject& aGlobal, - const nsAString& aOrigin, - uint32_t aUserContextId, - dom::OriginAttributesDictionary& aAttrs, - ErrorResult& aRv) +ChromeUtils::CreateDefaultOriginAttributes(dom::GlobalObject& aGlobal, + dom::OriginAttributesDictionary& aAttrs) +{ + aAttrs = GenericOriginAttributes(); +} + +/* static */ void +ChromeUtils::CreateOriginAttributesFromOrigin(dom::GlobalObject& aGlobal, + const nsAString& aOrigin, + dom::OriginAttributesDictionary& aAttrs, + ErrorResult& aRv) { GenericOriginAttributes attrs; nsAutoCString suffix; @@ -83,11 +89,18 @@ ChromeUtils::CreateOriginAttributesWithUserContextId(dom::GlobalObject& aGlobal, aRv.Throw(NS_ERROR_FAILURE); return; } - - attrs.mUserContextId = aUserContextId; aAttrs = attrs; } +/* static */ void +ChromeUtils::CreateOriginAttributesFromDict(dom::GlobalObject& aGlobal, + const dom::OriginAttributesDictionary& aAttrs, + dom::OriginAttributesDictionary& aNewAttrs) +{ + aNewAttrs = aAttrs; +} + + /* static */ bool ChromeUtils::IsOriginAttributesEqual(dom::GlobalObject& aGlobal, const dom::OriginAttributesDictionary& aA, diff --git a/dom/base/ChromeUtils.h b/dom/base/ChromeUtils.h index 4df8f86d685..3378dac3af4 100644 --- a/dom/base/ChromeUtils.h +++ b/dom/base/ChromeUtils.h @@ -59,11 +59,19 @@ public: const dom::OriginAttributesPatternDictionary& aPattern); static void - CreateOriginAttributesWithUserContextId(dom::GlobalObject& aGlobal, - const nsAString& aOrigin, - uint32_t aUserContextId, - dom::OriginAttributesDictionary& aAttrs, - ErrorResult& aRv); + CreateDefaultOriginAttributes(dom::GlobalObject& aGlobal, + dom::OriginAttributesDictionary& aAttrs); + + static void + CreateOriginAttributesFromOrigin(dom::GlobalObject& aGlobal, + const nsAString& aOrigin, + dom::OriginAttributesDictionary& aAttrs, + ErrorResult& aRv); + + static void + CreateOriginAttributesFromDict(dom::GlobalObject& aGlobal, + const dom::OriginAttributesDictionary& aAttrs, + dom::OriginAttributesDictionary& aNewAttrs); static bool IsOriginAttributesEqual(dom::GlobalObject& aGlobal, diff --git a/dom/base/StructuredCloneHolder.cpp b/dom/base/StructuredCloneHolder.cpp index 3540a00adc9..f0da5380931 100644 --- a/dom/base/StructuredCloneHolder.cpp +++ b/dom/base/StructuredCloneHolder.cpp @@ -295,6 +295,7 @@ StructuredCloneHolder::Read(nsISupports* aParent, { MOZ_ASSERT_IF(mSupportedContext == SameProcessSameThread, mCreationThread == NS_GetCurrentThread()); + MOZ_ASSERT(aParent); mozilla::AutoRestore guard(mParent); mParent = aParent; @@ -1044,9 +1045,11 @@ StructuredCloneHolder::CustomReadTransferHandler(JSContext* aCx, MOZ_ASSERT(aExtraData < mPortIdentifiers.Length()); const MessagePortIdentifier& portIdentifier = mPortIdentifiers[aExtraData]; + nsCOMPtr global = do_QueryInterface(mParent); + ErrorResult rv; RefPtr port = - MessagePort::Create(mParent, portIdentifier, rv); + MessagePort::Create(global, portIdentifier, rv); if (NS_WARN_IF(rv.Failed())) { return false; } diff --git a/dom/base/nsContentUtils.cpp b/dom/base/nsContentUtils.cpp index 7a5448ba483..e3fcbb7d026 100644 --- a/dom/base/nsContentUtils.cpp +++ b/dom/base/nsContentUtils.cpp @@ -274,7 +274,6 @@ bool nsContentUtils::sEncodeDecodeURLHash = false; bool nsContentUtils::sGettersDecodeURLHash = false; bool nsContentUtils::sPrivacyResistFingerprinting = false; bool nsContentUtils::sSendPerformanceTimingNotifications = false; -bool nsContentUtils::sSWInterceptionEnabled = false; uint32_t nsContentUtils::sHandlingInputTimeout = 1000; @@ -569,10 +568,6 @@ nsContentUtils::Init() Preferences::AddBoolVarCache(&sPrivacyResistFingerprinting, "privacy.resistFingerprinting", false); - Preferences::AddBoolVarCache(&sSWInterceptionEnabled, - "dom.serviceWorkers.interception.enabled", - false); - Preferences::AddUintVarCache(&sHandlingInputTimeout, "dom.event.handling-user-input-time-limit", 1000); @@ -1754,8 +1749,7 @@ nsContentUtils::ParseLegacyFontSize(const nsAString& aValue) bool nsContentUtils::IsControlledByServiceWorker(nsIDocument* aDocument) { - if (!ServiceWorkerInterceptionEnabled() || - nsContentUtils::IsInPrivateBrowsing(aDocument)) { + if (nsContentUtils::IsInPrivateBrowsing(aDocument)) { return false; } diff --git a/dom/base/nsContentUtils.h b/dom/base/nsContentUtils.h index f0b47f48d80..e2a48e2cde3 100644 --- a/dom/base/nsContentUtils.h +++ b/dom/base/nsContentUtils.h @@ -1996,14 +1996,6 @@ public: return sSendPerformanceTimingNotifications; } - /* - * Returns true if ServiceWorker Interception is enabled by pref. - */ - static bool ServiceWorkerInterceptionEnabled() - { - return sSWInterceptionEnabled; - } - /* * Returns true if the frame timing APIs are enabled. */ @@ -2706,7 +2698,6 @@ private: static bool sGettersDecodeURLHash; static bool sPrivacyResistFingerprinting; static bool sSendPerformanceTimingNotifications; - static bool sSWInterceptionEnabled; static uint32_t sCookiesLifetimePolicy; static uint32_t sCookiesBehavior; diff --git a/dom/canvas/test/test_offscreencanvas_serviceworker.html b/dom/canvas/test/test_offscreencanvas_serviceworker.html index 923e9e7facf..887b94fc6da 100644 --- a/dom/canvas/test/test_offscreencanvas_serviceworker.html +++ b/dom/canvas/test/test_offscreencanvas_serviceworker.html @@ -43,7 +43,6 @@ SpecialPowers.pushPrefEnv({'set': [ ['gfx.offscreencanvas.enabled', true], ['webgl.force-enabled', true], ["dom.serviceWorkers.exemptFromPerDomainMax", true], - ["dom.serviceWorkers.interception.enabled", true], ["dom.serviceWorkers.enabled", true], ["dom.serviceWorkers.testing.enabled", true] ]}, runTest); diff --git a/dom/events/test/test_bug238987.html b/dom/events/test/test_bug238987.html index 3aa05b4d2c1..814b0596b9f 100644 --- a/dom/events/test/test_bug238987.html +++ b/dom/events/test/test_bug238987.html @@ -31,16 +31,6 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=238987 // but the last blur event goes to i1, not "begin". var expectedWindowBlurCount = forwardFocusArray.length + backwardFocusArray.length + 3; - // accessibility.tabfocus must be set to value 7 before running test also - // on a mac. - function setOrRestoreTabFocus(newValue) { - if (!newValue) { - SpecialPowers.clearUserPref("accessibility.tabfocus"); - } else { - SpecialPowers.setIntPref("accessibility.tabfocus", newValue); - } - } - function handleFocus(e) { if (e.target.id == "begin") { // if the modifier is set, the test is coming back from the end. @@ -128,7 +118,6 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=238987 "|window| didn't get the right amount of blur events"); // Cleanup - setOrRestoreTabFocus(0); window.removeEventListener("focus", handleWindowFocus, true); window.removeEventListener("focus", handleWindowFocus, false); window.removeEventListener("blur", handleWindowBlur, true); @@ -166,9 +155,10 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=238987 tab(); } + // accessibility.tabfocus must be set to value 7 before running test also + // on a mac. function doTest() { - setOrRestoreTabFocus(7); - setTimeout(start, 0); + SpecialPowers.pushPrefEnv({"set": [["accessibility.tabfocus", 7]]}, start); } SimpleTest.waitForExplicitFinish(); diff --git a/dom/events/test/test_bug409604.html b/dom/events/test/test_bug409604.html index cd3af13abc2..ec714ab64b7 100644 --- a/dom/events/test/test_bug409604.html +++ b/dom/events/test/test_bug409604.html @@ -90,15 +90,6 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=409604 "tr" ]; - // ui.key.contentAccess must be set to value 5 before running the test. - function setOrRestoreContentAccess(newValue) { - if (!newValue) { - SpecialPowers.clearUserPref("ui.key.contentAccess"); - } else { - SpecialPowers.setIntPref("ui.key.contentAccess", newValue); - } - } - function handleFocus(e) { ok("accessKey" in e, "(focus) accesskey property not found on element"); var expected = focusArray.shift(); @@ -218,17 +209,14 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=409604 function start() { testFocusableElements(); testUnfocusableElements(); - setOrRestoreContentAccess(0); SimpleTest.finish(); } function doTest() { - setOrRestoreContentAccess(5); - setTimeout(start, 100); + SpecialPowers.pushPrefEnv({"set": [["ui.key.contentAccess", 5]]}, start); } SimpleTest.waitForExplicitFinish(); - SimpleTest.requestFlakyTimeout("untriaged"); addLoadEvent(doTest); diff --git a/dom/events/test/test_bug457672.html b/dom/events/test/test_bug457672.html index 89e344ab63f..b3dc5bcb355 100644 --- a/dom/events/test/test_bug457672.html +++ b/dom/events/test/test_bug457672.html @@ -21,19 +21,10 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=457672 var windowBlurCount = 0; -function setUserPref(reset) { - if (reset) { - SpecialPowers.clearUserPref("browser.link.open_newwindow"); - } else { - SpecialPowers.setIntPref("browser.link.open_newwindow", 3); - } -} - function listener(evt) { if (evt.type == "focus") { is(windowBlurCount, 1, "Window should have got blur event when opening a new tab!"); - setUserPref(true); document.getElementsByTagName("a")[0].focus(); SimpleTest.finish(); } else if (evt.type == "blur") { @@ -43,13 +34,14 @@ function listener(evt) { } function startTest() { - setUserPref(false); - document.getElementsByTagName("a")[0].focus(); - // Note, focus/blur don't bubble - window.addEventListener("focus", listener, false); - window.addEventListener("blur", listener, false); - var subwin = window.open("about:blank", "", ""); - subwin.addEventListener("focus", function(e) { subwin.close(); }, false); + SpecialPowers.pushPrefEnv({"set": [["browser.link.open_newwindow", 3]]}, function() { + document.getElementsByTagName("a")[0].focus(); + // Note, focus/blur don't bubble + window.addEventListener("focus", listener, false); + window.addEventListener("blur", listener, false); + var subwin = window.open("about:blank", "", ""); + subwin.addEventListener("focus", function(e) { subwin.close(); }, false); + }); } addLoadEvent(startTest); diff --git a/dom/events/test/test_moz_mouse_pixel_scroll_event.html b/dom/events/test/test_moz_mouse_pixel_scroll_event.html index 25c7bb94340..c2919ce44dd 100644 --- a/dom/events/test/test_moz_mouse_pixel_scroll_event.html +++ b/dom/events/test/test_moz_mouse_pixel_scroll_event.html @@ -45,7 +45,7 @@ diff --git a/dom/events/test/window_bug659071.html b/dom/events/test/window_bug659071.html index a012b883010..5fb2efed46c 100644 --- a/dom/events/test/window_bug659071.html +++ b/dom/events/test/window_bug659071.html @@ -10,7 +10,7 @@ diff --git a/dom/workers/test/serviceworkers/test_eventsource_intercept.html b/dom/workers/test/serviceworkers/test_eventsource_intercept.html index ab384158fda..55df62bb7ba 100644 --- a/dom/workers/test/serviceworkers/test_eventsource_intercept.html +++ b/dom/workers/test/serviceworkers/test_eventsource_intercept.html @@ -95,8 +95,6 @@ ["dom.serviceWorkers.exemptFromPerDomainMax", true], ["dom.serviceWorkers.enabled", true], ["dom.serviceWorkers.testing.enabled", true], - ["dom.serviceWorkers.interception.enabled", true], - ["dom.serviceWorkers.interception.opaque.enabled", true], ["dom.caches.enabled", true], ]}, runTest); diff --git a/dom/workers/test/serviceworkers/test_fetch_event.html b/dom/workers/test/serviceworkers/test_fetch_event.html index 5c21c3183e0..764be87b131 100644 --- a/dom/workers/test/serviceworkers/test_fetch_event.html +++ b/dom/workers/test/serviceworkers/test_fetch_event.html @@ -73,8 +73,6 @@ SimpleTest.waitForExplicitFinish(); SpecialPowers.pushPrefEnv({"set": [ ["dom.serviceWorkers.exemptFromPerDomainMax", true], - ["dom.serviceWorkers.interception.enabled", true], - ["dom.serviceWorkers.interception.opaque.enabled", true], ["dom.serviceWorkers.enabled", true], ["dom.serviceWorkers.testing.enabled", true], ]}, runTest); diff --git a/dom/workers/test/serviceworkers/test_file_blob_upload.html b/dom/workers/test/serviceworkers/test_file_blob_upload.html index 5410d65e645..30a31eb7e85 100644 --- a/dom/workers/test/serviceworkers/test_file_blob_upload.html +++ b/dom/workers/test/serviceworkers/test_file_blob_upload.html @@ -135,7 +135,6 @@ SimpleTest.waitForExplicitFinish(); SpecialPowers.pushPrefEnv({"set": [ ["dom.serviceWorkers.exemptFromPerDomainMax", true], - ["dom.serviceWorkers.interception.enabled", true], ["dom.serviceWorkers.enabled", true], ["dom.serviceWorkers.testing.enabled", true] ]}, runTest); diff --git a/dom/workers/test/serviceworkers/test_force_refresh.html b/dom/workers/test/serviceworkers/test_force_refresh.html index e39330e5a34..05caf0e6ac4 100644 --- a/dom/workers/test/serviceworkers/test_force_refresh.html +++ b/dom/workers/test/serviceworkers/test_force_refresh.html @@ -74,7 +74,6 @@ SimpleTest.waitForExplicitFinish(); SpecialPowers.pushPrefEnv({"set": [ ["dom.serviceWorkers.exemptFromPerDomainMax", true], - ["dom.serviceWorkers.interception.enabled", true], ["dom.serviceWorkers.enabled", true], ["dom.serviceWorkers.testing.enabled", true], ["dom.caches.enabled", true], diff --git a/dom/workers/test/serviceworkers/test_gzip_redirect.html b/dom/workers/test/serviceworkers/test_gzip_redirect.html index f8c2ac082cc..7ac92122ce8 100644 --- a/dom/workers/test/serviceworkers/test_gzip_redirect.html +++ b/dom/workers/test/serviceworkers/test_gzip_redirect.html @@ -77,7 +77,6 @@ ["dom.serviceWorkers.exemptFromPerDomainMax", true], ["dom.serviceWorkers.enabled", true], ["dom.serviceWorkers.testing.enabled", true], - ['dom.serviceWorkers.interception.enabled', true], ]}, runTest); diff --git a/dom/workers/test/serviceworkers/test_hsts_upgrade_intercept.html b/dom/workers/test/serviceworkers/test_hsts_upgrade_intercept.html index ea2c1fe8ef6..068046ca6f1 100644 --- a/dom/workers/test/serviceworkers/test_hsts_upgrade_intercept.html +++ b/dom/workers/test/serviceworkers/test_hsts_upgrade_intercept.html @@ -54,7 +54,6 @@ ["dom.serviceWorkers.exemptFromPerDomainMax", true], ["dom.serviceWorkers.enabled", true], ["dom.serviceWorkers.testing.enabled", true], - ["dom.serviceWorkers.interception.enabled", true], // This is needed so that we can test upgrading a non-secure load inside an https iframe. ["security.mixed_content.block_active_content", false], ["security.mixed_content.block_display_content", false], diff --git a/dom/workers/test/serviceworkers/test_https_fetch.html b/dom/workers/test/serviceworkers/test_https_fetch.html index 01e18b03d25..e990200f855 100644 --- a/dom/workers/test/serviceworkers/test_https_fetch.html +++ b/dom/workers/test/serviceworkers/test_https_fetch.html @@ -51,7 +51,6 @@ onload = function() { SpecialPowers.pushPrefEnv({"set": [ ["dom.serviceWorkers.exemptFromPerDomainMax", true], - ["dom.serviceWorkers.interception.enabled", true], ["dom.serviceWorkers.enabled", true], ["dom.serviceWorkers.testing.enabled", true], ["dom.caches.enabled", true] diff --git a/dom/workers/test/serviceworkers/test_https_fetch_cloned_response.html b/dom/workers/test/serviceworkers/test_https_fetch_cloned_response.html index 410db7a2769..1cf1dbef139 100644 --- a/dom/workers/test/serviceworkers/test_https_fetch_cloned_response.html +++ b/dom/workers/test/serviceworkers/test_https_fetch_cloned_response.html @@ -45,7 +45,6 @@ onload = function() { SpecialPowers.pushPrefEnv({"set": [ ["dom.serviceWorkers.exemptFromPerDomainMax", true], - ["dom.serviceWorkers.interception.enabled", true], ["dom.serviceWorkers.enabled", true], ["dom.serviceWorkers.testing.enabled", true], ["dom.caches.enabled", true] diff --git a/dom/workers/test/serviceworkers/test_https_origin_after_redirect.html b/dom/workers/test/serviceworkers/test_https_origin_after_redirect.html index b780bc07b33..3878a1df6de 100644 --- a/dom/workers/test/serviceworkers/test_https_origin_after_redirect.html +++ b/dom/workers/test/serviceworkers/test_https_origin_after_redirect.html @@ -48,7 +48,6 @@ ["dom.serviceWorkers.exemptFromPerDomainMax", true], ["dom.serviceWorkers.enabled", true], ["dom.serviceWorkers.testing.enabled", true], - ['dom.serviceWorkers.interception.enabled', true], ["dom.caches.enabled", true], ]}, runTest); }; diff --git a/dom/workers/test/serviceworkers/test_https_origin_after_redirect_cached.html b/dom/workers/test/serviceworkers/test_https_origin_after_redirect_cached.html index ba2801c1b87..81a1d1da0e5 100644 --- a/dom/workers/test/serviceworkers/test_https_origin_after_redirect_cached.html +++ b/dom/workers/test/serviceworkers/test_https_origin_after_redirect_cached.html @@ -48,7 +48,6 @@ ["dom.serviceWorkers.exemptFromPerDomainMax", true], ["dom.serviceWorkers.enabled", true], ["dom.serviceWorkers.testing.enabled", true], - ['dom.serviceWorkers.interception.enabled', true], ["dom.caches.enabled", true], ]}, runTest); }; diff --git a/dom/workers/test/serviceworkers/test_https_synth_fetch_from_cached_sw.html b/dom/workers/test/serviceworkers/test_https_synth_fetch_from_cached_sw.html index 100ec57fea9..a968ac1a8ee 100644 --- a/dom/workers/test/serviceworkers/test_https_synth_fetch_from_cached_sw.html +++ b/dom/workers/test/serviceworkers/test_https_synth_fetch_from_cached_sw.html @@ -58,7 +58,6 @@ onload = function() { SpecialPowers.pushPrefEnv({"set": [ ["dom.serviceWorkers.exemptFromPerDomainMax", true], - ["dom.serviceWorkers.interception.enabled", true], ["dom.serviceWorkers.enabled", true], ["dom.serviceWorkers.testing.enabled", true], ["dom.caches.enabled", true] diff --git a/dom/workers/test/serviceworkers/test_imagecache.html b/dom/workers/test/serviceworkers/test_imagecache.html index 319b4edcfd3..8627b54af71 100644 --- a/dom/workers/test/serviceworkers/test_imagecache.html +++ b/dom/workers/test/serviceworkers/test_imagecache.html @@ -45,7 +45,6 @@ onload = function() { SpecialPowers.pushPrefEnv({"set": [ ["dom.serviceWorkers.exemptFromPerDomainMax", true], - ["dom.serviceWorkers.interception.enabled", true], ["dom.serviceWorkers.enabled", true], ["dom.serviceWorkers.testing.enabled", true], ]}, runTest); diff --git a/dom/workers/test/serviceworkers/test_imagecache_max_age.html b/dom/workers/test/serviceworkers/test_imagecache_max_age.html index 63c8e48319c..eb3c1f1668d 100644 --- a/dom/workers/test/serviceworkers/test_imagecache_max_age.html +++ b/dom/workers/test/serviceworkers/test_imagecache_max_age.html @@ -63,7 +63,6 @@ ["dom.serviceWorkers.exemptFromPerDomainMax", true], ["dom.serviceWorkers.enabled", true], ["dom.serviceWorkers.testing.enabled", true], - ["dom.serviceWorkers.interception.enabled", true], ]}, runTest); }; diff --git a/dom/workers/test/serviceworkers/test_importscript.html b/dom/workers/test/serviceworkers/test_importscript.html index 7a363eed2a6..5d2d5b3522c 100644 --- a/dom/workers/test/serviceworkers/test_importscript.html +++ b/dom/workers/test/serviceworkers/test_importscript.html @@ -63,7 +63,6 @@ SimpleTest.waitForExplicitFinish(); SpecialPowers.pushPrefEnv({"set": [ ["dom.serviceWorkers.exemptFromPerDomainMax", true], - ["dom.serviceWorkers.interception.enabled", true], ["dom.serviceWorkers.enabled", true], ["dom.serviceWorkers.testing.enabled", true] ]}, runTest); diff --git a/dom/workers/test/serviceworkers/test_importscript_mixedcontent.html b/dom/workers/test/serviceworkers/test_importscript_mixedcontent.html index aa4166da7a3..a659af92baa 100644 --- a/dom/workers/test/serviceworkers/test_importscript_mixedcontent.html +++ b/dom/workers/test/serviceworkers/test_importscript_mixedcontent.html @@ -42,7 +42,6 @@ onload = function() { SpecialPowers.pushPrefEnv({"set": [ ["dom.serviceWorkers.exemptFromPerDomainMax", true], - ["dom.serviceWorkers.interception.enabled", true], ["dom.serviceWorkers.enabled", true], ["dom.serviceWorkers.testing.enabled", true], ["security.mixed_content.block_active_content", false], diff --git a/dom/workers/test/serviceworkers/test_install_event.html b/dom/workers/test/serviceworkers/test_install_event.html index dc0fcbf07ad..0e59510fe74 100644 --- a/dom/workers/test/serviceworkers/test_install_event.html +++ b/dom/workers/test/serviceworkers/test_install_event.html @@ -134,7 +134,6 @@ SimpleTest.waitForExplicitFinish(); SpecialPowers.pushPrefEnv({"set": [ ["dom.serviceWorkers.exemptFromPerDomainMax", true], - ["dom.serviceWorkers.interception.enabled", true], ["dom.serviceWorkers.enabled", true], ["dom.serviceWorkers.testing.enabled", true] ]}, runTest); diff --git a/dom/workers/test/serviceworkers/test_installation_simple.html b/dom/workers/test/serviceworkers/test_installation_simple.html index 1806b7a4083..1b0d6c9471e 100644 --- a/dom/workers/test/serviceworkers/test_installation_simple.html +++ b/dom/workers/test/serviceworkers/test_installation_simple.html @@ -201,7 +201,6 @@ SimpleTest.waitForExplicitFinish(); SpecialPowers.pushPrefEnv({"set": [ ["dom.serviceWorkers.exemptFromPerDomainMax", true], - ["dom.serviceWorkers.interception.enabled", true], ["dom.serviceWorkers.enabled", true], ["dom.serviceWorkers.testing.enabled", true], ["dom.caches.testing.enabled", true], diff --git a/dom/workers/test/serviceworkers/test_interception_featuredetect.html b/dom/workers/test/serviceworkers/test_interception_featuredetect.html deleted file mode 100644 index 61dd04366b6..00000000000 --- a/dom/workers/test/serviceworkers/test_interception_featuredetect.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - Bug 1173389 - Test fetch interception feature detection. - - - - -

- -

-
-
-
-
-
diff --git a/dom/workers/test/serviceworkers/test_match_all.html b/dom/workers/test/serviceworkers/test_match_all.html
index 47c195cfb35..f4e65a730e9 100644
--- a/dom/workers/test/serviceworkers/test_match_all.html
+++ b/dom/workers/test/serviceworkers/test_match_all.html
@@ -70,7 +70,6 @@
   SimpleTest.waitForExplicitFinish();
   SpecialPowers.pushPrefEnv({"set": [
     ["dom.serviceWorkers.exemptFromPerDomainMax", true],
-    ["dom.serviceWorkers.interception.enabled", true],
     ["dom.serviceWorkers.enabled", true],
     ["dom.serviceWorkers.testing.enabled", true]
   ]}, runTest);
diff --git a/dom/workers/test/serviceworkers/test_match_all_advanced.html b/dom/workers/test/serviceworkers/test_match_all_advanced.html
index c68e691e3c2..a458ed70ba4 100644
--- a/dom/workers/test/serviceworkers/test_match_all_advanced.html
+++ b/dom/workers/test/serviceworkers/test_match_all_advanced.html
@@ -90,7 +90,6 @@
   SimpleTest.waitForExplicitFinish();
   SpecialPowers.pushPrefEnv({"set": [
     ["dom.serviceWorkers.exemptFromPerDomainMax", true],
-    ["dom.serviceWorkers.interception.enabled", true],
     ["dom.serviceWorkers.enabled", true],
     ["dom.serviceWorkers.testing.enabled", true]
   ]}, runTest);
diff --git a/dom/workers/test/serviceworkers/test_match_all_client_id.html b/dom/workers/test/serviceworkers/test_match_all_client_id.html
index 9807820c66a..c3cc5756a23 100644
--- a/dom/workers/test/serviceworkers/test_match_all_client_id.html
+++ b/dom/workers/test/serviceworkers/test_match_all_client_id.html
@@ -81,7 +81,6 @@
   SimpleTest.waitForExplicitFinish();
   SpecialPowers.pushPrefEnv({"set": [
     ["dom.serviceWorkers.exemptFromPerDomainMax", true],
-    ["dom.serviceWorkers.interception.enabled", true],
     ["dom.serviceWorkers.enabled", true],
     ["dom.serviceWorkers.testing.enabled", true]
   ]}, runTest);
diff --git a/dom/workers/test/serviceworkers/test_match_all_client_properties.html b/dom/workers/test/serviceworkers/test_match_all_client_properties.html
index 51f4e3fc5d9..14e3445a4b7 100644
--- a/dom/workers/test/serviceworkers/test_match_all_client_properties.html
+++ b/dom/workers/test/serviceworkers/test_match_all_client_properties.html
@@ -88,7 +88,6 @@
   SimpleTest.waitForExplicitFinish();
   SpecialPowers.pushPrefEnv({"set": [
     ["dom.serviceWorkers.exemptFromPerDomainMax", true],
-    ["dom.serviceWorkers.interception.enabled", true],
     ["dom.serviceWorkers.enabled", true],
     ["dom.serviceWorkers.testing.enabled", true]
   ]}, runTest);
diff --git a/dom/workers/test/serviceworkers/test_navigator.html b/dom/workers/test/serviceworkers/test_navigator.html
index 2b286bd9363..164f41bcd2c 100644
--- a/dom/workers/test/serviceworkers/test_navigator.html
+++ b/dom/workers/test/serviceworkers/test_navigator.html
@@ -28,7 +28,6 @@
 
   SpecialPowers.pushPrefEnv({"set": [
     ["dom.serviceWorkers.exemptFromPerDomainMax", true],
-    ["dom.serviceWorkers.interception.enabled", true],
     ["dom.serviceWorkers.enabled", true]
   ]}, function() {
     checkEnabled();
diff --git a/dom/workers/test/serviceworkers/test_not_intercept_plugin.html b/dom/workers/test/serviceworkers/test_not_intercept_plugin.html
index 7d0df8780ce..a90e068d343 100644
--- a/dom/workers/test/serviceworkers/test_not_intercept_plugin.html
+++ b/dom/workers/test/serviceworkers/test_not_intercept_plugin.html
@@ -68,8 +68,6 @@
   SpecialPowers.pushPrefEnv({"set": [
     ["dom.requestcontext.enabled", true],
     ["dom.serviceWorkers.exemptFromPerDomainMax", true],
-    ["dom.serviceWorkers.interception.enabled", true],
-    ["dom.serviceWorkers.interception.opaque.enabled", true],
     ["dom.serviceWorkers.enabled", true],
     ["dom.serviceWorkers.testing.enabled", true],
   ]}, runTest);
diff --git a/dom/workers/test/serviceworkers/test_notificationclick.html b/dom/workers/test/serviceworkers/test_notificationclick.html
index 02feefb3c93..d5c3ecf8b0b 100644
--- a/dom/workers/test/serviceworkers/test_notificationclick.html
+++ b/dom/workers/test/serviceworkers/test_notificationclick.html
@@ -55,7 +55,6 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=916893
     ["dom.serviceWorkers.testing.enabled", true],
     ["dom.webnotifications.workers.enabled", true],
     ["dom.webnotifications.serviceworker.enabled", true],
-    ['dom.serviceWorkers.interception.enabled', true],
     ["notification.prompt.testing", true],
   ]}, runTest);
 
diff --git a/dom/workers/test/serviceworkers/test_opaque_intercept.html b/dom/workers/test/serviceworkers/test_opaque_intercept.html
index db86ffacec9..5cb12e518c7 100644
--- a/dom/workers/test/serviceworkers/test_opaque_intercept.html
+++ b/dom/workers/test/serviceworkers/test_opaque_intercept.html
@@ -77,8 +77,6 @@
     ["dom.serviceWorkers.exemptFromPerDomainMax", true],
     ["dom.serviceWorkers.enabled", true],
     ["dom.serviceWorkers.testing.enabled", true],
-    ['dom.serviceWorkers.interception.enabled', true],
-    ["dom.serviceWorkers.interception.opaque.enabled", true],
     ["dom.caches.enabled", true],
   ]}, runTest);
 
diff --git a/dom/workers/test/serviceworkers/test_origin_after_redirect.html b/dom/workers/test/serviceworkers/test_origin_after_redirect.html
index 58efa61b79e..42f8b35caaa 100644
--- a/dom/workers/test/serviceworkers/test_origin_after_redirect.html
+++ b/dom/workers/test/serviceworkers/test_origin_after_redirect.html
@@ -48,7 +48,6 @@
       ["dom.serviceWorkers.exemptFromPerDomainMax", true],
       ["dom.serviceWorkers.enabled", true],
       ["dom.serviceWorkers.testing.enabled", true],
-      ['dom.serviceWorkers.interception.enabled', true],
       ["dom.caches.enabled", true],
     ]}, runTest);
   };
diff --git a/dom/workers/test/serviceworkers/test_origin_after_redirect_cached.html b/dom/workers/test/serviceworkers/test_origin_after_redirect_cached.html
index 78d44ca530a..2a19e20dece 100644
--- a/dom/workers/test/serviceworkers/test_origin_after_redirect_cached.html
+++ b/dom/workers/test/serviceworkers/test_origin_after_redirect_cached.html
@@ -48,7 +48,6 @@
       ["dom.serviceWorkers.exemptFromPerDomainMax", true],
       ["dom.serviceWorkers.enabled", true],
       ["dom.serviceWorkers.testing.enabled", true],
-      ['dom.serviceWorkers.interception.enabled', true],
       ["dom.caches.enabled", true],
     ]}, runTest);
   };
diff --git a/dom/workers/test/serviceworkers/test_origin_after_redirect_to_https.html b/dom/workers/test/serviceworkers/test_origin_after_redirect_to_https.html
index d6b45a6ef44..dcac11aea10 100644
--- a/dom/workers/test/serviceworkers/test_origin_after_redirect_to_https.html
+++ b/dom/workers/test/serviceworkers/test_origin_after_redirect_to_https.html
@@ -48,7 +48,6 @@
       ["dom.serviceWorkers.exemptFromPerDomainMax", true],
       ["dom.serviceWorkers.enabled", true],
       ["dom.serviceWorkers.testing.enabled", true],
-      ['dom.serviceWorkers.interception.enabled', true],
       ["dom.caches.enabled", true],
     ]}, runTest);
   };
diff --git a/dom/workers/test/serviceworkers/test_origin_after_redirect_to_https_cached.html b/dom/workers/test/serviceworkers/test_origin_after_redirect_to_https_cached.html
index e63cb7e7531..b70d1704e8d 100644
--- a/dom/workers/test/serviceworkers/test_origin_after_redirect_to_https_cached.html
+++ b/dom/workers/test/serviceworkers/test_origin_after_redirect_to_https_cached.html
@@ -48,7 +48,6 @@
       ["dom.serviceWorkers.exemptFromPerDomainMax", true],
       ["dom.serviceWorkers.enabled", true],
       ["dom.serviceWorkers.testing.enabled", true],
-      ['dom.serviceWorkers.interception.enabled', true],
       ["dom.caches.enabled", true],
     ]}, runTest);
   };
diff --git a/dom/workers/test/serviceworkers/test_post_message.html b/dom/workers/test/serviceworkers/test_post_message.html
index 1e2fc3c6903..7df4bef1fcc 100644
--- a/dom/workers/test/serviceworkers/test_post_message.html
+++ b/dom/workers/test/serviceworkers/test_post_message.html
@@ -69,7 +69,6 @@
   SimpleTest.waitForExplicitFinish();
   SpecialPowers.pushPrefEnv({"set": [
     ["dom.serviceWorkers.exemptFromPerDomainMax", true],
-    ["dom.serviceWorkers.interception.enabled", true],
     ["dom.serviceWorkers.enabled", true],
     ["dom.serviceWorkers.testing.enabled", true]
   ]}, runTest);
diff --git a/dom/workers/test/serviceworkers/test_post_message_advanced.html b/dom/workers/test/serviceworkers/test_post_message_advanced.html
index 2f63dc5c57d..ca769586159 100644
--- a/dom/workers/test/serviceworkers/test_post_message_advanced.html
+++ b/dom/workers/test/serviceworkers/test_post_message_advanced.html
@@ -98,7 +98,6 @@
   SimpleTest.waitForExplicitFinish();
   SpecialPowers.pushPrefEnv({"set": [
     ["dom.serviceWorkers.exemptFromPerDomainMax", true],
-    ["dom.serviceWorkers.interception.enabled", true],
     ["dom.serviceWorkers.enabled", true],
     ["dom.serviceWorkers.testing.enabled", true]
   ]}, runTest);
diff --git a/dom/workers/test/serviceworkers/test_post_message_source.html b/dom/workers/test/serviceworkers/test_post_message_source.html
index aec3820e9e1..4353e59b498 100644
--- a/dom/workers/test/serviceworkers/test_post_message_source.html
+++ b/dom/workers/test/serviceworkers/test_post_message_source.html
@@ -57,7 +57,6 @@
   SimpleTest.waitForExplicitFinish();
   SpecialPowers.pushPrefEnv({"set": [
     ["dom.serviceWorkers.exemptFromPerDomainMax", true],
-    ["dom.serviceWorkers.interception.enabled", true],
     ["dom.serviceWorkers.enabled", true],
     ["dom.serviceWorkers.testing.enabled", true]
   ]}, runTest);
diff --git a/dom/workers/test/serviceworkers/test_request_context.js b/dom/workers/test/serviceworkers/test_request_context.js
index 829a6e34164..3432a34b04d 100644
--- a/dom/workers/test/serviceworkers/test_request_context.js
+++ b/dom/workers/test/serviceworkers/test_request_context.js
@@ -70,7 +70,6 @@ onload = function() {
     ["dom.image.srcset.enabled", true],
     ["dom.requestcontext.enabled", true],
     ["dom.serviceWorkers.exemptFromPerDomainMax", true],
-    ["dom.serviceWorkers.interception.enabled", true],
     ["dom.serviceWorkers.enabled", true],
     ["dom.serviceWorkers.testing.enabled", true],
   ]}, runTest);
diff --git a/dom/workers/test/serviceworkers/test_sandbox_intercept.html b/dom/workers/test/serviceworkers/test_sandbox_intercept.html
index 73c581c92e5..273df53ff51 100644
--- a/dom/workers/test/serviceworkers/test_sandbox_intercept.html
+++ b/dom/workers/test/serviceworkers/test_sandbox_intercept.html
@@ -40,7 +40,6 @@
   onload = function() {
     SpecialPowers.pushPrefEnv({"set": [
       ["dom.serviceWorkers.exemptFromPerDomainMax", true],
-      ["dom.serviceWorkers.interception.enabled", true],
       ["dom.serviceWorkers.enabled", true],
       ["dom.serviceWorkers.testing.enabled", true],
     ]}, runTest);
diff --git a/dom/workers/test/serviceworkers/test_sanitize.html b/dom/workers/test/serviceworkers/test_sanitize.html
index 8168e497cea..732785faa78 100644
--- a/dom/workers/test/serviceworkers/test_sanitize.html
+++ b/dom/workers/test/serviceworkers/test_sanitize.html
@@ -75,7 +75,6 @@
 
   SpecialPowers.pushPrefEnv({"set": [
     ["dom.serviceWorkers.exemptFromPerDomainMax", true],
-    ["dom.serviceWorkers.interception.enabled", true],
     ["dom.serviceWorkers.enabled", true],
     ["dom.serviceWorkers.testing.enabled", true],
   ]}, function() {
diff --git a/dom/workers/test/serviceworkers/test_sanitize_domain.html b/dom/workers/test/serviceworkers/test_sanitize_domain.html
index d55873203a8..70e108b717d 100644
--- a/dom/workers/test/serviceworkers/test_sanitize_domain.html
+++ b/dom/workers/test/serviceworkers/test_sanitize_domain.html
@@ -78,7 +78,6 @@
 
   SpecialPowers.pushPrefEnv({"set": [
     ["dom.serviceWorkers.exemptFromPerDomainMax", true],
-    ["dom.serviceWorkers.interception.enabled", true],
     ["dom.serviceWorkers.enabled", true],
     ["dom.serviceWorkers.testing.enabled", true],
   ]}, function() {
diff --git a/dom/workers/test/serviceworkers/test_scopes.html b/dom/workers/test/serviceworkers/test_scopes.html
index 7bd389390dd..2d8116f8373 100644
--- a/dom/workers/test/serviceworkers/test_scopes.html
+++ b/dom/workers/test/serviceworkers/test_scopes.html
@@ -111,7 +111,6 @@
   SimpleTest.waitForExplicitFinish();
   SpecialPowers.pushPrefEnv({"set": [
     ["dom.serviceWorkers.exemptFromPerDomainMax", true],
-    ["dom.serviceWorkers.interception.enabled", true],
     ["dom.serviceWorkers.enabled", true],
     ["dom.serviceWorkers.testing.enabled", true]
   ]}, runTest);
diff --git a/dom/workers/test/serviceworkers/test_service_worker_allowed.html b/dom/workers/test/serviceworkers/test_service_worker_allowed.html
index 98a850d7a34..eca94ebb436 100644
--- a/dom/workers/test/serviceworkers/test_service_worker_allowed.html
+++ b/dom/workers/test/serviceworkers/test_service_worker_allowed.html
@@ -67,7 +67,6 @@
     ["dom.serviceWorkers.enabled", true],
     ["dom.serviceWorkers.testing.enabled", true],
     ["dom.serviceWorkers.exemptFromPerDomainMax", true],
-    ["dom.serviceWorkers.interception.enabled", true],
   ]}, runTest);
 
 
diff --git a/dom/workers/test/serviceworkers/test_serviceworker_interfaces.html b/dom/workers/test/serviceworkers/test_serviceworker_interfaces.html
index f998d8f6636..60a5dfd1f22 100644
--- a/dom/workers/test/serviceworkers/test_serviceworker_interfaces.html
+++ b/dom/workers/test/serviceworkers/test_serviceworker_interfaces.html
@@ -104,7 +104,6 @@
     // force creation of our own Navigator object before our prefs are set.
     var prefs = [
       ["dom.serviceWorkers.exemptFromPerDomainMax", true],
-      ["dom.serviceWorkers.interception.enabled", true],
       ["dom.serviceWorkers.enabled", true],
       ["dom.serviceWorkers.testing.enabled", true],
     ];
diff --git a/dom/workers/test/serviceworkers/test_serviceworker_not_sharedworker.html b/dom/workers/test/serviceworkers/test_serviceworker_not_sharedworker.html
index da8c3d0af1b..96dd9f15992 100644
--- a/dom/workers/test/serviceworkers/test_serviceworker_not_sharedworker.html
+++ b/dom/workers/test/serviceworkers/test_serviceworker_not_sharedworker.html
@@ -56,7 +56,6 @@
   onload = function() {
     SpecialPowers.pushPrefEnv({"set": [
       ["dom.serviceWorkers.exemptFromPerDomainMax", true],
-      ["dom.serviceWorkers.interception.enabled", true],
       ["dom.serviceWorkers.enabled", true],
       ["dom.serviceWorkers.testing.enabled", true]
     ]}, runTest);
diff --git a/dom/workers/test/serviceworkers/test_skip_waiting.html b/dom/workers/test/serviceworkers/test_skip_waiting.html
index f4081ee26fe..7707d603505 100644
--- a/dom/workers/test/serviceworkers/test_skip_waiting.html
+++ b/dom/workers/test/serviceworkers/test_skip_waiting.html
@@ -86,7 +86,6 @@
   SimpleTest.waitForExplicitFinish();
   SpecialPowers.pushPrefEnv({"set": [
     ["dom.serviceWorkers.exemptFromPerDomainMax", true],
-    ["dom.serviceWorkers.interception.enabled", true],
     ["dom.serviceWorkers.enabled", true],
     ["dom.serviceWorkers.testing.enabled", true]
   ]}, runTest);
diff --git a/dom/workers/test/serviceworkers/test_strict_mode_warning.html b/dom/workers/test/serviceworkers/test_strict_mode_warning.html
index 025fc089e0a..5b66673b919 100644
--- a/dom/workers/test/serviceworkers/test_strict_mode_warning.html
+++ b/dom/workers/test/serviceworkers/test_strict_mode_warning.html
@@ -32,7 +32,6 @@
   onload = function() {
     SpecialPowers.pushPrefEnv({"set": [
       ["dom.serviceWorkers.exemptFromPerDomainMax", true],
-      ["dom.serviceWorkers.interception.enabled", true],
       ["dom.serviceWorkers.enabled", true],
       ["dom.serviceWorkers.testing.enabled", true],
     ]}, runTest);
diff --git a/dom/workers/test/serviceworkers/test_third_party_iframes.html b/dom/workers/test/serviceworkers/test_third_party_iframes.html
index ffef8d1dab7..33e815379ac 100644
--- a/dom/workers/test/serviceworkers/test_third_party_iframes.html
+++ b/dom/workers/test/serviceworkers/test_third_party_iframes.html
@@ -144,7 +144,6 @@ let steps = [() => {
     ["dom.serviceWorkers.exemptFromPerDomainMax", true],
     ["dom.serviceWorkers.enabled", true],
     ["dom.serviceWorkers.testing.enabled", true],
-    ["dom.serviceWorkers.interception.enabled", true],
     ["browser.dom.window.dump.enabled", true],
     ["network.cookie.cookieBehavior", COOKIE_BEHAVIOR_ACCEPT]
   ]}, next);
diff --git a/dom/workers/test/serviceworkers/test_unregister.html b/dom/workers/test/serviceworkers/test_unregister.html
index b6263d4752e..8366f50c1ce 100644
--- a/dom/workers/test/serviceworkers/test_unregister.html
+++ b/dom/workers/test/serviceworkers/test_unregister.html
@@ -128,7 +128,6 @@
   SimpleTest.waitForExplicitFinish();
   SpecialPowers.pushPrefEnv({"set": [
     ["dom.serviceWorkers.exemptFromPerDomainMax", true],
-    ["dom.serviceWorkers.interception.enabled", true],
     ["dom.serviceWorkers.enabled", true],
     ["dom.serviceWorkers.testing.enabled", true]
   ]}, runTest);
diff --git a/dom/workers/test/serviceworkers/test_unresolved_fetch_interception.html b/dom/workers/test/serviceworkers/test_unresolved_fetch_interception.html
index 0116a435a59..5414ab40a45 100644
--- a/dom/workers/test/serviceworkers/test_unresolved_fetch_interception.html
+++ b/dom/workers/test/serviceworkers/test_unresolved_fetch_interception.html
@@ -87,7 +87,6 @@
     ["dom.serviceWorkers.exemptFromPerDomainMax", true],
     ["dom.serviceWorkers.enabled", true],
     ["dom.serviceWorkers.testing.enabled", true],
-    ["dom.serviceWorkers.interception.enabled", true]
     ]}, runTest);
   SimpleTest.waitForExplicitFinish();
 
diff --git a/dom/workers/test/serviceworkers/test_workerUnregister.html b/dom/workers/test/serviceworkers/test_workerUnregister.html
index 631d961a677..947861c176b 100644
--- a/dom/workers/test/serviceworkers/test_workerUnregister.html
+++ b/dom/workers/test/serviceworkers/test_workerUnregister.html
@@ -72,7 +72,6 @@
   SimpleTest.waitForExplicitFinish();
   SpecialPowers.pushPrefEnv({"set": [
     ["dom.serviceWorkers.exemptFromPerDomainMax", true],
-    ["dom.serviceWorkers.interception.enabled", true],
     ["dom.serviceWorkers.enabled", true],
     ["dom.serviceWorkers.testing.enabled", true]
   ]}, runTest);
diff --git a/dom/workers/test/serviceworkers/test_workerUpdate.html b/dom/workers/test/serviceworkers/test_workerUpdate.html
index 7cfbde08f53..5621d6cb891 100644
--- a/dom/workers/test/serviceworkers/test_workerUpdate.html
+++ b/dom/workers/test/serviceworkers/test_workerUpdate.html
@@ -52,7 +52,6 @@
   SimpleTest.waitForExplicitFinish();
   SpecialPowers.pushPrefEnv({"set": [
     ["dom.serviceWorkers.exemptFromPerDomainMax", true],
-    ["dom.serviceWorkers.interception.enabled", true],
     ["dom.serviceWorkers.enabled", true],
     ["dom.serviceWorkers.testing.enabled", true]
   ]}, runTest);
diff --git a/dom/workers/test/serviceworkers/test_workerupdatefoundevent.html b/dom/workers/test/serviceworkers/test_workerupdatefoundevent.html
index 0134a726490..3361eba08a3 100644
--- a/dom/workers/test/serviceworkers/test_workerupdatefoundevent.html
+++ b/dom/workers/test/serviceworkers/test_workerupdatefoundevent.html
@@ -75,7 +75,6 @@
   SimpleTest.waitForExplicitFinish();
   SpecialPowers.pushPrefEnv({"set": [
     ["dom.serviceWorkers.exemptFromPerDomainMax", true],
-    ["dom.serviceWorkers.interception.enabled", true],
     ["dom.serviceWorkers.enabled", true],
     ["dom.serviceWorkers.testing.enabled", true],
   ]}, runTest);
diff --git a/dom/workers/test/serviceworkers/test_xslt.html b/dom/workers/test/serviceworkers/test_xslt.html
index e350b7204d6..44270753b5f 100644
--- a/dom/workers/test/serviceworkers/test_xslt.html
+++ b/dom/workers/test/serviceworkers/test_xslt.html
@@ -118,7 +118,6 @@
   SimpleTest.waitForExplicitFinish();
   SpecialPowers.pushPrefEnv({"set": [
     ["dom.serviceWorkers.exemptFromPerDomainMax", true],
-    ["dom.serviceWorkers.interception.enabled", true],
     ["dom.serviceWorkers.enabled", true],
     ["dom.serviceWorkers.testing.enabled", true],
   ]}, runTest);
diff --git a/editor/composer/moz.build b/editor/composer/moz.build
index 1436fdf44f9..9facf4a1cfd 100644
--- a/editor/composer/moz.build
+++ b/editor/composer/moz.build
@@ -27,18 +27,6 @@ UNIFIED_SOURCES += [
 
 FINAL_LIBRARY = 'xul'
 RESOURCE_FILES += [
-    'res/accessiblecaret.png',
-    'res/accessiblecaret@1.5x.png',
-    'res/accessiblecaret@2.25x.png',
-    'res/accessiblecaret@2x.png',
-    'res/accessiblecaret_tilt_left.png',
-    'res/accessiblecaret_tilt_left@1.5x.png',
-    'res/accessiblecaret_tilt_left@2.25x.png',
-    'res/accessiblecaret_tilt_left@2x.png',
-    'res/accessiblecaret_tilt_right.png',
-    'res/accessiblecaret_tilt_right@1.5x.png',
-    'res/accessiblecaret_tilt_right@2.25x.png',
-    'res/accessiblecaret_tilt_right@2x.png',
     'res/EditorOverride.css',
     'res/grabber.gif',
     'res/table-add-column-after-active.gif',
diff --git a/extensions/pref/autoconfig/src/Makefile.in b/extensions/pref/autoconfig/src/Makefile.in
deleted file mode 100644
index 830f5ae62ab..00000000000
--- a/extensions/pref/autoconfig/src/Makefile.in
+++ /dev/null
@@ -1,7 +0,0 @@
-# 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/.
-
-AUTOCFG_JS_EXPORTS = \
-		$(srcdir)/prefcalls.js \
-		$(NULL)
diff --git a/extensions/pref/autoconfig/src/moz.build b/extensions/pref/autoconfig/src/moz.build
index 0b9e7f12bf0..2f493bbcc7c 100644
--- a/extensions/pref/autoconfig/src/moz.build
+++ b/extensions/pref/autoconfig/src/moz.build
@@ -15,3 +15,7 @@ FINAL_LIBRARY = 'xul'
 
 if CONFIG['GNU_CXX']:
     CXXFLAGS += ['-Wshadow']
+
+FINAL_TARGET_FILES.defaults.autoconfig += [
+    'prefcalls.js',
+]
diff --git a/ipc/chromium/moz.build b/ipc/chromium/moz.build
index 8b8e4ccc1fb..88aaafe859a 100644
--- a/ipc/chromium/moz.build
+++ b/ipc/chromium/moz.build
@@ -162,7 +162,7 @@ if os_bsd or os_linux:
         ]
 
 ost = CONFIG['OS_TEST']
-if '86' not in ost and 'arm' not in ost and 'mips' not in ost:
+if '86' not in ost and 'arm' not in ost and 'aarch64' != ost and 'mips' not in ost:
     SOURCES += [
         'src/base/atomicops_internals_mutex.cc',
     ]
diff --git a/ipc/chromium/src/base/atomicops.h b/ipc/chromium/src/base/atomicops.h
index a167541beb6..f9ad55b9b9d 100644
--- a/ipc/chromium/src/base/atomicops.h
+++ b/ipc/chromium/src/base/atomicops.h
@@ -138,8 +138,10 @@ Atomic64 Release_Load(volatile const Atomic64* ptr);
 #include "base/atomicops_internals_x86_macosx.h"
 #elif defined(COMPILER_GCC) && defined(ARCH_CPU_X86_FAMILY)
 #include "base/atomicops_internals_x86_gcc.h"
-#elif defined(COMPILER_GCC) && defined(ARCH_CPU_ARM_FAMILY)
+#elif defined(COMPILER_GCC) && defined(ARCH_CPU_ARMEL)
 #include "base/atomicops_internals_arm_gcc.h"
+#elif defined(COMPILER_GCC) && defined(ARCH_CPU_ARM64)
+#include "base/atomicops_internals_arm64_gcc.h"
 #elif defined(COMPILER_GCC) && defined(ARCH_CPU_MIPS)
 #include "base/atomicops_internals_mips_gcc.h"
 #else
diff --git a/ipc/chromium/src/base/atomicops_internals_arm64_gcc.h b/ipc/chromium/src/base/atomicops_internals_arm64_gcc.h
new file mode 100644
index 00000000000..a2b0abc1a47
--- /dev/null
+++ b/ipc/chromium/src/base/atomicops_internals_arm64_gcc.h
@@ -0,0 +1,360 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// This file is an internal atomic implementation, use base/atomicops.h instead.
+
+// TODO(rmcilroy): Investigate whether we can use __sync__ intrinsics instead of
+//                 the hand coded assembly without introducing perf regressions.
+// TODO(rmcilroy): Investigate whether we can use acquire / release versions of
+//                 exclusive load / store assembly instructions and do away with
+//                 the barriers.
+
+#ifndef BASE_ATOMICOPS_INTERNALS_ARM64_GCC_H_
+#define BASE_ATOMICOPS_INTERNALS_ARM64_GCC_H_
+
+#if defined(OS_QNX)
+#include 
+#endif
+
+namespace base {
+namespace subtle {
+
+inline void MemoryBarrier() {
+  __asm__ __volatile__ (  // NOLINT
+    "dmb ish                                  \n\t"  // Data memory barrier.
+    ::: "memory"
+  );  // NOLINT
+}
+
+
+inline Atomic32 NoBarrier_CompareAndSwap(volatile Atomic32* ptr,
+                                         Atomic32 old_value,
+                                         Atomic32 new_value) {
+  Atomic32 prev;
+  int32_t temp;
+
+  __asm__ __volatile__ (  // NOLINT
+    "0:                                    \n\t"
+    "ldxr %w[prev], %[ptr]                 \n\t"  // Load the previous value.
+    "cmp %w[prev], %w[old_value]           \n\t"
+    "bne 1f                                \n\t"
+    "stxr %w[temp], %w[new_value], %[ptr]  \n\t"  // Try to store the new value.
+    "cbnz %w[temp], 0b                     \n\t"  // Retry if it did not work.
+    "1:                                    \n\t"
+    "clrex                                 \n\t"  // In case we didn't swap.
+    : [prev]"=&r" (prev),
+      [temp]"=&r" (temp),
+      [ptr]"+Q" (*ptr)
+    : [old_value]"r" (old_value),
+      [new_value]"r" (new_value)
+    : "memory", "cc"
+  );  // NOLINT
+
+  return prev;
+}
+
+inline Atomic32 NoBarrier_AtomicExchange(volatile Atomic32* ptr,
+                                         Atomic32 new_value) {
+  Atomic32 result;
+  int32_t temp;
+
+  __asm__ __volatile__ (  // NOLINT
+    "0:                                    \n\t"
+    "ldxr %w[result], %[ptr]               \n\t"  // Load the previous value.
+    "stxr %w[temp], %w[new_value], %[ptr]  \n\t"  // Try to store the new value.
+    "cbnz %w[temp], 0b                     \n\t"  // Retry if it did not work.
+    : [result]"=&r" (result),
+      [temp]"=&r" (temp),
+      [ptr]"+Q" (*ptr)
+    : [new_value]"r" (new_value)
+    : "memory"
+  );  // NOLINT
+
+  return result;
+}
+
+inline Atomic32 NoBarrier_AtomicIncrement(volatile Atomic32* ptr,
+                                          Atomic32 increment) {
+  Atomic32 result;
+  int32_t temp;
+
+  __asm__ __volatile__ (  // NOLINT
+    "0:                                       \n\t"
+    "ldxr %w[result], %[ptr]                  \n\t"  // Load the previous value.
+    "add %w[result], %w[result], %w[increment]\n\t"
+    "stxr %w[temp], %w[result], %[ptr]        \n\t"  // Try to store the result.
+    "cbnz %w[temp], 0b                        \n\t"  // Retry on failure.
+    : [result]"=&r" (result),
+      [temp]"=&r" (temp),
+      [ptr]"+Q" (*ptr)
+    : [increment]"r" (increment)
+    : "memory"
+  );  // NOLINT
+
+  return result;
+}
+
+inline Atomic32 Barrier_AtomicIncrement(volatile Atomic32* ptr,
+                                        Atomic32 increment) {
+  MemoryBarrier();
+  Atomic32 result = NoBarrier_AtomicIncrement(ptr, increment);
+  MemoryBarrier();
+
+  return result;
+}
+
+inline Atomic32 Acquire_CompareAndSwap(volatile Atomic32* ptr,
+                                       Atomic32 old_value,
+                                       Atomic32 new_value) {
+  Atomic32 prev;
+  int32_t temp;
+
+  __asm__ __volatile__ (  // NOLINT
+    "0:                                    \n\t"
+    "ldxr %w[prev], %[ptr]                 \n\t"  // Load the previous value.
+    "cmp %w[prev], %w[old_value]           \n\t"
+    "bne 1f                                \n\t"
+    "stxr %w[temp], %w[new_value], %[ptr]  \n\t"  // Try to store the new value.
+    "cbnz %w[temp], 0b                     \n\t"  // Retry if it did not work.
+    "dmb ish                               \n\t"  // Data memory barrier.
+    "1:                                    \n\t"
+    // If the compare failed the 'dmb' is unnecessary, but we still need a
+    // 'clrex'.
+    "clrex                                 \n\t"
+    : [prev]"=&r" (prev),
+      [temp]"=&r" (temp),
+      [ptr]"+Q" (*ptr)
+    : [old_value]"r" (old_value),
+      [new_value]"r" (new_value)
+    : "memory", "cc"
+  );  // NOLINT
+
+  return prev;
+}
+
+inline Atomic32 Release_CompareAndSwap(volatile Atomic32* ptr,
+                                       Atomic32 old_value,
+                                       Atomic32 new_value) {
+  Atomic32 prev;
+  int32_t temp;
+
+  MemoryBarrier();
+
+  __asm__ __volatile__ (  // NOLINT
+    "0:                                    \n\t"
+    "ldxr %w[prev], %[ptr]                 \n\t"  // Load the previous value.
+    "cmp %w[prev], %w[old_value]           \n\t"
+    "bne 1f                                \n\t"
+    "stxr %w[temp], %w[new_value], %[ptr]  \n\t"  // Try to store the new value.
+    "cbnz %w[temp], 0b                     \n\t"  // Retry if it did not work.
+    "1:                                    \n\t"
+    // If the compare failed the we still need a 'clrex'.
+    "clrex                                 \n\t"
+    : [prev]"=&r" (prev),
+      [temp]"=&r" (temp),
+      [ptr]"+Q" (*ptr)
+    : [old_value]"r" (old_value),
+      [new_value]"r" (new_value)
+    : "memory", "cc"
+  );  // NOLINT
+
+  return prev;
+}
+
+inline void NoBarrier_Store(volatile Atomic32* ptr, Atomic32 value) {
+  *ptr = value;
+}
+
+inline void Acquire_Store(volatile Atomic32* ptr, Atomic32 value) {
+  *ptr = value;
+  MemoryBarrier();
+}
+
+inline void Release_Store(volatile Atomic32* ptr, Atomic32 value) {
+  MemoryBarrier();
+  *ptr = value;
+}
+
+inline Atomic32 NoBarrier_Load(volatile const Atomic32* ptr) {
+  return *ptr;
+}
+
+inline Atomic32 Acquire_Load(volatile const Atomic32* ptr) {
+  Atomic32 value = *ptr;
+  MemoryBarrier();
+  return value;
+}
+
+inline Atomic32 Release_Load(volatile const Atomic32* ptr) {
+  MemoryBarrier();
+  return *ptr;
+}
+
+// 64-bit versions of the operations.
+// See the 32-bit versions for comments.
+
+inline Atomic64 NoBarrier_CompareAndSwap(volatile Atomic64* ptr,
+                                         Atomic64 old_value,
+                                         Atomic64 new_value) {
+  Atomic64 prev;
+  int32_t temp;
+
+  __asm__ __volatile__ (  // NOLINT
+    "0:                                    \n\t"
+    "ldxr %[prev], %[ptr]                  \n\t"
+    "cmp %[prev], %[old_value]             \n\t"
+    "bne 1f                                \n\t"
+    "stxr %w[temp], %[new_value], %[ptr]   \n\t"
+    "cbnz %w[temp], 0b                     \n\t"
+    "1:                                    \n\t"
+    "clrex                                 \n\t"
+    : [prev]"=&r" (prev),
+      [temp]"=&r" (temp),
+      [ptr]"+Q" (*ptr)
+    : [old_value]"r" (old_value),
+      [new_value]"r" (new_value)
+    : "memory", "cc"
+  );  // NOLINT
+
+  return prev;
+}
+
+inline Atomic64 NoBarrier_AtomicExchange(volatile Atomic64* ptr,
+                                         Atomic64 new_value) {
+  Atomic64 result;
+  int32_t temp;
+
+  __asm__ __volatile__ (  // NOLINT
+    "0:                                    \n\t"
+    "ldxr %[result], %[ptr]                \n\t"
+    "stxr %w[temp], %[new_value], %[ptr]   \n\t"
+    "cbnz %w[temp], 0b                     \n\t"
+    : [result]"=&r" (result),
+      [temp]"=&r" (temp),
+      [ptr]"+Q" (*ptr)
+    : [new_value]"r" (new_value)
+    : "memory"
+  );  // NOLINT
+
+  return result;
+}
+
+inline Atomic64 NoBarrier_AtomicIncrement(volatile Atomic64* ptr,
+                                          Atomic64 increment) {
+  Atomic64 result;
+  int32_t temp;
+
+  __asm__ __volatile__ (  // NOLINT
+    "0:                                     \n\t"
+    "ldxr %[result], %[ptr]                 \n\t"
+    "add %[result], %[result], %[increment] \n\t"
+    "stxr %w[temp], %[result], %[ptr]       \n\t"
+    "cbnz %w[temp], 0b                      \n\t"
+    : [result]"=&r" (result),
+      [temp]"=&r" (temp),
+      [ptr]"+Q" (*ptr)
+    : [increment]"r" (increment)
+    : "memory"
+  );  // NOLINT
+
+  return result;
+}
+
+inline Atomic64 Barrier_AtomicIncrement(volatile Atomic64* ptr,
+                                        Atomic64 increment) {
+  MemoryBarrier();
+  Atomic64 result = NoBarrier_AtomicIncrement(ptr, increment);
+  MemoryBarrier();
+
+  return result;
+}
+
+inline Atomic64 Acquire_CompareAndSwap(volatile Atomic64* ptr,
+                                       Atomic64 old_value,
+                                       Atomic64 new_value) {
+  Atomic64 prev;
+  int32_t temp;
+
+  __asm__ __volatile__ (  // NOLINT
+    "0:                                    \n\t"
+    "ldxr %[prev], %[ptr]                  \n\t"
+    "cmp %[prev], %[old_value]             \n\t"
+    "bne 1f                                \n\t"
+    "stxr %w[temp], %[new_value], %[ptr]   \n\t"
+    "cbnz %w[temp], 0b                     \n\t"
+    "dmb ish                               \n\t"
+    "1:                                    \n\t"
+    "clrex                                 \n\t"
+    : [prev]"=&r" (prev),
+      [temp]"=&r" (temp),
+      [ptr]"+Q" (*ptr)
+    : [old_value]"r" (old_value),
+      [new_value]"r" (new_value)
+    : "memory", "cc"
+  );  // NOLINT
+
+  return prev;
+}
+
+inline Atomic64 Release_CompareAndSwap(volatile Atomic64* ptr,
+                                       Atomic64 old_value,
+                                       Atomic64 new_value) {
+  Atomic64 prev;
+  int32_t temp;
+
+  MemoryBarrier();
+
+  __asm__ __volatile__ (  // NOLINT
+    "0:                                    \n\t"
+    "ldxr %[prev], %[ptr]                  \n\t"
+    "cmp %[prev], %[old_value]             \n\t"
+    "bne 1f                                \n\t"
+    "stxr %w[temp], %[new_value], %[ptr]   \n\t"
+    "cbnz %w[temp], 0b                     \n\t"
+    "1:                                    \n\t"
+    "clrex                                 \n\t"
+    : [prev]"=&r" (prev),
+      [temp]"=&r" (temp),
+      [ptr]"+Q" (*ptr)
+    : [old_value]"r" (old_value),
+      [new_value]"r" (new_value)
+    : "memory", "cc"
+  );  // NOLINT
+
+  return prev;
+}
+
+inline void NoBarrier_Store(volatile Atomic64* ptr, Atomic64 value) {
+  *ptr = value;
+}
+
+inline void Acquire_Store(volatile Atomic64* ptr, Atomic64 value) {
+  *ptr = value;
+  MemoryBarrier();
+}
+
+inline void Release_Store(volatile Atomic64* ptr, Atomic64 value) {
+  MemoryBarrier();
+  *ptr = value;
+}
+
+inline Atomic64 NoBarrier_Load(volatile const Atomic64* ptr) {
+  return *ptr;
+}
+
+inline Atomic64 Acquire_Load(volatile const Atomic64* ptr) {
+  Atomic64 value = *ptr;
+  MemoryBarrier();
+  return value;
+}
+
+inline Atomic64 Release_Load(volatile const Atomic64* ptr) {
+  MemoryBarrier();
+  return *ptr;
+}
+
+}  // namespace base::subtle
+}  // namespace base
+
+#endif  // BASE_ATOMICOPS_INTERNALS_ARM64_GCC_H_
diff --git a/ipc/chromium/src/build/build_config.h b/ipc/chromium/src/build/build_config.h
index 7a4938e06c0..dcec00db492 100644
--- a/ipc/chromium/src/build/build_config.h
+++ b/ipc/chromium/src/build/build_config.h
@@ -109,7 +109,8 @@
 #define ARCH_CPU_ALPHA 1
 #define ARCH_CPU_64_BITS 1
 #elif defined(__aarch64__)
-#define ARCH_CPU_AARCH64 1
+#define ARCH_CPU_ARM_FAMILY 1
+#define ARCH_CPU_ARM64 1
 #define ARCH_CPU_64_BITS 1
 #else
 #error Please add support for your architecture in build/build_config.h
diff --git a/js/src/asmjs/Wasm.cpp b/js/src/asmjs/Wasm.cpp
index 09c9cf4a351..f3da7302ce7 100644
--- a/js/src/asmjs/Wasm.cpp
+++ b/js/src/asmjs/Wasm.cpp
@@ -478,7 +478,6 @@ DecodeExpr(FunctionDecoder& f, ExprType expected)
       case Expr::I64DivU:
       case Expr::I64RemS:
       case Expr::I64RemU:
-        return f.fail("NYI: i64");
       case Expr::I64And:
       case Expr::I64Or:
       case Expr::I64Xor:
diff --git a/js/src/asmjs/WasmIonCompile.cpp b/js/src/asmjs/WasmIonCompile.cpp
index 00c039dcfe7..30ae8a910cf 100644
--- a/js/src/asmjs/WasmIonCompile.cpp
+++ b/js/src/asmjs/WasmIonCompile.cpp
@@ -1412,24 +1412,39 @@ static bool EmitExpr(FunctionCompiler&, ExprType, MDefinition**, LabelVector* =
 static bool EmitExprStmt(FunctionCompiler&, MDefinition**, LabelVector* = nullptr);
 
 static bool
-EmitLoadStoreAddress(FunctionCompiler& f, uint32_t* offset, uint32_t* align, MDefinition** base)
+EmitLoadStoreAddress(FunctionCompiler& f, Scalar::Type viewType, uint32_t* offset,
+                     uint32_t* align, MDefinition** base)
 {
     *offset = f.readVarU32();
     MOZ_ASSERT(*offset == 0, "Non-zero offsets not supported yet");
 
     *align = f.readVarU32();
 
-    return EmitExpr(f, ExprType::I32, base);
+    if (!EmitExpr(f, ExprType::I32, base))
+        return false;
+
+    // TODO Remove this (and the viewType param) after implementing unaligned
+    // loads/stores.
+    if (f.mg().isAsmJS())
+        return true;
+
+    int32_t maskVal = ~(Scalar::byteSize(viewType) - 1);
+    if (maskVal == -1)
+        return true;
+
+    MDefinition* mask = f.constant(Int32Value(maskVal), MIRType_Int32);
+    *base = f.bitwise(*base, mask, MIRType_Int32);
+    return true;
 }
 
 static bool
-EmitLoad(FunctionCompiler& f, Scalar::Type scalarType, MDefinition** def)
+EmitLoad(FunctionCompiler& f, Scalar::Type viewType, MDefinition** def)
 {
     uint32_t offset, align;
     MDefinition* ptr;
-    if (!EmitLoadStoreAddress(f, &offset, &align, &ptr))
+    if (!EmitLoadStoreAddress(f, viewType, &offset, &align, &ptr))
         return false;
-    *def = f.loadHeap(scalarType, ptr);
+    *def = f.loadHeap(viewType, ptr);
     return true;
 }
 
@@ -1438,7 +1453,7 @@ EmitStore(FunctionCompiler& f, Scalar::Type viewType, MDefinition** def)
 {
     uint32_t offset, align;
     MDefinition* ptr;
-    if (!EmitLoadStoreAddress(f, &offset, &align, &ptr))
+    if (!EmitLoadStoreAddress(f, viewType, &offset, &align, &ptr))
         return false;
 
     MDefinition* rhs = nullptr;
@@ -1471,7 +1486,7 @@ EmitStoreWithCoercion(FunctionCompiler& f, Scalar::Type rhsType, Scalar::Type vi
 {
     uint32_t offset, align;
     MDefinition* ptr;
-    if (!EmitLoadStoreAddress(f, &offset, &align, &ptr))
+    if (!EmitLoadStoreAddress(f, viewType, &offset, &align, &ptr))
         return false;
 
     MDefinition* rhs = nullptr;
@@ -1544,7 +1559,7 @@ EmitAtomicsLoad(FunctionCompiler& f, MDefinition** def)
 
     uint32_t offset, align;
     MDefinition* index;
-    if (!EmitLoadStoreAddress(f, &offset, &align, &index))
+    if (!EmitLoadStoreAddress(f, viewType, &offset, &align, &index))
         return false;
 
     *def = f.atomicLoadHeap(viewType, index);
@@ -1558,7 +1573,7 @@ EmitAtomicsStore(FunctionCompiler& f, MDefinition** def)
 
     uint32_t offset, align;
     MDefinition* index;
-    if (!EmitLoadStoreAddress(f, &offset, &align, &index))
+    if (!EmitLoadStoreAddress(f, viewType, &offset, &align, &index))
         return false;
 
     MDefinition* value;
@@ -1577,7 +1592,7 @@ EmitAtomicsBinOp(FunctionCompiler& f, MDefinition** def)
 
     uint32_t offset, align;
     MDefinition* index;
-    if (!EmitLoadStoreAddress(f, &offset, &align, &index))
+    if (!EmitLoadStoreAddress(f, viewType, &offset, &align, &index))
         return false;
 
     MDefinition* value;
@@ -1594,7 +1609,7 @@ EmitAtomicsCompareExchange(FunctionCompiler& f, MDefinition** def)
 
     uint32_t offset, align;
     MDefinition* index;
-    if (!EmitLoadStoreAddress(f, &offset, &align, &index))
+    if (!EmitLoadStoreAddress(f, viewType, &offset, &align, &index))
         return false;
 
     MDefinition* oldValue;
@@ -1614,7 +1629,7 @@ EmitAtomicsExchange(FunctionCompiler& f, MDefinition** def)
 
     uint32_t offset, align;
     MDefinition* index;
-    if (!EmitLoadStoreAddress(f, &offset, &align, &index))
+    if (!EmitLoadStoreAddress(f, viewType, &offset, &align, &index))
         return false;
 
     MDefinition* value;
@@ -2184,7 +2199,8 @@ EmitDivOrMod(FunctionCompiler& f, ExprType type, bool isDiv, bool isUnsigned, MD
 static bool
 EmitDivOrMod(FunctionCompiler& f, ExprType type, bool isDiv, MDefinition** def)
 {
-    MOZ_ASSERT(type != ExprType::I32, "int div or mod must precise signedness");
+    MOZ_ASSERT(type != ExprType::I32 && type != ExprType::I64,
+               "int div or mod must indicate signedness");
     return EmitDivOrMod(f, type, isDiv, false, def);
 }
 
@@ -2897,6 +2913,18 @@ EmitExpr(FunctionCompiler& f, ExprType type, MDefinition** def, LabelVector* may
         return EmitBitwise(f, ExprType::I64, def);
       case Expr::I64ShrU:
         return EmitBitwise(f, ExprType::I64, def);
+      case Expr::I64Add:
+        return EmitAddOrSub(f, ExprType::I64, IsAdd(true), def);
+      case Expr::I64Sub:
+        return EmitAddOrSub(f, ExprType::I64, IsAdd(false), def);
+      case Expr::I64Mul:
+        return EmitMultiply(f, ExprType::I64, def);
+      case Expr::I64DivS:
+      case Expr::I64DivU:
+        return EmitDivOrMod(f, ExprType::I64, IsDiv(true), IsUnsigned(op == Expr::I64DivU), def);
+      case Expr::I64RemS:
+      case Expr::I64RemU:
+        return EmitDivOrMod(f, ExprType::I64, IsDiv(false), IsUnsigned(op == Expr::I64RemU), def);
       // F32
       case Expr::F32Const:
         return EmitLiteral(f, ExprType::F32, def);
@@ -3066,13 +3094,6 @@ EmitExpr(FunctionCompiler& f, ExprType type, MDefinition** def, LabelVector* may
       case Expr::I64Clz:
       case Expr::I64Ctz:
       case Expr::I64Popcnt:
-      case Expr::I64Add:
-      case Expr::I64Sub:
-      case Expr::I64Mul:
-      case Expr::I64DivS:
-      case Expr::I64DivU:
-      case Expr::I64RemS:
-      case Expr::I64RemU:
         MOZ_CRASH("NYI");
       case Expr::Unreachable:
         break;
diff --git a/js/src/asmjs/WasmModule.cpp b/js/src/asmjs/WasmModule.cpp
index 3c1c83b49d9..b644ed33813 100644
--- a/js/src/asmjs/WasmModule.cpp
+++ b/js/src/asmjs/WasmModule.cpp
@@ -800,10 +800,13 @@ Module::setProfilingEnabled(JSContext* cx, bool enabled)
     }
 
     // Update the function-pointer tables to point to profiling prologues.
-    for (FuncPtrTable& funcPtrTable : funcPtrTables_) {
-        auto array = reinterpret_cast(globalData() + funcPtrTable.globalDataOffset);
-        for (size_t i = 0; i < funcPtrTable.numElems; i++) {
+    for (FuncPtrTable& table : funcPtrTables_) {
+        auto array = reinterpret_cast(globalData() + table.globalDataOffset);
+        for (size_t i = 0; i < table.numElems; i++) {
             const CodeRange* codeRange = lookupCodeRange(array[i]);
+            // Don't update entries for the BadIndirectCall exit.
+            if (codeRange->isErrorExit())
+                continue;
             void* from = code() + codeRange->funcNonProfilingEntry();
             void* to = code() + codeRange->funcProfilingEntry();
             if (!enabled)
@@ -1057,8 +1060,9 @@ Module::staticallyLink(ExclusiveContext* cx, const StaticLinkData& linkData)
         auto array = reinterpret_cast(globalData() + table.globalDataOffset);
         for (size_t i = 0; i < table.elemOffsets.length(); i++) {
             uint8_t* elem = code() + table.elemOffsets[i];
-            if (profilingEnabled_)
-                elem = code() + lookupCodeRange(elem)->funcProfilingEntry();
+            const CodeRange* codeRange = lookupCodeRange(elem);
+            if (profilingEnabled_ && !codeRange->isErrorExit())
+                elem = code() + codeRange->funcProfilingEntry();
             array[i] = elem;
         }
     }
diff --git a/js/src/asmjs/WasmModule.h b/js/src/asmjs/WasmModule.h
index 5e7340142d2..95ed6c3b2b4 100644
--- a/js/src/asmjs/WasmModule.h
+++ b/js/src/asmjs/WasmModule.h
@@ -249,6 +249,9 @@ class CodeRange
     bool isImportExit() const {
         return kind() == ImportJitExit || kind() == ImportInterpExit;
     }
+    bool isErrorExit() const {
+        return kind() == ErrorExit;
+    }
     uint32_t funcProfilingEntry() const {
         MOZ_ASSERT(isFunction());
         return begin();
diff --git a/js/src/jit-test/tests/wasm/basic-integer.js b/js/src/jit-test/tests/wasm/basic-integer.js
index 90c6ebd41a5..be47dd190e2 100644
--- a/js/src/jit-test/tests/wasm/basic-integer.js
+++ b/js/src/jit-test/tests/wasm/basic-integer.js
@@ -15,6 +15,16 @@ function testBinary(type, opcode, lhs, rhs, expect) {
                             (func (param i64) (param i64) (result i64) (i64.${opcode} (get_local 0) (get_local 1)))
                             (func (result i32) (i64.eq (call 0 (i64.const ${lhs}) (i64.const ${rhs})) (i64.const ${expect})))
                             (export "" 1))`)(), 1);
+    // The same, but now the RHS is a constant.
+    assertEq(wasmEvalText(`(module
+                            (func (param i64) (result i64) (i64.${opcode} (get_local 0) (i64.const ${rhs})))
+                            (func (result i32) (i64.eq (call 0 (i64.const ${lhs})) (i64.const ${expect})))
+                            (export "" 1))`)(), 1);
+    // LHS and RHS are constants.
+    assertEq(wasmEvalText(`(module
+                            (func (result i64) (i64.${opcode} (i64.const ${lhs}) (i64.const ${rhs})))
+                            (func (result i32) (i64.eq (call 0) (i64.const ${expect})))
+                            (export "" 1))`)(), 1);
   } else {
     assertEq(wasmEvalText('(module (func (param ' + type + ') (param ' + type + ') (result ' + type + ') (' + type + '.' + opcode + ' (get_local 0) (get_local 1))) (export "" 0))')(lhs, rhs), expect);
   }
@@ -73,15 +83,38 @@ testComparison('i32', 'ge_u', 40, 40, 1);
 //testUnary('i64', 'ctz', 40, 0); // TODO: NYI
 //testUnary('i64', 'popcnt', 40, 0); // TODO: NYI
 
-//testBinary('i64', 'add', 40, 2, 42); // TODO: NYI
-//testBinary('i64', 'sub', 40, 2, 38); // TODO: NYI
-//testBinary('i64', 'mul', 40, 2, 80); // TODO: NYI
-//testBinary('i64', 'div_s', -40, 2, -20); // TODO: NYI
-//testBinary('i64', 'div_u', -40, 2, 2147483628); // TODO: NYI
-//testBinary('i64', 'rem_s', 40, -3, 1); // TODO: NYI
-//testBinary('i64', 'rem_u', 40, -3, 40); // TODO: NYI
-
 if (getBuildConfiguration().x64) {
+    testBinary('i64', 'add', 40, 2, 42);
+    testBinary('i64', 'add', "0x1234567887654321", -1, "0x1234567887654320");
+    testBinary('i64', 'add', "0xffffffffffffffff", 1, 0);
+    testBinary('i64', 'sub', 40, 2, 38);
+    testBinary('i64', 'sub', "0x1234567887654321", "0x123456789", "0x12345677641fdb98");
+    testBinary('i64', 'sub', 3, 5, -2);
+    testBinary('i64', 'mul', 40, 2, 80);
+    testBinary('i64', 'mul', -1, 2, -2);
+    testBinary('i64', 'mul', 0x123456, "0x9876543210", "0xad77d2c5f941160");
+    testBinary('i64', 'div_s', -40, 2, -20);
+    testBinary('i64', 'div_s', "0x1234567887654321", 2, "0x91a2b3c43b2a190");
+    testBinary('i64', 'div_s', "0x1234567887654321", "0x1000000000", "0x1234567");
+    testBinary('i64', 'div_u', -40, 2, "0x7fffffffffffffec");
+    testBinary('i64', 'div_u', "0x1234567887654321", 9, "0x205d0b80f0b4059");
+    testBinary('i64', 'rem_s', 40, -3, 1);
+    testBinary('i64', 'rem_s', "0x1234567887654321", "0x1000000000", "0x887654321");
+    testBinary('i64', 'rem_s', "0x7fffffffffffffff", -1, 0);
+    testBinary('i64', 'rem_s', "0x8000000000000001", 1000, -807);
+    testBinary('i64', 'rem_s', "0x8000000000000000", -1, 0);
+    testBinary('i64', 'rem_u', 40, -3, 40);
+    testBinary('i64', 'rem_u', "0x1234567887654321", "0x1000000000", "0x887654321");
+    testBinary('i64', 'rem_u', "0x8000000000000000", -1, "0x8000000000000000");
+    testBinary('i64', 'rem_u', "0x8ff00ff00ff00ff0", "0x100000001", "0x80000001");
+
+    // These should trap, but for now we match the i32 version.
+    testBinary('i64', 'div_s', 10, 0, 0);
+    testBinary('i64', 'div_s', "0x8000000000000000", -1, "0x8000000000000000");
+    testBinary('i64', 'div_u', 0, 0, 0);
+    testBinary('i64', 'rem_s', 10, 0, 0);
+    testBinary('i64', 'rem_u', 10, 0, 0);
+
     testBinary('i64', 'and', 42, 6, 2);
     testBinary('i64', 'or', 42, 6, 46);
     testBinary('i64', 'xor', 42, 2, 40);
diff --git a/js/src/jit-test/tests/wasm/basic-memory.js b/js/src/jit-test/tests/wasm/basic-memory.js
index 201cefac0b7..68ae89e5ce3 100644
--- a/js/src/jit-test/tests/wasm/basic-memory.js
+++ b/js/src/jit-test/tests/wasm/basic-memory.js
@@ -74,7 +74,10 @@ function testStoreError(type, ext, base, offset, align, errorMsg) {
 }
 
 testLoad('i32', '', 0, 0, 0, 0x03020100);
+
+testLoad('i32', '', 1, 0, 0, 0x03020100);   // TODO: unaligned NYI
 //testLoad('i32', '', 1, 0, 0, 0x04030201); // TODO: unaligned NYI
+
 //testLoad('i32', '', 0, 1, 0, 0x01020304); // TODO: offsets NYI
 //testLoad('i32', '', 1, 1, 4, 0x02030405); // TODO: offsets NYI
 //testLoad('i64', '', 0, 0, 0, 0x0001020304050607); // TODO: i64 NYI
diff --git a/js/src/jit-test/tests/wasm/basic.js b/js/src/jit-test/tests/wasm/basic.js
index 4ac395c02e1..98dd0bee7fe 100644
--- a/js/src/jit-test/tests/wasm/basic.js
+++ b/js/src/jit-test/tests/wasm/basic.js
@@ -325,26 +325,40 @@ var {v2i, i2i, i2v} = wasmEvalText(`(module
     (export "i2v" 8)
 )`);
 
+const badIndirectCall = /wasm indirect call signature mismatch/;
+
 assertEq(v2i(0), 13);
 assertEq(v2i(1), 42);
-assertErrorMessage(() => v2i(2), Error, /wasm indirect call signature mismatch/);
-assertErrorMessage(() => v2i(3), Error, /wasm indirect call signature mismatch/);
-assertErrorMessage(() => v2i(4), Error, /wasm indirect call signature mismatch/);
-assertErrorMessage(() => v2i(5), Error, /wasm indirect call signature mismatch/);
+assertErrorMessage(() => v2i(2), Error, badIndirectCall);
+assertErrorMessage(() => v2i(3), Error, badIndirectCall);
+assertErrorMessage(() => v2i(4), Error, badIndirectCall);
+assertErrorMessage(() => v2i(5), Error, badIndirectCall);
 
-assertErrorMessage(() => i2i(0), Error, /wasm indirect call signature mismatch/);
-assertErrorMessage(() => i2i(1), Error, /wasm indirect call signature mismatch/);
+assertErrorMessage(() => i2i(0), Error, badIndirectCall);
+assertErrorMessage(() => i2i(1), Error, badIndirectCall);
 assertEq(i2i(2, 100), 101);
 assertEq(i2i(3, 100), 102);
 assertEq(i2i(4, 100), 103);
 assertEq(i2i(5, 100), 104);
 
-assertErrorMessage(() => i2v(0), Error, /wasm indirect call signature mismatch/);
-assertErrorMessage(() => i2v(1), Error, /wasm indirect call signature mismatch/);
-assertErrorMessage(() => i2v(2), Error, /wasm indirect call signature mismatch/);
-assertErrorMessage(() => i2v(3), Error, /wasm indirect call signature mismatch/);
-assertErrorMessage(() => i2v(4), Error, /wasm indirect call signature mismatch/);
-assertErrorMessage(() => i2v(5), Error, /wasm indirect call signature mismatch/);
+assertErrorMessage(() => i2v(0), Error, badIndirectCall);
+assertErrorMessage(() => i2v(1), Error, badIndirectCall);
+assertErrorMessage(() => i2v(2), Error, badIndirectCall);
+assertErrorMessage(() => i2v(3), Error, badIndirectCall);
+assertErrorMessage(() => i2v(4), Error, badIndirectCall);
+assertErrorMessage(() => i2v(5), Error, badIndirectCall);
+
+{
+    enableSPSProfiling();
+    wasmEvalText(`(
+        module
+        (func (result i32) (i32.const 0))
+        (func)
+        (table 1 0)
+        (export "" 0)
+    )`)();
+    disableSPSProfiling();
+}
 
 for (bad of [6, 7, 100, Math.pow(2,31)-1, Math.pow(2,31), Math.pow(2,31)+1, Math.pow(2,32)-2, Math.pow(2,32)-1]) {
     assertThrowsInstanceOf(() => v2i(bad), RangeError);
diff --git a/js/src/jit/Lowering.cpp b/js/src/jit/Lowering.cpp
index dcba1854549..b8526f3fad5 100644
--- a/js/src/jit/Lowering.cpp
+++ b/js/src/jit/Lowering.cpp
@@ -1555,17 +1555,29 @@ LIRGenerator::visitAdd(MAdd* ins)
         return;
     }
 
+    if (ins->specialization() == MIRType_Int64) {
+        MOZ_ASSERT(lhs->type() == MIRType_Int64);
+        ReorderCommutative(&lhs, &rhs, ins);
+        LAddI64* lir = new(alloc()) LAddI64;
+        lowerForALUInt64(lir, ins, lhs, rhs);
+        return;
+    }
+
     if (ins->specialization() == MIRType_Double) {
         MOZ_ASSERT(lhs->type() == MIRType_Double);
         ReorderCommutative(&lhs, &rhs, ins);
         lowerForFPU(new(alloc()) LMathD(JSOP_ADD), ins, lhs, rhs);
-    } else if (ins->specialization() == MIRType_Float32) {
+        return;
+    }
+
+    if (ins->specialization() == MIRType_Float32) {
         MOZ_ASSERT(lhs->type() == MIRType_Float32);
         ReorderCommutative(&lhs, &rhs, ins);
         lowerForFPU(new(alloc()) LMathF(JSOP_ADD), ins, lhs, rhs);
-    } else {
-        lowerBinaryV(JSOP_ADD, ins);
+        return;
     }
+
+    lowerBinaryV(JSOP_ADD, ins);
 }
 
 void
@@ -1588,15 +1600,27 @@ LIRGenerator::visitSub(MSub* ins)
         return;
     }
 
+    if (ins->specialization() == MIRType_Int64) {
+        MOZ_ASSERT(lhs->type() == MIRType_Int64);
+        ReorderCommutative(&lhs, &rhs, ins);
+        LSubI64* lir = new(alloc()) LSubI64;
+        lowerForALUInt64(lir, ins, lhs, rhs);
+        return;
+    }
+
     if (ins->specialization() == MIRType_Double) {
         MOZ_ASSERT(lhs->type() == MIRType_Double);
         lowerForFPU(new(alloc()) LMathD(JSOP_SUB), ins, lhs, rhs);
-    } else if (ins->specialization() == MIRType_Float32) {
+        return;
+    }
+
+    if (ins->specialization() == MIRType_Float32) {
         MOZ_ASSERT(lhs->type() == MIRType_Float32);
         lowerForFPU(new(alloc()) LMathF(JSOP_SUB), ins, lhs, rhs);
-    } else {
-        lowerBinaryV(JSOP_SUB, ins);
+        return;
     }
+
+    lowerBinaryV(JSOP_SUB, ins);
 }
 
 void
@@ -1616,7 +1640,18 @@ LIRGenerator::visitMul(MMul* ins)
             defineReuseInput(new(alloc()) LNegI(useRegisterAtStart(lhs)), ins, 0);
         else
             lowerMulI(ins, lhs, rhs);
-    } else if (ins->specialization() == MIRType_Double) {
+        return;
+    }
+
+    if (ins->specialization() == MIRType_Int64) {
+        MOZ_ASSERT(lhs->type() == MIRType_Int64);
+        ReorderCommutative(&lhs, &rhs, ins);
+        LMulI64* lir = new(alloc()) LMulI64;
+        lowerForALUInt64(lir, ins, lhs, rhs);
+        return;
+    }
+
+    if (ins->specialization() == MIRType_Double) {
         MOZ_ASSERT(lhs->type() == MIRType_Double);
         ReorderCommutative(&lhs, &rhs, ins);
 
@@ -1625,7 +1660,10 @@ LIRGenerator::visitMul(MMul* ins)
             defineReuseInput(new(alloc()) LNegD(useRegisterAtStart(lhs)), ins, 0);
         else
             lowerForFPU(new(alloc()) LMathD(JSOP_MUL), ins, lhs, rhs);
-    } else if (ins->specialization() == MIRType_Float32) {
+        return;
+    }
+
+    if (ins->specialization() == MIRType_Float32) {
         MOZ_ASSERT(lhs->type() == MIRType_Float32);
         ReorderCommutative(&lhs, &rhs, ins);
 
@@ -1634,9 +1672,10 @@ LIRGenerator::visitMul(MMul* ins)
             defineReuseInput(new(alloc()) LNegF(useRegisterAtStart(lhs)), ins, 0);
         else
             lowerForFPU(new(alloc()) LMathF(JSOP_MUL), ins, lhs, rhs);
-    } else {
-        lowerBinaryV(JSOP_MUL, ins);
+        return;
     }
+
+    lowerBinaryV(JSOP_MUL, ins);
 }
 
 void
@@ -1649,15 +1688,28 @@ LIRGenerator::visitDiv(MDiv* ins)
     if (ins->specialization() == MIRType_Int32) {
         MOZ_ASSERT(lhs->type() == MIRType_Int32);
         lowerDivI(ins);
-    } else if (ins->specialization() == MIRType_Double) {
+        return;
+    }
+
+    if (ins->specialization() == MIRType_Int64) {
+        MOZ_ASSERT(lhs->type() == MIRType_Int64);
+        lowerDivI64(ins);
+        return;
+    }
+
+    if (ins->specialization() == MIRType_Double) {
         MOZ_ASSERT(lhs->type() == MIRType_Double);
         lowerForFPU(new(alloc()) LMathD(JSOP_DIV), ins, lhs, rhs);
-    } else if (ins->specialization() == MIRType_Float32) {
+        return;
+    }
+
+    if (ins->specialization() == MIRType_Float32) {
         MOZ_ASSERT(lhs->type() == MIRType_Float32);
         lowerForFPU(new(alloc()) LMathF(JSOP_DIV), ins, lhs, rhs);
-    } else {
-        lowerBinaryV(JSOP_DIV, ins);
+        return;
     }
+
+    lowerBinaryV(JSOP_DIV, ins);
 }
 
 void
@@ -1669,7 +1721,17 @@ LIRGenerator::visitMod(MMod* ins)
         MOZ_ASSERT(ins->type() == MIRType_Int32);
         MOZ_ASSERT(ins->lhs()->type() == MIRType_Int32);
         lowerModI(ins);
-    } else if (ins->specialization() == MIRType_Double) {
+        return;
+    }
+
+    if (ins->specialization() == MIRType_Int64) {
+        MOZ_ASSERT(ins->type() == MIRType_Int64);
+        MOZ_ASSERT(ins->lhs()->type() == MIRType_Int64);
+        lowerModI64(ins);
+        return;
+    }
+
+    if (ins->specialization() == MIRType_Double) {
         MOZ_ASSERT(ins->type() == MIRType_Double);
         MOZ_ASSERT(ins->lhs()->type() == MIRType_Double);
         MOZ_ASSERT(ins->rhs()->type() == MIRType_Double);
@@ -1678,9 +1740,10 @@ LIRGenerator::visitMod(MMod* ins)
         LModD* lir = new(alloc()) LModD(useRegisterAtStart(ins->lhs()), useRegisterAtStart(ins->rhs()),
                                         tempFixed(CallTempReg0));
         defineReturn(lir, ins);
-    } else {
-        lowerBinaryV(JSOP_MOD, ins);
+        return;
     }
+
+    lowerBinaryV(JSOP_MOD, ins);
 }
 
 void
diff --git a/js/src/jit/MIR.cpp b/js/src/jit/MIR.cpp
index d15f3d29556..ceebbb542d4 100644
--- a/js/src/jit/MIR.cpp
+++ b/js/src/jit/MIR.cpp
@@ -899,6 +899,9 @@ MConstant::printOpcode(GenericPrinter& out) const
       case MIRType_Int32:
         out.printf("0x%x", toInt32());
         break;
+      case MIRType_Int64:
+        out.printf("0x%" PRIx64, toInt64());
+        break;
       case MIRType_Double:
         out.printf("%.16g", toDouble());
         break;
@@ -2701,6 +2704,9 @@ MBinaryArithInstruction::foldsTo(TempAllocator& alloc)
     if (specialization_ == MIRType_None)
         return this;
 
+    if (specialization_ == MIRType_Int64)
+        return this;
+
     MDefinition* lhs = getOperand(0);
     MDefinition* rhs = getOperand(1);
     if (MConstant* folded = EvaluateConstantOperands(alloc, this)) {
@@ -2913,6 +2919,9 @@ MDiv::foldsTo(TempAllocator& alloc)
     if (specialization_ == MIRType_None)
         return this;
 
+    if (specialization_ == MIRType_Int64)
+        return this;
+
     if (MDefinition* folded = EvaluateConstantOperands(alloc, this))
         return folded;
 
@@ -2975,6 +2984,9 @@ MMod::foldsTo(TempAllocator& alloc)
     if (specialization_ == MIRType_None)
         return this;
 
+    if (specialization_ == MIRType_Int64)
+        return this;
+
     if (MDefinition* folded = EvaluateConstantOperands(alloc, this))
         return folded;
 
@@ -5435,7 +5447,7 @@ jit::PropertyReadNeedsTypeBarrier(JSContext* propertycx,
                     TypeSet::TypeList types;
                     if (!property.maybeTypes()->enumerateTypes(&types))
                         break;
-                    if (types.length()) {
+                    if (types.length() == 1) {
                         // Note: the return value here is ignored.
                         observed->addType(types[0], GetJitContext()->temp->lifoAlloc());
                         break;
diff --git a/js/src/jit/MIR.h b/js/src/jit/MIR.h
index 29c8ace5aca..0be67c1803c 100644
--- a/js/src/jit/MIR.h
+++ b/js/src/jit/MIR.h
@@ -6728,13 +6728,13 @@ class MMod : public MBinaryArithInstruction
     }
 
     bool canBeNegativeDividend() const {
-        MOZ_ASSERT(specialization_ == MIRType_Int32);
+        MOZ_ASSERT(specialization_ == MIRType_Int32 || specialization_ == MIRType_Int64);
         MOZ_ASSERT(!unsigned_);
         return canBeNegativeDividend_;
     }
 
     bool canBeDivideByZero() const {
-        MOZ_ASSERT(specialization_ == MIRType_Int32);
+        MOZ_ASSERT(specialization_ == MIRType_Int32 || specialization_ == MIRType_Int64);
         return canBeDivideByZero_;
     }
 
diff --git a/js/src/jit/MacroAssembler.h b/js/src/jit/MacroAssembler.h
index f24e5f3027b..c5290cc34c2 100644
--- a/js/src/jit/MacroAssembler.h
+++ b/js/src/jit/MacroAssembler.h
@@ -745,6 +745,7 @@ class MacroAssembler : public MacroAssemblerSpecific
     inline void subPtr(Register src, Register dest) PER_ARCH;
     inline void subPtr(Register src, const Address& dest) DEFINED_ON(mips_shared, arm, arm64, x86, x64);
     inline void subPtr(Imm32 imm, Register dest) PER_ARCH;
+    inline void subPtr(ImmWord imm, Register dest) DEFINED_ON(x64);
     inline void subPtr(const Address& addr, Register dest) DEFINED_ON(mips_shared, arm, arm64, x86, x64);
 
     inline void subDouble(FloatRegister src, FloatRegister dest) PER_SHARED_ARCH;
diff --git a/js/src/jit/arm/Lowering-arm.cpp b/js/src/jit/arm/Lowering-arm.cpp
index f08110aadee..3d054f4d64d 100644
--- a/js/src/jit/arm/Lowering-arm.cpp
+++ b/js/src/jit/arm/Lowering-arm.cpp
@@ -338,6 +338,18 @@ LIRGeneratorARM::lowerModI(MMod* mod)
     defineFixed(lir, mod, LAllocation(AnyRegister(r1)));
 }
 
+void
+LIRGeneratorARM::lowerDivI64(MDiv* div)
+{
+    MOZ_CRASH("NYI");
+}
+
+void
+LIRGeneratorARM::lowerModI64(MMod* mod)
+{
+    MOZ_CRASH("NYI");
+}
+
 void
 LIRGeneratorARM::visitPowHalf(MPowHalf* ins)
 {
diff --git a/js/src/jit/arm/Lowering-arm.h b/js/src/jit/arm/Lowering-arm.h
index 9dd5ff6002e..0ac7bd9530b 100644
--- a/js/src/jit/arm/Lowering-arm.h
+++ b/js/src/jit/arm/Lowering-arm.h
@@ -75,6 +75,8 @@ class LIRGeneratorARM : public LIRGeneratorShared
     void lowerTruncateFToInt32(MTruncateToInt32* ins);
     void lowerDivI(MDiv* div);
     void lowerModI(MMod* mod);
+    void lowerDivI64(MDiv* div);
+    void lowerModI64(MMod* mod);
     void lowerMulI(MMul* mul, MDefinition* lhs, MDefinition* rhs);
     void lowerUDiv(MDiv* div);
     void lowerUMod(MMod* mod);
diff --git a/js/src/jit/arm64/Lowering-arm64.cpp b/js/src/jit/arm64/Lowering-arm64.cpp
index 5d6c69b301e..ecdba00514c 100644
--- a/js/src/jit/arm64/Lowering-arm64.cpp
+++ b/js/src/jit/arm64/Lowering-arm64.cpp
@@ -146,6 +146,18 @@ LIRGeneratorARM64::lowerModI(MMod* mod)
     MOZ_CRASH("lowerModI");
 }
 
+void
+LIRGeneratorARM64::lowerDivI64(MDiv* div)
+{
+    MOZ_CRASH("NYI");
+}
+
+void
+LIRGeneratorARM64::lowerModI64(MMod* mod)
+{
+    MOZ_CRASH("NYI");
+}
+
 void
 LIRGeneratorARM64::visitPowHalf(MPowHalf* ins)
 {
diff --git a/js/src/jit/arm64/Lowering-arm64.h b/js/src/jit/arm64/Lowering-arm64.h
index b6efb8e76d8..de11accd994 100644
--- a/js/src/jit/arm64/Lowering-arm64.h
+++ b/js/src/jit/arm64/Lowering-arm64.h
@@ -77,6 +77,8 @@ class LIRGeneratorARM64 : public LIRGeneratorShared
     void lowerTruncateFToInt32(MTruncateToInt32* ins);
     void lowerDivI(MDiv* div);
     void lowerModI(MMod* mod);
+    void lowerDivI64(MDiv* div);
+    void lowerModI64(MMod* mod);
     void lowerMulI(MMul* mul, MDefinition* lhs, MDefinition* rhs);
     void lowerUDiv(MDiv* div);
     void lowerUMod(MMod* mod);
diff --git a/js/src/jit/mips-shared/Lowering-mips-shared.cpp b/js/src/jit/mips-shared/Lowering-mips-shared.cpp
index ab5b0a5563f..70a24409f07 100644
--- a/js/src/jit/mips-shared/Lowering-mips-shared.cpp
+++ b/js/src/jit/mips-shared/Lowering-mips-shared.cpp
@@ -188,6 +188,18 @@ LIRGeneratorMIPSShared::lowerModI(MMod* mod)
     define(lir, mod);
 }
 
+void
+LIRGeneratorMIPSShared::lowerDivI64(MDiv* div)
+{
+    MOZ_CRASH("NYI");
+}
+
+void
+LIRGeneratorMIPSShared::lowerModI64(MMod* mod)
+{
+    MOZ_CRASH("NYI");
+}
+
 void
 LIRGeneratorMIPSShared::visitPowHalf(MPowHalf* ins)
 {
diff --git a/js/src/jit/mips-shared/Lowering-mips-shared.h b/js/src/jit/mips-shared/Lowering-mips-shared.h
index 8208b3f0eca..6230588dfdd 100644
--- a/js/src/jit/mips-shared/Lowering-mips-shared.h
+++ b/js/src/jit/mips-shared/Lowering-mips-shared.h
@@ -63,6 +63,8 @@ class LIRGeneratorMIPSShared : public LIRGeneratorShared
                                  MDefinition* lhs, MDefinition* rhs);
     void lowerDivI(MDiv* div);
     void lowerModI(MMod* mod);
+    void lowerDivI64(MDiv* div);
+    void lowerModI64(MMod* mod);
     void lowerMulI(MMul* mul, MDefinition* lhs, MDefinition* rhs);
     void lowerUDiv(MDiv* div);
     void lowerUMod(MMod* mod);
diff --git a/js/src/jit/none/Lowering-none.h b/js/src/jit/none/Lowering-none.h
index d62a5e096d5..8766f83b971 100644
--- a/js/src/jit/none/Lowering-none.h
+++ b/js/src/jit/none/Lowering-none.h
@@ -61,6 +61,8 @@ class LIRGeneratorNone : public LIRGeneratorShared
     void lowerTruncateFToInt32(MTruncateToInt32*) { MOZ_CRASH(); }
     void lowerDivI(MDiv*) { MOZ_CRASH(); }
     void lowerModI(MMod*) { MOZ_CRASH(); }
+    void lowerDivI64(MDiv*) { MOZ_CRASH(); }
+    void lowerModI64(MMod*) { MOZ_CRASH(); }
     void lowerMulI(MMul*, MDefinition*, MDefinition*) { MOZ_CRASH(); }
     void lowerUDiv(MDiv*) { MOZ_CRASH(); }
     void lowerUMod(MMod*) { MOZ_CRASH(); }
diff --git a/js/src/jit/shared/LIR-shared.h b/js/src/jit/shared/LIR-shared.h
index 05cb3024d2f..ec00badf369 100644
--- a/js/src/jit/shared/LIR-shared.h
+++ b/js/src/jit/shared/LIR-shared.h
@@ -3418,6 +3418,12 @@ class LAddI : public LBinaryMath<0>
     }
 };
 
+class LAddI64 : public LInstructionHelper
+{
+  public:
+    LIR_HEADER(AddI64)
+};
+
 // Subtracts two integers, returning an integer value.
 class LSubI : public LBinaryMath<0>
 {
@@ -3445,6 +3451,18 @@ class LSubI : public LBinaryMath<0>
     }
 };
 
+class LSubI64 : public LInstructionHelper
+{
+  public:
+    LIR_HEADER(SubI64)
+};
+
+class LMulI64 : public LInstructionHelper
+{
+  public:
+    LIR_HEADER(MulI64)
+};
+
 // Performs an add, sub, mul, or div on two double values.
 class LMathD : public LBinaryMath<0>
 {
diff --git a/js/src/jit/shared/LOpcodes-shared.h b/js/src/jit/shared/LOpcodes-shared.h
index f77dc07b652..18177cd929d 100644
--- a/js/src/jit/shared/LOpcodes-shared.h
+++ b/js/src/jit/shared/LOpcodes-shared.h
@@ -158,8 +158,11 @@
     _(NotO)                         \
     _(NotV)                         \
     _(AddI)                         \
+    _(AddI64)                       \
     _(SubI)                         \
+    _(SubI64)                       \
     _(MulI)                         \
+    _(MulI64)                       \
     _(MathD)                        \
     _(MathF)                        \
     _(DivI)                         \
diff --git a/js/src/jit/shared/Lowering-shared-inl.h b/js/src/jit/shared/Lowering-shared-inl.h
index 3e2960f3dc4..a18fb7986fe 100644
--- a/js/src/jit/shared/Lowering-shared-inl.h
+++ b/js/src/jit/shared/Lowering-shared-inl.h
@@ -73,6 +73,35 @@ LIRGeneratorShared::defineFixed(LInstructionHelper<1, X, Y>* lir, MDefinition* m
     define(lir, mir, def);
 }
 
+template  void
+LIRGeneratorShared::defineInt64Fixed(LInstructionHelper* lir, MDefinition* mir,
+                                     const LInt64Allocation& output)
+{
+    uint32_t vreg = getVirtualRegister();
+
+#if JS_BITS_PER_WORD == 64
+    LDefinition def(LDefinition::GENERAL, LDefinition::FIXED);
+    def.setOutput(output.value());
+    lir->setDef(0, def);
+    lir->getDef(0)->setVirtualRegister(vreg);
+#else
+    LDefinition def0(LDefinition::GENERAL, LDefinition::FIXED);
+    def0.setOutput(output.low());
+    lir->setDef(0, def0);
+    lir->getDef(0)->setVirtualRegister(vreg);
+
+    getVirtualRegister();
+    LDefinition def1(LDefinition::GENERAL, LDefinition::FIXED);
+    def1.setOutput(output.high());
+    lir->setDef(1, def1);
+    lir->getDef(1)->setVirtualRegister(vreg + 1);
+#endif
+
+    lir->setMir(mir);
+    mir->setVirtualRegister(vreg);
+    add(lir);
+}
+
 template  void
 LIRGeneratorShared::defineReuseInput(LInstructionHelper<1, Ops, Temps>* lir, MDefinition* mir, uint32_t operand)
 {
diff --git a/js/src/jit/shared/Lowering-shared.h b/js/src/jit/shared/Lowering-shared.h
index 556e73b0944..50612c3c852 100644
--- a/js/src/jit/shared/Lowering-shared.h
+++ b/js/src/jit/shared/Lowering-shared.h
@@ -146,6 +146,10 @@ class LIRGeneratorShared : public MDefinitionVisitor
     inline void defineInt64(LInstructionHelper* lir, MDefinition* mir,
                             LDefinition::Policy policy = LDefinition::REGISTER);
 
+    template 
+    inline void defineInt64Fixed(LInstructionHelper* lir, MDefinition* mir,
+                                 const LInt64Allocation& output);
+
     template 
     inline void defineSinCos(LInstructionHelper<2, Ops, Temps> *lir, MDefinition *mir,
                              LDefinition::Policy policy = LDefinition::REGISTER);
diff --git a/js/src/jit/x64/Assembler-x64.h b/js/src/jit/x64/Assembler-x64.h
index 9892334d3ac..13142b84d4f 100644
--- a/js/src/jit/x64/Assembler-x64.h
+++ b/js/src/jit/x64/Assembler-x64.h
@@ -617,10 +617,40 @@ class Assembler : public AssemblerX86Shared
     void imulq(Register src, Register dest) {
         masm.imulq_rr(src.encoding(), dest.encoding());
     }
+    void imulq(const Operand& src, Register dest) {
+        switch (src.kind()) {
+          case Operand::REG:
+            masm.imulq_rr(src.reg(), dest.encoding());
+            break;
+          case Operand::MEM_REG_DISP:
+            masm.imulq_mr(src.disp(), src.base(), dest.encoding());
+            break;
+          case Operand::MEM_ADDRESS32:
+            MOZ_CRASH("NYI");
+            break;
+          default:
+            MOZ_CRASH("unexpected operand kind");
+        }
+    }
+
+    void cqo() {
+        masm.cqo();
+    }
+    void idivq(Register divisor) {
+        masm.idivq_r(divisor.encoding());
+    }
+    void udivq(Register divisor) {
+        masm.divq_r(divisor.encoding());
+    }
+
     void vcvtsi2sdq(Register src, FloatRegister dest) {
         masm.vcvtsi2sdq_rr(src.encoding(), dest.encoding());
     }
 
+    void negq(Register reg) {
+        masm.negq_r(reg.encoding());
+    }
+
     void mov(ImmWord word, Register dest) {
         // Use xor for setting registers to zero, as it is specially optimized
         // for this purpose on modern hardware. Note that it does clobber FLAGS
diff --git a/js/src/jit/x64/BaseAssembler-x64.h b/js/src/jit/x64/BaseAssembler-x64.h
index b19fb6aed3a..5dccd89d741 100644
--- a/js/src/jit/x64/BaseAssembler-x64.h
+++ b/js/src/jit/x64/BaseAssembler-x64.h
@@ -293,6 +293,30 @@ class BaseAssemblerX64 : public BaseAssembler
         m_formatter.twoByteOp64(OP2_IMUL_GvEv, src, dst);
     }
 
+    void imulq_mr(int32_t offset, RegisterID base, RegisterID dst)
+    {
+        spew("imulq      " MEM_ob ", %s", ADDR_ob(offset, base), GPReg64Name(dst));
+        m_formatter.twoByteOp64(OP2_IMUL_GvEv, offset, base, dst);
+    }
+
+    void cqo()
+    {
+        spew("cqo        ");
+        m_formatter.oneByteOp64(OP_CDQ);
+    }
+
+    void idivq_r(RegisterID divisor)
+    {
+        spew("idivq      %s", GPReg64Name(divisor));
+        m_formatter.oneByteOp64(OP_GROUP3_Ev, divisor, GROUP3_OP_IDIV);
+    }
+
+    void divq_r(RegisterID divisor)
+    {
+        spew("divq       %s", GPReg64Name(divisor));
+        m_formatter.oneByteOp64(OP_GROUP3_Ev, divisor, GROUP3_OP_DIV);
+    }
+
     // Comparisons:
 
     void cmpq_rr(RegisterID rhs, RegisterID lhs)
diff --git a/js/src/jit/x64/CodeGenerator-x64.cpp b/js/src/jit/x64/CodeGenerator-x64.cpp
index 06c78aa05d7..fa317567b99 100644
--- a/js/src/jit/x64/CodeGenerator-x64.cpp
+++ b/js/src/jit/x64/CodeGenerator-x64.cpp
@@ -6,6 +6,8 @@
 
 #include "jit/x64/CodeGenerator-x64.h"
 
+#include "mozilla/MathAlgorithms.h"
+
 #include "jit/IonCaches.h"
 #include "jit/MIR.h"
 
@@ -286,7 +288,7 @@ CodeGeneratorX64::visitShiftI64(LShiftI64* lir)
     const LAllocation* rhs = lir->getOperand(1);
 
     if (rhs->isConstant()) {
-        int32_t shift = ToInt32(rhs) & 0x3F;
+        int32_t shift = int32_t(ToInt64(rhs) & 0x3F);
         switch (lir->bitop()) {
           case JSOP_LSH:
             if (shift)
@@ -321,6 +323,160 @@ CodeGeneratorX64::visitShiftI64(LShiftI64* lir)
     }
 }
 
+void
+CodeGeneratorX64::visitAddI64(LAddI64* lir)
+{
+    Register lhs = ToRegister(lir->getOperand(0));
+    const LAllocation* rhs = lir->getOperand(1);
+
+    MOZ_ASSERT(ToRegister(lir->getDef(0)) == lhs);
+
+    if (rhs->isConstant())
+        masm.addPtr(ImmWord(ToInt64(rhs)), lhs);
+    else
+        masm.addq(ToOperand(rhs), lhs);
+}
+
+void
+CodeGeneratorX64::visitSubI64(LSubI64* lir)
+{
+    Register lhs = ToRegister(lir->getOperand(0));
+    const LAllocation* rhs = lir->getOperand(1);
+
+    MOZ_ASSERT(ToRegister(lir->getDef(0)) == lhs);
+
+    if (rhs->isConstant())
+        masm.subPtr(ImmWord(ToInt64(rhs)), lhs);
+    else
+        masm.subq(ToOperand(rhs), lhs);
+}
+
+void
+CodeGeneratorX64::visitMulI64(LMulI64* lir)
+{
+    Register lhs = ToRegister(lir->getOperand(0));
+    const LAllocation* rhs = lir->getOperand(1);
+
+    MOZ_ASSERT(ToRegister(lir->getDef(0)) == lhs);
+
+    if (rhs->isConstant()) {
+        int64_t constant = ToInt64(rhs);
+        switch (constant) {
+          case -1:
+            masm.negq(lhs);
+            return;
+          case 0:
+            masm.xorl(lhs, lhs);
+            return;
+          case 1:
+            // nop
+            return;
+          case 2:
+            masm.addq(lhs, lhs);
+            return;
+          default:
+            if (constant > 0) {
+                // Use shift if constant is power of 2.
+                int32_t shift = mozilla::FloorLog2(constant);
+                if (int64_t(1 << shift) == constant) {
+                    masm.shlq(Imm32(shift), lhs);
+                    return;
+                }
+            }
+            masm.mul64(Imm64(constant), Register64(lhs));
+        }
+    } else {
+        masm.imulq(ToOperand(rhs), lhs);
+    }
+}
+
+void
+CodeGeneratorX64::visitDivOrModI64(LDivOrModI64* lir)
+{
+    Register lhs = ToRegister(lir->lhs());
+    Register rhs = ToRegister(lir->rhs());
+    Register output = ToRegister(lir->output());
+
+    MOZ_ASSERT_IF(lhs != rhs, rhs != rax);
+    MOZ_ASSERT(rhs != rdx);
+    MOZ_ASSERT_IF(output == rax, ToRegister(lir->remainder()) == rdx);
+    MOZ_ASSERT_IF(output == rdx, ToRegister(lir->remainder()) == rax);
+
+    Label done;
+
+    // Put the lhs in rax.
+    if (lhs != rax)
+        masm.mov(lhs, rax);
+
+    // Handle divide by zero. For now match asm.js and return 0, but
+    // eventually this should trap.
+    if (lir->canBeDivideByZero()) {
+        Label nonZero;
+        masm.branchTestPtr(Assembler::NonZero, rhs, rhs, &nonZero);
+        masm.xorl(output, output);
+        masm.jump(&done);
+        masm.bind(&nonZero);
+    }
+
+    // Handle an integer overflow exception from INT64_MIN / -1. Eventually
+    // signed integer division should trap, instead of returning the
+    // LHS (INT64_MIN).
+    if (lir->canBeNegativeOverflow()) {
+        Label notmin;
+        masm.branchPtr(Assembler::NotEqual, lhs, ImmWord(INT64_MIN), ¬min);
+        masm.branchPtr(Assembler::NotEqual, rhs, ImmWord(-1), ¬min);
+        if (lir->mir()->isMod()) {
+            masm.xorl(output, output);
+        } else {
+            if (lhs != output)
+                masm.mov(lhs, output);
+        }
+        masm.jump(&done);
+        masm.bind(¬min);
+    }
+
+    // Sign extend the lhs into rdx to make rdx:rax.
+    masm.cqo();
+    masm.idivq(rhs);
+
+    masm.bind(&done);
+}
+
+void
+CodeGeneratorX64::visitUDivOrMod64(LUDivOrMod64* lir)
+{
+    Register lhs = ToRegister(lir->lhs());
+    Register rhs = ToRegister(lir->rhs());
+    Register output = ToRegister(lir->output());
+
+    MOZ_ASSERT_IF(lhs != rhs, rhs != rax);
+    MOZ_ASSERT(rhs != rdx);
+    MOZ_ASSERT_IF(output == rax, ToRegister(lir->remainder()) == rdx);
+    MOZ_ASSERT_IF(output == rdx, ToRegister(lir->remainder()) == rax);
+
+    // Put the lhs in rax.
+    if (lhs != rax)
+        masm.mov(lhs, rax);
+
+    Label done;
+
+    // Prevent divide by zero. For now match asm.js and return 0, but
+    // eventually this should trap.
+    if (lir->canBeDivideByZero()) {
+        Label nonZero;
+        masm.branchTestPtr(Assembler::NonZero, rhs, rhs, &nonZero);
+        masm.xorl(output, output);
+        masm.jump(&done);
+        masm.bind(&nonZero);
+    }
+
+    // Zero extend the lhs into rdx to make (rdx:rax).
+    masm.xorl(rdx, rdx);
+    masm.udivq(rhs);
+
+    masm.bind(&done);
+}
+
 void
 CodeGeneratorX64::visitAsmJSUInt32ToDouble(LAsmJSUInt32ToDouble* lir)
 {
diff --git a/js/src/jit/x64/CodeGenerator-x64.h b/js/src/jit/x64/CodeGenerator-x64.h
index 2df9a7dad15..85ffe3c5ad2 100644
--- a/js/src/jit/x64/CodeGenerator-x64.h
+++ b/js/src/jit/x64/CodeGenerator-x64.h
@@ -46,6 +46,11 @@ class CodeGeneratorX64 : public CodeGeneratorX86Shared
     void visitCompare64AndBranch(LCompare64AndBranch* lir);
     void visitBitOpI64(LBitOpI64* lir);
     void visitShiftI64(LShiftI64* lir);
+    void visitAddI64(LAddI64* lir);
+    void visitSubI64(LSubI64* lir);
+    void visitMulI64(LMulI64* lir);
+    void visitDivOrModI64(LDivOrModI64* lir);
+    void visitUDivOrMod64(LUDivOrMod64* lir);
     void visitTruncateDToInt32(LTruncateDToInt32* ins);
     void visitTruncateFToInt32(LTruncateFToInt32* ins);
     void visitLoadTypedArrayElementStatic(LLoadTypedArrayElementStatic* ins);
diff --git a/js/src/jit/x64/LIR-x64.h b/js/src/jit/x64/LIR-x64.h
index a808a5510fa..abcd7a343ea 100644
--- a/js/src/jit/x64/LIR-x64.h
+++ b/js/src/jit/x64/LIR-x64.h
@@ -99,6 +99,71 @@ class LAsmJSLoadFuncPtr : public LInstructionHelper<1, 1, 1>
     }
 };
 
+class LDivOrModI64 : public LBinaryMath<1>
+{
+  public:
+    LIR_HEADER(DivOrModI64)
+
+    LDivOrModI64(const LAllocation& lhs, const LAllocation& rhs, const LDefinition& temp) {
+        setOperand(0, lhs);
+        setOperand(1, rhs);
+        setTemp(0, temp);
+    }
+
+    const LDefinition* remainder() {
+        return getTemp(0);
+    }
+
+    MBinaryArithInstruction* mir() const {
+        MOZ_ASSERT(mir_->isDiv() || mir_->isMod());
+        return static_cast(mir_);
+    }
+    bool canBeDivideByZero() const {
+        if (mir_->isMod())
+            return mir_->toMod()->canBeDivideByZero();
+        return mir_->toDiv()->canBeDivideByZero();
+    }
+    bool canBeNegativeOverflow() const {
+        if (mir_->isMod())
+            return mir_->toMod()->canBeNegativeDividend();
+        return mir_->toDiv()->canBeNegativeOverflow();
+    }
+};
+
+// This class performs a simple x86 'div', yielding either a quotient or
+// remainder depending on whether this instruction is defined to output
+// rax (quotient) or rdx (remainder).
+class LUDivOrMod64 : public LBinaryMath<1>
+{
+  public:
+    LIR_HEADER(UDivOrMod64);
+
+    LUDivOrMod64(const LAllocation& lhs, const LAllocation& rhs, const LDefinition& temp) {
+        setOperand(0, lhs);
+        setOperand(1, rhs);
+        setTemp(0, temp);
+    }
+
+    const LDefinition* remainder() {
+        return getTemp(0);
+    }
+
+    const char* extraName() const {
+        return mir()->isTruncated() ? "Truncated" : nullptr;
+    }
+
+    MBinaryArithInstruction* mir() const {
+        MOZ_ASSERT(mir_->isDiv() || mir_->isMod());
+        return static_cast(mir_);
+    }
+
+    bool canBeDivideByZero() const {
+        if (mir_->isMod())
+            return mir_->toMod()->canBeDivideByZero();
+        return mir_->toDiv()->canBeDivideByZero();
+    }
+};
+
 } // namespace jit
 } // namespace js
 
diff --git a/js/src/jit/x64/LOpcodes-x64.h b/js/src/jit/x64/LOpcodes-x64.h
index a736ff2ad87..a92da8b39d6 100644
--- a/js/src/jit/x64/LOpcodes-x64.h
+++ b/js/src/jit/x64/LOpcodes-x64.h
@@ -11,6 +11,8 @@
 
 #define LIR_CPU_OPCODE_LIST(_)      \
     _(DivOrModConstantI)            \
+    _(DivOrModI64)                  \
+    _(UDivOrMod64)                  \
     _(SimdValueInt32x4)             \
     _(SimdValueFloat32x4)           \
     _(UDivOrMod)                    \
diff --git a/js/src/jit/x64/Lowering-x64.cpp b/js/src/jit/x64/Lowering-x64.cpp
index e0864e81a57..acc0473e045 100644
--- a/js/src/jit/x64/Lowering-x64.cpp
+++ b/js/src/jit/x64/Lowering-x64.cpp
@@ -341,3 +341,47 @@ LIRGeneratorX64::visitRandom(MRandom* ins)
                                         temp());
     defineFixed(lir, ins, LFloatReg(ReturnDoubleReg));
 }
+
+void
+LIRGeneratorX64::lowerDivI64(MDiv* div)
+{
+    if (div->isUnsigned()) {
+        lowerUDiv64(div);
+        return;
+    }
+
+    LDivOrModI64* lir = new(alloc()) LDivOrModI64(useRegister(div->lhs()), useRegister(div->rhs()),
+                                                  tempFixed(rdx));
+    defineInt64Fixed(lir, div, LInt64Allocation(LAllocation(AnyRegister(rax))));
+}
+
+void
+LIRGeneratorX64::lowerModI64(MMod* mod)
+{
+    if (mod->isUnsigned()) {
+        lowerUMod64(mod);
+        return;
+    }
+
+    LDivOrModI64* lir = new(alloc()) LDivOrModI64(useRegister(mod->lhs()), useRegister(mod->rhs()),
+                                                  tempFixed(rax));
+    defineInt64Fixed(lir, mod, LInt64Allocation(LAllocation(AnyRegister(rdx))));
+}
+
+void
+LIRGeneratorX64::lowerUDiv64(MDiv* div)
+{
+    LUDivOrMod64* lir = new(alloc()) LUDivOrMod64(useRegister(div->lhs()),
+                                                  useRegister(div->rhs()),
+                                                  tempFixed(rdx));
+    defineInt64Fixed(lir, div, LInt64Allocation(LAllocation(AnyRegister(rax))));
+}
+
+void
+LIRGeneratorX64::lowerUMod64(MMod* mod)
+{
+    LUDivOrMod64* lir = new(alloc()) LUDivOrMod64(useRegister(mod->lhs()),
+                                                  useRegister(mod->rhs()),
+                                                  tempFixed(rax));
+    defineInt64Fixed(lir, mod, LInt64Allocation(LAllocation(AnyRegister(rdx))));
+}
diff --git a/js/src/jit/x64/Lowering-x64.h b/js/src/jit/x64/Lowering-x64.h
index f8617a7b759..96d12805b2e 100644
--- a/js/src/jit/x64/Lowering-x64.h
+++ b/js/src/jit/x64/Lowering-x64.h
@@ -36,6 +36,11 @@ class LIRGeneratorX64 : public LIRGeneratorX86Shared
 
     bool needTempForPostBarrier() { return false; }
 
+    void lowerDivI64(MDiv* div);
+    void lowerModI64(MMod* mod);
+    void lowerUDiv64(MDiv* div);
+    void lowerUMod64(MMod* mod);
+
   public:
     void visitBox(MBox* box);
     void visitUnbox(MUnbox* unbox);
diff --git a/js/src/jit/x64/MacroAssembler-x64-inl.h b/js/src/jit/x64/MacroAssembler-x64-inl.h
index 42e441af5ee..41bb2c563c4 100644
--- a/js/src/jit/x64/MacroAssembler-x64-inl.h
+++ b/js/src/jit/x64/MacroAssembler-x64-inl.h
@@ -189,6 +189,19 @@ MacroAssembler::subPtr(Imm32 imm, Register dest)
     subq(imm, dest);
 }
 
+void
+MacroAssembler::subPtr(ImmWord imm, Register dest)
+{
+    ScratchRegisterScope scratch(*this);
+    MOZ_ASSERT(dest != scratch);
+    if ((intptr_t)imm.value <= INT32_MAX && (intptr_t)imm.value >= INT32_MIN) {
+        subq(Imm32((int32_t)imm.value), dest);
+    } else {
+        mov(imm, scratch);
+        subq(scratch, dest);
+    }
+}
+
 void
 MacroAssembler::subPtr(const Address& addr, Register dest)
 {
diff --git a/js/src/jit/x86/Lowering-x86.cpp b/js/src/jit/x86/Lowering-x86.cpp
index 96f3aa7f2e9..ddc0715e11a 100644
--- a/js/src/jit/x86/Lowering-x86.cpp
+++ b/js/src/jit/x86/Lowering-x86.cpp
@@ -420,6 +420,18 @@ LIRGeneratorX86::visitAsmJSLoadFuncPtr(MAsmJSLoadFuncPtr* ins)
     define(new(alloc()) LAsmJSLoadFuncPtr(useRegisterAtStart(ins->index())), ins);
 }
 
+void
+LIRGeneratorX86::lowerDivI64(MDiv* div)
+{
+    MOZ_CRASH("NYI");
+}
+
+void
+LIRGeneratorX86::lowerModI64(MMod* mod)
+{
+    MOZ_CRASH("NYI");
+}
+
 void
 LIRGeneratorX86::visitSubstr(MSubstr* ins)
 {
diff --git a/js/src/jit/x86/Lowering-x86.h b/js/src/jit/x86/Lowering-x86.h
index da46f4de73b..4d9bc000659 100644
--- a/js/src/jit/x86/Lowering-x86.h
+++ b/js/src/jit/x86/Lowering-x86.h
@@ -42,6 +42,9 @@ class LIRGeneratorX86 : public LIRGeneratorX86Shared
     void lowerUntypedPhiInput(MPhi* phi, uint32_t inputPosition, LBlock* block, size_t lirIndex);
     void defineUntypedPhi(MPhi* phi, size_t lirIndex);
 
+    void lowerDivI64(MDiv* div);
+    void lowerModI64(MMod* mod);
+
   public:
     void visitBox(MBox* box);
     void visitUnbox(MUnbox* unbox);
diff --git a/layout/base/AccessibleCaretManager.cpp b/layout/base/AccessibleCaretManager.cpp
index 800e4e1aa60..2953aa1a26a 100644
--- a/layout/base/AccessibleCaretManager.cpp
+++ b/layout/base/AccessibleCaretManager.cpp
@@ -71,6 +71,8 @@ AccessibleCaretManager::sCaretShownWhenLongTappingOnEmptyContent = false;
 /*static*/ bool
 AccessibleCaretManager::sCaretsExtendedVisibility = false;
 /*static*/ bool
+AccessibleCaretManager::sCaretsAlwaysTilt = false;
+/*static*/ bool
 AccessibleCaretManager::sCaretsScriptUpdates = false;
 /*static*/ bool
 AccessibleCaretManager::sHapticFeedback = false;
@@ -95,6 +97,8 @@ AccessibleCaretManager::AccessibleCaretManager(nsIPresShell* aPresShell)
       "layout.accessiblecaret.caret_shown_when_long_tapping_on_empty_content");
     Preferences::AddBoolVarCache(&sCaretsExtendedVisibility,
                                  "layout.accessiblecaret.extendedvisibility");
+    Preferences::AddBoolVarCache(&sCaretsAlwaysTilt,
+                                 "layout.accessiblecaret.always_tilt");
     Preferences::AddBoolVarCache(&sCaretsScriptUpdates,
       "layout.accessiblecaret.allow_script_change_updates");
     Preferences::AddBoolVarCache(&sHapticFeedback,
@@ -394,7 +398,11 @@ AccessibleCaretManager::UpdateCaretsForSelectionMode(UpdateCaretsHint aHint)
   if (aHint == UpdateCaretsHint::Default) {
     // Only check for tilt carets with default update hint. Otherwise we might
     // override the appearance set by the caller.
-    UpdateCaretsForTilt();
+    if (sCaretsAlwaysTilt) {
+      UpdateCaretsForAlwaysTilt(startFrame, endFrame);
+    } else {
+      UpdateCaretsForOverlappingTilt();
+    }
   }
 
   if (!mActiveCaret) {
@@ -403,7 +411,7 @@ AccessibleCaretManager::UpdateCaretsForSelectionMode(UpdateCaretsHint aHint)
 }
 
 void
-AccessibleCaretManager::UpdateCaretsForTilt()
+AccessibleCaretManager::UpdateCaretsForOverlappingTilt()
 {
   if (mFirstCaret->IsVisuallyVisible() && mSecondCaret->IsVisuallyVisible()) {
     if (mFirstCaret->Intersects(*mSecondCaret)) {
@@ -422,6 +430,22 @@ AccessibleCaretManager::UpdateCaretsForTilt()
   }
 }
 
+void
+AccessibleCaretManager::UpdateCaretsForAlwaysTilt(nsIFrame* aStartFrame,
+                                                  nsIFrame* aEndFrame)
+{
+  if (mFirstCaret->IsVisuallyVisible()) {
+    auto startFrameWritingMode = aStartFrame->GetWritingMode();
+    mFirstCaret->SetAppearance(startFrameWritingMode.IsBidiLTR() ?
+                               Appearance::Left : Appearance::Right);
+  }
+  if (mSecondCaret->IsVisuallyVisible()) {
+    auto endFrameWritingMode = aEndFrame->GetWritingMode();
+    mSecondCaret->SetAppearance(endFrameWritingMode.IsBidiLTR() ?
+                                Appearance::Right : Appearance::Left);
+  }
+}
+
 void
 AccessibleCaretManager::ProvideHapticFeedback()
 {
diff --git a/layout/base/AccessibleCaretManager.h b/layout/base/AccessibleCaretManager.h
index c1da5c9bbdc..782bfc8f2fb 100644
--- a/layout/base/AccessibleCaretManager.h
+++ b/layout/base/AccessibleCaretManager.h
@@ -204,7 +204,11 @@ protected:
                                    nsIFrame* aEndFrame) const;
 
   // Check if the two carets is overlapping to become tilt.
-  virtual void UpdateCaretsForTilt();
+  virtual void UpdateCaretsForOverlappingTilt();
+
+  // Make the two carets always tilt.
+  virtual void UpdateCaretsForAlwaysTilt(nsIFrame* aStartFrame,
+                                         nsIFrame* aEndFrame);
 
   // Check whether AccessibleCaret is displayable in cursor mode or not.
   // @param aOutFrame returns frame of the cursor if it's displayable.
@@ -277,6 +281,10 @@ protected:
   // with ActionBar visibility during page scroll.
   static bool sCaretsExtendedVisibility;
 
+  // Preference to make carets always tilt in selection mode. By default, the
+  // carets become tilt only when they are overlapping.
+  static bool sCaretsAlwaysTilt;
+
   // By default, javascript content selection changes closes AccessibleCarets and
   // UI interactions. Optionally, we can try to maintain the active UI, keeping
   // carets and ActionBar available.
diff --git a/layout/base/gtest/TestAccessibleCaretManager.cpp b/layout/base/gtest/TestAccessibleCaretManager.cpp
index e8b97a382fe..3a90a5d5c47 100644
--- a/layout/base/gtest/TestAccessibleCaretManager.cpp
+++ b/layout/base/gtest/TestAccessibleCaretManager.cpp
@@ -61,6 +61,7 @@ public:
     using AccessibleCaretManager::HideCarets;
     using AccessibleCaretManager::sCaretShownWhenLongTappingOnEmptyContent;
     using AccessibleCaretManager::sCaretsExtendedVisibility;
+    using AccessibleCaretManager::sCaretsAlwaysTilt;
 
     MockAccessibleCaretManager()
       : AccessibleCaretManager(nullptr)
@@ -91,7 +92,18 @@ public:
       return true;
     }
 
-    virtual void UpdateCaretsForTilt() override {}
+    virtual void UpdateCaretsForOverlappingTilt() override {}
+
+    virtual void UpdateCaretsForAlwaysTilt(nsIFrame* aStartFrame,
+                                           nsIFrame* aEndFrame)
+    {
+      if (mFirstCaret->IsVisuallyVisible()) {
+        mFirstCaret->SetAppearance(Appearance::Left);
+      }
+      if (mSecondCaret->IsVisuallyVisible()) {
+        mSecondCaret->SetAppearance(Appearance::Right);
+      }
+    }
 
     virtual bool IsTerminated() const override { return false; }
 
@@ -411,7 +423,7 @@ TEST_F(AccessibleCaretManagerTester, TestScrollInSelectionMode)
 }
 
 TEST_F(AccessibleCaretManagerTester,
-       TestScrollInSelectionModeWithExtendedVisibility)
+       TestScrollInSelectionModeWithExtendedVisibilityAndAlwaysTilt)
 {
   EXPECT_CALL(mManager, GetCaretMode())
     .WillRepeatedly(Return(CaretMode::Selection));
@@ -459,13 +471,17 @@ TEST_F(AccessibleCaretManagerTester,
     EXPECT_CALL(check, Call("scrollend2"));
   }
 
-  AutoRestore savePref(
+  // Simulate Firefox Android preferences.
+  AutoRestore saveCaretsExtendedVisibility(
     MockAccessibleCaretManager::sCaretsExtendedVisibility);
   MockAccessibleCaretManager::sCaretsExtendedVisibility = true;
+  AutoRestore saveCaretsAlwaysTilt(
+    MockAccessibleCaretManager::sCaretsAlwaysTilt);
+  MockAccessibleCaretManager::sCaretsAlwaysTilt = true;
 
   mManager.UpdateCarets();
   EXPECT_EQ(FirstCaretAppearance(), Appearance::NormalNotShown);
-  EXPECT_EQ(SecondCaretAppearance(), Appearance::Normal);
+  EXPECT_EQ(SecondCaretAppearance(), Appearance::Right);
   check.Call("updatecarets");
 
   mManager.OnScrollStart();
@@ -479,7 +495,7 @@ TEST_F(AccessibleCaretManagerTester,
   check.Call("reflow1");
 
   mManager.OnScrollEnd();
-  EXPECT_EQ(FirstCaretAppearance(), Appearance::Normal);
+  EXPECT_EQ(FirstCaretAppearance(), Appearance::Left);
   EXPECT_EQ(SecondCaretAppearance(), Appearance::NormalNotShown);
   check.Call("scrollend1");
 
@@ -494,8 +510,8 @@ TEST_F(AccessibleCaretManagerTester,
   check.Call("reflow2");
 
   mManager.OnScrollEnd();
-  EXPECT_EQ(FirstCaretAppearance(), Appearance::Normal);
-  EXPECT_EQ(SecondCaretAppearance(), Appearance::Normal);
+  EXPECT_EQ(FirstCaretAppearance(), Appearance::Left);
+  EXPECT_EQ(SecondCaretAppearance(), Appearance::Right);
   check.Call("scrollend2");
 }
 
diff --git a/layout/generic/nsGfxScrollFrame.cpp b/layout/generic/nsGfxScrollFrame.cpp
index e9e43536294..f414cf39f81 100644
--- a/layout/generic/nsGfxScrollFrame.cpp
+++ b/layout/generic/nsGfxScrollFrame.cpp
@@ -4387,13 +4387,13 @@ ScrollFrameHelper::ScrollEvent::ScrollEvent(ScrollFrameHelper* aHelper)
   : mHelper(aHelper)
 {
   mDriver = mHelper->mOuter->PresContext()->RefreshDriver();
-  mDriver->AddRefreshObserver(this, Flush_Style);
+  mDriver->AddRefreshObserver(this, Flush_Layout);
 }
 
 ScrollFrameHelper::ScrollEvent::~ScrollEvent()
 {
   if (mDriver) {
-    mDriver->RemoveRefreshObserver(this, Flush_Style);
+    mDriver->RemoveRefreshObserver(this, Flush_Layout);
     mDriver = nullptr;
   }
 }
@@ -4401,7 +4401,7 @@ ScrollFrameHelper::ScrollEvent::~ScrollEvent()
 void
 ScrollFrameHelper::ScrollEvent::WillRefresh(mozilla::TimeStamp aTime)
 {
-  mDriver->RemoveRefreshObserver(this, Flush_Style);
+  mDriver->RemoveRefreshObserver(this, Flush_Layout);
   mDriver = nullptr;
   mHelper->FireScrollEvent();
 }
diff --git a/layout/generic/nsGfxScrollFrame.h b/layout/generic/nsGfxScrollFrame.h
index 6426233e16a..ada44e3fb77 100644
--- a/layout/generic/nsGfxScrollFrame.h
+++ b/layout/generic/nsGfxScrollFrame.h
@@ -101,6 +101,29 @@ public:
 
   bool IsSmoothScrollingEnabled();
 
+  /**
+   * This class handles the dispatching of scroll events to content.
+   *
+   * nsRefreshDriver maintains three lists of refresh observers, one for each
+   * flush type: Flush_Style, Flush_Layout, and Flush_Display.
+   *
+   * During a tick, it runs through each list of observers, in order, and runs
+   * them. To iterate over each list, it uses an EndLimitedIterator, which is
+   * designed to iterate only over elements present when the iterator was
+   * created, not elements added afterwards. This means that, for a given flush
+   * type, a refresh observer added during the execution of another refresh
+   * observer of that flush type, will not run until the next tick.
+   *
+   * During main-thread animation-driven scrolling, ScrollEvents are *posted*
+   * by AsyncScroll::WillRefresh(). AsyncScroll registers itself as a Flush_Style
+   * refresh observer.
+   *
+   * Posting a scroll event, as of bug 1250550, registers a Flush_Layout
+   * refresh observer, which *fires* the event when run. This allows the event
+   * to be fired to content in the same refresh driver tick as it is posted.
+   * This is an important invariant to maintain to reduce scroll event latency
+   * for main-thread scrolling.
+   */
   class ScrollEvent : public nsARefreshObserver {
   public:
     NS_INLINE_DECL_REFCOUNTING(ScrollEvent, override)
diff --git a/layout/generic/nsIFrame.h b/layout/generic/nsIFrame.h
index 3db07f136fa..b8ee7b0f29b 100644
--- a/layout/generic/nsIFrame.h
+++ b/layout/generic/nsIFrame.h
@@ -850,7 +850,8 @@ public:
 
 #define NS_DECLARE_FRAME_PROPERTY_WITH_DTOR(prop, type, dtor)             \
   static const mozilla::FramePropertyDescriptor* prop() {           \
-    static MOZ_CONSTEXPR auto descriptor =                                \
+    /* Use of MOZ_CONSTEXPR caused startup crashes with MSVC2015u1 PGO. */\
+    static const auto descriptor =                                        \
       mozilla::FramePropertyDescriptor::NewWithDestructor();  \
     return &descriptor;                                                   \
   }
@@ -858,14 +859,16 @@ public:
 // Don't use this unless you really know what you're doing!
 #define NS_DECLARE_FRAME_PROPERTY_WITH_FRAME_IN_DTOR(prop, type, dtor)    \
   static const mozilla::FramePropertyDescriptor* prop() {           \
-    static MOZ_CONSTEXPR auto descriptor = mozilla::                      \
+    /* Use of MOZ_CONSTEXPR caused startup crashes with MSVC2015u1 PGO. */\
+    static const auto descriptor = mozilla::                              \
       FramePropertyDescriptor::NewWithDestructorWithFrame();  \
     return &descriptor;                                                   \
   }
 
 #define NS_DECLARE_FRAME_PROPERTY_WITHOUT_DTOR(prop, type)                \
   static const mozilla::FramePropertyDescriptor* prop() {           \
-    static MOZ_CONSTEXPR auto descriptor =                                \
+    /* Use of MOZ_CONSTEXPR caused startup crashes with MSVC2015u1 PGO. */\
+    static const auto descriptor =                                        \
       mozilla::FramePropertyDescriptor::NewWithoutDestructor();     \
     return &descriptor;                                                   \
   }
diff --git a/layout/inspector/inDOMUtils.cpp b/layout/inspector/inDOMUtils.cpp
index b1dc77270f1..bf13a0735e0 100644
--- a/layout/inspector/inDOMUtils.cpp
+++ b/layout/inspector/inDOMUtils.cpp
@@ -775,8 +775,10 @@ PropertySupportsVariant(nsCSSProperty aPropertyID, uint32_t aVariant)
       case eCSSProperty_border_bottom_right_radius:
       case eCSSProperty_background_position:
       case eCSSProperty_background_size:
+#ifdef MOZ_ENABLE_MASK_AS_SHORTHAND
       case eCSSProperty_mask_position:
       case eCSSProperty_mask_size:
+#endif
       case eCSSProperty_grid_auto_columns:
       case eCSSProperty_grid_auto_rows:
       case eCSSProperty_grid_template_columns:
diff --git a/layout/reftests/w3c-css/submitted/masking/reftest.list b/layout/reftests/w3c-css/submitted/masking/reftest.list
index a4f4ff8863f..57df96e9604 100644
--- a/layout/reftests/w3c-css/submitted/masking/reftest.list
+++ b/layout/reftests/w3c-css/submitted/masking/reftest.list
@@ -1,4 +1,4 @@
-== mask-composite-1a.html mask-composite-1-ref.html
-== mask-composite-1b.html mask-composite-1-ref.html
-fails-if(cocoaWidget) == mask-composite-2a.html mask-composite-2-ref.html # bug 1231643
-fails-if(cocoaWidget) == mask-composite-2b.html mask-composite-2-ref.html # bug 1231643
+fails == mask-composite-1a.html mask-composite-1-ref.html # bug 1251161
+fails == mask-composite-1b.html mask-composite-1-ref.html # bug 1251161
+fails fails-if(cocoaWidget) == mask-composite-2a.html mask-composite-2-ref.html # bug 1231643;  bug 1251161
+fails fails-if(cocoaWidget) == mask-composite-2b.html mask-composite-2-ref.html # bug 1231643; bug 1251161
diff --git a/layout/style/Declaration.cpp b/layout/style/Declaration.cpp
index 78db87e95fa..8895232e8cb 100644
--- a/layout/style/Declaration.cpp
+++ b/layout/style/Declaration.cpp
@@ -351,7 +351,11 @@ Declaration::GetImageLayerValue(
         }
       // This layer is an mask layer
       } else {
+#ifdef MOZ_ENABLE_MASK_AS_SHORTHAND
         MOZ_ASSERT(aTable == nsStyleImageLayers::kMaskLayerTable);
+#else
+        MOZ_ASSERT_UNREACHABLE("Should never get here when mask-as-shorthand is disable");
+#endif
         if (repeat || position || clip || origin || size || composite || mode) {
           // Uneven length lists, so can't be serialized as shorthand.
           aValue.Truncate();
@@ -370,7 +374,11 @@ Declaration::GetImageLayerValue(
       }
     // This layer is an mask layer
     } else {
+#ifdef MOZ_ENABLE_MASK_AS_SHORTHAND
       MOZ_ASSERT(aTable == nsStyleImageLayers::kMaskLayerTable);
+#else
+      MOZ_ASSERT_UNREACHABLE("Should never get here when mask-as-shorthand is disable");
+#endif
       if (!repeat || !position || !clip || !origin || !size ||
           !composite || !mode) {
         // Uneven length lists, so can't be serialized as shorthand.
@@ -657,11 +665,13 @@ Declaration::GetValue(nsCSSProperty aProperty, nsAString& aValue,
                          nsStyleImageLayers::kBackgroundLayerTable);
       break;
     }
+#ifdef MOZ_ENABLE_MASK_AS_SHORTHAND
     case eCSSProperty_mask: {
       GetImageLayerValue(data, aValue, aSerialization,
                          nsStyleImageLayers::kMaskLayerTable);
       break;
     }
+#endif
     case eCSSProperty_font: {
       // systemFont might not be present; other values are guaranteed to be
       // available based on the shorthand check at the beginning of the
diff --git a/layout/style/StyleAnimationValue.cpp b/layout/style/StyleAnimationValue.cpp
index b6ee0c9e1a6..82f10ac5e3e 100644
--- a/layout/style/StyleAnimationValue.cpp
+++ b/layout/style/StyleAnimationValue.cpp
@@ -3431,28 +3431,28 @@ StyleAnimationValue::ExtractComputedValue(nsCSSProperty aProperty,
           ExtractImageLayerPositionList(layers, aComputedValue);
           break;
         }
-
+#ifdef MOZ_ENABLE_MASK_AS_SHORTHAND
         case eCSSProperty_mask_position: {
           const nsStyleImageLayers& layers =
             static_cast(styleStruct)->mMask;
           ExtractImageLayerPositionList(layers, aComputedValue);
           break;
         }
-
+#endif
         case eCSSProperty_background_size: {
           const nsStyleImageLayers& layers =
             static_cast(styleStruct)->mImage;
           ExtractImageLayerSizePairList(layers, aComputedValue);
           break;
         }
-
+#ifdef MOZ_ENABLE_MASK_AS_SHORTHAND
         case eCSSProperty_mask_size: {
           const nsStyleImageLayers& layers =
             static_cast(styleStruct)->mMask;
           ExtractImageLayerSizePairList(layers, aComputedValue);
           break;
         }
-
+#endif
         case eCSSProperty_filter: {
           const nsStyleSVGReset *svgReset =
             static_cast(styleStruct);
diff --git a/layout/style/jar.mn b/layout/style/jar.mn
index 73d6054a007..ebbbab382cf 100644
--- a/layout/style/jar.mn
+++ b/layout/style/jar.mn
@@ -19,5 +19,17 @@ toolkit.jar:
    res/arrowd.gif       (arrowd.gif)
    res/arrowd-left.gif  (arrowd-left.gif)
    res/arrowd-right.gif (arrowd-right.gif)
+   res/accessiblecaret-normal@1x.png         (res/accessiblecaret-normal@1x.png)
+   res/accessiblecaret-normal@1.5x.png       (res/accessiblecaret-normal@1.5x.png)
+   res/accessiblecaret-normal@2x.png         (res/accessiblecaret-normal@2x.png)
+   res/accessiblecaret-normal@2.25x.png      (res/accessiblecaret-normal@2.25x.png)
+   res/accessiblecaret-tilt-left@1x.png      (res/accessiblecaret-tilt-left@1x.png)
+   res/accessiblecaret-tilt-left@1.5x.png    (res/accessiblecaret-tilt-left@1.5x.png)
+   res/accessiblecaret-tilt-left@2x.png      (res/accessiblecaret-tilt-left@2x.png)
+   res/accessiblecaret-tilt-left@2.25x.png   (res/accessiblecaret-tilt-left@2.25x.png)
+   res/accessiblecaret-tilt-right@1x.png     (res/accessiblecaret-tilt-right@1x.png)
+   res/accessiblecaret-tilt-right@1.5x.png   (res/accessiblecaret-tilt-right@1.5x.png)
+   res/accessiblecaret-tilt-right@2x.png     (res/accessiblecaret-tilt-right@2x.png)
+   res/accessiblecaret-tilt-right@2.25x.png  (res/accessiblecaret-tilt-right@2.25x.png)
 
 % resource gre-resources %res/
diff --git a/layout/style/nsCSSParser.cpp b/layout/style/nsCSSParser.cpp
index c4a03cfb743..681f47aefea 100644
--- a/layout/style/nsCSSParser.cpp
+++ b/layout/style/nsCSSParser.cpp
@@ -11443,6 +11443,7 @@ CSSParserImpl::ParsePropertyByFunction(nsCSSProperty aPropID)
     return ParseClipPath();
   case eCSSProperty_scroll_snap_type:
     return ParseScrollSnapType();
+#ifdef MOZ_ENABLE_MASK_AS_SHORTHAND
   case eCSSProperty_mask:
     return ParseImageLayers(nsStyleImageLayers::kMaskLayerTable);
   case eCSSProperty_mask_repeat:
@@ -11451,6 +11452,7 @@ CSSParserImpl::ParsePropertyByFunction(nsCSSProperty aPropID)
     return ParseImageLayerPosition(eCSSProperty_mask_position);
   case eCSSProperty_mask_size:
     return ParseImageLayerSize(eCSSProperty_mask_size);
+#endif
   case eCSSProperty_all:
     return ParseAll();
   default:
diff --git a/layout/style/nsCSSPropAliasList.h b/layout/style/nsCSSPropAliasList.h
index c32ac1d45e8..e19dec0e6af 100644
--- a/layout/style/nsCSSPropAliasList.h
+++ b/layout/style/nsCSSPropAliasList.h
@@ -346,6 +346,7 @@ CSS_PROP_ALIAS(-webkit-user-select,
                WebkitUserSelect,
                WEBKIT_PREFIX_PREF)
 
+#ifdef MOZ_ENABLE_MASK_AS_SHORTHAND
 CSS_PROP_ALIAS(-webkit-mask,
                mask,
                WebkitMask,
@@ -378,5 +379,5 @@ CSS_PROP_ALIAS(-webkit-mask-size,
                mask_size,
                WebkitMaskSize,
                WEBKIT_PREFIX_PREF)
-
+#endif
 #undef WEBKIT_PREFIX_PREF
diff --git a/layout/style/nsCSSPropList.h b/layout/style/nsCSSPropList.h
index b73796c7ff3..daca72d218b 100644
--- a/layout/style/nsCSSPropList.h
+++ b/layout/style/nsCSSPropList.h
@@ -4075,6 +4075,7 @@ CSS_PROP_SVG(
     nullptr,
     CSS_PROP_NO_OFFSET,
     eStyleAnimType_None)
+#ifdef MOZ_ENABLE_MASK_AS_SHORTHAND
 CSS_PROP_SHORTHAND(
     mask,
     mask,
@@ -4174,6 +4175,19 @@ CSS_PROP_SVGRESET(
     kImageLayerSizeKTable,
     CSS_PROP_NO_OFFSET,
     eStyleAnimType_Custom)
+#else
+CSS_PROP_SVGRESET(
+    mask,
+    mask,
+    Mask,
+    CSS_PROPERTY_PARSE_VALUE |
+      CSS_PROPERTY_CREATES_STACKING_CONTEXT,
+    "",
+    VARIANT_HUO,
+    nullptr,
+    CSS_PROP_NO_OFFSET,
+    eStyleAnimType_None)
+#endif
 CSS_PROP_SVGRESET(
     mask-type,
     mask_type,
diff --git a/layout/style/nsCSSProps.cpp b/layout/style/nsCSSProps.cpp
index 691e6c31467..ac8511a6a13 100644
--- a/layout/style/nsCSSProps.cpp
+++ b/layout/style/nsCSSProps.cpp
@@ -2930,7 +2930,7 @@ static const nsCSSProperty gScrollSnapTypeSubpropTable[] = {
   eCSSProperty_scroll_snap_type_y,
   eCSSProperty_UNKNOWN
 };
-
+#ifdef MOZ_ENABLE_MASK_AS_SHORTHAND
 static const nsCSSProperty gMaskSubpropTable[] = {
   eCSSProperty_mask_image,
   eCSSProperty_mask_repeat,
@@ -2942,7 +2942,7 @@ static const nsCSSProperty gMaskSubpropTable[] = {
   eCSSProperty_mask_mode,
   eCSSProperty_UNKNOWN
 };
-
+#endif
 // FIXME: mask-border tables should be added when we implement
 // mask-border properties.
 
diff --git a/layout/style/nsComputedDOMStyle.cpp b/layout/style/nsComputedDOMStyle.cpp
index bd31cc029c9..b2ede9e888a 100644
--- a/layout/style/nsComputedDOMStyle.cpp
+++ b/layout/style/nsComputedDOMStyle.cpp
@@ -6038,6 +6038,7 @@ nsComputedDOMStyle::DoGetMask()
   return val.forget();
 }
 
+#ifdef MOZ_ENABLE_MASK_AS_SHORTHAND
 already_AddRefed
 nsComputedDOMStyle::DoGetMaskClip()
 {
@@ -6101,6 +6102,7 @@ nsComputedDOMStyle::DoGetMaskSize()
   const nsStyleImageLayers& layers = StyleSVGReset()->mMask;
   return DoGetImageLayerSize(layers);
 }
+#endif
 
 already_AddRefed
 nsComputedDOMStyle::DoGetMaskType()
diff --git a/layout/style/nsComputedDOMStyle.h b/layout/style/nsComputedDOMStyle.h
index c344e8cdd3d..0bd8e555f4d 100644
--- a/layout/style/nsComputedDOMStyle.h
+++ b/layout/style/nsComputedDOMStyle.h
@@ -304,6 +304,7 @@ private:
 
   /* Mask properties */
   already_AddRefed DoGetMask();
+#ifdef MOZ_ENABLE_MASK_AS_SHORTHAND
   already_AddRefed DoGetMaskImage();
   already_AddRefed DoGetMaskPosition();
   already_AddRefed DoGetMaskRepeat();
@@ -312,7 +313,7 @@ private:
   already_AddRefed DoGetMaskSize();
   already_AddRefed DoGetMaskMode();
   already_AddRefed DoGetMaskComposite();
-
+#endif
   /* Padding properties */
   already_AddRefed DoGetPaddingTop();
   already_AddRefed DoGetPaddingBottom();
diff --git a/layout/style/nsComputedDOMStylePropertyList.h b/layout/style/nsComputedDOMStylePropertyList.h
index 500c679c28f..66b4d3313e9 100644
--- a/layout/style/nsComputedDOMStylePropertyList.h
+++ b/layout/style/nsComputedDOMStylePropertyList.h
@@ -318,6 +318,7 @@ COMPUTED_STYLE_PROP(marker_end,                    MarkerEnd)
 COMPUTED_STYLE_PROP(marker_mid,                    MarkerMid)
 COMPUTED_STYLE_PROP(marker_start,                  MarkerStart)
 COMPUTED_STYLE_PROP(mask,                          Mask)
+#ifdef MOZ_ENABLE_MASK_AS_SHORTHAND
 COMPUTED_STYLE_PROP(mask_clip,                     MaskClip)
 COMPUTED_STYLE_PROP(mask_composite,                MaskComposite)
 COMPUTED_STYLE_PROP(mask_image,                    MaskImage)
@@ -326,6 +327,7 @@ COMPUTED_STYLE_PROP(mask_origin,                   MaskOrigin)
 COMPUTED_STYLE_PROP(mask_position,                 MaskPosition)
 COMPUTED_STYLE_PROP(mask_repeat,                   MaskRepeat)
 COMPUTED_STYLE_PROP(mask_size,                     MaskSize)
+#endif
 COMPUTED_STYLE_PROP(mask_type,                     MaskType)
 COMPUTED_STYLE_PROP(paint_order,                   PaintOrder)
 COMPUTED_STYLE_PROP(shape_rendering,               ShapeRendering)
diff --git a/layout/style/nsRuleNode.cpp b/layout/style/nsRuleNode.cpp
index f17e6bdaf8e..9a9c9b675ae 100644
--- a/layout/style/nsRuleNode.cpp
+++ b/layout/style/nsRuleNode.cpp
@@ -9759,6 +9759,7 @@ nsRuleNode::ComputeSVGResetData(void* aStartStruct,
               parentSVGReset->mMaskType,
               NS_STYLE_MASK_TYPE_LUMINANCE, 0, 0, 0, 0);
 
+#ifdef MOZ_ENABLE_MASK_AS_SHORTHAND
   uint32_t maxItemCount = 1;
   bool rebuild = false;
 
@@ -9885,6 +9886,21 @@ nsRuleNode::ComputeSVGResetData(void* aStartStruct,
                        &nsStyleImageLayers::Layer::mComposite,
                        svgReset->mMask.mCompositeCount, fillCount);
   }
+#else
+  // mask: none | 
+  const nsCSSValue* maskValue = aRuleData->ValueForMask();
+  if (eCSSUnit_URL == maskValue->GetUnit()) {
+    svgReset->mMask.mLayers[0].mSourceURI = maskValue->GetURLValue();
+  } else if (eCSSUnit_None == maskValue->GetUnit() ||
+             eCSSUnit_Initial == maskValue->GetUnit() ||
+             eCSSUnit_Unset == maskValue->GetUnit()) {
+    svgReset->mMask.mLayers[0].mSourceURI = nullptr;
+  } else if (eCSSUnit_Inherit == maskValue->GetUnit()) {
+    conditions.SetUncacheable();
+    svgReset->mMask.mLayers[0].mSourceURI =
+      parentSVGReset->mMask.mLayers[0].mSourceURI;
+  }
+#endif
 
   svgReset->mMask.TrackImages(aContext->PresContext());
 
diff --git a/layout/style/nsStyleStruct.cpp b/layout/style/nsStyleStruct.cpp
index 7d15e4780e0..73f861af19a 100644
--- a/layout/style/nsStyleStruct.cpp
+++ b/layout/style/nsStyleStruct.cpp
@@ -2250,6 +2250,7 @@ const nsCSSProperty nsStyleImageLayers::kBackgroundLayerTable[] = {
   eCSSProperty_UNKNOWN                    // composite
 };
 
+#ifdef MOZ_ENABLE_MASK_AS_SHORTHAND
 const nsCSSProperty nsStyleImageLayers::kMaskLayerTable[] = {
   eCSSProperty_mask,                      // shorthand
   eCSSProperty_UNKNOWN,                   // color
@@ -2263,6 +2264,7 @@ const nsCSSProperty nsStyleImageLayers::kMaskLayerTable[] = {
   eCSSProperty_mask_mode,                 // maskMode
   eCSSProperty_mask_composite             // composite
 };
+#endif
 
 nsStyleImageLayers::nsStyleImageLayers()
   : mAttachmentCount(1)
diff --git a/editor/composer/res/accessiblecaret@1.5x.png b/layout/style/res/accessiblecaret-normal@1.5x.png
similarity index 100%
rename from editor/composer/res/accessiblecaret@1.5x.png
rename to layout/style/res/accessiblecaret-normal@1.5x.png
diff --git a/editor/composer/res/accessiblecaret.png b/layout/style/res/accessiblecaret-normal@1x.png
similarity index 100%
rename from editor/composer/res/accessiblecaret.png
rename to layout/style/res/accessiblecaret-normal@1x.png
diff --git a/editor/composer/res/accessiblecaret@2.25x.png b/layout/style/res/accessiblecaret-normal@2.25x.png
similarity index 100%
rename from editor/composer/res/accessiblecaret@2.25x.png
rename to layout/style/res/accessiblecaret-normal@2.25x.png
diff --git a/editor/composer/res/accessiblecaret@2x.png b/layout/style/res/accessiblecaret-normal@2x.png
similarity index 100%
rename from editor/composer/res/accessiblecaret@2x.png
rename to layout/style/res/accessiblecaret-normal@2x.png
diff --git a/editor/composer/res/accessiblecaret_tilt_left@1.5x.png b/layout/style/res/accessiblecaret-tilt-left@1.5x.png
similarity index 100%
rename from editor/composer/res/accessiblecaret_tilt_left@1.5x.png
rename to layout/style/res/accessiblecaret-tilt-left@1.5x.png
diff --git a/editor/composer/res/accessiblecaret_tilt_left.png b/layout/style/res/accessiblecaret-tilt-left@1x.png
similarity index 100%
rename from editor/composer/res/accessiblecaret_tilt_left.png
rename to layout/style/res/accessiblecaret-tilt-left@1x.png
diff --git a/editor/composer/res/accessiblecaret_tilt_left@2.25x.png b/layout/style/res/accessiblecaret-tilt-left@2.25x.png
similarity index 100%
rename from editor/composer/res/accessiblecaret_tilt_left@2.25x.png
rename to layout/style/res/accessiblecaret-tilt-left@2.25x.png
diff --git a/editor/composer/res/accessiblecaret_tilt_left@2x.png b/layout/style/res/accessiblecaret-tilt-left@2x.png
similarity index 100%
rename from editor/composer/res/accessiblecaret_tilt_left@2x.png
rename to layout/style/res/accessiblecaret-tilt-left@2x.png
diff --git a/editor/composer/res/accessiblecaret_tilt_right@1.5x.png b/layout/style/res/accessiblecaret-tilt-right@1.5x.png
similarity index 100%
rename from editor/composer/res/accessiblecaret_tilt_right@1.5x.png
rename to layout/style/res/accessiblecaret-tilt-right@1.5x.png
diff --git a/editor/composer/res/accessiblecaret_tilt_right.png b/layout/style/res/accessiblecaret-tilt-right@1x.png
similarity index 100%
rename from editor/composer/res/accessiblecaret_tilt_right.png
rename to layout/style/res/accessiblecaret-tilt-right@1x.png
diff --git a/editor/composer/res/accessiblecaret_tilt_right@2.25x.png b/layout/style/res/accessiblecaret-tilt-right@2.25x.png
similarity index 100%
rename from editor/composer/res/accessiblecaret_tilt_right@2.25x.png
rename to layout/style/res/accessiblecaret-tilt-right@2.25x.png
diff --git a/editor/composer/res/accessiblecaret_tilt_right@2x.png b/layout/style/res/accessiblecaret-tilt-right@2x.png
similarity index 100%
rename from editor/composer/res/accessiblecaret_tilt_right@2x.png
rename to layout/style/res/accessiblecaret-tilt-right@2x.png
diff --git a/layout/style/test/property_database.js b/layout/style/test/property_database.js
index 969b65cd51c..61de93e7b78 100644
--- a/layout/style/test/property_database.js
+++ b/layout/style/test/property_database.js
@@ -4111,215 +4111,6 @@ var gCSSProperties = {
     other_values: [ "url(#mysym)" ],
     invalid_values: []
   },
-  "mask": {
-    domProp: "mask",
-    inherited: false,
-    type: CSS_TYPE_SHORTHAND_AND_LONGHAND,
-    /* FIXME: All mask-border-* should be added when we implement them. */
-    subproperties: ["mask-clip", "mask-image", "mask-mode", "mask-origin", "mask-position", "mask-repeat", "mask-size" , "mask-composite"],
-    initial_values: [ "match-source", "none", "repeat", "add", "0% 0%", "top left", "left top", "0% 0% / auto", "top left / auto", "left top / auto", "0% 0% / auto auto",
-      "top left none", "left top none", "none left top", "none top left", "none 0% 0%", "left top / auto none", "left top / auto auto none",
-      "match-source none repeat add top left", "left top repeat none add", "none repeat add top left / auto", "left top / auto repeat none add match-source", "none repeat add 0% 0% / auto auto match-source" ],
-    other_values: [
-      "none alpha repeat add left top",
-      "url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==)",
-      "repeat url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==') alpha left top add",
-      "repeat-x",
-      "repeat-y",
-      "no-repeat",
-      "none repeat-y alpha add 0% 0%",
-      "substract",
-      "0% top substract alpha repeat none",
-      "top",
-      "left",
-      "50% 50%",
-      "center",
-      "top / 100px",
-      "left / contain",
-      "left / cover",
-      "10px / 10%",
-      "10em / calc(20px)",
-      "top left / 100px 100px",
-      "top left / 100px auto",
-      "top left / 100px 10%",
-      "top left / 100px calc(20px)",
-      "bottom right add none alpha repeat",
-      "50% alpha",
-      "alpha 50%",
-      "50%",
-      "url(#mymask)",
-      "-moz-radial-gradient(10% bottom, #ffffff, black) add no-repeat",
-      "-moz-linear-gradient(10px 10px -45deg, red, blue) repeat",
-      "-moz-linear-gradient(10px 10px -0.125turn, red, blue) repeat",
-      "-moz-repeating-radial-gradient(10% bottom, #ffffff, black) add no-repeat",
-      "-moz-repeating-linear-gradient(10px 10px -45deg, red, blue) repeat",
-      "-moz-element(#test) alpha",
-      /* multiple mask-image */
-      "url(404.png), url(404.png)",
-      "repeat-x, substract, none",
-      "0% top url(404.png), url(404.png) 0% top",
-      "substract repeat-y top left url(404.png), repeat-x alpha",
-      "url(404.png), -moz-linear-gradient(20px 20px -45deg, blue, green), -moz-element(#a) alpha",
-      "top left / contain, bottom right / cover",
-      /* test cases with clip+origin in the shorthand */
-      "url(404.png) alpha padding-box",
-      "url(404.png) border-box alpha",
-      "content-box url(404.png)",
-      "url(404.png) alpha padding-box padding-box",
-      "url(404.png) alpha padding-box border-box",
-      "content-box border-box url(404.png)",
-    ],
-    invalid_values: [
-      /* mixes with keywords have to be in correct order */
-      "50% left", "top 50%",
-      /* no quirks mode colors */
-      "-moz-radial-gradient(10% bottom, ffffff, black) add no-repeat",
-      /* no quirks mode lengths */
-      "-moz-linear-gradient(10 10px -45deg, red, blue) repeat",
-      "-moz-linear-gradient(10px 10 -45deg, red, blue) repeat",
-      "linear-gradient(red -99, yellow, green, blue 120%)",
-      /* bug 258080: don't accept background-position separated */
-      "left url(404.png) top", "top url(404.png) left",
-      "alpha padding-box url(404.png) border-box",
-      "alpha padding-box url(404.png) padding-box",
-      "-moz-element(#a rubbish)",
-      "left top / match-source"
-    ]
-  },
-  "mask-clip": {
-    domProp: "maskClip",
-    inherited: false,
-    type: CSS_TYPE_LONGHAND,
-    initial_values: [ "border-box" ],
-    other_values: [ "content-box", "padding-box", "border-box, padding-box", "padding-box, padding-box, padding-box", "border-box, border-box" ],
-    invalid_values: [ "margin-box", "content-box content-box" ]
-  },
-  "mask-image": {
-    domProp: "maskImage",
-    inherited: false,
-    type: CSS_TYPE_LONGHAND,
-    initial_values: [ "none" ],
-    other_values: [
-    "url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==)", "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==')", 'url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==")',
-    "none, none",
-    "none, none, none, none, none",
-    "url(#mymask)",
-    "url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==), none",
-    "none, url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==), none",
-    "url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==), url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==)",
-    ].concat(validGradientAndElementValues),
-    invalid_values: [
-    ].concat(invalidGradientAndElementValues),
-    unbalanced_values: [
-    ].concat(unbalancedGradientAndElementValues)
-  },
-  "mask-mode": {
-    domProp: "maskMode",
-    inherited: false,
-    type: CSS_TYPE_LONGHAND,
-    initial_values: [ "match-source" ],
-    other_values: [ "alpha", "luminance", "match-source, match-source", "match-source, alpha", "alpha, luminance, match-source"],
-    invalid_values: [ "match-source match-source", "alpha match-source" ]
-  },
-  "mask-composite": {
-    domProp: "maskComposite",
-    inherited: false,
-    type: CSS_TYPE_LONGHAND,
-    initial_values: [ "add" ],
-    other_values: [ "substract", "intersect", "exclude", "add, add", "substract, intersect", "substract, substract, add"],
-    invalid_values: [ "add substract", "intersect exclude" ]
-  },
-  "mask-origin": {
-    domProp: "maskOrigin",
-    inherited: false,
-    type: CSS_TYPE_LONGHAND,
-    initial_values: [ "padding-box" ],
-    other_values: [ "border-box", "content-box", "border-box, padding-box", "padding-box, padding-box, padding-box", "border-box, border-box" ],
-    invalid_values: [ "margin-box", "padding-box padding-box" ]
-  },
-  "mask-position": {
-    domProp: "maskPosition",
-    inherited: false,
-    type: CSS_TYPE_LONGHAND,
-    initial_values: [ "top 0% left 0%", "top 0% left", "top left", "left top", "0% 0%", "0% top", "left 0%" ],
-    other_values: [ "top", "left", "right", "bottom", "center", "center bottom", "bottom center", "center right", "right center", "center top", "top center", "center left", "left center", "right bottom", "bottom right", "50%", "top left, top left", "top left, top right", "top right, top left", "left top, 0% 0%", "10% 20%, 30%, 40%", "top left, bottom right", "right bottom, left top", "0%", "0px", "30px", "0%, 10%, 20%, 30%", "top, top, top, top, top",
-      "calc(20px)",
-      "calc(20px) 10px",
-      "10px calc(20px)",
-      "calc(20px) 25%",
-      "25% calc(20px)",
-      "calc(20px) calc(20px)",
-      "calc(20px + 1em) calc(20px / 2)",
-      "calc(20px + 50%) calc(50% - 10px)",
-      "calc(-20px) calc(-50%)",
-      "calc(-20%) calc(-50%)",
-      "0px 0px",
-      "right 20px top 60px",
-      "right 20px bottom 60px",
-      "left 20px top 60px",
-      "left 20px bottom 60px",
-      "right -50px top -50px",
-      "left -50px bottom -50px",
-      "right 20px top -50px",
-      "right -20px top 50px",
-      "right 3em bottom 10px",
-      "bottom 3em right 10px",
-      "top 3em right 10px",
-      "left 15px",
-      "10px top",
-      "left top 15px",
-      "left 10px top",
-      "left 20%",
-      "right 20%"
-    ],
-    invalid_values: [ "center 10px center 4px", "center 10px center",
-                      "top 20%", "bottom 20%", "50% left", "top 50%",
-                      "50% bottom 10%", "right 10% 50%", "left right",
-                      "top bottom", "left 10% right",
-                      "top 20px bottom 20px", "left left",
-                      "0px calc(0px + rubbish)"],
-  },
-  "mask-repeat": {
-    domProp: "maskRepeat",
-    inherited: false,
-    type: CSS_TYPE_LONGHAND,
-    initial_values: [ "repeat", "repeat repeat" ],
-    other_values: [ "repeat-x", "repeat-y", "no-repeat",
-      "repeat-x, repeat-x",
-      "repeat, no-repeat",
-      "repeat-y, no-repeat, repeat-y",
-      "repeat, repeat, repeat",
-      "repeat no-repeat",
-      "no-repeat repeat",
-      "no-repeat no-repeat",
-      "repeat repeat, repeat repeat",
-    ],
-    invalid_values: [ "repeat repeat repeat",
-                      "repeat-x repeat-y",
-                      "repeat repeat-x",
-                      "repeat repeat-y",
-                      "repeat-x repeat",
-                      "repeat-y repeat" ]
-  },
-  "mask-size": {
-    domProp: "maskSize",
-    inherited: false,
-    type: CSS_TYPE_LONGHAND,
-    initial_values: [ "auto", "auto auto" ],
-    other_values: [ "contain", "cover", "100px auto", "auto 100px", "100% auto", "auto 100%", "25% 50px", "3em 40%",
-      "calc(20px)",
-      "calc(20px) 10px",
-      "10px calc(20px)",
-      "calc(20px) 25%",
-      "25% calc(20px)",
-      "calc(20px) calc(20px)",
-      "calc(20px + 1em) calc(20px / 2)",
-      "calc(20px + 50%) calc(50% - 10px)",
-      "calc(-20px) calc(-50%)",
-      "calc(-20%) calc(-50%)"
-    ],
-    invalid_values: [ "contain contain", "cover cover", "cover auto", "auto cover", "contain cover", "cover contain", "-5px 3px", "3px -5px", "auto -5px", "-5px auto", "5 3", "10px calc(10px + rubbish)" ]
-  },
   "shape-rendering": {
     domProp: "shapeRendering",
     inherited: true,
@@ -6932,6 +6723,231 @@ if (IsCSSPropertyPrefEnabled("layout.css.scroll-snap.enabled")) {
   };
 }
 
+function SupportsMaskShorthand() {
+  return "maskImage" in document.documentElement.style;
+}
+
+if (SupportsMaskShorthand()) {
+  gCSSProperties["mask"] = {
+    domProp: "mask",
+    inherited: false,
+    type: CSS_TYPE_SHORTHAND_AND_LONGHAND,
+    /* FIXME: All mask-border-* should be added when we implement them. */
+    subproperties: ["mask-clip", "mask-image", "mask-mode", "mask-origin", "mask-position", "mask-repeat", "mask-size" , "mask-composite"],
+    initial_values: [ "match-source", "none", "repeat", "add", "0% 0%", "top left", "left top", "0% 0% / auto", "top left / auto", "left top / auto", "0% 0% / auto auto",
+      "top left none", "left top none", "none left top", "none top left", "none 0% 0%", "left top / auto none", "left top / auto auto none",
+      "match-source none repeat add top left", "left top repeat none add", "none repeat add top left / auto", "left top / auto repeat none add match-source", "none repeat add 0% 0% / auto auto match-source" ],
+    other_values: [
+      "none alpha repeat add left top",
+      "url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==)",
+      "repeat url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==') alpha left top add",
+      "repeat-x",
+      "repeat-y",
+      "no-repeat",
+      "none repeat-y alpha add 0% 0%",
+      "substract",
+      "0% top substract alpha repeat none",
+      "top",
+      "left",
+      "50% 50%",
+      "center",
+      "top / 100px",
+      "left / contain",
+      "left / cover",
+      "10px / 10%",
+      "10em / calc(20px)",
+      "top left / 100px 100px",
+      "top left / 100px auto",
+      "top left / 100px 10%",
+      "top left / 100px calc(20px)",
+      "bottom right add none alpha repeat",
+      "50% alpha",
+      "alpha 50%",
+      "50%",
+      "url(#mymask)",
+      "-moz-radial-gradient(10% bottom, #ffffff, black) add no-repeat",
+      "-moz-linear-gradient(10px 10px -45deg, red, blue) repeat",
+      "-moz-linear-gradient(10px 10px -0.125turn, red, blue) repeat",
+      "-moz-repeating-radial-gradient(10% bottom, #ffffff, black) add no-repeat",
+      "-moz-repeating-linear-gradient(10px 10px -45deg, red, blue) repeat",
+      "-moz-element(#test) alpha",
+      /* multiple mask-image */
+      "url(404.png), url(404.png)",
+      "repeat-x, substract, none",
+      "0% top url(404.png), url(404.png) 0% top",
+      "substract repeat-y top left url(404.png), repeat-x alpha",
+      "url(404.png), -moz-linear-gradient(20px 20px -45deg, blue, green), -moz-element(#a) alpha",
+      "top left / contain, bottom right / cover",
+      /* test cases with clip+origin in the shorthand */
+      "url(404.png) alpha padding-box",
+      "url(404.png) border-box alpha",
+      "content-box url(404.png)",
+      "url(404.png) alpha padding-box padding-box",
+      "url(404.png) alpha padding-box border-box",
+      "content-box border-box url(404.png)",
+    ],
+    invalid_values: [
+      /* mixes with keywords have to be in correct order */
+      "50% left", "top 50%",
+      /* no quirks mode colors */
+      "-moz-radial-gradient(10% bottom, ffffff, black) add no-repeat",
+      /* no quirks mode lengths */
+      "-moz-linear-gradient(10 10px -45deg, red, blue) repeat",
+      "-moz-linear-gradient(10px 10 -45deg, red, blue) repeat",
+      "linear-gradient(red -99, yellow, green, blue 120%)",
+      /* bug 258080: don't accept background-position separated */
+      "left url(404.png) top", "top url(404.png) left",
+      "alpha padding-box url(404.png) border-box",
+      "alpha padding-box url(404.png) padding-box",
+      "-moz-element(#a rubbish)",
+      "left top / match-source"
+    ]
+  };
+  gCSSProperties["mask-clip"] = {
+    domProp: "maskClip",
+    inherited: false,
+    type: CSS_TYPE_LONGHAND,
+    initial_values: [ "border-box" ],
+    other_values: [ "content-box", "padding-box", "border-box, padding-box", "padding-box, padding-box, padding-box", "border-box, border-box" ],
+    invalid_values: [ "margin-box", "content-box content-box" ]
+  };
+  gCSSProperties["mask-image"] = {
+    domProp: "maskImage",
+    inherited: false,
+    type: CSS_TYPE_LONGHAND,
+    initial_values: [ "none" ],
+    other_values: [
+    "url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==)", "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==')", 'url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==")',
+    "none, none",
+    "none, none, none, none, none",
+    "url(#mymask)",
+    "url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==), none",
+    "none, url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==), none",
+    "url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==), url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==)",
+    ].concat(validGradientAndElementValues),
+    invalid_values: [
+    ].concat(invalidGradientAndElementValues),
+    unbalanced_values: [
+    ].concat(unbalancedGradientAndElementValues)
+  };
+  gCSSProperties["mask-mode"] = {
+    domProp: "maskMode",
+    inherited: false,
+    type: CSS_TYPE_LONGHAND,
+    initial_values: [ "match-source" ],
+    other_values: [ "alpha", "luminance", "match-source, match-source", "match-source, alpha", "alpha, luminance, match-source"],
+    invalid_values: [ "match-source match-source", "alpha match-source" ]
+  };
+  gCSSProperties["mask-composite"] = {
+    domProp: "maskComposite",
+    inherited: false,
+    type: CSS_TYPE_LONGHAND,
+    initial_values: [ "add" ],
+    other_values: [ "substract", "intersect", "exclude", "add, add", "substract, intersect", "substract, substract, add"],
+    invalid_values: [ "add substract", "intersect exclude" ]
+  };
+  gCSSProperties["mask-origin"] = {
+    domProp: "maskOrigin",
+    inherited: false,
+    type: CSS_TYPE_LONGHAND,
+    initial_values: [ "padding-box" ],
+    other_values: [ "border-box", "content-box", "border-box, padding-box", "padding-box, padding-box, padding-box", "border-box, border-box" ],
+    invalid_values: [ "margin-box", "padding-box padding-box" ]
+  };
+  gCSSProperties["mask-position"] = {
+    domProp: "maskPosition",
+    inherited: false,
+    type: CSS_TYPE_LONGHAND,
+    initial_values: [ "top 0% left 0%", "top 0% left", "top left", "left top", "0% 0%", "0% top", "left 0%" ],
+    other_values: [ "top", "left", "right", "bottom", "center", "center bottom", "bottom center", "center right", "right center", "center top", "top center", "center left", "left center", "right bottom", "bottom right", "50%", "top left, top left", "top left, top right", "top right, top left", "left top, 0% 0%", "10% 20%, 30%, 40%", "top left, bottom right", "right bottom, left top", "0%", "0px", "30px", "0%, 10%, 20%, 30%", "top, top, top, top, top",
+      "calc(20px)",
+      "calc(20px) 10px",
+      "10px calc(20px)",
+      "calc(20px) 25%",
+      "25% calc(20px)",
+      "calc(20px) calc(20px)",
+      "calc(20px + 1em) calc(20px / 2)",
+      "calc(20px + 50%) calc(50% - 10px)",
+      "calc(-20px) calc(-50%)",
+      "calc(-20%) calc(-50%)",
+      "0px 0px",
+      "right 20px top 60px",
+      "right 20px bottom 60px",
+      "left 20px top 60px",
+      "left 20px bottom 60px",
+      "right -50px top -50px",
+      "left -50px bottom -50px",
+      "right 20px top -50px",
+      "right -20px top 50px",
+      "right 3em bottom 10px",
+      "bottom 3em right 10px",
+      "top 3em right 10px",
+      "left 15px",
+      "10px top",
+      "left top 15px",
+      "left 10px top",
+      "left 20%",
+      "right 20%"
+    ],
+    invalid_values: [ "center 10px center 4px", "center 10px center",
+                      "top 20%", "bottom 20%", "50% left", "top 50%",
+                      "50% bottom 10%", "right 10% 50%", "left right",
+                      "top bottom", "left 10% right",
+                      "top 20px bottom 20px", "left left",
+                      "0px calc(0px + rubbish)"],
+  };
+  gCSSProperties["mask-repeat"] = {
+    domProp: "maskRepeat",
+    inherited: false,
+    type: CSS_TYPE_LONGHAND,
+    initial_values: [ "repeat", "repeat repeat" ],
+    other_values: [ "repeat-x", "repeat-y", "no-repeat",
+      "repeat-x, repeat-x",
+      "repeat, no-repeat",
+      "repeat-y, no-repeat, repeat-y",
+      "repeat, repeat, repeat",
+      "repeat no-repeat",
+      "no-repeat repeat",
+      "no-repeat no-repeat",
+      "repeat repeat, repeat repeat",
+    ],
+    invalid_values: [ "repeat repeat repeat",
+                      "repeat-x repeat-y",
+                      "repeat repeat-x",
+                      "repeat repeat-y",
+                      "repeat-x repeat",
+                      "repeat-y repeat" ]
+  };
+  gCSSProperties["mask-size"] = {
+    domProp: "maskSize",
+    inherited: false,
+    type: CSS_TYPE_LONGHAND,
+    initial_values: [ "auto", "auto auto" ],
+    other_values: [ "contain", "cover", "100px auto", "auto 100px", "100% auto", "auto 100%", "25% 50px", "3em 40%",
+      "calc(20px)",
+      "calc(20px) 10px",
+      "10px calc(20px)",
+      "calc(20px) 25%",
+      "25% calc(20px)",
+      "calc(20px) calc(20px)",
+      "calc(20px + 1em) calc(20px / 2)",
+      "calc(20px + 50%) calc(50% - 10px)",
+      "calc(-20px) calc(-50%)",
+      "calc(-20%) calc(-50%)"
+    ],
+    invalid_values: [ "contain contain", "cover cover", "cover auto", "auto cover", "contain cover", "cover contain", "-5px 3px", "3px -5px", "auto -5px", "-5px auto", "5 3", "10px calc(10px + rubbish)" ]
+  };
+} else {
+  gCSSProperties["mask"] = {
+    domProp: "mask",
+    inherited: false,
+    type: CSS_TYPE_LONGHAND,
+    initial_values: [ "none" ],
+    other_values: [ "url(#mymask)" ],
+    invalid_values: []
+  };
+}
+
 if (IsCSSPropertyPrefEnabled("layout.css.prefixes.webkit")) {
   gCSSProperties["-webkit-animation"] = {
     domProp: "webkitAnimation",
@@ -7214,64 +7230,67 @@ if (IsCSSPropertyPrefEnabled("layout.css.prefixes.webkit")) {
     alias_for: "-moz-user-select",
     subproperties: [ "-moz-user-select" ],
   };
-  gCSSProperties["-webkit-mask"] = {
-    domProp: "webkitMask",
-    inherited: false,
-    type: CSS_TYPE_TRUE_SHORTHAND,
-    alias_for: "mask",
-    subproperties: [ "mask-clip", "mask-image", "mask-mode", "mask-origin", "mask-position", "mask-repeat", "mask-size" , "mask-composite" ],
-  };
-  gCSSProperties["-webkit-mask-clip"] = {
-    domProp: "webkitMaskClip",
-    inherited: false,
-    type: CSS_TYPE_SHORTHAND_AND_LONGHAND,
-    alias_for: "mask-clip",
-    subproperties: [ "mask-clip" ],
-  };
 
-  gCSSProperties["-webkit-mask-composite"] = {
-    domProp: "webkitMaskComposite",
-    inherited: false,
-    type: CSS_TYPE_SHORTHAND_AND_LONGHAND,
-    alias_for: "mask-composite",
-    subproperties: [ "mask-composite" ],
-  };
+  if (SupportsMaskShorthand()) {
+    gCSSProperties["-webkit-mask"] = {
+      domProp: "webkitMask",
+      inherited: false,
+      type: CSS_TYPE_TRUE_SHORTHAND,
+      alias_for: "mask",
+      subproperties: [ "mask-clip", "mask-image", "mask-mode", "mask-origin", "mask-position", "mask-repeat", "mask-size" , "mask-composite" ],
+    };
+    gCSSProperties["-webkit-mask-clip"] = {
+      domProp: "webkitMaskClip",
+      inherited: false,
+      type: CSS_TYPE_SHORTHAND_AND_LONGHAND,
+      alias_for: "mask-clip",
+      subproperties: [ "mask-clip" ],
+    };
 
-  gCSSProperties["-webkit-mask-image"] = {
-    domProp: "webkitMaskImage",
-    inherited: false,
-    type: CSS_TYPE_SHORTHAND_AND_LONGHAND,
-    alias_for: "mask-image",
-    subproperties: [ "mask-image" ],
-  };
-  gCSSProperties["-webkit-mask-origin"] = {
-    domProp: "webkitMaskOrigin",
-    inherited: false,
-    type: CSS_TYPE_SHORTHAND_AND_LONGHAND,
-    alias_for: "mask-origin",
-    subproperties: [ "mask-origin" ],
-  };
-  gCSSProperties["-webkit-mask-position"] = {
-    domProp: "webkitMaskPosition",
-    inherited: false,
-    type: CSS_TYPE_SHORTHAND_AND_LONGHAND,
-    alias_for: "mask-position",
-    subproperties: [ "mask-position" ],
-  };
-  gCSSProperties["-webkit-mask-repeat"] = {
-    domProp: "webkitMaskRepeat",
-    inherited: false,
-    type: CSS_TYPE_SHORTHAND_AND_LONGHAND,
-    alias_for: "mask-repeat",
-    subproperties: [ "mask-repeat" ],
-  };
-  gCSSProperties["-webkit-mask-size"] = {
-    domProp: "webkitMaskSize",
-    inherited: false,
-    type: CSS_TYPE_SHORTHAND_AND_LONGHAND,
-    alias_for: "mask-size",
-    subproperties: [ "mask-size" ],
-  };
+    gCSSProperties["-webkit-mask-composite"] = {
+      domProp: "webkitMaskComposite",
+      inherited: false,
+      type: CSS_TYPE_SHORTHAND_AND_LONGHAND,
+      alias_for: "mask-composite",
+      subproperties: [ "mask-composite" ],
+    };
+
+    gCSSProperties["-webkit-mask-image"] = {
+      domProp: "webkitMaskImage",
+      inherited: false,
+      type: CSS_TYPE_SHORTHAND_AND_LONGHAND,
+      alias_for: "mask-image",
+      subproperties: [ "mask-image" ],
+    };
+    gCSSProperties["-webkit-mask-origin"] = {
+      domProp: "webkitMaskOrigin",
+      inherited: false,
+      type: CSS_TYPE_SHORTHAND_AND_LONGHAND,
+      alias_for: "mask-origin",
+      subproperties: [ "mask-origin" ],
+    };
+    gCSSProperties["-webkit-mask-position"] = {
+      domProp: "webkitMaskPosition",
+      inherited: false,
+      type: CSS_TYPE_SHORTHAND_AND_LONGHAND,
+      alias_for: "mask-position",
+      subproperties: [ "mask-position" ],
+    };
+    gCSSProperties["-webkit-mask-repeat"] = {
+      domProp: "webkitMaskRepeat",
+      inherited: false,
+      type: CSS_TYPE_SHORTHAND_AND_LONGHAND,
+      alias_for: "mask-repeat",
+      subproperties: [ "mask-repeat" ],
+    };
+    gCSSProperties["-webkit-mask-size"] = {
+      domProp: "webkitMaskSize",
+      inherited: false,
+      type: CSS_TYPE_SHORTHAND_AND_LONGHAND,
+      alias_for: "mask-size",
+      subproperties: [ "mask-size" ],
+    };
+  }
 }
 
 if (IsCSSPropertyPrefEnabled("layout.css.unset-value.enabled")) {
diff --git a/layout/style/test/test_transitions_per_property.html b/layout/style/test/test_transitions_per_property.html
index af5d38458e7..b11c51ea6f9 100644
--- a/layout/style/test/test_transitions_per_property.html
+++ b/layout/style/test/test_transitions_per_property.html
@@ -170,16 +170,6 @@ var supported_properties = {
                     test_length_unclamped, test_percent_unclamped ],
     "marker-offset": [ test_length_transition,
                        test_length_unclamped ],
-    "mask-position": [ test_background_position_transition,
-                       // FIXME: We don't currently test clamping,
-                       // since mask-position uses calc() as
-                       // an intermediate form.
-                       /* test_length_percent_pair_unclamped */ ],
-    "mask-size": [ test_background_size_transition,
-                   // FIXME: We don't currently test clamping,
-                   // since mask-size uses calc() as an
-                   // intermediate form.
-                   /* test_length_percent_pair_clamped */ ],
     "max-height": [ test_length_transition, test_percent_transition,
                     test_length_percent_calc_transition,
                     test_length_clamped, test_percent_clamped ],
@@ -269,6 +259,19 @@ var supported_properties = {
     "z-index": [ test_integer_transition, test_pos_integer_or_auto_transition ],
 };
 
+if (SupportsMaskShorthand()) {
+  supported_properties["mask-position"] = [ test_background_position_transition,
+                                     // FIXME: We don't currently test clamping,
+                                     // since mask-position uses calc() as
+                                     // an intermediate form.
+                                     /* test_length_percent_pair_unclamped */ ];
+  supported_properties["mask-size"] = [ test_background_size_transition,
+                                     // FIXME: We don't currently test clamping,
+                                     // since mask-size uses calc() as an
+                                     // intermediate form.
+                                     /* test_length_percent_pair_clamped */ ];
+}
+
 var div = document.getElementById("display");
 var OMTAdiv = document.getElementById("transformTest");
 var cs = getComputedStyle(div, "");
diff --git a/layout/style/ua.css b/layout/style/ua.css
index f1ce000bc81..7f329944131 100644
--- a/layout/style/ua.css
+++ b/layout/style/ua.css
@@ -370,16 +370,16 @@ div:-moz-native-anonymous.moz-accessiblecaret.no-bar > div.bar {
 }
 
 div:-moz-native-anonymous.moz-accessiblecaret.normal > div.image {
-  background-image: url("resource://gre/res/accessiblecaret.png");
+  background-image: url("resource://gre-resources/accessiblecaret-normal@1x.png");
 }
 
 div:-moz-native-anonymous.moz-accessiblecaret.left > div.image {
-  background-image: url("resource://gre/res/accessiblecaret_tilt_left.png");
+  background-image: url("resource://gre-resources/accessiblecaret-tilt-left@1x.png");
   margin-left: -39%;
 }
 
 div:-moz-native-anonymous.moz-accessiblecaret.right > div.image {
-  background-image: url("resource://gre/res/accessiblecaret_tilt_right.png");
+  background-image: url("resource://gre-resources/accessiblecaret-tilt-right@1x.png");
   margin-left: 41%;
 }
 
@@ -389,43 +389,43 @@ div:-moz-native-anonymous.moz-accessiblecaret.none {
 
 @media (min-resolution: 1.5dppx) {
   div:-moz-native-anonymous.moz-accessiblecaret.normal > div.image {
-    background-image: url("resource://gre/res/accessiblecaret@1.5x.png");
+    background-image: url("resource://gre-resources/accessiblecaret-normal@1.5x.png");
   }
 
   div:-moz-native-anonymous.moz-accessiblecaret.left > div.image {
-    background-image: url("resource://gre/res/accessiblecaret_tilt_left@1.5x.png");
+    background-image: url("resource://gre-resources/accessiblecaret-tilt-left@1.5x.png");
   }
 
   div:-moz-native-anonymous.moz-accessiblecaret.right > div.image {
-    background-image: url("resource://gre/res/accessiblecaret_tilt_right@1.5x.png");
+    background-image: url("resource://gre-resources/accessiblecaret-tilt-right@1.5x.png");
   }
 }
 
 @media (min-resolution: 2dppx) {
   div:-moz-native-anonymous.moz-accessiblecaret.normal > div.image {
-    background-image: url("resource://gre/res/accessiblecaret@2x.png");
+    background-image: url("resource://gre-resources/accessiblecaret-normal@2x.png");
   }
 
   div:-moz-native-anonymous.moz-accessiblecaret.left > div.image {
-    background-image: url("resource://gre/res/accessiblecaret_tilt_left@2x.png");
+    background-image: url("resource://gre-resources/accessiblecaret-tilt-left@2x.png");
   }
 
   div:-moz-native-anonymous.moz-accessiblecaret.right > div.image {
-    background-image: url("resource://gre/res/accessiblecaret_tilt_right@2x.png");
+    background-image: url("resource://gre-resources/accessiblecaret-tilt-right@2x.png");
   }
 }
 
 @media (min-resolution: 2.25dppx) {
   div:-moz-native-anonymous.moz-accessiblecaret.normal > div.image {
-    background-image: url("resource://gre/res/accessiblecaret@2.25x.png");
+    background-image: url("resource://gre-resources/accessiblecaret-normal@2.25x.png");
   }
 
   div:-moz-native-anonymous.moz-accessiblecaret.left > div.image {
-    background-image: url("resource://gre/res/accessiblecaret_tilt_left@2.25x.png");
+    background-image: url("resource://gre-resources/accessiblecaret-tilt-left@2.25x.png");
   }
 
   div:-moz-native-anonymous.moz-accessiblecaret.right > div.image {
-    background-image: url("resource://gre/res/accessiblecaret_tilt_right@2.25x.png");
+    background-image: url("resource://gre-resources/accessiblecaret-tilt-right@2.25x.png");
   }
 }
 
diff --git a/mobile/android/app/mobile.js b/mobile/android/app/mobile.js
index 99dc1ea53b6..f877e880ab0 100644
--- a/mobile/android/app/mobile.js
+++ b/mobile/android/app/mobile.js
@@ -904,6 +904,11 @@ pref("layout.accessiblecaret.enabled", true);
 pref("layout.accessiblecaret.enabled", false);
 #endif
 
+// AccessibleCaret CSS for the Android L style assets.
+pref("layout.accessiblecaret.width", "22.0");
+pref("layout.accessiblecaret.height", "22.0");
+pref("layout.accessiblecaret.margin-left", "-11.5");
+
 // Android hides the selection bars at the two ends of the selection highlight.
 pref("layout.accessiblecaret.bar.enabled", false);
 
@@ -921,6 +926,9 @@ pref("layout.accessiblecaret.use_long_tap_injector", false);
 // scroll.
 pref("layout.accessiblecaret.extendedvisibility", true);
 
+// Androids carets are always tilt to match the text selection guideline.
+pref("layout.accessiblecaret.always_tilt", true);
+
 // Selection change notifications generated by Javascript changes
 // update active AccessibleCarets / UI interactions.
 pref("layout.accessiblecaret.allow_script_change_updates", true);
@@ -946,7 +954,6 @@ pref("dom.vr.enabled", true);
 pref("browser.tabs.showAudioPlayingIcon", true);
 
 pref("dom.serviceWorkers.enabled", true);
-pref("dom.serviceWorkers.interception.enabled", true);
 
 // The remote content URL where FxAccountsWebChannel messages originate.  Must use HTTPS.
 pref("identity.fxaccounts.remote.webchannel.uri", "https://accounts.firefox.com");
diff --git a/mobile/android/b2gdroid/installer/package-manifest.in b/mobile/android/b2gdroid/installer/package-manifest.in
index 9de2ae2fecf..b77b3bfd4ee 100644
--- a/mobile/android/b2gdroid/installer/package-manifest.in
+++ b/mobile/android/b2gdroid/installer/package-manifest.in
@@ -529,20 +529,6 @@
 @BINPATH@/res/html/*
 @BINPATH@/res/language.properties
 @BINPATH@/res/entityTables/*
-#ifdef NIGHTLY_BUILD
-@BINPATH@/res/accessiblecaret.png
-@BINPATH@/res/accessiblecaret@1.5x.png
-@BINPATH@/res/accessiblecaret@2.25x.png
-@BINPATH@/res/accessiblecaret@2x.png
-@BINPATH@/res/accessiblecaret_tilt_left.png
-@BINPATH@/res/accessiblecaret_tilt_left@1.5x.png
-@BINPATH@/res/accessiblecaret_tilt_left@2.25x.png
-@BINPATH@/res/accessiblecaret_tilt_left@2x.png
-@BINPATH@/res/accessiblecaret_tilt_right.png
-@BINPATH@/res/accessiblecaret_tilt_right@1.5x.png
-@BINPATH@/res/accessiblecaret_tilt_right@2.25x.png
-@BINPATH@/res/accessiblecaret_tilt_right@2x.png
-#endif
 
 #ifndef MOZ_ANDROID_EXCLUDE_FONTS
 @BINPATH@/res/fonts/*
diff --git a/mobile/android/installer/package-manifest.in b/mobile/android/installer/package-manifest.in
index ccc2d57be7a..4a0bebec34b 100644
--- a/mobile/android/installer/package-manifest.in
+++ b/mobile/android/installer/package-manifest.in
@@ -482,20 +482,6 @@
 @BINPATH@/res/html/*
 @BINPATH@/res/language.properties
 @BINPATH@/res/entityTables/*
-#ifdef NIGHTLY_BUILD
-@BINPATH@/res/accessiblecaret.png
-@BINPATH@/res/accessiblecaret@1.5x.png
-@BINPATH@/res/accessiblecaret@2.25x.png
-@BINPATH@/res/accessiblecaret@2x.png
-@BINPATH@/res/accessiblecaret_tilt_left.png
-@BINPATH@/res/accessiblecaret_tilt_left@1.5x.png
-@BINPATH@/res/accessiblecaret_tilt_left@2.25x.png
-@BINPATH@/res/accessiblecaret_tilt_left@2x.png
-@BINPATH@/res/accessiblecaret_tilt_right.png
-@BINPATH@/res/accessiblecaret_tilt_right@1.5x.png
-@BINPATH@/res/accessiblecaret_tilt_right@2.25x.png
-@BINPATH@/res/accessiblecaret_tilt_right@2x.png
-#endif
 
 #ifndef MOZ_ANDROID_EXCLUDE_FONTS
 @BINPATH@/res/fonts/*
diff --git a/mobile/android/themes/core/content.css b/mobile/android/themes/core/content.css
index 91e1c2a04a8..0e1a3dc1004 100644
--- a/mobile/android/themes/core/content.css
+++ b/mobile/android/themes/core/content.css
@@ -336,3 +336,62 @@ input[type=number]::-moz-number-spin-box {
   display: none;
 }
 
+/* Override accessiblecaret css in layout/style/ua.css */
+div:-moz-native-anonymous.moz-accessiblecaret.normal > div.image {
+  background-image: url("chrome://browser/skin/images/accessiblecaret-normal-hdpi.png");
+  bottom: -11%; /* space between the blinking cursor and the caret */
+}
+
+div:-moz-native-anonymous.moz-accessiblecaret.left > div.image {
+  background-image: url("chrome://browser/skin/images/accessiblecaret-tilt-left-hdpi.png");
+  margin-left: -50%;
+  bottom: -1%; /* space between the selection highlight and the caret */
+}
+
+div:-moz-native-anonymous.moz-accessiblecaret.right > div.image {
+  background-image: url("chrome://browser/skin/images/accessiblecaret-tilt-right-hdpi.png");
+  margin-left: 47%;
+  bottom: -1%; /* space between the selection highlight and the caret */
+}
+
+@media (min-resolution: 1.5dppx) {
+  div:-moz-native-anonymous.moz-accessiblecaret.normal > div.image {
+    background-image: url("chrome://browser/skin/images/accessiblecaret-normal-hdpi.png");
+  }
+
+  div:-moz-native-anonymous.moz-accessiblecaret.left > div.image {
+    background-image: url("chrome://browser/skin/images/accessiblecaret-tilt-left-hdpi.png");
+  }
+
+  div:-moz-native-anonymous.moz-accessiblecaret.right > div.image {
+    background-image: url("chrome://browser/skin/images/accessiblecaret-tilt-right-hdpi.png");
+  }
+}
+
+@media (min-resolution: 2dppx) {
+  div:-moz-native-anonymous.moz-accessiblecaret.normal > div.image {
+    background-image: url("chrome://browser/skin/images/accessiblecaret-normal-xhdpi.png");
+  }
+
+  div:-moz-native-anonymous.moz-accessiblecaret.left > div.image {
+    background-image: url("chrome://browser/skin/images/accessiblecaret-tilt-left-xhdpi.png");
+  }
+
+  div:-moz-native-anonymous.moz-accessiblecaret.right > div.image {
+    background-image: url("chrome://browser/skin/images/accessiblecaret-tilt-right-xhdpi.png");
+  }
+}
+
+@media (min-resolution: 2.25dppx) {
+  div:-moz-native-anonymous.moz-accessiblecaret.normal > div.image {
+    background-image: url("chrome://browser/skin/images/accessiblecaret-normal-xxhdpi.png");
+  }
+
+  div:-moz-native-anonymous.moz-accessiblecaret.left > div.image {
+    background-image: url("chrome://browser/skin/images/accessiblecaret-tilt-left-xxhdpi.png");
+  }
+
+  div:-moz-native-anonymous.moz-accessiblecaret.right > div.image {
+    background-image: url("chrome://browser/skin/images/accessiblecaret-tilt-right-xxhdpi.png");
+  }
+}
diff --git a/mobile/android/themes/core/defines.css b/mobile/android/themes/core/defines.css
index 094e696d616..dd1ef3142fe 100644
--- a/mobile/android/themes/core/defines.css
+++ b/mobile/android/themes/core/defines.css
@@ -10,7 +10,7 @@
 	--color_about_item: #ffffff;
 	--color_about_item_border: #d7d9db;
 
-	--color_background_highlight: #febc2b;
+	--color_background_highlight: rgba(255, 149, 0, 0.6);
 	--color_background_highlight_overlay: rgba(171, 171, 171, 0.5);
 	--color_text_highlight: #000;
 
diff --git a/mobile/android/themes/core/images/accessiblecaret-normal-hdpi.png b/mobile/android/themes/core/images/accessiblecaret-normal-hdpi.png
new file mode 100644
index 00000000000..7f11a3c4074
Binary files /dev/null and b/mobile/android/themes/core/images/accessiblecaret-normal-hdpi.png differ
diff --git a/mobile/android/themes/core/images/accessiblecaret-normal-xhdpi.png b/mobile/android/themes/core/images/accessiblecaret-normal-xhdpi.png
new file mode 100644
index 00000000000..7c7cc65dd3a
Binary files /dev/null and b/mobile/android/themes/core/images/accessiblecaret-normal-xhdpi.png differ
diff --git a/mobile/android/themes/core/images/accessiblecaret-normal-xxhdpi.png b/mobile/android/themes/core/images/accessiblecaret-normal-xxhdpi.png
new file mode 100644
index 00000000000..411d814ed25
Binary files /dev/null and b/mobile/android/themes/core/images/accessiblecaret-normal-xxhdpi.png differ
diff --git a/mobile/android/themes/core/images/accessiblecaret-tilt-left-hdpi.png b/mobile/android/themes/core/images/accessiblecaret-tilt-left-hdpi.png
new file mode 100644
index 00000000000..838e9ab4dfe
Binary files /dev/null and b/mobile/android/themes/core/images/accessiblecaret-tilt-left-hdpi.png differ
diff --git a/mobile/android/themes/core/images/accessiblecaret-tilt-left-xhdpi.png b/mobile/android/themes/core/images/accessiblecaret-tilt-left-xhdpi.png
new file mode 100644
index 00000000000..f1c6f1d88a3
Binary files /dev/null and b/mobile/android/themes/core/images/accessiblecaret-tilt-left-xhdpi.png differ
diff --git a/mobile/android/themes/core/images/accessiblecaret-tilt-left-xxhdpi.png b/mobile/android/themes/core/images/accessiblecaret-tilt-left-xxhdpi.png
new file mode 100644
index 00000000000..6d5ee52ac7a
Binary files /dev/null and b/mobile/android/themes/core/images/accessiblecaret-tilt-left-xxhdpi.png differ
diff --git a/mobile/android/themes/core/images/accessiblecaret-tilt-right-hdpi.png b/mobile/android/themes/core/images/accessiblecaret-tilt-right-hdpi.png
new file mode 100644
index 00000000000..97bb84235c1
Binary files /dev/null and b/mobile/android/themes/core/images/accessiblecaret-tilt-right-hdpi.png differ
diff --git a/mobile/android/themes/core/images/accessiblecaret-tilt-right-xhdpi.png b/mobile/android/themes/core/images/accessiblecaret-tilt-right-xhdpi.png
new file mode 100644
index 00000000000..4eb81b9b565
Binary files /dev/null and b/mobile/android/themes/core/images/accessiblecaret-tilt-right-xhdpi.png differ
diff --git a/mobile/android/themes/core/images/accessiblecaret-tilt-right-xxhdpi.png b/mobile/android/themes/core/images/accessiblecaret-tilt-right-xxhdpi.png
new file mode 100644
index 00000000000..0751b846cbb
Binary files /dev/null and b/mobile/android/themes/core/images/accessiblecaret-tilt-right-xxhdpi.png differ
diff --git a/mobile/android/themes/core/jar.mn b/mobile/android/themes/core/jar.mn
index 2db4c5b93a0..fb371321d9b 100644
--- a/mobile/android/themes/core/jar.mn
+++ b/mobile/android/themes/core/jar.mn
@@ -105,3 +105,12 @@ chrome.jar:
   skin/images/icon_heart_xhdpi.png               (images/icon_heart_xhdpi.png)
   skin/images/icon_heart_xxhdpi.png              (images/icon_heart_xxhdpi.png)
   skin/images/icon_key_emptypage.svg             (images/icon_key_emptypage.svg)
+  skin/images/accessiblecaret-normal-hdpi.png       (images/accessiblecaret-normal-hdpi.png)
+  skin/images/accessiblecaret-normal-xhdpi.png      (images/accessiblecaret-normal-xhdpi.png)
+  skin/images/accessiblecaret-normal-xxhdpi.png     (images/accessiblecaret-normal-xxhdpi.png)
+  skin/images/accessiblecaret-tilt-left-hdpi.png    (images/accessiblecaret-tilt-left-hdpi.png)
+  skin/images/accessiblecaret-tilt-left-xhdpi.png   (images/accessiblecaret-tilt-left-xhdpi.png)
+  skin/images/accessiblecaret-tilt-left-xxhdpi.png  (images/accessiblecaret-tilt-left-xxhdpi.png)
+  skin/images/accessiblecaret-tilt-right-hdpi.png   (images/accessiblecaret-tilt-right-hdpi.png)
+  skin/images/accessiblecaret-tilt-right-xhdpi.png  (images/accessiblecaret-tilt-right-xhdpi.png)
+  skin/images/accessiblecaret-tilt-right-xxhdpi.png (images/accessiblecaret-tilt-right-xxhdpi.png)
diff --git a/modules/libpref/init/all.js b/modules/libpref/init/all.js
index c3ad302efe1..7b720b50376 100644
--- a/modules/libpref/init/all.js
+++ b/modules/libpref/init/all.js
@@ -143,12 +143,6 @@ pref("dom.workers.maxPerDomain", 50);
 
 pref("dom.serviceWorkers.enabled", false);
 
-// Allow service workers to intercept network requests using the fetch event
-pref("dom.serviceWorkers.interception.enabled", false);
-
-// Allow service workers to intercept opaque (cross origin) responses
-pref("dom.serviceWorkers.interception.opaque.enabled", true);
-
 // The amount of time (milliseconds) service workers keep running after each event.
 pref("dom.serviceWorkers.idle_timeout", 30000);
 
@@ -4980,6 +4974,9 @@ pref("layout.accessiblecaret.use_long_tap_injector", true);
 // Use AccessibleCaret default behaviours.
 pref("layout.accessiblecaret.extendedvisibility", false);
 
+// By default, carets become tilt only when they are overlapping.
+pref("layout.accessiblecaret.always_tilt", false);
+
 // Selection change notifications generated by Javascript hide
 // AccessibleCarets and close UI interaction by default.
 pref("layout.accessiblecaret.allow_script_change_updates", false);
diff --git a/mozglue/android/Makefile.in b/mozglue/android/Makefile.in
deleted file mode 100644
index 3c8062a29a5..00000000000
--- a/mozglue/android/Makefile.in
+++ /dev/null
@@ -1,14 +0,0 @@
-# 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 $(topsrcdir)/config/rules.mk
-
-prcpucfg.h: $(topsrcdir)/nsprpub/pr/include/md/_linux.cfg
-	cp $< $@
-
-$(OBJS): prcpucfg.h
-
-GARBAGE += \
-  prcpucfg.h \
-  $(NULL)
diff --git a/netwerk/Makefile.in b/netwerk/Makefile.in
deleted file mode 100644
index ab3a7e9c507..00000000000
--- a/netwerk/Makefile.in
+++ /dev/null
@@ -1,8 +0,0 @@
-# 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/.
-
-INSTALL_TARGETS += neckoconfig
-neckoconfig_FILES := necko-config.h
-neckoconfig_DEST = $(DIST)/include
-neckoconfig_TARGET := export
diff --git a/netwerk/moz.build b/netwerk/moz.build
index 3cf12a5a9d6..dd476e7df2c 100644
--- a/netwerk/moz.build
+++ b/netwerk/moz.build
@@ -34,3 +34,4 @@ DIRS += ['build']
 TEST_DIRS += ['test']
 
 CONFIGURE_DEFINE_FILES += ['necko-config.h']
+EXPORTS += ['!necko-config.h']
diff --git a/netwerk/protocol/http/HttpBaseChannel.cpp b/netwerk/protocol/http/HttpBaseChannel.cpp
index 47c5c1a5e28..1e0c03a6c35 100644
--- a/netwerk/protocol/http/HttpBaseChannel.cpp
+++ b/netwerk/protocol/http/HttpBaseChannel.cpp
@@ -1505,6 +1505,12 @@ HttpBaseChannel::SetReferrerWithPolicy(nsIURI *referrer,
     break;
   }
 
+  // If any user trimming policy is in effect, use the trimmed URI.
+  if (userReferrerTrimmingPolicy) {
+    rv = NS_NewURI(getter_AddRefs(clone), spec);
+    if (NS_FAILED(rv)) return rv;
+  }
+
   // finally, remember the referrer URI and set the Referer header.
   rv = SetRequestHeader(NS_LITERAL_CSTRING("Referer"), spec, false);
   if (NS_FAILED(rv)) return rv;
diff --git a/netwerk/protocol/http/nsHttpChannel.cpp b/netwerk/protocol/http/nsHttpChannel.cpp
index c57bad8793c..38f10f7abee 100644
--- a/netwerk/protocol/http/nsHttpChannel.cpp
+++ b/netwerk/protocol/http/nsHttpChannel.cpp
@@ -7218,14 +7218,11 @@ nsHttpChannel::MaybeWarnAboutAppCache()
     Telemetry::Accumulate(Telemetry::HTTP_OFFLINE_CACHE_DOCUMENT_LOAD,
                           true);
 
-    // Then, issue a deprecation warning if service worker interception is
-    // enabled.
-    if (nsContentUtils::ServiceWorkerInterceptionEnabled()) {
-        nsCOMPtr warner;
-        GetCallback(warner);
-        if (warner) {
-            warner->IssueWarning(nsIDocument::eAppCache, false);
-        }
+    // Then, issue a deprecation warning.
+    nsCOMPtr warner;
+    GetCallback(warner);
+    if (warner) {
+        warner->IssueWarning(nsIDocument::eAppCache, false);
     }
 }
 
diff --git a/netwerk/protocol/http/nsHttpConnectionMgr.cpp b/netwerk/protocol/http/nsHttpConnectionMgr.cpp
index 03b4e0ef746..7e78ad82526 100644
--- a/netwerk/protocol/http/nsHttpConnectionMgr.cpp
+++ b/netwerk/protocol/http/nsHttpConnectionMgr.cpp
@@ -188,7 +188,6 @@ nsHttpConnectionMgr::Shutdown()
 
     // wait for shutdown event to complete
     while (!shutdownWrapper->mBool) {
-        fprintf(stderr, "nsHttpConnectionMgr::Shutdown() ProcessNextEvent\n");
         NS_ProcessNextEvent(NS_GetCurrentThread());
     }
 
diff --git a/netwerk/test/unit/test_referrer_policy.js b/netwerk/test/unit/test_referrer_policy.js
new file mode 100644
index 00000000000..a34ca27265f
--- /dev/null
+++ b/netwerk/test/unit/test_referrer_policy.js
@@ -0,0 +1,77 @@
+Cu.import("resource://gre/modules/NetUtil.jsm");
+
+function test_policy(test) {
+  do_print("Running test: " + test.toSource());
+
+  var uri = NetUtil.newURI(test.url, "", null)
+  var chan = NetUtil.newChannel({
+    uri: uri,
+    loadUsingSystemPrincipal: true
+  });
+
+  var referrer = NetUtil.newURI(test.referrer, "", null);
+  chan.QueryInterface(Components.interfaces.nsIHttpChannel);
+  chan.setReferrerWithPolicy(referrer, test.policy);
+  if (test.expectedHeader === undefined) {
+    try {
+      chan.getRequestHeader("Referer");
+      do_throw("Should not find a Referer header!");
+    } catch(e) {
+    }
+    do_check_eq(chan.referrer, null);
+  } else {
+    var header = chan.getRequestHeader("Referer");
+    do_check_eq(header, test.expectedHeader);
+    do_check_eq(chan.referrer.spec, test.expectedReferrerSpec);
+  }
+}
+
+const nsIHttpChannel = Ci.nsIHttpChannel;
+var gTests = [
+  {
+    policy: nsIHttpChannel.REFERRER_POLICY_DEFAULT,
+    url: "https://test.example/foo",
+    referrer: "https://test.example/referrer",
+    expectedHeader: "https://test.example/referrer",
+    expectedReferrerSpec: "https://test.example/referrer"
+  },
+  {
+    policy: nsIHttpChannel.REFERRER_POLICY_DEFAULT,
+    url: "http://test.example/foo",
+    referrer: "https://test.example/referrer",
+    expectedHeader: undefined,
+    expectedReferrerSpec: undefined
+  },
+  {
+    policy: nsIHttpChannel.REFERRER_POLICY_NO_REFERRER,
+    url: "https://test.example/foo",
+    referrer: "https://test.example/referrer",
+    expectedHeader: undefined,
+    expectedReferrerSpec: undefined
+  },
+  {
+    policy: nsIHttpChannel.REFERRER_POLICY_ORIGIN,
+    url: "https://test.example/foo",
+    referrer: "https://test.example/referrer",
+    expectedHeader: "https://test.example",
+    expectedReferrerSpec: "https://test.example/"
+  },
+  {
+    policy: nsIHttpChannel.REFERRER_POLICY_UNSAFE_URL,
+    url: "https://test.example/foo",
+    referrer: "https://test.example/referrer",
+    expectedHeader: "https://test.example/referrer",
+    expectedReferrerSpec: "https://test.example/referrer"
+  },
+  {
+    policy: nsIHttpChannel.REFERRER_POLICY_UNSAFE_URL,
+    url: "http://test.example/foo",
+    referrer: "https://test.example/referrer",
+    expectedHeader: "https://test.example/referrer",
+    expectedReferrerSpec: "https://test.example/referrer"
+  },
+];
+
+function run_test() {
+  gTests.forEach(test => test_policy(test));
+}
diff --git a/netwerk/test/unit/xpcshell.ini b/netwerk/test/unit/xpcshell.ini
index 4df4f806ef0..9dbace1e267 100644
--- a/netwerk/test/unit/xpcshell.ini
+++ b/netwerk/test/unit/xpcshell.ini
@@ -315,6 +315,7 @@ skip-if = os == "android"
 [test_about_networking.js]
 [test_ping_aboutnetworking.js]
 [test_referrer.js]
+[test_referrer_policy.js]
 [test_predictor.js]
 # Android version detection w/in gecko does not work right on infra, so we just
 # disable this test on all android versions, even though it's enabled on 2.3+ in
diff --git a/security/manager/ssl/nsNSSCertificate.cpp b/security/manager/ssl/nsNSSCertificate.cpp
index 00887382264..045ed5d42c4 100644
--- a/security/manager/ssl/nsNSSCertificate.cpp
+++ b/security/manager/ssl/nsNSSCertificate.cpp
@@ -746,8 +746,6 @@ nsNSSCertificate::GetIssuerOrganization(nsAString& aOrganization)
     if (organization) {
       aOrganization = NS_ConvertUTF8toUTF16(organization);
       PORT_Free(organization);
-    } else {
-      return GetIssuerCommonName(aOrganization);
     }
   }
   return NS_OK;
diff --git a/security/manager/ssl/tests/unit/test_ocsp_enabled_pref.js b/security/manager/ssl/tests/unit/test_ocsp_enabled_pref.js
new file mode 100644
index 00000000000..da883862cab
--- /dev/null
+++ b/security/manager/ssl/tests/unit/test_ocsp_enabled_pref.js
@@ -0,0 +1,141 @@
+// -*- indent-tabs-mode: nil; js-indent-level: 2 -*-
+// Any copyright is dedicated to the Public Domain.
+// http://creativecommons.org/publicdomain/zero/1.0/
+"use strict";
+
+// Checks that the security.OCSP.enabled pref correctly controls OCSP fetching
+// behavior.
+
+do_get_profile(); // Must be called before getting nsIX509CertDB
+const gCertDB = Cc["@mozilla.org/security/x509certdb;1"]
+                  .getService(Ci.nsIX509CertDB);
+
+const SERVER_PORT = 8888;
+
+function certFromFile(filename) {
+  return constructCertFromFile(`test_ev_certs/${filename}.pem`);
+}
+
+function loadCert(certName, trustString) {
+  addCertFromFile(gCertDB, `test_ev_certs/${certName}.pem`, trustString);
+}
+
+function getFailingOCSPResponder() {
+  return getFailingHttpServer(SERVER_PORT, ["www.example.com"]);
+}
+
+function getOCSPResponder(expectedCertNames) {
+  return startOCSPResponder(SERVER_PORT, "www.example.com", [], "test_ev_certs",
+                            expectedCertNames, []);
+}
+
+// Tests that in ocspOff mode, OCSP fetches are never done.
+function testOff() {
+  add_test(() => {
+    Services.prefs.setIntPref("security.OCSP.enabled", 0);
+    do_print("Setting security.OCSP.enabled to 0");
+    run_next_test();
+  });
+
+  // EV chains should verify successfully but never get EV status.
+  add_test(() => {
+    clearOCSPCache();
+    let ocspResponder = getFailingOCSPResponder();
+    checkEVStatus(gCertDB, certFromFile("ev-valid"), certificateUsageSSLServer,
+                  false);
+    ocspResponder.stop(run_next_test);
+  });
+
+  // A DV chain should verify successfully.
+  add_test(() => {
+    clearOCSPCache();
+    let ocspResponder = getFailingOCSPResponder();
+    checkCertErrorGeneric(gCertDB, certFromFile("non-ev-root"),
+                          PRErrorCodeSuccess, certificateUsageSSLServer);
+    ocspResponder.stop(run_next_test);
+  });
+}
+
+// Tests that in ocspOn mode, OCSP fetches are done for both EV and DV certs.
+function testOn() {
+  add_test(() => {
+    Services.prefs.setIntPref("security.OCSP.enabled", 1);
+    do_print("Setting security.OCSP.enabled to 1");
+    run_next_test();
+  });
+
+  // If a successful OCSP response is fetched, then an EV chain should verify
+  // successfully and get EV status as well.
+  add_test(() => {
+    clearOCSPCache();
+    let ocspResponder =
+      getOCSPResponder(gEVExpected ? ["int-ev-valid", "ev-valid"]
+                                   : ["ev-valid"]);
+    checkEVStatus(gCertDB, certFromFile("ev-valid"), certificateUsageSSLServer,
+                  gEVExpected);
+    ocspResponder.stop(run_next_test);
+  });
+
+  // If a successful OCSP response is fetched, then a DV chain should verify
+  // successfully.
+  add_test(() => {
+    clearOCSPCache();
+    let ocspResponder = getOCSPResponder(["non-ev-root"]);
+    checkCertErrorGeneric(gCertDB, certFromFile("non-ev-root"),
+                          PRErrorCodeSuccess, certificateUsageSSLServer);
+    ocspResponder.stop(run_next_test);
+  });
+}
+
+// Tests that in ocspEVOnly mode, OCSP fetches are done for EV certs only.
+function testEVOnly() {
+  add_test(() => {
+    Services.prefs.setIntPref("security.OCSP.enabled", 2);
+    do_print("Setting security.OCSP.enabled to 2");
+    run_next_test();
+  });
+
+  // If a successful OCSP response is fetched, then an EV chain should verify
+  // successfully and get EV status as well.
+  add_test(() => {
+    clearOCSPCache();
+    let ocspResponder = gEVExpected
+                      ? getOCSPResponder(["int-ev-valid", "ev-valid"])
+                      : getFailingOCSPResponder();
+    checkEVStatus(gCertDB, certFromFile("ev-valid"), certificateUsageSSLServer,
+                  gEVExpected);
+    ocspResponder.stop(run_next_test);
+  });
+
+  // A DV chain should verify successfully even without doing OCSP fetches.
+  add_test(() => {
+    clearOCSPCache();
+    let ocspResponder = getFailingOCSPResponder();
+    checkCertErrorGeneric(gCertDB, certFromFile("non-ev-root"),
+                          PRErrorCodeSuccess, certificateUsageSSLServer);
+    ocspResponder.stop(run_next_test);
+  });
+}
+
+function run_test() {
+  do_register_cleanup(() => {
+    Services.prefs.clearUserPref("network.dns.localDomains");
+    Services.prefs.clearUserPref("security.OCSP.enabled");
+    Services.prefs.clearUserPref("security.OCSP.require");
+  });
+  Services.prefs.setCharPref("network.dns.localDomains", "www.example.com");
+  // Enable hard fail to ensure chains that should only succeed because they get
+  // a good OCSP response do not succeed due to soft fail leniency.
+  Services.prefs.setBoolPref("security.OCSP.require", true);
+
+  loadCert("evroot", "CTu,,");
+  loadCert("int-ev-valid", ",,");
+  loadCert("non-evroot-ca", "CTu,,");
+  loadCert("int-non-ev-root", ",,");
+
+  testOff();
+  testOn();
+  testEVOnly();
+
+  run_next_test();
+}
diff --git a/security/manager/ssl/tests/unit/xpcshell.ini b/security/manager/ssl/tests/unit/xpcshell.ini
index 3e5d2d1023b..f5f5158332a 100644
--- a/security/manager/ssl/tests/unit/xpcshell.ini
+++ b/security/manager/ssl/tests/unit/xpcshell.ini
@@ -71,6 +71,8 @@ run-sequentially = hardcoded ports
 [test_nsIX509Cert_utf8.js]
 [test_ocsp_caching.js]
 run-sequentially = hardcoded ports
+[test_ocsp_enabled_pref.js]
+run-sequentially = hardcoded ports
 [test_ocsp_fetch_method.js]
 # OCSP requests in this test time out on slow B2G Emulator debug builds.
 # See Bug 1147725.
diff --git a/testing/mochitest/tests/Harness_sanity/test_sanityRegisteredServiceWorker.html b/testing/mochitest/tests/Harness_sanity/test_sanityRegisteredServiceWorker.html
index 277485b75f8..6c8fc352480 100644
--- a/testing/mochitest/tests/Harness_sanity/test_sanityRegisteredServiceWorker.html
+++ b/testing/mochitest/tests/Harness_sanity/test_sanityRegisteredServiceWorker.html
@@ -10,7 +10,6 @@ SimpleTest.waitForExplicitFinish();
 SimpleTest.expectRegisteredServiceWorker();
 SpecialPowers.pushPrefEnv({"set": [
   ["dom.serviceWorkers.exemptFromPerDomainMax", true],
-  ["dom.serviceWorkers.interception.enabled", true],
   ["dom.serviceWorkers.enabled", true],
   ["dom.serviceWorkers.testing.enabled", true]
 ]}, function() {
diff --git a/testing/mochitest/tests/Harness_sanity/test_sanityRegisteredServiceWorker2.html b/testing/mochitest/tests/Harness_sanity/test_sanityRegisteredServiceWorker2.html
index 468b948a44a..105fa6614e1 100644
--- a/testing/mochitest/tests/Harness_sanity/test_sanityRegisteredServiceWorker2.html
+++ b/testing/mochitest/tests/Harness_sanity/test_sanityRegisteredServiceWorker2.html
@@ -9,7 +9,6 @@
 SimpleTest.waitForExplicitFinish();
 SpecialPowers.pushPrefEnv({"set": [
   ["dom.serviceWorkers.exemptFromPerDomainMax", true],
-  ["dom.serviceWorkers.interception.enabled", true],
   ["dom.serviceWorkers.enabled", true],
   ["dom.serviceWorkers.testing.enabled", true]
 ]}, function() {
diff --git a/testing/mozharness/configs/android/androidarm.py b/testing/mozharness/configs/android/androidarm.py
index 076fc45e2d8..a1d9b18b7da 100644
--- a/testing/mozharness/configs/android/androidarm.py
+++ b/testing/mozharness/configs/android/androidarm.py
@@ -100,29 +100,6 @@ config = {
                 "--subsuite=webgl",
             ],
         },
-        "mochitest-media": {
-            "run_filename": "runtestsremote.py",
-            "testsdir": "mochitest",
-            "options": [
-                "--dm_trans=sut",
-                "--app=%(app)s",
-                "--remote-webserver=%(remote_webserver)s",
-                "--xre-path=%(xre_path)s",
-                "--utility-path=%(utility_path)s",
-                "--deviceIP=%(device_ip)s",
-                "--devicePort=%(device_port)s",
-                "--http-port=%(http_port)s",
-                "--ssl-port=%(ssl_port)s",
-                "--certificate-path=%(certs_path)s",
-                "--symbols-path=%(symbols_path)s",
-                "--quiet",
-                "--log-raw=%(raw_log_file)s",
-                "--log-errorsummary=%(error_summary_file)s",
-                "--screenshot-on-fail",
-                "--total-chunks=2",
-                "--subsuite=media",
-            ],
-        },
         "robocop": {
             "run_filename": "runrobocop.py",
             "testsdir": "mochitest",
diff --git a/testing/mozharness/configs/android/androidarm_4_3.py b/testing/mozharness/configs/android/androidarm_4_3.py
index 779e3dadb37..9ba8d7e6c09 100644
--- a/testing/mozharness/configs/android/androidarm_4_3.py
+++ b/testing/mozharness/configs/android/androidarm_4_3.py
@@ -102,27 +102,6 @@ config = {
                 "--subsuite=webgl",
             ],
         },
-        "mochitest-media": {
-            "run_filename": "runtestsremote.py",
-            "testsdir": "mochitest",
-            "options": [
-                "--dm_trans=adb",
-                "--app=%(app)s",
-                "--remote-webserver=%(remote_webserver)s",
-                "--xre-path=%(xre_path)s",
-                "--utility-path=%(utility_path)s",
-                "--http-port=%(http_port)s",
-                "--ssl-port=%(ssl_port)s",
-                "--certificate-path=%(certs_path)s",
-                "--symbols-path=%(symbols_path)s",
-                "--quiet",
-                "--log-raw=%(raw_log_file)s",
-                "--log-errorsummary=%(error_summary_file)s",
-                "--screenshot-on-fail",
-                "--total-chunks=2",
-                "--subsuite=media",
-            ],
-        },
         "robocop": {
             "run_filename": "runrobocop.py",
             "testsdir": "mochitest",
diff --git a/testing/mozharness/configs/unittests/linux_unittest.py b/testing/mozharness/configs/unittests/linux_unittest.py
index 8d0fa039dd8..e4be8411f42 100644
--- a/testing/mozharness/configs/unittests/linux_unittest.py
+++ b/testing/mozharness/configs/unittests/linux_unittest.py
@@ -210,7 +210,6 @@ config = {
          "plain": [],
         "plain-chunked": ["--chunk-by-dir=4"],
         "mochitest-push": ["--subsuite=push"],
-        "mochitest-media": ["--subsuite=media"],
         "chrome": ["--chrome"],
         "chrome-chunked": ["--chrome", "--chunk-by-dir=4"],
         "browser-chrome": ["--browser-chrome"],
diff --git a/testing/mozharness/configs/unittests/mac_unittest.py b/testing/mozharness/configs/unittests/mac_unittest.py
index 931bc4574b1..1db6f54fdc4 100644
--- a/testing/mozharness/configs/unittests/mac_unittest.py
+++ b/testing/mozharness/configs/unittests/mac_unittest.py
@@ -159,7 +159,6 @@ config = {
         "plain": [],
         "plain-chunked": ["--chunk-by-dir=4"],
         "mochitest-push": ["--subsuite=push"],
-        "mochitest-media": ["--subsuite=media"],
         "chrome": ["--chrome"],
         "chrome-chunked": ["--chrome", "--chunk-by-dir=4"],
         "browser-chrome": ["--browser-chrome"],
diff --git a/testing/mozharness/configs/unittests/win_unittest.py b/testing/mozharness/configs/unittests/win_unittest.py
index 1d80c5361ea..f521e88c4fd 100644
--- a/testing/mozharness/configs/unittests/win_unittest.py
+++ b/testing/mozharness/configs/unittests/win_unittest.py
@@ -170,7 +170,6 @@ config = {
         "plain": [],
         "plain-chunked": ["--chunk-by-dir=4"],
         "mochitest-push": ["--subsuite=push"],
-        "mochitest-media": ["--subsuite=media"],
         "chrome": ["--chrome"],
         "chrome-chunked": ["--chrome", "--chunk-by-dir=4"],
         "browser-chrome": ["--browser-chrome"],
diff --git a/testing/mozharness/mozharness/mozilla/taskcluster_helper.py b/testing/mozharness/mozharness/mozilla/taskcluster_helper.py
index 02093f6b203..d357e74ac73 100644
--- a/testing/mozharness/mozharness/mozilla/taskcluster_helper.py
+++ b/testing/mozharness/mozharness/mozilla/taskcluster_helper.py
@@ -134,6 +134,14 @@ class Taskcluster(LogMixin):
         self.info(str(task))
         self.taskcluster_queue.reportCompleted(task_id, run_id)
 
+    def report_failed(self, task):
+        task_id = task['status']['taskId']
+        run_id = task['status']['runs'][-1]['runId']
+        self.info("Resolving %s as failed, run %s. Full task:" %
+                  (task_id, run_id))
+        self.info(str(task))
+        self.taskcluster_queue.reportFailed(task_id, run_id)
+
     def get_taskcluster_url(self, filename):
         return 'https://queue.taskcluster.net/v1/task/%s/artifacts/public/build/%s' % (
             self.task_id,
diff --git a/testing/mozharness/scripts/desktop_l10n.py b/testing/mozharness/scripts/desktop_l10n.py
index 3f4c477e2ba..c67e734374b 100755
--- a/testing/mozharness/scripts/desktop_l10n.py
+++ b/testing/mozharness/scripts/desktop_l10n.py
@@ -46,6 +46,9 @@ except ImportError:
 SUCCESS = 0
 FAILURE = 1
 
+SUCCESS_STR = "Success"
+FAILURE_STR = "Failed"
+
 # when running get_output_form_command, pymake has some extra output
 # that needs to be filtered out
 PyMakeIgnoreList = [
@@ -491,7 +494,7 @@ class DesktopSingleLocale(LocalesMixin, ReleaseMixin, MockMixin, BuildbotMixin,
 
     def _add_failure(self, locale, message, **kwargs):
         """marks current step as failed"""
-        self.locales_property[locale] = "Failed"
+        self.locales_property[locale] = FAILURE_STR
         prop_key = "%s_failure" % locale
         prop_value = self.query_buildbot_property(prop_key)
         if prop_value:
@@ -501,13 +504,17 @@ class DesktopSingleLocale(LocalesMixin, ReleaseMixin, MockMixin, BuildbotMixin,
         self.set_buildbot_property(prop_key, prop_value, write_to_file=True)
         BaseScript.add_failure(self, locale, message=message, **kwargs)
 
+    def query_failed_locales(self):
+        return [l for l, res in self.locales_property.items() if
+                res == FAILURE_STR]
+
     def summary(self):
         """generates a summary"""
         BaseScript.summary(self)
         # TODO we probably want to make this configurable on/off
         locales = self.query_locales()
         for locale in locales:
-            self.locales_property.setdefault(locale, "Success")
+            self.locales_property.setdefault(locale, SUCCESS_STR)
         self.set_buildbot_property("locales",
                                    json.dumps(self.locales_property),
                                    write_to_file=True)
@@ -1035,7 +1042,13 @@ class DesktopSingleLocale(LocalesMixin, ReleaseMixin, MockMixin, BuildbotMixin,
             tc.report_completed(task)
 
         if artifacts_task:
-            artifacts_tc.report_completed(artifacts_task)
+            if not self.query_failed_locales():
+                artifacts_tc.report_completed(artifacts_task)
+            else:
+                # If some locales fail, we want to mark the artifacts
+                # task failed, so a retry can reuse the same task ID
+                artifacts_tc.report_failed(artifacts_task)
+
 
 # main {{{
 if __name__ == '__main__':
diff --git a/testing/talos/talos/cmdline.py b/testing/talos/talos/cmdline.py
index b82cc01d657..cc936c59b66 100644
--- a/testing/talos/talos/cmdline.py
+++ b/testing/talos/talos/cmdline.py
@@ -86,7 +86,8 @@ def create_parser(mach_interface=False):
     add_arg('--spsProfileEntries', dest="sps_profile_entries", type=int,
             help="How many samples to take with the profiler")
     add_arg('--extension', dest='extensions', action='append',
-            default=['${talos}/talos-powers', '${talos}/pageloader'],
+            default=['${talos}/talos-powers/talos-powers-signed.xpi',
+                     '${talos}/pageloader/pageloader-signed.xpi'],
             help="Extension to install while running")
     add_arg('--fast', action='store_true',
             help="Run tp tests as tp_fast")
diff --git a/testing/talos/talos/config.py b/testing/talos/talos/config.py
index 63f518bce24..b7620ed2245 100644
--- a/testing/talos/talos/config.py
+++ b/testing/talos/talos/config.py
@@ -84,7 +84,6 @@ DEFAULTS = dict(
         'extensions.checkCompatibility': False,
         'extensions.enabledScopes': 5,
         'extensions.update.notifyUser': False,
-        'xpinstall.signatures.required': False,
         'hangmonitor.timeout': 0,
         'network.proxy.http': 'localhost',
         'network.proxy.http_port': 80,
diff --git a/testing/talos/talos/pageloader/install.rdf b/testing/talos/talos/pageloader/install.rdf
index a1e97deb2a4..7681517e781 100644
--- a/testing/talos/talos/pageloader/install.rdf
+++ b/testing/talos/talos/pageloader/install.rdf
@@ -4,12 +4,12 @@
      xmlns:em="http://www.mozilla.org/2004/em-rdf#">
   
     pageloader@mozilla.org
-    1.0
+    1.0.2
     
       
-        toolkit@mozilla.org
-       2.0b3pre
-       *
+        {ec8030f7-c20a-464f-9b0e-13a3a9e97384}
+        44.0
+        *
       
     
     
diff --git a/testing/talos/talos/pageloader/pageloader-signed.xpi b/testing/talos/talos/pageloader/pageloader-signed.xpi
new file mode 100644
index 00000000000..e2e6a8363f8
Binary files /dev/null and b/testing/talos/talos/pageloader/pageloader-signed.xpi differ
diff --git a/testing/talos/talos/startup_test/sessionrestore/addon/install.rdf b/testing/talos/talos/startup_test/sessionrestore/addon/install.rdf
index a79c7a1a16d..a45f5da73c7 100644
--- a/testing/talos/talos/startup_test/sessionrestore/addon/install.rdf
+++ b/testing/talos/talos/startup_test/sessionrestore/addon/install.rdf
@@ -9,7 +9,7 @@
     
         {ec8030f7-c20a-464f-9b0e-13a3a9e97384}
         1.5
-        99.0.*
+        *
     
 
 
diff --git a/testing/talos/talos/startup_test/sessionrestore/addon/sessionrestore-signed.xpi b/testing/talos/talos/startup_test/sessionrestore/addon/sessionrestore-signed.xpi
new file mode 100644
index 00000000000..3dcd0124a5b
Binary files /dev/null and b/testing/talos/talos/startup_test/sessionrestore/addon/sessionrestore-signed.xpi differ
diff --git a/testing/talos/talos/startup_test/tresize/addon/tresize-signed.xpi b/testing/talos/talos/startup_test/tresize/addon/tresize-signed.xpi
new file mode 100644
index 00000000000..47be492022a
Binary files /dev/null and b/testing/talos/talos/startup_test/tresize/addon/tresize-signed.xpi differ
diff --git a/testing/talos/talos/talos-powers/install.rdf b/testing/talos/talos/talos-powers/install.rdf
index cc8ea793f2e..d6041216370 100644
--- a/testing/talos/talos/talos-powers/install.rdf
+++ b/testing/talos/talos/talos-powers/install.rdf
@@ -4,12 +4,12 @@
      xmlns:em="http://www.mozilla.org/2004/em-rdf#">
   
     talos-powers@mozilla.org
-    1.0
+    1.0.3
     
       
-        toolkit@mozilla.org
-       2.0b3pre
-       *
+        {ec8030f7-c20a-464f-9b0e-13a3a9e97384}
+        44.0
+        *
       
     
     
diff --git a/testing/talos/talos/talos-powers/talos-powers-signed.xpi b/testing/talos/talos/talos-powers/talos-powers-signed.xpi
new file mode 100644
index 00000000000..85339bae53e
Binary files /dev/null and b/testing/talos/talos/talos-powers/talos-powers-signed.xpi differ
diff --git a/testing/talos/talos/test.py b/testing/talos/talos/test.py
index a97c6face55..77b3499c8a9 100644
--- a/testing/talos/talos/test.py
+++ b/testing/talos/talos/test.py
@@ -150,7 +150,8 @@ class sessionrestore(TsBase):
     2. Launch Firefox.
     3. Measure the delta between firstPaint and sessionRestored.
     """
-    extensions = '${talos}/startup_test/sessionrestore/addon'
+    extensions = \
+        '${talos}/startup_test/sessionrestore/addon/sessionrestore-signed.xpi'
     cycles = 10
     timeout = 1000000
     sps_profile_startup = True
@@ -200,7 +201,7 @@ class tresize(TsBase):
     """
     This test does some resize thing.
     """
-    extensions = '${talos}/startup_test/tresize/addon'
+    extensions = '${talos}/startup_test/tresize/addon/tresize-signed.xpi'
     cycles = 20
     url = 'startup_test/tresize/addon/content/tresize-test.html'
     timeout = 150
@@ -242,7 +243,7 @@ class tps(PageloaderTest):
     """
     Tests the amount of time it takes to switch between tabs
     """
-    extensions = '${talos}/tests/tabswitch'
+    extensions = '${talos}/tests/tabswitch/tabswitch-signed.xpi'
     tpmanifest = '${talos}/tests/tabswitch/tps.manifest'
     tppagecycles = 5
     sps_profile_entries = 1000000
@@ -284,7 +285,7 @@ class tart(PageloaderTest):
       - all: average interval over all recorded intervals.
     """
     tpmanifest = '${talos}/tests/tart/tart.manifest'
-    extensions = '${talos}/tests/tart/addon'
+    extensions = '${talos}/tests/tart/addon/tart-signed.xpi'
     tpcycles = 1
     tppagecycles = 25
     tploadnocache = True
@@ -321,7 +322,7 @@ class cart(PageloaderTest):
     3-customize-enter-css - only the CSS animation part of entering customize
     """
     tpmanifest = '${talos}/tests/tart/cart.manifest'
-    extensions = '${talos}/tests/tart/addon'
+    extensions = '${talos}/tests/tart/addon/tart-signed.xpi'
     tpcycles = 1
     tppagecycles = 25
     tploadnocache = True
@@ -347,7 +348,7 @@ class damp(PageloaderTest):
     for each tool, across a very simple and very complicated page.
     """
     tpmanifest = '${talos}/tests/devtools/damp.manifest'
-    extensions = '${talos}/tests/devtools/addon'
+    extensions = '${talos}/tests/devtools/addon/devtools-signed.xpi'
     tpcycles = 1
     tppagecycles = 25
     tploadnocache = True
diff --git a/testing/talos/talos/tests/devtools/addon/devtools-signed.xpi b/testing/talos/talos/tests/devtools/addon/devtools-signed.xpi
new file mode 100644
index 00000000000..2ef19d8cc7b
Binary files /dev/null and b/testing/talos/talos/tests/devtools/addon/devtools-signed.xpi differ
diff --git a/testing/talos/talos/tests/devtools/addon/install.rdf b/testing/talos/talos/tests/devtools/addon/install.rdf
index 7b48f140444..9e7070489df 100644
--- a/testing/talos/talos/tests/devtools/addon/install.rdf
+++ b/testing/talos/talos/tests/devtools/addon/install.rdf
@@ -9,7 +9,7 @@
     
         {ec8030f7-c20a-464f-9b0e-13a3a9e97384}
         1.5
-        99.0.*
+        *
     
 
 
diff --git a/testing/talos/talos/tests/tabswitch/install.rdf b/testing/talos/talos/tests/tabswitch/install.rdf
index 14240dad7b3..54dbfd7368c 100644
--- a/testing/talos/talos/tests/tabswitch/install.rdf
+++ b/testing/talos/talos/tests/tabswitch/install.rdf
@@ -15,7 +15,7 @@
       
         {ec8030f7-c20a-464f-9b0e-13a3a9e97384}
         38.0
-        99.0.*
+        *
       
     
   
diff --git a/testing/talos/talos/tests/tabswitch/tabswitch-signed.xpi b/testing/talos/talos/tests/tabswitch/tabswitch-signed.xpi
new file mode 100644
index 00000000000..23a4d2cd717
Binary files /dev/null and b/testing/talos/talos/tests/tabswitch/tabswitch-signed.xpi differ
diff --git a/testing/talos/talos/tests/tart/addon/install.rdf b/testing/talos/talos/tests/tart/addon/install.rdf
index 65964714c1a..8eab057a5e4 100644
--- a/testing/talos/talos/tests/tart/addon/install.rdf
+++ b/testing/talos/talos/tests/tart/addon/install.rdf
@@ -9,7 +9,7 @@
     
         {ec8030f7-c20a-464f-9b0e-13a3a9e97384}
         1.5
-        99.0.*
+        *
     
 
 
diff --git a/testing/talos/talos/tests/tart/addon/tart-signed.xpi b/testing/talos/talos/tests/tart/addon/tart-signed.xpi
new file mode 100644
index 00000000000..e87c417f2e5
Binary files /dev/null and b/testing/talos/talos/tests/tart/addon/tart-signed.xpi differ
diff --git a/testing/taskcluster/mach_commands.py b/testing/taskcluster/mach_commands.py
index 7033a1327af..c45ecf60c21 100644
--- a/testing/taskcluster/mach_commands.py
+++ b/testing/taskcluster/mach_commands.py
@@ -337,7 +337,7 @@ class Graph(object):
                              len(vcs_info.changesets))
             for c in vcs_info.changesets:
                 sys.stderr.write('%s %s\n' % (
-                    c['node'][0:12], c['desc'].splitlines()[0]))
+                    c['node'][0:12], c['desc'].splitlines()[0].encode('ascii', 'ignore')))
 
                 changed_files |= set(c['files'])
 
diff --git a/testing/taskcluster/tasks/branches/base_job_flags.yml b/testing/taskcluster/tasks/branches/base_job_flags.yml
index 671dac5a79f..c47d2cb9fe1 100644
--- a/testing/taskcluster/tasks/branches/base_job_flags.yml
+++ b/testing/taskcluster/tasks/branches/base_job_flags.yml
@@ -56,8 +56,6 @@ flags:
     mochitest-dt-e10s: /mochitest-devtools-chrome-e10s.*/
     mochitest-gl: /mochitest-webgl.*/
     mochitest-push: /mochitest-push.*/
-    mochitest-media: /mochitest-media.*/
-    mochitest-media-e10s: /mochitest-media-e10s.*/
     mochitest-vg: /mochitest-valgrind.*/
     reftest: /(plain-)?reftest.*/
     reftest-no-accel: /(plain-)?reftest-no-accel.*/
@@ -143,7 +141,6 @@ flags:
     - mochitest-e10s
     - mochitest-jetpack
     - mochitest-media
-    - mochitest-media-e10s
     - mochitest-oop
     - mochitest-push
     - mochitest-webgl
diff --git a/testing/taskcluster/tasks/branches/base_jobs.yml b/testing/taskcluster/tasks/branches/base_jobs.yml
index bf84bdbf862..b131649daa6 100644
--- a/testing/taskcluster/tasks/branches/base_jobs.yml
+++ b/testing/taskcluster/tasks/branches/base_jobs.yml
@@ -290,14 +290,6 @@ tests:
     allowed_build_tasks:
       tasks/builds/dbg_linux64.yml:
         task: tasks/tests/fx_linux64_mochitest_push.yml
-  mochitest-media:
-    allowed_build_tasks:
-      tasks/builds/dbg_linux64.yml:
-        task: tasks/tests/fx_linux64_mochitest_media.yml
-  mochitest-media-e10s:
-    allowed_build_tasks:
-      tasks/builds/dbg_linux64.yml:
-        task: tasks/tests/fx_linux64_mochitest_media_e10s.yml
   mochitest-webgl:
     allowed_build_tasks:
       tasks/builds/dbg_linux64.yml:
diff --git a/testing/taskcluster/tasks/branches/try/job_flags.yml b/testing/taskcluster/tasks/branches/try/job_flags.yml
index 13968328838..1ded971b5ab 100644
--- a/testing/taskcluster/tasks/branches/try/job_flags.yml
+++ b/testing/taskcluster/tasks/branches/try/job_flags.yml
@@ -232,14 +232,6 @@ tests:
     allowed_build_tasks:
       tasks/builds/dbg_linux64_clobber.yml:
         task: tasks/tests/fx_linux64_mochitest_push.yml
-  mochitest-media:
-    allowed_build_tasks:
-      tasks/builds/dbg_linux64_clobber.yml:
-        task: tasks/tests/fx_linux64_mochitest_media.yml
-  mochitest-media-e10s:
-    allowed_build_tasks:
-      tasks/builds/dbg_linux64_clobber.yml:
-        task: tasks/tests/fx_linux64_mochitest_media_e10s.yml
   mochitest-webgl:
     allowed_build_tasks:
       tasks/builds/dbg_linux64_clobber.yml:
diff --git a/testing/taskcluster/tasks/tests/fx_linux64_mochitest_media.yml b/testing/taskcluster/tasks/tests/fx_linux64_mochitest_media.yml
deleted file mode 100644
index 86d5d9f3a75..00000000000
--- a/testing/taskcluster/tasks/tests/fx_linux64_mochitest_media.yml
+++ /dev/null
@@ -1,22 +0,0 @@
-$inherits:
-  from: 'tasks/tests/fx_desktop_unittest.yml'
-task:
-  scopes:
-    - 'docker-worker:capability:device:loopbackVideo'
-    - 'docker-worker:capability:device:loopbackAudio'
-  metadata:
-    name: '[TC] Linux64 mochitest-media'
-    description: Mochitest media run
-  payload:
-    capabilities:
-      devices:
-        loopbackVideo: true
-        loopbackAudio: true
-  extra:
-    suite:
-      name: mochitest
-      flavor: mochitest-media
-    treeherder:
-      groupName: Desktop mochitests
-      groupSymbol: tc-M
-      symbol: mda
diff --git a/testing/taskcluster/tasks/tests/fx_linux64_mochitest_media_e10s.yml b/testing/taskcluster/tasks/tests/fx_linux64_mochitest_media_e10s.yml
deleted file mode 100644
index 87516593e94..00000000000
--- a/testing/taskcluster/tasks/tests/fx_linux64_mochitest_media_e10s.yml
+++ /dev/null
@@ -1,22 +0,0 @@
-$inherits:
-  from: 'tasks/tests/fx_desktop_unittest.yml'
-task:
-  scopes:
-    - 'docker-worker:capability:device:loopbackVideo'
-    - 'docker-worker:capability:device:loopbackAudio'
-  metadata:
-    name: '[TC] Linux64 mochitest-media-e10s'
-    description: Mochitest media e10s run
-  payload:
-    capabilities:
-      devices:
-        loopbackVideo: true
-        loopbackAudio: true
-  extra:
-    suite:
-      name: mochitest
-      flavor: mochitest-media-e10s
-    treeherder:
-      groupName: Desktop mochitests
-      groupSymbol: tc-M-e10s
-      symbol: mda
diff --git a/testing/web-platform/README.md b/testing/web-platform/README.md
index dc387b8921e..ec22f1f3c26 100644
--- a/testing/web-platform/README.md
+++ b/testing/web-platform/README.md
@@ -166,7 +166,6 @@ comma-seperate list of `pref.name:value` items to set e.g.
 
     [filename.html]
         prefs: [dom.serviceWorkers.enabled:true,
-                dom.serviceWorkers.interception.enabled:true,
                 dom.serviceWorkers.exemptFromPerDomainMax:true,
                 dom.caches.enabled:true]
 
diff --git a/testing/web-platform/meta/IndexedDB/idbindex_openCursor2.htm.ini b/testing/web-platform/meta/IndexedDB/idbindex_openCursor2.htm.ini
deleted file mode 100644
index 933008d08ce..00000000000
--- a/testing/web-platform/meta/IndexedDB/idbindex_openCursor2.htm.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[idbindex_openCursor2.htm]
-  type: testharness
-  [IDBIndex.openCursor() - throw TransactionInactiveError on aborted transaction]
-    expected: FAIL
-
diff --git a/testing/web-platform/meta/IndexedDB/idbindex_openKeyCursor3.htm.ini b/testing/web-platform/meta/IndexedDB/idbindex_openKeyCursor3.htm.ini
deleted file mode 100644
index 6578b3c0bc9..00000000000
--- a/testing/web-platform/meta/IndexedDB/idbindex_openKeyCursor3.htm.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[idbindex_openKeyCursor3.htm]
-  type: testharness
-  [IDBIndex.openKeyCursor() - throw TransactionInactiveError on aborted transaction]
-    expected: FAIL
-
diff --git a/testing/web-platform/meta/MANIFEST.json b/testing/web-platform/meta/MANIFEST.json
index 8406ee77599..4efea319c56 100644
--- a/testing/web-platform/meta/MANIFEST.json
+++ b/testing/web-platform/meta/MANIFEST.json
@@ -3229,6 +3229,10 @@
         "path": "uievents/order-of-events/mouse-events/click-on-body-manual.html",
         "url": "/uievents/order-of-events/mouse-events/click-on-body-manual.html"
       },
+      {
+        "path": "uievents/order-of-events/mouse-events/click-on-div-manual.html",
+        "url": "/uievents/order-of-events/mouse-events/click-on-div-manual.html"
+      },
       {
         "path": "uievents/order-of-events/mouse-events/click-on-html-manual.html",
         "url": "/uievents/order-of-events/mouse-events/click-on-html-manual.html"
@@ -11647,6 +11651,10 @@
         "path": "IndexedDB/idbindex_get7.htm",
         "url": "/IndexedDB/idbindex_get7.htm"
       },
+      {
+        "path": "IndexedDB/idbindex_get8.htm",
+        "url": "/IndexedDB/idbindex_get8.htm"
+      },
       {
         "path": "IndexedDB/idbindex_getAll.html",
         "url": "/IndexedDB/idbindex_getAll.html"
@@ -11683,6 +11691,10 @@
         "path": "IndexedDB/idbindex_getKey7.htm",
         "url": "/IndexedDB/idbindex_getKey7.htm"
       },
+      {
+        "path": "IndexedDB/idbindex_getKey8.htm",
+        "url": "/IndexedDB/idbindex_getKey8.htm"
+      },
       {
         "path": "IndexedDB/idbindex_indexNames.htm",
         "url": "/IndexedDB/idbindex_indexNames.htm"
@@ -11695,6 +11707,10 @@
         "path": "IndexedDB/idbindex_openCursor2.htm",
         "url": "/IndexedDB/idbindex_openCursor2.htm"
       },
+      {
+        "path": "IndexedDB/idbindex_openCursor3.htm",
+        "url": "/IndexedDB/idbindex_openCursor3.htm"
+      },
       {
         "path": "IndexedDB/idbindex_openKeyCursor.htm",
         "url": "/IndexedDB/idbindex_openKeyCursor.htm"
@@ -11707,6 +11723,10 @@
         "path": "IndexedDB/idbindex_openKeyCursor3.htm",
         "url": "/IndexedDB/idbindex_openKeyCursor3.htm"
       },
+      {
+        "path": "IndexedDB/idbindex_openKeyCursor4.htm",
+        "url": "/IndexedDB/idbindex_openKeyCursor4.htm"
+      },
       {
         "path": "IndexedDB/idbkeyrange.htm",
         "url": "/IndexedDB/idbkeyrange.htm"
@@ -12139,6 +12159,10 @@
         "path": "WebIDL/ecmascript-binding/es-exceptions/exceptions.html",
         "url": "/WebIDL/ecmascript-binding/es-exceptions/exceptions.html"
       },
+      {
+        "path": "WebIDL/ecmascript-binding/has-instance.html",
+        "url": "/WebIDL/ecmascript-binding/has-instance.html"
+      },
       {
         "path": "XMLHttpRequest/FormData-append.html",
         "url": "/XMLHttpRequest/FormData-append.html"
@@ -12239,6 +12263,10 @@
         "path": "XMLHttpRequest/event-progress.htm",
         "url": "/XMLHttpRequest/event-progress.htm"
       },
+      {
+        "path": "XMLHttpRequest/event-readystate-sync-open.htm",
+        "url": "/XMLHttpRequest/event-readystate-sync-open.htm"
+      },
       {
         "path": "XMLHttpRequest/event-readystatechange-loaded.htm",
         "url": "/XMLHttpRequest/event-readystatechange-loaded.htm"
@@ -12523,6 +12551,10 @@
         "path": "XMLHttpRequest/responsexml-document-properties.htm",
         "url": "/XMLHttpRequest/responsexml-document-properties.htm"
       },
+      {
+        "path": "XMLHttpRequest/responsexml-get-twice.htm",
+        "url": "/XMLHttpRequest/responsexml-get-twice.htm"
+      },
       {
         "path": "XMLHttpRequest/responsexml-media-type.htm",
         "url": "/XMLHttpRequest/responsexml-media-type.htm"
@@ -14391,6 +14423,10 @@
         "path": "dom/nodes/Node-insertBefore.html",
         "url": "/dom/nodes/Node-insertBefore.html"
       },
+      {
+        "path": "dom/nodes/Node-isEqualNode.html",
+        "url": "/dom/nodes/Node-isEqualNode.html"
+      },
       {
         "path": "dom/nodes/Node-isEqualNode.xhtml",
         "url": "/dom/nodes/Node-isEqualNode.xhtml"
@@ -17079,6 +17115,10 @@
         "path": "html/editing/focus/document-level-focus-apis/document-level-apis.html",
         "url": "/html/editing/focus/document-level-focus-apis/document-level-apis.html"
       },
+      {
+        "path": "html/editing/focus/focus-management/focus-event-targets-simple.html",
+        "url": "/html/editing/focus/focus-management/focus-event-targets-simple.html"
+      },
       {
         "path": "html/editing/focus/focus-management/focus-events.html",
         "url": "/html/editing/focus/focus-management/focus-events.html"
@@ -17263,6 +17303,10 @@
         "path": "html/semantics/edits/the-ins-element/ins_effect.html",
         "url": "/html/semantics/edits/the-ins-element/ins_effect.html"
       },
+      {
+        "path": "html/semantics/embedded-content-0/media-elements/video_008.htm",
+        "url": "/html/semantics/embedded-content-0/media-elements/video_008.htm"
+      },
       {
         "path": "html/semantics/embedded-content/media-elements/audio_volume_check.html",
         "url": "/html/semantics/embedded-content/media-elements/audio_volume_check.html"
@@ -18507,6 +18551,10 @@
         "path": "html/semantics/embedded-content/the-img-element/srcset/select-an-image-source.html",
         "url": "/html/semantics/embedded-content/the-img-element/srcset/select-an-image-source.html"
       },
+      {
+        "path": "html/semantics/embedded-content/the-img-element/update-media.html",
+        "url": "/html/semantics/embedded-content/the-img-element/update-media.html"
+      },
       {
         "path": "html/semantics/embedded-content/the-img-element/update-the-image-data/fail-to-resolve.html",
         "url": "/html/semantics/embedded-content/the-img-element/update-the-image-data/fail-to-resolve.html"
@@ -19539,6 +19587,14 @@
         "path": "html/webappapis/scripting/events/event-handler-spec-example.html",
         "url": "/html/webappapis/scripting/events/event-handler-spec-example.html"
       },
+      {
+        "path": "html/webappapis/scripting/events/inline-event-handler-ordering.html",
+        "url": "/html/webappapis/scripting/events/inline-event-handler-ordering.html"
+      },
+      {
+        "path": "html/webappapis/scripting/events/invalid-uncompiled-raw-handler-compiled-once.html",
+        "url": "/html/webappapis/scripting/events/invalid-uncompiled-raw-handler-compiled-once.html"
+      },
       {
         "path": "html/webappapis/scripting/events/onerroreventhandler.html",
         "url": "/html/webappapis/scripting/events/onerroreventhandler.html"
@@ -21991,6 +22047,14 @@
         "path": "pointerlock/idlharness.html",
         "url": "/pointerlock/idlharness.html"
       },
+      {
+        "path": "presentation-api/controlling-ua/idlharness.html",
+        "url": "/presentation-api/controlling-ua/idlharness.html"
+      },
+      {
+        "path": "presentation-api/receiving-ua/idlharness.html",
+        "url": "/presentation-api/receiving-ua/idlharness.html"
+      },
       {
         "path": "progress-events/constructor.html",
         "url": "/progress-events/constructor.html"
@@ -22051,6 +22115,10 @@
         "path": "referrer-policy/generic/subresource-test/area-navigate.html",
         "url": "/referrer-policy/generic/subresource-test/area-navigate.html"
       },
+      {
+        "path": "referrer-policy/generic/subresource-test/attr-referrer-invalid-value.html",
+        "url": "/referrer-policy/generic/subresource-test/attr-referrer-invalid-value.html"
+      },
       {
         "path": "referrer-policy/generic/subresource-test/fetch-messaging.html",
         "url": "/referrer-policy/generic/subresource-test/fetch-messaging.html"
@@ -22079,6 +22147,102 @@
         "path": "referrer-policy/generic/subresource-test/xhr-messaging.html",
         "url": "/referrer-policy/generic/subresource-test/xhr-messaging.html"
       },
+      {
+        "path": "referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html",
+        "url": "/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html",
+        "url": "/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html",
+        "url": "/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html",
+        "url": "/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html",
+        "url": "/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html",
+        "url": "/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html",
+        "url": "/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html",
+        "url": "/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html",
+        "url": "/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html",
+        "url": "/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html",
+        "url": "/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html",
+        "url": "/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html",
+        "url": "/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html",
+        "url": "/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html",
+        "url": "/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html",
+        "url": "/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html",
+        "url": "/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html",
+        "url": "/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html",
+        "url": "/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html",
+        "url": "/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html",
+        "url": "/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html",
+        "url": "/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html",
+        "url": "/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html",
+        "url": "/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html"
+      },
       {
         "path": "referrer-policy/no-referrer-when-downgrade/http-csp/cross-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html",
         "url": "/referrer-policy/no-referrer-when-downgrade/http-csp/cross-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html"
@@ -22799,6 +22963,102 @@
         "path": "referrer-policy/no-referrer-when-downgrade/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html",
         "url": "/referrer-policy/no-referrer-when-downgrade/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html"
       },
+      {
+        "path": "referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html",
+        "url": "/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/iframe-tag/generic.no-redirect.http.html",
+        "url": "/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/iframe-tag/generic.no-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html",
+        "url": "/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html",
+        "url": "/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/img-tag/generic.no-redirect.http.html",
+        "url": "/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/img-tag/generic.no-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html",
+        "url": "/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html",
+        "url": "/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/iframe-tag/generic.no-redirect.http.html",
+        "url": "/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/iframe-tag/generic.no-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html",
+        "url": "/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html",
+        "url": "/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/img-tag/generic.no-redirect.http.html",
+        "url": "/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/img-tag/generic.no-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html",
+        "url": "/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/no-referrer/attr-referrer/same-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html",
+        "url": "/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/no-referrer/attr-referrer/same-origin/http-http/iframe-tag/generic.no-redirect.http.html",
+        "url": "/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/iframe-tag/generic.no-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/no-referrer/attr-referrer/same-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html",
+        "url": "/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/no-referrer/attr-referrer/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html",
+        "url": "/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/no-referrer/attr-referrer/same-origin/http-http/img-tag/generic.no-redirect.http.html",
+        "url": "/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/img-tag/generic.no-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/no-referrer/attr-referrer/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html",
+        "url": "/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/no-referrer/attr-referrer/same-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html",
+        "url": "/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/no-referrer/attr-referrer/same-origin/http-https/iframe-tag/generic.no-redirect.http.html",
+        "url": "/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/iframe-tag/generic.no-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/no-referrer/attr-referrer/same-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html",
+        "url": "/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/no-referrer/attr-referrer/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html",
+        "url": "/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/no-referrer/attr-referrer/same-origin/http-https/img-tag/generic.no-redirect.http.html",
+        "url": "/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/img-tag/generic.no-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/no-referrer/attr-referrer/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html",
+        "url": "/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html"
+      },
       {
         "path": "referrer-policy/no-referrer/http-csp/cross-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html",
         "url": "/referrer-policy/no-referrer/http-csp/cross-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html"
@@ -23519,6 +23779,102 @@
         "path": "referrer-policy/no-referrer/meta-referrer/same-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html",
         "url": "/referrer-policy/no-referrer/meta-referrer/same-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html"
       },
+      {
+        "path": "referrer-policy/origin-only/attr-referrer/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html",
+        "url": "/referrer-policy/origin-only/attr-referrer/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/origin-only/attr-referrer/cross-origin/http-http/iframe-tag/generic.no-redirect.http.html",
+        "url": "/referrer-policy/origin-only/attr-referrer/cross-origin/http-http/iframe-tag/generic.no-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/origin-only/attr-referrer/cross-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html",
+        "url": "/referrer-policy/origin-only/attr-referrer/cross-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/origin-only/attr-referrer/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html",
+        "url": "/referrer-policy/origin-only/attr-referrer/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/origin-only/attr-referrer/cross-origin/http-http/img-tag/generic.no-redirect.http.html",
+        "url": "/referrer-policy/origin-only/attr-referrer/cross-origin/http-http/img-tag/generic.no-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/origin-only/attr-referrer/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html",
+        "url": "/referrer-policy/origin-only/attr-referrer/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/origin-only/attr-referrer/cross-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html",
+        "url": "/referrer-policy/origin-only/attr-referrer/cross-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/origin-only/attr-referrer/cross-origin/http-https/iframe-tag/generic.no-redirect.http.html",
+        "url": "/referrer-policy/origin-only/attr-referrer/cross-origin/http-https/iframe-tag/generic.no-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/origin-only/attr-referrer/cross-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html",
+        "url": "/referrer-policy/origin-only/attr-referrer/cross-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/origin-only/attr-referrer/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html",
+        "url": "/referrer-policy/origin-only/attr-referrer/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/origin-only/attr-referrer/cross-origin/http-https/img-tag/generic.no-redirect.http.html",
+        "url": "/referrer-policy/origin-only/attr-referrer/cross-origin/http-https/img-tag/generic.no-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/origin-only/attr-referrer/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html",
+        "url": "/referrer-policy/origin-only/attr-referrer/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/origin-only/attr-referrer/same-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html",
+        "url": "/referrer-policy/origin-only/attr-referrer/same-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/origin-only/attr-referrer/same-origin/http-http/iframe-tag/generic.no-redirect.http.html",
+        "url": "/referrer-policy/origin-only/attr-referrer/same-origin/http-http/iframe-tag/generic.no-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/origin-only/attr-referrer/same-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html",
+        "url": "/referrer-policy/origin-only/attr-referrer/same-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/origin-only/attr-referrer/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html",
+        "url": "/referrer-policy/origin-only/attr-referrer/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/origin-only/attr-referrer/same-origin/http-http/img-tag/generic.no-redirect.http.html",
+        "url": "/referrer-policy/origin-only/attr-referrer/same-origin/http-http/img-tag/generic.no-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/origin-only/attr-referrer/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html",
+        "url": "/referrer-policy/origin-only/attr-referrer/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/origin-only/attr-referrer/same-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html",
+        "url": "/referrer-policy/origin-only/attr-referrer/same-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/origin-only/attr-referrer/same-origin/http-https/iframe-tag/generic.no-redirect.http.html",
+        "url": "/referrer-policy/origin-only/attr-referrer/same-origin/http-https/iframe-tag/generic.no-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/origin-only/attr-referrer/same-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html",
+        "url": "/referrer-policy/origin-only/attr-referrer/same-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/origin-only/attr-referrer/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html",
+        "url": "/referrer-policy/origin-only/attr-referrer/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/origin-only/attr-referrer/same-origin/http-https/img-tag/generic.no-redirect.http.html",
+        "url": "/referrer-policy/origin-only/attr-referrer/same-origin/http-https/img-tag/generic.no-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/origin-only/attr-referrer/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html",
+        "url": "/referrer-policy/origin-only/attr-referrer/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html"
+      },
       {
         "path": "referrer-policy/origin-only/http-csp/cross-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html",
         "url": "/referrer-policy/origin-only/http-csp/cross-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html"
@@ -24239,6 +24595,134 @@
         "path": "referrer-policy/origin-only/meta-referrer/same-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html",
         "url": "/referrer-policy/origin-only/meta-referrer/same-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html"
       },
+      {
+        "path": "referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-origin.keep-origin-redirect.http.html",
+        "url": "/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-origin.keep-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-origin.no-redirect.http.html",
+        "url": "/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-origin.no-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-origin.swap-origin-redirect.http.html",
+        "url": "/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-origin.swap-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-origin.keep-origin-redirect.http.html",
+        "url": "/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-origin.keep-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-origin.no-redirect.http.html",
+        "url": "/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-origin.no-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-origin.swap-origin-redirect.http.html",
+        "url": "/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-origin.swap-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/cross-origin.keep-origin-redirect.http.html",
+        "url": "/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/cross-origin.keep-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/cross-origin.no-redirect.http.html",
+        "url": "/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/cross-origin.no-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/cross-origin.swap-origin-redirect.http.html",
+        "url": "/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/cross-origin.swap-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/cross-origin.keep-origin-redirect.http.html",
+        "url": "/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/cross-origin.keep-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/cross-origin.no-redirect.http.html",
+        "url": "/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/cross-origin.no-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/cross-origin.swap-origin-redirect.http.html",
+        "url": "/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/cross-origin.swap-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-http/iframe-tag/same-origin-insecure.keep-origin-redirect.http.html",
+        "url": "/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-http/iframe-tag/same-origin-insecure.keep-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-http/iframe-tag/same-origin-insecure.no-redirect.http.html",
+        "url": "/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-http/iframe-tag/same-origin-insecure.no-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-http/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html",
+        "url": "/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-http/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-origin-insecure.keep-origin-redirect.http.html",
+        "url": "/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-origin-insecure.keep-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-origin-insecure.no-redirect.http.html",
+        "url": "/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-origin-insecure.no-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-origin-insecure.swap-origin-redirect.http.html",
+        "url": "/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-origin-insecure.swap-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/same-origin-downgrade.keep-origin-redirect.http.html",
+        "url": "/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/same-origin-downgrade.keep-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/same-origin-downgrade.no-redirect.http.html",
+        "url": "/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/same-origin-downgrade.no-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/same-origin-downgrade.swap-origin-redirect.http.html",
+        "url": "/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/same-origin-downgrade.swap-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html",
+        "url": "/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/same-origin-upgrade.keep-origin-redirect.http.html",
+        "url": "/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/same-origin-upgrade.keep-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/same-origin-upgrade.no-redirect.http.html",
+        "url": "/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/same-origin-upgrade.no-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/same-origin-upgrade.swap-origin-redirect.http.html",
+        "url": "/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/same-origin-upgrade.swap-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-downgrade.keep-origin-redirect.http.html",
+        "url": "/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-downgrade.keep-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-downgrade.no-redirect.http.html",
+        "url": "/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-downgrade.no-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-downgrade.swap-origin-redirect.http.html",
+        "url": "/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-downgrade.swap-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-insecure.swap-origin-redirect.http.html",
+        "url": "/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-insecure.swap-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-upgrade.keep-origin-redirect.http.html",
+        "url": "/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-upgrade.keep-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-upgrade.no-redirect.http.html",
+        "url": "/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-upgrade.no-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-upgrade.swap-origin-redirect.http.html",
+        "url": "/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-upgrade.swap-origin-redirect.http.html"
+      },
       {
         "path": "referrer-policy/origin-when-cross-origin/http-csp/cross-origin/http-http/fetch-request/cross-origin.keep-origin-redirect.http.html",
         "url": "/referrer-policy/origin-when-cross-origin/http-csp/cross-origin/http-http/fetch-request/cross-origin.keep-origin-redirect.http.html"
@@ -25199,6 +25683,102 @@
         "path": "referrer-policy/origin-when-cross-origin/meta-referrer/same-origin/http-https/xhr-request/same-origin-upgrade.swap-origin-redirect.http.html",
         "url": "/referrer-policy/origin-when-cross-origin/meta-referrer/same-origin/http-https/xhr-request/same-origin-upgrade.swap-origin-redirect.http.html"
       },
+      {
+        "path": "referrer-policy/unsafe-url/attr-referrer/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html",
+        "url": "/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/unsafe-url/attr-referrer/cross-origin/http-http/iframe-tag/generic.no-redirect.http.html",
+        "url": "/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-http/iframe-tag/generic.no-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/unsafe-url/attr-referrer/cross-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html",
+        "url": "/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/unsafe-url/attr-referrer/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html",
+        "url": "/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/unsafe-url/attr-referrer/cross-origin/http-http/img-tag/generic.no-redirect.http.html",
+        "url": "/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-http/img-tag/generic.no-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/unsafe-url/attr-referrer/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html",
+        "url": "/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/unsafe-url/attr-referrer/cross-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html",
+        "url": "/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/unsafe-url/attr-referrer/cross-origin/http-https/iframe-tag/generic.no-redirect.http.html",
+        "url": "/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-https/iframe-tag/generic.no-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/unsafe-url/attr-referrer/cross-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html",
+        "url": "/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/unsafe-url/attr-referrer/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html",
+        "url": "/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/unsafe-url/attr-referrer/cross-origin/http-https/img-tag/generic.no-redirect.http.html",
+        "url": "/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-https/img-tag/generic.no-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/unsafe-url/attr-referrer/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html",
+        "url": "/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/unsafe-url/attr-referrer/same-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html",
+        "url": "/referrer-policy/unsafe-url/attr-referrer/same-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/unsafe-url/attr-referrer/same-origin/http-http/iframe-tag/generic.no-redirect.http.html",
+        "url": "/referrer-policy/unsafe-url/attr-referrer/same-origin/http-http/iframe-tag/generic.no-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/unsafe-url/attr-referrer/same-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html",
+        "url": "/referrer-policy/unsafe-url/attr-referrer/same-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/unsafe-url/attr-referrer/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html",
+        "url": "/referrer-policy/unsafe-url/attr-referrer/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/unsafe-url/attr-referrer/same-origin/http-http/img-tag/generic.no-redirect.http.html",
+        "url": "/referrer-policy/unsafe-url/attr-referrer/same-origin/http-http/img-tag/generic.no-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/unsafe-url/attr-referrer/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html",
+        "url": "/referrer-policy/unsafe-url/attr-referrer/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/unsafe-url/attr-referrer/same-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html",
+        "url": "/referrer-policy/unsafe-url/attr-referrer/same-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/unsafe-url/attr-referrer/same-origin/http-https/iframe-tag/generic.no-redirect.http.html",
+        "url": "/referrer-policy/unsafe-url/attr-referrer/same-origin/http-https/iframe-tag/generic.no-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/unsafe-url/attr-referrer/same-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html",
+        "url": "/referrer-policy/unsafe-url/attr-referrer/same-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/unsafe-url/attr-referrer/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html",
+        "url": "/referrer-policy/unsafe-url/attr-referrer/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/unsafe-url/attr-referrer/same-origin/http-https/img-tag/generic.no-redirect.http.html",
+        "url": "/referrer-policy/unsafe-url/attr-referrer/same-origin/http-https/img-tag/generic.no-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/unsafe-url/attr-referrer/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html",
+        "url": "/referrer-policy/unsafe-url/attr-referrer/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html"
+      },
       {
         "path": "referrer-policy/unsafe-url/http-csp/cross-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html",
         "url": "/referrer-policy/unsafe-url/http-csp/cross-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html"
@@ -25919,6 +26499,102 @@
         "path": "referrer-policy/unsafe-url/meta-referrer/same-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html",
         "url": "/referrer-policy/unsafe-url/meta-referrer/same-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html"
       },
+      {
+        "path": "referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html",
+        "url": "/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/iframe-tag/generic.no-redirect.http.html",
+        "url": "/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/iframe-tag/generic.no-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html",
+        "url": "/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html",
+        "url": "/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/img-tag/generic.no-redirect.http.html",
+        "url": "/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/img-tag/generic.no-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html",
+        "url": "/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html",
+        "url": "/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/iframe-tag/generic.no-redirect.http.html",
+        "url": "/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/iframe-tag/generic.no-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html",
+        "url": "/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html",
+        "url": "/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/img-tag/generic.no-redirect.http.html",
+        "url": "/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/img-tag/generic.no-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html",
+        "url": "/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html",
+        "url": "/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/iframe-tag/generic.no-redirect.http.html",
+        "url": "/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/iframe-tag/generic.no-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html",
+        "url": "/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html",
+        "url": "/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/img-tag/generic.no-redirect.http.html",
+        "url": "/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/img-tag/generic.no-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html",
+        "url": "/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html",
+        "url": "/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/iframe-tag/generic.no-redirect.http.html",
+        "url": "/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/iframe-tag/generic.no-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html",
+        "url": "/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html",
+        "url": "/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/img-tag/generic.no-redirect.http.html",
+        "url": "/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/img-tag/generic.no-redirect.http.html"
+      },
+      {
+        "path": "referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html",
+        "url": "/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html"
+      },
       {
         "path": "referrer-policy/unset-referrer-policy/http-csp/cross-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html",
         "url": "/referrer-policy/unset-referrer-policy/http-csp/cross-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html"
@@ -26904,40 +27580,40 @@
         "url": "/shadow-dom/untriaged/events/event-retargeting/test-004.html"
       },
       {
-        "path": "shadow-dom/untriaged/events/events-that-are-always-stopped/test-001.html",
-        "url": "/shadow-dom/untriaged/events/events-that-are-always-stopped/test-001.html"
+        "path": "shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-001.html",
+        "url": "/shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-001.html"
       },
       {
-        "path": "shadow-dom/untriaged/events/events-that-are-always-stopped/test-002.html",
-        "url": "/shadow-dom/untriaged/events/events-that-are-always-stopped/test-002.html"
+        "path": "shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-002.html",
+        "url": "/shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-002.html"
       },
       {
-        "path": "shadow-dom/untriaged/events/events-that-are-always-stopped/test-003.html",
-        "url": "/shadow-dom/untriaged/events/events-that-are-always-stopped/test-003.html"
+        "path": "shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-003.html",
+        "url": "/shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-003.html"
       },
       {
-        "path": "shadow-dom/untriaged/events/events-that-are-always-stopped/test-004.html",
-        "url": "/shadow-dom/untriaged/events/events-that-are-always-stopped/test-004.html"
+        "path": "shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-004.html",
+        "url": "/shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-004.html"
       },
       {
-        "path": "shadow-dom/untriaged/events/events-that-are-always-stopped/test-005.html",
-        "url": "/shadow-dom/untriaged/events/events-that-are-always-stopped/test-005.html"
+        "path": "shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-005.html",
+        "url": "/shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-005.html"
       },
       {
-        "path": "shadow-dom/untriaged/events/events-that-are-always-stopped/test-006.html",
-        "url": "/shadow-dom/untriaged/events/events-that-are-always-stopped/test-006.html"
+        "path": "shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-006.html",
+        "url": "/shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-006.html"
       },
       {
-        "path": "shadow-dom/untriaged/events/events-that-are-always-stopped/test-007.html",
-        "url": "/shadow-dom/untriaged/events/events-that-are-always-stopped/test-007.html"
+        "path": "shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-007.html",
+        "url": "/shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-007.html"
       },
       {
-        "path": "shadow-dom/untriaged/events/events-that-are-always-stopped/test-008.html",
-        "url": "/shadow-dom/untriaged/events/events-that-are-always-stopped/test-008.html"
+        "path": "shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-008.html",
+        "url": "/shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-008.html"
       },
       {
-        "path": "shadow-dom/untriaged/events/events-that-are-always-stopped/test-009.html",
-        "url": "/shadow-dom/untriaged/events/events-that-are-always-stopped/test-009.html"
+        "path": "shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-009.html",
+        "url": "/shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-009.html"
       },
       {
         "path": "shadow-dom/untriaged/events/retargeting-focus-events/test-001.html",
@@ -30927,6 +31603,10 @@
         "path": "websockets/Send-data.htm",
         "url": "/websockets/Send-data.htm"
       },
+      {
+        "path": "websockets/Send-data.worker.js",
+        "url": "/websockets/Send-data.worker"
+      },
       {
         "path": "websockets/Send-null.htm",
         "url": "/websockets/Send-null.htm"
@@ -32549,6 +33229,26 @@
         "timeout": "long",
         "url": "/html/browsers/browsing-the-web/scroll-to-fragid/007.html"
       },
+      {
+        "path": "html/browsers/browsing-the-web/scroll-to-fragid/scroll-frag-percent-encoded.html",
+        "timeout": "long",
+        "url": "/html/browsers/browsing-the-web/scroll-to-fragid/scroll-frag-percent-encoded.html"
+      },
+      {
+        "path": "html/browsers/browsing-the-web/scroll-to-fragid/scroll-to-anchor-name.html",
+        "timeout": "long",
+        "url": "/html/browsers/browsing-the-web/scroll-to-fragid/scroll-to-anchor-name.html"
+      },
+      {
+        "path": "html/browsers/browsing-the-web/scroll-to-fragid/scroll-to-id-top.html",
+        "timeout": "long",
+        "url": "/html/browsers/browsing-the-web/scroll-to-fragid/scroll-to-id-top.html"
+      },
+      {
+        "path": "html/browsers/browsing-the-web/scroll-to-fragid/scroll-to-top.html",
+        "timeout": "long",
+        "url": "/html/browsers/browsing-the-web/scroll-to-fragid/scroll-to-top.html"
+      },
       {
         "path": "html/browsers/history/the-history-interface/007.html",
         "timeout": "long",
@@ -33792,13 +34492,13 @@
           {
             "path": "html/semantics/embedded-content/the-img-element/update-media.html",
             "url": "/html/semantics/embedded-content/the-img-element/update-media.html"
-	  }
-	],
+          }
+        ],
         "IndexedDB/idbkeyrange-includes.htm": [
           {
             "path": "IndexedDB/idbkeyrange-includes.htm",
             "url": "/IndexedDB/idbkeyrange-includes.htm"
-	  }
+          }
         ]
       }
     },
@@ -39914,7 +40614,7 @@
       }
     ]
   },
-  "rev": "af65262f5f3400024279c526117489f1f11d3233",
+  "rev": "827c4f521be3452fc00630ec7874a4cac0a270c0",
   "url_base": "/",
   "version": 2
 }
diff --git a/testing/web-platform/meta/cssom-view/negativeMargins.html.ini b/testing/web-platform/meta/cssom-view/negativeMargins.html.ini
new file mode 100644
index 00000000000..e86a8516bbf
--- /dev/null
+++ b/testing/web-platform/meta/cssom-view/negativeMargins.html.ini
@@ -0,0 +1,9 @@
+[negativeMargins.html]
+  type: testharness
+  [cssom-view - elementFromPoint and elementsFromPoint dealing with negative margins]
+    expected:
+      if not debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86") and (bits == 32): FAIL
+      if not debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86") and (bits == 32): FAIL
+      if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL
+      if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL
+
diff --git a/testing/web-platform/meta/dom/interfaces.html.ini b/testing/web-platform/meta/dom/interfaces.html.ini
index a0dd4e375db..11892c5ec72 100644
--- a/testing/web-platform/meta/dom/interfaces.html.ini
+++ b/testing/web-platform/meta/dom/interfaces.html.ini
@@ -273,3 +273,21 @@
   [Document interface: xmlDoc must inherit property "queryAll" with the proper type (36)]
     expected: FAIL
 
+  [DOMTokenList interface: operation replace(DOMString,DOMString)]
+    expected: FAIL
+
+  [DOMTokenList interface: operation supports(DOMString)]
+    expected: FAIL
+
+  [DOMTokenList interface: document.body.classList must inherit property "replace" with the proper type (6)]
+    expected: FAIL
+
+  [DOMTokenList interface: calling replace(DOMString,DOMString) on document.body.classList with too few arguments must throw TypeError]
+    expected: FAIL
+
+  [DOMTokenList interface: document.body.classList must inherit property "supports" with the proper type (7)]
+    expected: FAIL
+
+  [DOMTokenList interface: calling supports(DOMString) on document.body.classList with too few arguments must throw TypeError]
+    expected: FAIL
+
diff --git a/testing/web-platform/meta/html/dom/interfaces.html.ini b/testing/web-platform/meta/html/dom/interfaces.html.ini
index a4c6a03a373..03845ea3d4f 100644
--- a/testing/web-platform/meta/html/dom/interfaces.html.ini
+++ b/testing/web-platform/meta/html/dom/interfaces.html.ini
@@ -1,8 +1,6 @@
 [interfaces.html]
   type: testharness
-  prefs: [dom.forms.inputmode:true,
-          dom.details_element.enabled:true]
-
+  prefs: [dom.forms.inputmode:true, dom.details_element.enabled:true]
   [Document interface: attribute domain]
     expected: FAIL
 
@@ -417,12 +415,6 @@
   [Touch interface: attribute region]
     expected: FAIL
 
-  [HTMLAllCollection interface: existence and properties of interface object]
-    expected: FAIL
-
-  [HTMLAllCollection interface: existence and properties of interface prototype object]
-    expected: FAIL
-
   [HTMLAllCollection must be primary interface of document.all]
     expected: FAIL
 
@@ -717,9 +709,6 @@
   [Stringification of document.createElement("basefont")]
     expected: FAIL
 
-  [HTMLLinkElement interface: document.createElement("link") must inherit property "crossOrigin" with the proper type (1)]
-    expected: FAIL
-
   [HTMLPreElement must be primary interface of document.createElement("listing")]
     expected: FAIL
 
@@ -750,12 +739,6 @@
   [HTMLAnchorElement interface: document.createElement("a") must inherit property "ping" with the proper type (2)]
     expected: FAIL
 
-  [HTMLImageElement interface: document.createElement("img") must inherit property "crossOrigin" with the proper type (4)]
-    expected: FAIL
-
-  [HTMLImageElement interface: new Image() must inherit property "crossOrigin" with the proper type (4)]
-    expected: FAIL
-
   [HTMLIFrameElement interface: attribute seamless]
     expected: FAIL
 
@@ -765,9 +748,6 @@
   [HTMLObjectElement interface: document.createElement("object") must inherit property "reportValidity" with the proper type (14)]
     expected: FAIL
 
-  [HTMLMediaElement interface: document.createElement("video") must inherit property "crossOrigin" with the proper type (3)]
-    expected: FAIL
-
   [HTMLMediaElement interface: document.createElement("video") must inherit property "getStartDate" with the proper type (23)]
     expected: FAIL
 
@@ -783,9 +763,6 @@
   [HTMLMediaElement interface: document.createElement("video") must inherit property "videoTracks" with the proper type (41)]
     expected: FAIL
 
-  [HTMLMediaElement interface: document.createElement("audio") must inherit property "crossOrigin" with the proper type (3)]
-    expected: FAIL
-
   [HTMLMediaElement interface: document.createElement("audio") must inherit property "getStartDate" with the proper type (23)]
     expected: FAIL
 
@@ -801,9 +778,6 @@
   [HTMLMediaElement interface: document.createElement("audio") must inherit property "videoTracks" with the proper type (41)]
     expected: FAIL
 
-  [HTMLMediaElement interface: new Audio() must inherit property "crossOrigin" with the proper type (3)]
-    expected: FAIL
-
   [HTMLMediaElement interface: new Audio() must inherit property "getStartDate" with the proper type (23)]
     expected: FAIL
 
@@ -1641,9 +1615,6 @@
   [HTMLDialogElement interface: operation close(DOMString)]
     expected: FAIL
 
-  [HTMLScriptElement interface: document.createElement("script") must inherit property "crossOrigin" with the proper type (5)]
-    expected: FAIL
-
   [HTMLCanvasElement interface: operation probablySupportsContext(DOMString,any)]
     expected: FAIL
 
@@ -2697,15 +2668,6 @@
   [Document interface: document.implementation.createDocument(null, "", null) must inherit property "ontoggle" with the proper type (154)]
     expected: FAIL
 
-  [HTMLAnchorElement interface: attribute origin]
-    expected: FAIL
-
-  [HTMLAreaElement interface: attribute origin]
-    expected: FAIL
-
-  [Location interface: window.location must have own property "origin"]
-    expected: FAIL
-
   [Location interface: window.location must have own property "ancestorOrigins"]
     expected: FAIL
 
@@ -2808,3 +2770,15 @@
   [HTMLMarqueeElement interface object name]
     expected: FAIL
 
+  [HTMLAllCollection interface: document.all must inherit property "length" with the proper type (0)]
+    expected: FAIL
+
+  [HTMLAllCollection interface: document.all must inherit property "item" with the proper type (2)]
+    expected: FAIL
+
+  [HTMLAllCollection interface: document.all must inherit property "namedItem" with the proper type (3)]
+    expected: FAIL
+
+  [BarProp interface: attribute visible]
+    expected: FAIL
+
diff --git a/testing/web-platform/meta/html/dom/reflection-embedded.html.ini b/testing/web-platform/meta/html/dom/reflection-embedded.html.ini
index 5406ed05213..94d2273ea23 100644
--- a/testing/web-platform/meta/html/dom/reflection-embedded.html.ini
+++ b/testing/web-platform/meta/html/dom/reflection-embedded.html.ini
@@ -12,141 +12,6 @@
   [img.tabIndex: IDL set to -2147483648 followed by IDL get]
     expected: FAIL
 
-  [img.crossOrigin: typeof IDL attribute]
-    expected: FAIL
-
-  [img.crossOrigin: IDL get with DOM attribute unset]
-    expected: FAIL
-
-  [img.crossOrigin: setAttribute() to "" followed by IDL get]
-    expected: FAIL
-
-  [img.crossOrigin: setAttribute() to " \\0\\x01\\x02\\x03\\x04\\x05\\x06\\x07 \\b\\t\\n\\v\\f\\r\\x0e\\x0f \\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17 \\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f  foo " followed by IDL get]
-    expected: FAIL
-
-  [img.crossOrigin: setAttribute() to undefined followed by IDL get]
-    expected: FAIL
-
-  [img.crossOrigin: setAttribute() to 7 followed by IDL get]
-    expected: FAIL
-
-  [img.crossOrigin: setAttribute() to 1.5 followed by IDL get]
-    expected: FAIL
-
-  [img.crossOrigin: setAttribute() to true followed by IDL get]
-    expected: FAIL
-
-  [img.crossOrigin: setAttribute() to false followed by IDL get]
-    expected: FAIL
-
-  [img.crossOrigin: setAttribute() to object "[object Object\]" followed by IDL get]
-    expected: FAIL
-
-  [img.crossOrigin: setAttribute() to NaN followed by IDL get]
-    expected: FAIL
-
-  [img.crossOrigin: setAttribute() to Infinity followed by IDL get]
-    expected: FAIL
-
-  [img.crossOrigin: setAttribute() to -Infinity followed by IDL get]
-    expected: FAIL
-
-  [img.crossOrigin: setAttribute() to "\\0" followed by IDL get]
-    expected: FAIL
-
-  [img.crossOrigin: setAttribute() to null followed by IDL get]
-    expected: FAIL
-
-  [img.crossOrigin: setAttribute() to object "test-toString" followed by IDL get]
-    expected: FAIL
-
-  [img.crossOrigin: setAttribute() to object "test-valueOf" followed by IDL get]
-    expected: FAIL
-
-  [img.crossOrigin: setAttribute() to "xanonymous" followed by IDL get]
-    expected: FAIL
-
-  [img.crossOrigin: setAttribute() to "anonymous\\0" followed by IDL get]
-    expected: FAIL
-
-  [img.crossOrigin: setAttribute() to "nonymous" followed by IDL get]
-    expected: FAIL
-
-  [img.crossOrigin: setAttribute() to "xuse-credentials" followed by IDL get]
-    expected: FAIL
-
-  [img.crossOrigin: setAttribute() to "use-credentials\\0" followed by IDL get]
-    expected: FAIL
-
-  [img.crossOrigin: setAttribute() to "se-credentials" followed by IDL get]
-    expected: FAIL
-
-  [img.crossOrigin: IDL set to "" followed by IDL get]
-    expected: FAIL
-
-  [img.crossOrigin: IDL set to " \\0\\x01\\x02\\x03\\x04\\x05\\x06\\x07 \\b\\t\\n\\v\\f\\r\\x0e\\x0f \\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17 \\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f  foo " followed by IDL get]
-    expected: FAIL
-
-  [img.crossOrigin: IDL set to undefined followed by getAttribute()]
-    expected: FAIL
-
-  [img.crossOrigin: IDL set to undefined followed by IDL get]
-    expected: FAIL
-
-  [img.crossOrigin: IDL set to 7 followed by IDL get]
-    expected: FAIL
-
-  [img.crossOrigin: IDL set to 1.5 followed by IDL get]
-    expected: FAIL
-
-  [img.crossOrigin: IDL set to true followed by IDL get]
-    expected: FAIL
-
-  [img.crossOrigin: IDL set to false followed by IDL get]
-    expected: FAIL
-
-  [img.crossOrigin: IDL set to object "[object Object\]" followed by IDL get]
-    expected: FAIL
-
-  [img.crossOrigin: IDL set to NaN followed by IDL get]
-    expected: FAIL
-
-  [img.crossOrigin: IDL set to Infinity followed by IDL get]
-    expected: FAIL
-
-  [img.crossOrigin: IDL set to -Infinity followed by IDL get]
-    expected: FAIL
-
-  [img.crossOrigin: IDL set to "\\0" followed by IDL get]
-    expected: FAIL
-
-  [img.crossOrigin: IDL set to null followed by IDL get]
-    expected: FAIL
-
-  [img.crossOrigin: IDL set to object "test-toString" followed by IDL get]
-    expected: FAIL
-
-  [img.crossOrigin: IDL set to object "test-valueOf" followed by IDL get]
-    expected: FAIL
-
-  [img.crossOrigin: IDL set to "xanonymous" followed by IDL get]
-    expected: FAIL
-
-  [img.crossOrigin: IDL set to "anonymous\\0" followed by IDL get]
-    expected: FAIL
-
-  [img.crossOrigin: IDL set to "nonymous" followed by IDL get]
-    expected: FAIL
-
-  [img.crossOrigin: IDL set to "xuse-credentials" followed by IDL get]
-    expected: FAIL
-
-  [img.crossOrigin: IDL set to "use-credentials\\0" followed by IDL get]
-    expected: FAIL
-
-  [img.crossOrigin: IDL set to "se-credentials" followed by IDL get]
-    expected: FAIL
-
   [img.lowsrc: setAttribute() to "" followed by IDL get]
     expected: FAIL
 
@@ -507,21 +372,6 @@
   [video.tabIndex: IDL set to -2147483648 followed by IDL get]
     expected: FAIL
 
-  [video.crossOrigin: typeof IDL attribute]
-    expected: FAIL
-
-  [video.crossOrigin: IDL get with DOM attribute unset]
-    expected: FAIL
-
-  [video.crossOrigin: IDL set to undefined followed by getAttribute()]
-    expected: FAIL
-
-  [video.crossOrigin: IDL set to undefined followed by IDL get]
-    expected: FAIL
-
-  [video.crossOrigin: IDL set to null followed by IDL get]
-    expected: FAIL
-
   [video.mediaGroup: typeof IDL attribute]
     expected: FAIL
 
@@ -663,21 +513,6 @@
   [audio.tabIndex: IDL set to -2147483648 followed by IDL get]
     expected: FAIL
 
-  [audio.crossOrigin: typeof IDL attribute]
-    expected: FAIL
-
-  [audio.crossOrigin: IDL get with DOM attribute unset]
-    expected: FAIL
-
-  [audio.crossOrigin: IDL set to undefined followed by getAttribute()]
-    expected: FAIL
-
-  [audio.crossOrigin: IDL set to undefined followed by IDL get]
-    expected: FAIL
-
-  [audio.crossOrigin: IDL set to null followed by IDL get]
-    expected: FAIL
-
   [audio.mediaGroup: typeof IDL attribute]
     expected: FAIL
 
diff --git a/testing/web-platform/meta/html/dom/reflection-misc.html.ini b/testing/web-platform/meta/html/dom/reflection-misc.html.ini
index 5ad0d7d275e..d373688ff9b 100644
--- a/testing/web-platform/meta/html/dom/reflection-misc.html.ini
+++ b/testing/web-platform/meta/html/dom/reflection-misc.html.ini
@@ -1,7 +1,6 @@
 [reflection-misc.html]
   type: testharness
   prefs: [dom.details_element.enabled:true]
-
   [html.tabIndex: setAttribute() to -2147483648 followed by IDL get]
     expected: FAIL
 
@@ -26,21 +25,6 @@
   [script.tabIndex: IDL set to -2147483648 followed by IDL get]
     expected: FAIL
 
-  [script.crossOrigin: typeof IDL attribute]
-    expected: FAIL
-
-  [script.crossOrigin: IDL get with DOM attribute unset]
-    expected: FAIL
-
-  [script.crossOrigin: IDL set to undefined followed by getAttribute()]
-    expected: FAIL
-
-  [script.crossOrigin: IDL set to undefined followed by IDL get]
-    expected: FAIL
-
-  [script.crossOrigin: IDL set to null followed by IDL get]
-    expected: FAIL
-
   [noscript.tabIndex: setAttribute() to -2147483648 followed by IDL get]
     expected: FAIL
 
diff --git a/testing/web-platform/meta/html/editing/focus/focus-management/focus-event-targets-simple.html.ini b/testing/web-platform/meta/html/editing/focus/focus-management/focus-event-targets-simple.html.ini
new file mode 100644
index 00000000000..643568baa8e
--- /dev/null
+++ b/testing/web-platform/meta/html/editing/focus/focus-management/focus-event-targets-simple.html.ini
@@ -0,0 +1,22 @@
+[focus-event-targets-simple.html]
+  type: testharness
+  disabled: https://bugzilla.mozilla.org/show_bug.cgi?id=1252056
+  [Focus events fire at correct targets in correct order in simple case]
+    expected:
+      if not debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86") and (bits == 32): FAIL
+      if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86_64") and (bits == 64): FAIL
+      if not debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL
+      if not debug and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL
+      if debug and e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL
+      if not debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86_64") and (bits == 64): FAIL
+      if not debug and e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86_64") and (bits == 64): FAIL
+      if not debug and not e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL
+      if debug and not e10s and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): FAIL
+      if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL
+      if debug and e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86_64") and (bits == 64): FAIL
+      if not debug and e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL
+      if not debug and not e10s and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): FAIL
+      if not debug and not e10s and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): FAIL
+      if debug and not e10s and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): FAIL
+      if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL
+
diff --git a/testing/web-platform/meta/html/semantics/embedded-content-0/media-elements/video_008.htm.ini b/testing/web-platform/meta/html/semantics/embedded-content-0/media-elements/video_008.htm.ini
new file mode 100644
index 00000000000..b0fec23003c
--- /dev/null
+++ b/testing/web-platform/meta/html/semantics/embedded-content-0/media-elements/video_008.htm.ini
@@ -0,0 +1,5 @@
+[video_008.htm]
+  type: testharness
+  [HTML5 Media Elements: 'media' attribute]
+    expected: FAIL
+
diff --git a/testing/web-platform/meta/html/semantics/forms/the-input-element/radio.html.ini b/testing/web-platform/meta/html/semantics/forms/the-input-element/radio.html.ini
index 3ed0762f694..be8a3b9d592 100644
--- a/testing/web-platform/meta/html/semantics/forms/the-input-element/radio.html.ini
+++ b/testing/web-platform/meta/html/semantics/forms/the-input-element/radio.html.ini
@@ -9,3 +9,4 @@
   [canceled activation steps on unchecked radio]
     expected:
       if not debug and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL
+
diff --git a/testing/web-platform/meta/html/semantics/interfaces.html.ini b/testing/web-platform/meta/html/semantics/interfaces.html.ini
index e729d4bd159..55ba3be225e 100644
--- a/testing/web-platform/meta/html/semantics/interfaces.html.ini
+++ b/testing/web-platform/meta/html/semantics/interfaces.html.ini
@@ -1,7 +1,6 @@
 [interfaces.html]
   type: testharness
   prefs: [dom.details_element.enabled:true]
-
   [Interfaces for basefont]
     expected: FAIL
 
@@ -55,3 +54,4 @@
 
   [Interfaces for DIALOG]
     expected: FAIL
+
diff --git a/testing/web-platform/meta/html/webappapis/scripting/events/inline-event-handler-ordering.html.ini b/testing/web-platform/meta/html/webappapis/scripting/events/inline-event-handler-ordering.html.ini
new file mode 100644
index 00000000000..9aa28a2ed32
--- /dev/null
+++ b/testing/web-platform/meta/html/webappapis/scripting/events/inline-event-handler-ordering.html.ini
@@ -0,0 +1,3 @@
+[inline-event-handler-ordering.html]
+  type: testharness
+  expected: ERROR
diff --git a/testing/web-platform/meta/mozilla-sync b/testing/web-platform/meta/mozilla-sync
index 5f5462944ea..0dc4869f238 100644
--- a/testing/web-platform/meta/mozilla-sync
+++ b/testing/web-platform/meta/mozilla-sync
@@ -1 +1 @@
-fa876a5774a3178efb42d6ebd8c8df045e03a80b
\ No newline at end of file
+54976a9615f299926b67b227fae377e73e2d0653
\ No newline at end of file
diff --git a/testing/web-platform/meta/presentation-api/controlling-ua/idlharness.html.ini b/testing/web-platform/meta/presentation-api/controlling-ua/idlharness.html.ini
new file mode 100644
index 00000000000..b4e75865cba
--- /dev/null
+++ b/testing/web-platform/meta/presentation-api/controlling-ua/idlharness.html.ini
@@ -0,0 +1,215 @@
+[idlharness.html]
+  type: testharness
+  [Navigator interface: attribute presentation]
+    expected: FAIL
+
+  [Presentation interface: existence and properties of interface object]
+    expected: FAIL
+
+  [Presentation interface object length]
+    expected: FAIL
+
+  [Presentation interface object name]
+    expected: FAIL
+
+  [Presentation interface: existence and properties of interface prototype object]
+    expected: FAIL
+
+  [Presentation interface: existence and properties of interface prototype object's "constructor" property]
+    expected: FAIL
+
+  [Presentation interface: attribute defaultRequest]
+    expected: FAIL
+
+  [Presentation must be primary interface of navigator.presentation]
+    expected: FAIL
+
+  [Stringification of navigator.presentation]
+    expected: FAIL
+
+  [Presentation interface: navigator.presentation must inherit property "defaultRequest" with the proper type (0)]
+    expected: FAIL
+
+  [PresentationRequest interface: existence and properties of interface object]
+    expected: FAIL
+
+  [PresentationRequest interface object length]
+    expected: FAIL
+
+  [PresentationRequest interface object name]
+    expected: FAIL
+
+  [PresentationRequest interface: existence and properties of interface prototype object]
+    expected: FAIL
+
+  [PresentationRequest interface: existence and properties of interface prototype object's "constructor" property]
+    expected: FAIL
+
+  [PresentationRequest interface: operation start()]
+    expected: FAIL
+
+  [PresentationRequest interface: operation reconnect(DOMString)]
+    expected: FAIL
+
+  [PresentationRequest interface: operation getAvailability()]
+    expected: FAIL
+
+  [PresentationRequest interface: attribute onconnectionavailable]
+    expected: FAIL
+
+  [PresentationRequest must be primary interface of navigator.presentation.defaultRequest]
+    expected: FAIL
+
+  [Stringification of navigator.presentation.defaultRequest]
+    expected: FAIL
+
+  [PresentationRequest interface: navigator.presentation.defaultRequest must inherit property "start" with the proper type (0)]
+    expected: FAIL
+
+  [PresentationRequest interface: navigator.presentation.defaultRequest must inherit property "reconnect" with the proper type (1)]
+    expected: FAIL
+
+  [PresentationRequest interface: calling reconnect(DOMString) on navigator.presentation.defaultRequest with too few arguments must throw TypeError]
+    expected: FAIL
+
+  [PresentationRequest interface: navigator.presentation.defaultRequest must inherit property "getAvailability" with the proper type (2)]
+    expected: FAIL
+
+  [PresentationRequest interface: navigator.presentation.defaultRequest must inherit property "onconnectionavailable" with the proper type (3)]
+    expected: FAIL
+
+  [PresentationRequest must be primary interface of new PresentationRequest("/presentation-api/receiving-ua/idlharness.html")]
+    expected: FAIL
+
+  [Stringification of new PresentationRequest("/presentation-api/receiving-ua/idlharness.html")]
+    expected: FAIL
+
+  [PresentationRequest interface: new PresentationRequest("/presentation-api/receiving-ua/idlharness.html") must inherit property "start" with the proper type (0)]
+    expected: FAIL
+
+  [PresentationRequest interface: new PresentationRequest("/presentation-api/receiving-ua/idlharness.html") must inherit property "reconnect" with the proper type (1)]
+    expected: FAIL
+
+  [PresentationRequest interface: calling reconnect(DOMString) on new PresentationRequest("/presentation-api/receiving-ua/idlharness.html") with too few arguments must throw TypeError]
+    expected: FAIL
+
+  [PresentationRequest interface: new PresentationRequest("/presentation-api/receiving-ua/idlharness.html") must inherit property "getAvailability" with the proper type (2)]
+    expected: FAIL
+
+  [PresentationRequest interface: new PresentationRequest("/presentation-api/receiving-ua/idlharness.html") must inherit property "onconnectionavailable" with the proper type (3)]
+    expected: FAIL
+
+  [PresentationAvailability interface: existence and properties of interface object]
+    expected: FAIL
+
+  [PresentationAvailability interface object length]
+    expected: FAIL
+
+  [PresentationAvailability interface object name]
+    expected: FAIL
+
+  [PresentationAvailability interface: existence and properties of interface prototype object]
+    expected: FAIL
+
+  [PresentationAvailability interface: existence and properties of interface prototype object's "constructor" property]
+    expected: FAIL
+
+  [PresentationAvailability interface: attribute value]
+    expected: FAIL
+
+  [PresentationAvailability interface: attribute onchange]
+    expected: FAIL
+
+  [PresentationConnectionAvailableEvent interface: existence and properties of interface object]
+    expected: FAIL
+
+  [PresentationConnectionAvailableEvent interface object length]
+    expected: FAIL
+
+  [PresentationConnectionAvailableEvent interface object name]
+    expected: FAIL
+
+  [PresentationConnectionAvailableEvent interface: existence and properties of interface prototype object]
+    expected: FAIL
+
+  [PresentationConnectionAvailableEvent interface: existence and properties of interface prototype object's "constructor" property]
+    expected: FAIL
+
+  [PresentationConnectionAvailableEvent interface: attribute connection]
+    expected: FAIL
+
+  [PresentationConnection interface: existence and properties of interface object]
+    expected: FAIL
+
+  [PresentationConnection interface object length]
+    expected: FAIL
+
+  [PresentationConnection interface object name]
+    expected: FAIL
+
+  [PresentationConnection interface: existence and properties of interface prototype object]
+    expected: FAIL
+
+  [PresentationConnection interface: existence and properties of interface prototype object's "constructor" property]
+    expected: FAIL
+
+  [PresentationConnection interface: attribute id]
+    expected: FAIL
+
+  [PresentationConnection interface: attribute state]
+    expected: FAIL
+
+  [PresentationConnection interface: operation close()]
+    expected: FAIL
+
+  [PresentationConnection interface: operation terminate()]
+    expected: FAIL
+
+  [PresentationConnection interface: attribute onconnect]
+    expected: FAIL
+
+  [PresentationConnection interface: attribute onclose]
+    expected: FAIL
+
+  [PresentationConnection interface: attribute onterminate]
+    expected: FAIL
+
+  [PresentationConnection interface: attribute binaryType]
+    expected: FAIL
+
+  [PresentationConnection interface: attribute onmessage]
+    expected: FAIL
+
+  [PresentationConnection interface: operation send(DOMString)]
+    expected: FAIL
+
+  [PresentationConnection interface: operation send(Blob)]
+    expected: FAIL
+
+  [PresentationConnection interface: operation send(ArrayBuffer)]
+    expected: FAIL
+
+  [PresentationConnection interface: operation send(ArrayBufferView)]
+    expected: FAIL
+
+  [PresentationConnectionClosedEvent interface: existence and properties of interface object]
+    expected: FAIL
+
+  [PresentationConnectionClosedEvent interface object length]
+    expected: FAIL
+
+  [PresentationConnectionClosedEvent interface object name]
+    expected: FAIL
+
+  [PresentationConnectionClosedEvent interface: existence and properties of interface prototype object]
+    expected: FAIL
+
+  [PresentationConnectionClosedEvent interface: existence and properties of interface prototype object's "constructor" property]
+    expected: FAIL
+
+  [PresentationConnectionClosedEvent interface: attribute reason]
+    expected: FAIL
+
+  [PresentationConnectionClosedEvent interface: attribute message]
+    expected: FAIL
+
diff --git a/testing/web-platform/meta/presentation-api/receiving-ua/idlharness.html.ini b/testing/web-platform/meta/presentation-api/receiving-ua/idlharness.html.ini
new file mode 100644
index 00000000000..677a30ef6dd
--- /dev/null
+++ b/testing/web-platform/meta/presentation-api/receiving-ua/idlharness.html.ini
@@ -0,0 +1,173 @@
+[idlharness.html]
+  type: testharness
+  [Navigator interface: attribute presentation]
+    expected: FAIL
+
+  [Presentation interface: existence and properties of interface object]
+    expected: FAIL
+
+  [Presentation interface object length]
+    expected: FAIL
+
+  [Presentation interface object name]
+    expected: FAIL
+
+  [Presentation interface: existence and properties of interface prototype object]
+    expected: FAIL
+
+  [Presentation interface: existence and properties of interface prototype object's "constructor" property]
+    expected: FAIL
+
+  [Presentation interface: attribute receiver]
+    expected: FAIL
+
+  [Presentation must be primary interface of navigator.presentation]
+    expected: FAIL
+
+  [Stringification of navigator.presentation]
+    expected: FAIL
+
+  [Presentation interface: navigator.presentation must inherit property "receiver" with the proper type (0)]
+    expected: FAIL
+
+  [PresentationConnectionAvailableEvent interface: existence and properties of interface object]
+    expected: FAIL
+
+  [PresentationConnectionAvailableEvent interface object length]
+    expected: FAIL
+
+  [PresentationConnectionAvailableEvent interface object name]
+    expected: FAIL
+
+  [PresentationConnectionAvailableEvent interface: existence and properties of interface prototype object]
+    expected: FAIL
+
+  [PresentationConnectionAvailableEvent interface: existence and properties of interface prototype object's "constructor" property]
+    expected: FAIL
+
+  [PresentationConnectionAvailableEvent interface: attribute connection]
+    expected: FAIL
+
+  [PresentationConnection interface: existence and properties of interface object]
+    expected: FAIL
+
+  [PresentationConnection interface object length]
+    expected: FAIL
+
+  [PresentationConnection interface object name]
+    expected: FAIL
+
+  [PresentationConnection interface: existence and properties of interface prototype object]
+    expected: FAIL
+
+  [PresentationConnection interface: existence and properties of interface prototype object's "constructor" property]
+    expected: FAIL
+
+  [PresentationConnection interface: attribute id]
+    expected: FAIL
+
+  [PresentationConnection interface: attribute state]
+    expected: FAIL
+
+  [PresentationConnection interface: operation close()]
+    expected: FAIL
+
+  [PresentationConnection interface: operation terminate()]
+    expected: FAIL
+
+  [PresentationConnection interface: attribute onconnect]
+    expected: FAIL
+
+  [PresentationConnection interface: attribute onclose]
+    expected: FAIL
+
+  [PresentationConnection interface: attribute onterminate]
+    expected: FAIL
+
+  [PresentationConnection interface: attribute binaryType]
+    expected: FAIL
+
+  [PresentationConnection interface: attribute onmessage]
+    expected: FAIL
+
+  [PresentationConnection interface: operation send(DOMString)]
+    expected: FAIL
+
+  [PresentationConnection interface: operation send(Blob)]
+    expected: FAIL
+
+  [PresentationConnection interface: operation send(ArrayBuffer)]
+    expected: FAIL
+
+  [PresentationConnection interface: operation send(ArrayBufferView)]
+    expected: FAIL
+
+  [PresentationConnectionClosedEvent interface: existence and properties of interface object]
+    expected: FAIL
+
+  [PresentationConnectionClosedEvent interface object length]
+    expected: FAIL
+
+  [PresentationConnectionClosedEvent interface object name]
+    expected: FAIL
+
+  [PresentationConnectionClosedEvent interface: existence and properties of interface prototype object]
+    expected: FAIL
+
+  [PresentationConnectionClosedEvent interface: existence and properties of interface prototype object's "constructor" property]
+    expected: FAIL
+
+  [PresentationConnectionClosedEvent interface: attribute reason]
+    expected: FAIL
+
+  [PresentationConnectionClosedEvent interface: attribute message]
+    expected: FAIL
+
+  [PresentationReceiver interface: existence and properties of interface object]
+    expected: FAIL
+
+  [PresentationReceiver interface object length]
+    expected: FAIL
+
+  [PresentationReceiver interface object name]
+    expected: FAIL
+
+  [PresentationReceiver interface: existence and properties of interface prototype object]
+    expected: FAIL
+
+  [PresentationReceiver interface: existence and properties of interface prototype object's "constructor" property]
+    expected: FAIL
+
+  [PresentationReceiver interface: attribute connectionList]
+    expected: FAIL
+
+  [PresentationReceiver must be primary interface of navigator.presentation.receiver]
+    expected: FAIL
+
+  [Stringification of navigator.presentation.receiver]
+    expected: FAIL
+
+  [PresentationReceiver interface: navigator.presentation.receiver must inherit property "connectionList" with the proper type (0)]
+    expected: FAIL
+
+  [PresentationConnectionList interface: existence and properties of interface object]
+    expected: FAIL
+
+  [PresentationConnectionList interface object length]
+    expected: FAIL
+
+  [PresentationConnectionList interface object name]
+    expected: FAIL
+
+  [PresentationConnectionList interface: existence and properties of interface prototype object]
+    expected: FAIL
+
+  [PresentationConnectionList interface: existence and properties of interface prototype object's "constructor" property]
+    expected: FAIL
+
+  [PresentationConnectionList interface: attribute connections]
+    expected: FAIL
+
+  [PresentationConnectionList interface: attribute onconnectionavailable]
+    expected: FAIL
+
diff --git a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..8906cbc4f04
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[insecure-protocol.keep-origin-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is stripped-referrer when a\n                                 document served over http requires an http\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with keep-origin-redirect and when\n                                 the target request is cross-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini
new file mode 100644
index 00000000000..8458a75b16f
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[insecure-protocol.no-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is stripped-referrer when a\n                                 document served over http requires an http\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with no-redirect and when\n                                 the target request is cross-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..96d0cab357f
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[insecure-protocol.swap-origin-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is stripped-referrer when a\n                                 document served over http requires an http\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with swap-origin-redirect and when\n                                 the target request is cross-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..45cafe70cac
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[upgrade-protocol.keep-origin-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is stripped-referrer when a\n                                 document served over http requires an https\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with keep-origin-redirect and when\n                                 the target request is cross-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini
new file mode 100644
index 00000000000..a7f8223c336
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[upgrade-protocol.no-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is stripped-referrer when a\n                                 document served over http requires an https\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with no-redirect and when\n                                 the target request is cross-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..1c830784d1b
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[upgrade-protocol.swap-origin-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is stripped-referrer when a\n                                 document served over http requires an https\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with swap-origin-redirect and when\n                                 the target request is cross-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..a6302984fdf
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[insecure-protocol.keep-origin-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is stripped-referrer when a\n                                 document served over http requires an http\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with keep-origin-redirect and when\n                                 the target request is same-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini
new file mode 100644
index 00000000000..de34cb7e95d
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[insecure-protocol.no-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is stripped-referrer when a\n                                 document served over http requires an http\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with no-redirect and when\n                                 the target request is same-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..d98757946a5
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[insecure-protocol.swap-origin-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is stripped-referrer when a\n                                 document served over http requires an http\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with swap-origin-redirect and when\n                                 the target request is same-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..2fef16da168
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[upgrade-protocol.keep-origin-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is stripped-referrer when a\n                                 document served over http requires an https\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with keep-origin-redirect and when\n                                 the target request is same-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini
new file mode 100644
index 00000000000..36dd9e26408
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[upgrade-protocol.no-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is stripped-referrer when a\n                                 document served over http requires an https\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with no-redirect and when\n                                 the target request is same-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..b9f9a85c064
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[upgrade-protocol.swap-origin-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is stripped-referrer when a\n                                 document served over http requires an https\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with swap-origin-redirect and when\n                                 the target request is same-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..b94eab45fef
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html.ini
@@ -0,0 +1,5 @@
+[generic.keep-origin-redirect.http.html]
+  type: testharness
+  [The referrer URL is omitted when a\n                                 document served over http requires an http\n                                 sub-resource via iframe-tag using the attr-referrer\n                                 delivery method with keep-origin-redirect and when\n                                 the target request is cross-origin.]
+    expected: FAIL
+
diff --git a/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/iframe-tag/generic.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/iframe-tag/generic.no-redirect.http.html.ini
new file mode 100644
index 00000000000..8f81f3a06ca
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/iframe-tag/generic.no-redirect.http.html.ini
@@ -0,0 +1,5 @@
+[generic.no-redirect.http.html]
+  type: testharness
+  [The referrer URL is omitted when a\n                                 document served over http requires an http\n                                 sub-resource via iframe-tag using the attr-referrer\n                                 delivery method with no-redirect and when\n                                 the target request is cross-origin.]
+    expected: FAIL
+
diff --git a/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..c86bb29543f
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html.ini
@@ -0,0 +1,5 @@
+[generic.swap-origin-redirect.http.html]
+  type: testharness
+  [The referrer URL is omitted when a\n                                 document served over http requires an http\n                                 sub-resource via iframe-tag using the attr-referrer\n                                 delivery method with swap-origin-redirect and when\n                                 the target request is cross-origin.]
+    expected: FAIL
+
diff --git a/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..f175c6bde6c
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[generic.keep-origin-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is omitted when a\n                                 document served over http requires an http\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with keep-origin-redirect and when\n                                 the target request is cross-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/img-tag/generic.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/img-tag/generic.no-redirect.http.html.ini
new file mode 100644
index 00000000000..b7c84a144f1
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/img-tag/generic.no-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[generic.no-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is omitted when a\n                                 document served over http requires an http\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with no-redirect and when\n                                 the target request is cross-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..f9ff9b5711c
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[generic.swap-origin-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is omitted when a\n                                 document served over http requires an http\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with swap-origin-redirect and when\n                                 the target request is cross-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..fe77b9d49e9
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html.ini
@@ -0,0 +1,5 @@
+[generic.keep-origin-redirect.http.html]
+  type: testharness
+  [The referrer URL is omitted when a\n                                 document served over http requires an https\n                                 sub-resource via iframe-tag using the attr-referrer\n                                 delivery method with keep-origin-redirect and when\n                                 the target request is cross-origin.]
+    expected: FAIL
+
diff --git a/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/iframe-tag/generic.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/iframe-tag/generic.no-redirect.http.html.ini
new file mode 100644
index 00000000000..ffae99993b6
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/iframe-tag/generic.no-redirect.http.html.ini
@@ -0,0 +1,5 @@
+[generic.no-redirect.http.html]
+  type: testharness
+  [The referrer URL is omitted when a\n                                 document served over http requires an https\n                                 sub-resource via iframe-tag using the attr-referrer\n                                 delivery method with no-redirect and when\n                                 the target request is cross-origin.]
+    expected: FAIL
+
diff --git a/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..fa971027899
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html.ini
@@ -0,0 +1,5 @@
+[generic.swap-origin-redirect.http.html]
+  type: testharness
+  [The referrer URL is omitted when a\n                                 document served over http requires an https\n                                 sub-resource via iframe-tag using the attr-referrer\n                                 delivery method with swap-origin-redirect and when\n                                 the target request is cross-origin.]
+    expected: FAIL
+
diff --git a/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..8203d86b3d8
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[generic.keep-origin-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is omitted when a\n                                 document served over http requires an https\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with keep-origin-redirect and when\n                                 the target request is cross-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/img-tag/generic.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/img-tag/generic.no-redirect.http.html.ini
new file mode 100644
index 00000000000..d29d023c54e
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/img-tag/generic.no-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[generic.no-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is omitted when a\n                                 document served over http requires an https\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with no-redirect and when\n                                 the target request is cross-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..8144051f84d
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[generic.swap-origin-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is omitted when a\n                                 document served over http requires an https\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with swap-origin-redirect and when\n                                 the target request is cross-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..913740aa0e8
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html.ini
@@ -0,0 +1,5 @@
+[generic.keep-origin-redirect.http.html]
+  type: testharness
+  [The referrer URL is omitted when a\n                                 document served over http requires an http\n                                 sub-resource via iframe-tag using the attr-referrer\n                                 delivery method with keep-origin-redirect and when\n                                 the target request is same-origin.]
+    expected: FAIL
+
diff --git a/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/iframe-tag/generic.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/iframe-tag/generic.no-redirect.http.html.ini
new file mode 100644
index 00000000000..073cfa6146b
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/iframe-tag/generic.no-redirect.http.html.ini
@@ -0,0 +1,5 @@
+[generic.no-redirect.http.html]
+  type: testharness
+  [The referrer URL is omitted when a\n                                 document served over http requires an http\n                                 sub-resource via iframe-tag using the attr-referrer\n                                 delivery method with no-redirect and when\n                                 the target request is same-origin.]
+    expected: FAIL
+
diff --git a/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..49e818408ca
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html.ini
@@ -0,0 +1,5 @@
+[generic.swap-origin-redirect.http.html]
+  type: testharness
+  [The referrer URL is omitted when a\n                                 document served over http requires an http\n                                 sub-resource via iframe-tag using the attr-referrer\n                                 delivery method with swap-origin-redirect and when\n                                 the target request is same-origin.]
+    expected: FAIL
+
diff --git a/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..d3b57686be7
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[generic.keep-origin-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is omitted when a\n                                 document served over http requires an http\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with keep-origin-redirect and when\n                                 the target request is same-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/img-tag/generic.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/img-tag/generic.no-redirect.http.html.ini
new file mode 100644
index 00000000000..dc56ea234bc
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/img-tag/generic.no-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[generic.no-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is omitted when a\n                                 document served over http requires an http\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with no-redirect and when\n                                 the target request is same-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..58c37ce44c8
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[generic.swap-origin-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is omitted when a\n                                 document served over http requires an http\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with swap-origin-redirect and when\n                                 the target request is same-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..721e74f4a03
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html.ini
@@ -0,0 +1,5 @@
+[generic.keep-origin-redirect.http.html]
+  type: testharness
+  [The referrer URL is omitted when a\n                                 document served over http requires an https\n                                 sub-resource via iframe-tag using the attr-referrer\n                                 delivery method with keep-origin-redirect and when\n                                 the target request is same-origin.]
+    expected: FAIL
+
diff --git a/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/iframe-tag/generic.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/iframe-tag/generic.no-redirect.http.html.ini
new file mode 100644
index 00000000000..a61c0148e4b
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/iframe-tag/generic.no-redirect.http.html.ini
@@ -0,0 +1,5 @@
+[generic.no-redirect.http.html]
+  type: testharness
+  [The referrer URL is omitted when a\n                                 document served over http requires an https\n                                 sub-resource via iframe-tag using the attr-referrer\n                                 delivery method with no-redirect and when\n                                 the target request is same-origin.]
+    expected: FAIL
+
diff --git a/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..49875a6991d
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html.ini
@@ -0,0 +1,5 @@
+[generic.swap-origin-redirect.http.html]
+  type: testharness
+  [The referrer URL is omitted when a\n                                 document served over http requires an https\n                                 sub-resource via iframe-tag using the attr-referrer\n                                 delivery method with swap-origin-redirect and when\n                                 the target request is same-origin.]
+    expected: FAIL
+
diff --git a/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..e440f22ebed
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[generic.keep-origin-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is omitted when a\n                                 document served over http requires an https\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with keep-origin-redirect and when\n                                 the target request is same-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/img-tag/generic.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/img-tag/generic.no-redirect.http.html.ini
new file mode 100644
index 00000000000..5d1e85a94ea
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/img-tag/generic.no-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[generic.no-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is omitted when a\n                                 document served over http requires an https\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with no-redirect and when\n                                 the target request is same-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..04292245c9b
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[generic.swap-origin-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is omitted when a\n                                 document served over http requires an https\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with swap-origin-redirect and when\n                                 the target request is same-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..b9edf4271d6
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html.ini
@@ -0,0 +1,5 @@
+[generic.keep-origin-redirect.http.html]
+  type: testharness
+  [The referrer URL is origin when a\n                                 document served over http requires an http\n                                 sub-resource via iframe-tag using the attr-referrer\n                                 delivery method with keep-origin-redirect and when\n                                 the target request is cross-origin.]
+    expected: FAIL
+
diff --git a/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/cross-origin/http-http/iframe-tag/generic.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/cross-origin/http-http/iframe-tag/generic.no-redirect.http.html.ini
new file mode 100644
index 00000000000..216247e9c56
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/cross-origin/http-http/iframe-tag/generic.no-redirect.http.html.ini
@@ -0,0 +1,5 @@
+[generic.no-redirect.http.html]
+  type: testharness
+  [The referrer URL is origin when a\n                                 document served over http requires an http\n                                 sub-resource via iframe-tag using the attr-referrer\n                                 delivery method with no-redirect and when\n                                 the target request is cross-origin.]
+    expected: FAIL
+
diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/meta-referrer/cross-origin/http-http/script-tag/cross-origin.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/cross-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html.ini
similarity index 75%
rename from testing/web-platform/meta/referrer-policy/origin-when-cross-origin/meta-referrer/cross-origin/http-http/script-tag/cross-origin.swap-origin-redirect.http.html.ini
rename to testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/cross-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html.ini
index 5a65163b2ba..de410491b3f 100644
--- a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/meta-referrer/cross-origin/http-http/script-tag/cross-origin.swap-origin-redirect.http.html.ini
+++ b/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/cross-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html.ini
@@ -1,5 +1,5 @@
-[cross-origin.swap-origin-redirect.http.html]
+[generic.swap-origin-redirect.http.html]
   type: testharness
-  [The referrer URL is origin when a\n                                 document served over http requires an http\n                                 sub-resource via script-tag using the meta-referrer\n                                 delivery method with swap-origin-redirect and when\n                                 the target request is cross-origin.]
+  [The referrer URL is origin when a\n                                 document served over http requires an http\n                                 sub-resource via iframe-tag using the attr-referrer\n                                 delivery method with swap-origin-redirect and when\n                                 the target request is cross-origin.]
     expected: FAIL
 
diff --git a/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..0f7cdaf768c
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[generic.keep-origin-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is origin when a\n                                 document served over http requires an http\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with keep-origin-redirect and when\n                                 the target request is cross-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/cross-origin/http-http/img-tag/generic.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/cross-origin/http-http/img-tag/generic.no-redirect.http.html.ini
new file mode 100644
index 00000000000..f78eb3f8f8d
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/cross-origin/http-http/img-tag/generic.no-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[generic.no-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is origin when a\n                                 document served over http requires an http\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with no-redirect and when\n                                 the target request is cross-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..d2a3409c1b3
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[generic.swap-origin-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is origin when a\n                                 document served over http requires an http\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with swap-origin-redirect and when\n                                 the target request is cross-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/cross-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/cross-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..44db67618fc
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/cross-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html.ini
@@ -0,0 +1,5 @@
+[generic.keep-origin-redirect.http.html]
+  type: testharness
+  [The referrer URL is origin when a\n                                 document served over http requires an https\n                                 sub-resource via iframe-tag using the attr-referrer\n                                 delivery method with keep-origin-redirect and when\n                                 the target request is cross-origin.]
+    expected: FAIL
+
diff --git a/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/cross-origin/http-https/iframe-tag/generic.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/cross-origin/http-https/iframe-tag/generic.no-redirect.http.html.ini
new file mode 100644
index 00000000000..2dfb453f3c1
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/cross-origin/http-https/iframe-tag/generic.no-redirect.http.html.ini
@@ -0,0 +1,5 @@
+[generic.no-redirect.http.html]
+  type: testharness
+  [The referrer URL is origin when a\n                                 document served over http requires an https\n                                 sub-resource via iframe-tag using the attr-referrer\n                                 delivery method with no-redirect and when\n                                 the target request is cross-origin.]
+    expected: FAIL
+
diff --git a/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/cross-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/cross-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..ffbff083d33
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/cross-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html.ini
@@ -0,0 +1,5 @@
+[generic.swap-origin-redirect.http.html]
+  type: testharness
+  [The referrer URL is origin when a\n                                 document served over http requires an https\n                                 sub-resource via iframe-tag using the attr-referrer\n                                 delivery method with swap-origin-redirect and when\n                                 the target request is cross-origin.]
+    expected: FAIL
+
diff --git a/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..79d6d973d2b
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[generic.keep-origin-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is origin when a\n                                 document served over http requires an https\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with keep-origin-redirect and when\n                                 the target request is cross-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/cross-origin/http-https/img-tag/generic.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/cross-origin/http-https/img-tag/generic.no-redirect.http.html.ini
new file mode 100644
index 00000000000..31f18a5a14f
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/cross-origin/http-https/img-tag/generic.no-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[generic.no-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is origin when a\n                                 document served over http requires an https\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with no-redirect and when\n                                 the target request is cross-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..e316e7e1768
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[generic.swap-origin-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is origin when a\n                                 document served over http requires an https\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with swap-origin-redirect and when\n                                 the target request is cross-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/same-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/same-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..52c11c6e4f0
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/same-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html.ini
@@ -0,0 +1,5 @@
+[generic.keep-origin-redirect.http.html]
+  type: testharness
+  [The referrer URL is origin when a\n                                 document served over http requires an http\n                                 sub-resource via iframe-tag using the attr-referrer\n                                 delivery method with keep-origin-redirect and when\n                                 the target request is same-origin.]
+    expected: FAIL
+
diff --git a/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/same-origin/http-http/iframe-tag/generic.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/same-origin/http-http/iframe-tag/generic.no-redirect.http.html.ini
new file mode 100644
index 00000000000..657178e8c63
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/same-origin/http-http/iframe-tag/generic.no-redirect.http.html.ini
@@ -0,0 +1,5 @@
+[generic.no-redirect.http.html]
+  type: testharness
+  [The referrer URL is origin when a\n                                 document served over http requires an http\n                                 sub-resource via iframe-tag using the attr-referrer\n                                 delivery method with no-redirect and when\n                                 the target request is same-origin.]
+    expected: FAIL
+
diff --git a/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/same-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/same-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..296e7a1c3ff
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/same-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html.ini
@@ -0,0 +1,5 @@
+[generic.swap-origin-redirect.http.html]
+  type: testharness
+  [The referrer URL is origin when a\n                                 document served over http requires an http\n                                 sub-resource via iframe-tag using the attr-referrer\n                                 delivery method with swap-origin-redirect and when\n                                 the target request is same-origin.]
+    expected: FAIL
+
diff --git a/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..5e845aa425c
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[generic.keep-origin-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is origin when a\n                                 document served over http requires an http\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with keep-origin-redirect and when\n                                 the target request is same-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/same-origin/http-http/img-tag/generic.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/same-origin/http-http/img-tag/generic.no-redirect.http.html.ini
new file mode 100644
index 00000000000..0add4b2c5b1
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/same-origin/http-http/img-tag/generic.no-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[generic.no-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is origin when a\n                                 document served over http requires an http\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with no-redirect and when\n                                 the target request is same-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..a086ae4d6c7
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[generic.swap-origin-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is origin when a\n                                 document served over http requires an http\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with swap-origin-redirect and when\n                                 the target request is same-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/same-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/same-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..18e39adc570
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/same-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html.ini
@@ -0,0 +1,5 @@
+[generic.keep-origin-redirect.http.html]
+  type: testharness
+  [The referrer URL is origin when a\n                                 document served over http requires an https\n                                 sub-resource via iframe-tag using the attr-referrer\n                                 delivery method with keep-origin-redirect and when\n                                 the target request is same-origin.]
+    expected: FAIL
+
diff --git a/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/same-origin/http-https/iframe-tag/generic.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/same-origin/http-https/iframe-tag/generic.no-redirect.http.html.ini
new file mode 100644
index 00000000000..7bfe801ee1f
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/same-origin/http-https/iframe-tag/generic.no-redirect.http.html.ini
@@ -0,0 +1,5 @@
+[generic.no-redirect.http.html]
+  type: testharness
+  [The referrer URL is origin when a\n                                 document served over http requires an https\n                                 sub-resource via iframe-tag using the attr-referrer\n                                 delivery method with no-redirect and when\n                                 the target request is same-origin.]
+    expected: FAIL
+
diff --git a/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/same-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/same-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..539f11d0eec
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/same-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html.ini
@@ -0,0 +1,5 @@
+[generic.swap-origin-redirect.http.html]
+  type: testharness
+  [The referrer URL is origin when a\n                                 document served over http requires an https\n                                 sub-resource via iframe-tag using the attr-referrer\n                                 delivery method with swap-origin-redirect and when\n                                 the target request is same-origin.]
+    expected: FAIL
+
diff --git a/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..e49bdf3eb3b
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[generic.keep-origin-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is origin when a\n                                 document served over http requires an https\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with keep-origin-redirect and when\n                                 the target request is same-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/same-origin/http-https/img-tag/generic.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/same-origin/http-https/img-tag/generic.no-redirect.http.html.ini
new file mode 100644
index 00000000000..986402e36d8
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/same-origin/http-https/img-tag/generic.no-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[generic.no-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is origin when a\n                                 document served over http requires an https\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with no-redirect and when\n                                 the target request is same-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..a841aa138a9
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/origin-only/attr-referrer/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[generic.swap-origin-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is origin when a\n                                 document served over http requires an https\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with swap-origin-redirect and when\n                                 the target request is same-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-origin.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-origin.keep-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..3255d6c8ec9
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-origin.keep-origin-redirect.http.html.ini
@@ -0,0 +1,5 @@
+[cross-origin.keep-origin-redirect.http.html]
+  type: testharness
+  [The referrer URL is origin when a\n                                 document served over http requires an http\n                                 sub-resource via iframe-tag using the attr-referrer\n                                 delivery method with keep-origin-redirect and when\n                                 the target request is cross-origin.]
+    expected: FAIL
+
diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-origin.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-origin.no-redirect.http.html.ini
new file mode 100644
index 00000000000..575ef9a2fd4
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-origin.no-redirect.http.html.ini
@@ -0,0 +1,5 @@
+[cross-origin.no-redirect.http.html]
+  type: testharness
+  [The referrer URL is origin when a\n                                 document served over http requires an http\n                                 sub-resource via iframe-tag using the attr-referrer\n                                 delivery method with no-redirect and when\n                                 the target request is cross-origin.]
+    expected: FAIL
+
diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/meta-referrer/cross-origin/http-http/iframe-tag/cross-origin.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-origin.swap-origin-redirect.http.html.ini
similarity index 85%
rename from testing/web-platform/meta/referrer-policy/origin-when-cross-origin/meta-referrer/cross-origin/http-http/iframe-tag/cross-origin.swap-origin-redirect.http.html.ini
rename to testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-origin.swap-origin-redirect.http.html.ini
index bc15e3df6d7..e3e55c0580b 100644
--- a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/meta-referrer/cross-origin/http-http/iframe-tag/cross-origin.swap-origin-redirect.http.html.ini
+++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-origin.swap-origin-redirect.http.html.ini
@@ -1,5 +1,5 @@
 [cross-origin.swap-origin-redirect.http.html]
   type: testharness
-  [The referrer URL is origin when a\n                                 document served over http requires an http\n                                 sub-resource via iframe-tag using the meta-referrer\n                                 delivery method with swap-origin-redirect and when\n                                 the target request is cross-origin.]
+  [The referrer URL is origin when a\n                                 document served over http requires an http\n                                 sub-resource via iframe-tag using the attr-referrer\n                                 delivery method with swap-origin-redirect and when\n                                 the target request is cross-origin.]
     expected: FAIL
 
diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-origin.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-origin.keep-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..31b2b244bcc
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-origin.keep-origin-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[cross-origin.keep-origin-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is origin when a\n                                 document served over http requires an http\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with keep-origin-redirect and when\n                                 the target request is cross-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-origin.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-origin.no-redirect.http.html.ini
new file mode 100644
index 00000000000..7ce8da00205
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-origin.no-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[cross-origin.no-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is origin when a\n                                 document served over http requires an http\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with no-redirect and when\n                                 the target request is cross-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-origin.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-origin.swap-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..b01a901e2aa
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-origin.swap-origin-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[cross-origin.swap-origin-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is origin when a\n                                 document served over http requires an http\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with swap-origin-redirect and when\n                                 the target request is cross-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/cross-origin.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/cross-origin.keep-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..1dcd38315ff
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/cross-origin.keep-origin-redirect.http.html.ini
@@ -0,0 +1,5 @@
+[cross-origin.keep-origin-redirect.http.html]
+  type: testharness
+  [The referrer URL is origin when a\n                                 document served over http requires an https\n                                 sub-resource via iframe-tag using the attr-referrer\n                                 delivery method with keep-origin-redirect and when\n                                 the target request is cross-origin.]
+    expected: FAIL
+
diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/cross-origin.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/cross-origin.no-redirect.http.html.ini
new file mode 100644
index 00000000000..46685b6fddc
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/cross-origin.no-redirect.http.html.ini
@@ -0,0 +1,5 @@
+[cross-origin.no-redirect.http.html]
+  type: testharness
+  [The referrer URL is origin when a\n                                 document served over http requires an https\n                                 sub-resource via iframe-tag using the attr-referrer\n                                 delivery method with no-redirect and when\n                                 the target request is cross-origin.]
+    expected: FAIL
+
diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/meta-referrer/cross-origin/http-http/xhr-request/cross-origin.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/cross-origin.swap-origin-redirect.http.html.ini
similarity index 71%
rename from testing/web-platform/meta/referrer-policy/origin-when-cross-origin/meta-referrer/cross-origin/http-http/xhr-request/cross-origin.swap-origin-redirect.http.html.ini
rename to testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/cross-origin.swap-origin-redirect.http.html.ini
index 90fabab5132..36682797611 100644
--- a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/meta-referrer/cross-origin/http-http/xhr-request/cross-origin.swap-origin-redirect.http.html.ini
+++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/cross-origin.swap-origin-redirect.http.html.ini
@@ -1,5 +1,5 @@
 [cross-origin.swap-origin-redirect.http.html]
   type: testharness
-  [The referrer URL is origin when a\n                                 document served over http requires an http\n                                 sub-resource via xhr-request using the meta-referrer\n                                 delivery method with swap-origin-redirect and when\n                                 the target request is cross-origin.]
+  [The referrer URL is origin when a\n                                 document served over http requires an https\n                                 sub-resource via iframe-tag using the attr-referrer\n                                 delivery method with swap-origin-redirect and when\n                                 the target request is cross-origin.]
     expected: FAIL
 
diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/cross-origin.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/cross-origin.keep-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..8f8d39cefdb
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/cross-origin.keep-origin-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[cross-origin.keep-origin-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is origin when a\n                                 document served over http requires an https\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with keep-origin-redirect and when\n                                 the target request is cross-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/cross-origin.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/cross-origin.no-redirect.http.html.ini
new file mode 100644
index 00000000000..02c7e20b5e3
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/cross-origin.no-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[cross-origin.no-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is origin when a\n                                 document served over http requires an https\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with no-redirect and when\n                                 the target request is cross-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/cross-origin.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/cross-origin.swap-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..b75ba38950d
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/cross-origin.swap-origin-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[cross-origin.swap-origin-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is origin when a\n                                 document served over http requires an https\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with swap-origin-redirect and when\n                                 the target request is cross-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-http/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-http/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..1629f1c0876
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-http/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html.ini
@@ -0,0 +1,5 @@
+[same-origin-insecure.swap-origin-redirect.http.html]
+  type: testharness
+  [The referrer URL is origin when a\n                                 document served over http requires an http\n                                 sub-resource via iframe-tag using the attr-referrer\n                                 delivery method with swap-origin-redirect and when\n                                 the target request is same-origin.]
+    expected: FAIL
+
diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-origin-insecure.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-origin-insecure.keep-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..409aa5c5206
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-origin-insecure.keep-origin-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[same-origin-insecure.keep-origin-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is stripped-referrer when a\n                                 document served over http requires an http\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with keep-origin-redirect and when\n                                 the target request is same-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-origin-insecure.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-origin-insecure.no-redirect.http.html.ini
new file mode 100644
index 00000000000..b7f7d9f2014
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-origin-insecure.no-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[same-origin-insecure.no-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is stripped-referrer when a\n                                 document served over http requires an http\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with no-redirect and when\n                                 the target request is same-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-origin-insecure.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-origin-insecure.swap-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..cd47643e2c4
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-origin-insecure.swap-origin-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[same-origin-insecure.swap-origin-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is origin when a\n                                 document served over http requires an http\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with swap-origin-redirect and when\n                                 the target request is same-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/same-origin-downgrade.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/same-origin-downgrade.keep-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..4552d54437a
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/same-origin-downgrade.keep-origin-redirect.http.html.ini
@@ -0,0 +1,5 @@
+[same-origin-downgrade.keep-origin-redirect.http.html]
+  type: testharness
+  [The referrer URL is origin when a\n                                 document served over http requires an https\n                                 sub-resource via iframe-tag using the attr-referrer\n                                 delivery method with keep-origin-redirect and when\n                                 the target request is same-origin.]
+    expected: FAIL
+
diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/same-origin-downgrade.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/same-origin-downgrade.no-redirect.http.html.ini
new file mode 100644
index 00000000000..58ddf2b87b5
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/same-origin-downgrade.no-redirect.http.html.ini
@@ -0,0 +1,5 @@
+[same-origin-downgrade.no-redirect.http.html]
+  type: testharness
+  [The referrer URL is origin when a\n                                 document served over http requires an https\n                                 sub-resource via iframe-tag using the attr-referrer\n                                 delivery method with no-redirect and when\n                                 the target request is same-origin.]
+    expected: FAIL
+
diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/same-origin-downgrade.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/same-origin-downgrade.swap-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..83bff1b06e5
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/same-origin-downgrade.swap-origin-redirect.http.html.ini
@@ -0,0 +1,5 @@
+[same-origin-downgrade.swap-origin-redirect.http.html]
+  type: testharness
+  [The referrer URL is origin when a\n                                 document served over http requires an https\n                                 sub-resource via iframe-tag using the attr-referrer\n                                 delivery method with swap-origin-redirect and when\n                                 the target request is same-origin.]
+    expected: FAIL
+
diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..eb50e15b9e0
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html.ini
@@ -0,0 +1,5 @@
+[same-origin-insecure.swap-origin-redirect.http.html]
+  type: testharness
+  [The referrer URL is origin when a\n                                 document served over http requires an https\n                                 sub-resource via iframe-tag using the attr-referrer\n                                 delivery method with swap-origin-redirect and when\n                                 the target request is same-origin.]
+    expected: FAIL
+
diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/same-origin-upgrade.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/same-origin-upgrade.keep-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..29fd2be7507
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/same-origin-upgrade.keep-origin-redirect.http.html.ini
@@ -0,0 +1,5 @@
+[same-origin-upgrade.keep-origin-redirect.http.html]
+  type: testharness
+  [The referrer URL is origin when a\n                                 document served over http requires an https\n                                 sub-resource via iframe-tag using the attr-referrer\n                                 delivery method with keep-origin-redirect and when\n                                 the target request is same-origin.]
+    expected: FAIL
+
diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/same-origin-upgrade.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/same-origin-upgrade.no-redirect.http.html.ini
new file mode 100644
index 00000000000..09a5fd7f2d8
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/same-origin-upgrade.no-redirect.http.html.ini
@@ -0,0 +1,5 @@
+[same-origin-upgrade.no-redirect.http.html]
+  type: testharness
+  [The referrer URL is origin when a\n                                 document served over http requires an https\n                                 sub-resource via iframe-tag using the attr-referrer\n                                 delivery method with no-redirect and when\n                                 the target request is same-origin.]
+    expected: FAIL
+
diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/same-origin-upgrade.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/same-origin-upgrade.swap-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..821d487f9a8
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/same-origin-upgrade.swap-origin-redirect.http.html.ini
@@ -0,0 +1,5 @@
+[same-origin-upgrade.swap-origin-redirect.http.html]
+  type: testharness
+  [The referrer URL is origin when a\n                                 document served over http requires an https\n                                 sub-resource via iframe-tag using the attr-referrer\n                                 delivery method with swap-origin-redirect and when\n                                 the target request is same-origin.]
+    expected: FAIL
+
diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-downgrade.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-downgrade.keep-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..216696ddf08
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-downgrade.keep-origin-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[same-origin-downgrade.keep-origin-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is origin when a\n                                 document served over http requires an https\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with keep-origin-redirect and when\n                                 the target request is same-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-downgrade.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-downgrade.no-redirect.http.html.ini
new file mode 100644
index 00000000000..f0d4013a548
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-downgrade.no-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[same-origin-downgrade.no-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is origin when a\n                                 document served over http requires an https\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with no-redirect and when\n                                 the target request is same-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-downgrade.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-downgrade.swap-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..0a1ffb30a28
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-downgrade.swap-origin-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[same-origin-downgrade.swap-origin-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is origin when a\n                                 document served over http requires an https\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with swap-origin-redirect and when\n                                 the target request is same-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-insecure.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-insecure.swap-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..346343c09cd
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-insecure.swap-origin-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[same-origin-insecure.swap-origin-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is origin when a\n                                 document served over http requires an https\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with swap-origin-redirect and when\n                                 the target request is same-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-upgrade.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-upgrade.keep-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..e8b178aaea6
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-upgrade.keep-origin-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[same-origin-upgrade.keep-origin-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is origin when a\n                                 document served over http requires an https\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with keep-origin-redirect and when\n                                 the target request is same-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-upgrade.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-upgrade.no-redirect.http.html.ini
new file mode 100644
index 00000000000..2d031704b3f
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-upgrade.no-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[same-origin-upgrade.no-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is origin when a\n                                 document served over http requires an https\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with no-redirect and when\n                                 the target request is same-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-upgrade.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-upgrade.swap-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..405ba8cb0fa
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-upgrade.swap-origin-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[same-origin-upgrade.swap-origin-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is origin when a\n                                 document served over http requires an https\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with swap-origin-redirect and when\n                                 the target request is same-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-csp/cross-origin/http-http/fetch-request/cross-origin.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-csp/cross-origin/http-http/fetch-request/cross-origin.swap-origin-redirect.http.html.ini
deleted file mode 100644
index d7b5155c189..00000000000
--- a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-csp/cross-origin/http-http/fetch-request/cross-origin.swap-origin-redirect.http.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[cross-origin.swap-origin-redirect.http.html]
-  type: testharness
-  [The referrer URL is origin when a\n                                 document served over http requires an http\n                                 sub-resource via fetch-request using the http-csp\n                                 delivery method with swap-origin-redirect and when\n                                 the target request is cross-origin.]
-    expected: FAIL
-
diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-csp/cross-origin/http-http/iframe-tag/cross-origin.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-csp/cross-origin/http-http/iframe-tag/cross-origin.swap-origin-redirect.http.html.ini
deleted file mode 100644
index 61df937570b..00000000000
--- a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-csp/cross-origin/http-http/iframe-tag/cross-origin.swap-origin-redirect.http.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[cross-origin.swap-origin-redirect.http.html]
-  type: testharness
-  [The referrer URL is origin when a\n                                 document served over http requires an http\n                                 sub-resource via iframe-tag using the http-csp\n                                 delivery method with swap-origin-redirect and when\n                                 the target request is cross-origin.]
-    expected: FAIL
-
diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-csp/cross-origin/http-http/script-tag/cross-origin.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-csp/cross-origin/http-http/script-tag/cross-origin.swap-origin-redirect.http.html.ini
deleted file mode 100644
index f787b6b1622..00000000000
--- a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-csp/cross-origin/http-http/script-tag/cross-origin.swap-origin-redirect.http.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[cross-origin.swap-origin-redirect.http.html]
-  type: testharness
-  [The referrer URL is origin when a\n                                 document served over http requires an http\n                                 sub-resource via script-tag using the http-csp\n                                 delivery method with swap-origin-redirect and when\n                                 the target request is cross-origin.]
-    expected: FAIL
-
diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-csp/cross-origin/http-http/xhr-request/cross-origin.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-csp/cross-origin/http-http/xhr-request/cross-origin.swap-origin-redirect.http.html.ini
deleted file mode 100644
index 4116f3783dc..00000000000
--- a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-csp/cross-origin/http-http/xhr-request/cross-origin.swap-origin-redirect.http.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[cross-origin.swap-origin-redirect.http.html]
-  type: testharness
-  [The referrer URL is origin when a\n                                 document served over http requires an http\n                                 sub-resource via xhr-request using the http-csp\n                                 delivery method with swap-origin-redirect and when\n                                 the target request is cross-origin.]
-    expected: FAIL
-
diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/fetch-request/cross-origin.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/fetch-request/cross-origin.swap-origin-redirect.http.html.ini
deleted file mode 100644
index 4e9f41c3fe5..00000000000
--- a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/fetch-request/cross-origin.swap-origin-redirect.http.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[cross-origin.swap-origin-redirect.http.html]
-  type: testharness
-  [The referrer URL is origin when a\n                                 document served over http requires an http\n                                 sub-resource via fetch-request using the meta-csp\n                                 delivery method with swap-origin-redirect and when\n                                 the target request is cross-origin.]
-    expected: FAIL
-
diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.swap-origin-redirect.http.html.ini
deleted file mode 100644
index bc7c4e5269f..00000000000
--- a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.swap-origin-redirect.http.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[cross-origin.swap-origin-redirect.http.html]
-  type: testharness
-  [The referrer URL is origin when a\n                                 document served over http requires an http\n                                 sub-resource via iframe-tag using the meta-csp\n                                 delivery method with swap-origin-redirect and when\n                                 the target request is cross-origin.]
-    expected: FAIL
-
diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/script-tag/cross-origin.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/script-tag/cross-origin.swap-origin-redirect.http.html.ini
deleted file mode 100644
index 71e23abd549..00000000000
--- a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/script-tag/cross-origin.swap-origin-redirect.http.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[cross-origin.swap-origin-redirect.http.html]
-  type: testharness
-  [The referrer URL is origin when a\n                                 document served over http requires an http\n                                 sub-resource via script-tag using the meta-csp\n                                 delivery method with swap-origin-redirect and when\n                                 the target request is cross-origin.]
-    expected: FAIL
-
diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/xhr-request/cross-origin.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/xhr-request/cross-origin.swap-origin-redirect.http.html.ini
deleted file mode 100644
index 5966b5c39e2..00000000000
--- a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/xhr-request/cross-origin.swap-origin-redirect.http.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[cross-origin.swap-origin-redirect.http.html]
-  type: testharness
-  [The referrer URL is origin when a\n                                 document served over http requires an http\n                                 sub-resource via xhr-request using the meta-csp\n                                 delivery method with swap-origin-redirect and when\n                                 the target request is cross-origin.]
-    expected: FAIL
-
diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/meta-referrer/cross-origin/http-http/fetch-request/cross-origin.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/meta-referrer/cross-origin/http-http/fetch-request/cross-origin.swap-origin-redirect.http.html.ini
deleted file mode 100644
index a3fe1f34ef4..00000000000
--- a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/meta-referrer/cross-origin/http-http/fetch-request/cross-origin.swap-origin-redirect.http.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[cross-origin.swap-origin-redirect.http.html]
-  type: testharness
-  [The referrer URL is origin when a\n                                 document served over http requires an http\n                                 sub-resource via fetch-request using the meta-referrer\n                                 delivery method with swap-origin-redirect and when\n                                 the target request is cross-origin.]
-    expected: FAIL
-
diff --git a/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..d357dd11173
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[generic.keep-origin-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is stripped-referrer when a\n                                 document served over http requires an http\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with keep-origin-redirect and when\n                                 the target request is cross-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-http/img-tag/generic.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-http/img-tag/generic.no-redirect.http.html.ini
new file mode 100644
index 00000000000..322f77331d2
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-http/img-tag/generic.no-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[generic.no-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is stripped-referrer when a\n                                 document served over http requires an http\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with no-redirect and when\n                                 the target request is cross-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..81e533666e0
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[generic.swap-origin-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is stripped-referrer when a\n                                 document served over http requires an http\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with swap-origin-redirect and when\n                                 the target request is cross-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..65da9006ee2
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[generic.keep-origin-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is stripped-referrer when a\n                                 document served over http requires an https\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with keep-origin-redirect and when\n                                 the target request is cross-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-https/img-tag/generic.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-https/img-tag/generic.no-redirect.http.html.ini
new file mode 100644
index 00000000000..0a59208d946
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-https/img-tag/generic.no-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[generic.no-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is stripped-referrer when a\n                                 document served over http requires an https\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with no-redirect and when\n                                 the target request is cross-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..da215dfd12f
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[generic.swap-origin-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is stripped-referrer when a\n                                 document served over http requires an https\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with swap-origin-redirect and when\n                                 the target request is cross-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..185b741d0ef
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[generic.keep-origin-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is stripped-referrer when a\n                                 document served over http requires an http\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with keep-origin-redirect and when\n                                 the target request is same-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/same-origin/http-http/img-tag/generic.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/same-origin/http-http/img-tag/generic.no-redirect.http.html.ini
new file mode 100644
index 00000000000..f98b563c84b
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/same-origin/http-http/img-tag/generic.no-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[generic.no-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is stripped-referrer when a\n                                 document served over http requires an http\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with no-redirect and when\n                                 the target request is same-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..2e007b670e5
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[generic.swap-origin-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is stripped-referrer when a\n                                 document served over http requires an http\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with swap-origin-redirect and when\n                                 the target request is same-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..d243a9a96e5
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[generic.keep-origin-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is stripped-referrer when a\n                                 document served over http requires an https\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with keep-origin-redirect and when\n                                 the target request is same-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/same-origin/http-https/img-tag/generic.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/same-origin/http-https/img-tag/generic.no-redirect.http.html.ini
new file mode 100644
index 00000000000..dfba96f711f
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/same-origin/http-https/img-tag/generic.no-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[generic.no-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is stripped-referrer when a\n                                 document served over http requires an https\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with no-redirect and when\n                                 the target request is same-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..1839b1e43a0
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[generic.swap-origin-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is stripped-referrer when a\n                                 document served over http requires an https\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with swap-origin-redirect and when\n                                 the target request is same-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..d357dd11173
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[generic.keep-origin-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is stripped-referrer when a\n                                 document served over http requires an http\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with keep-origin-redirect and when\n                                 the target request is cross-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/img-tag/generic.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/img-tag/generic.no-redirect.http.html.ini
new file mode 100644
index 00000000000..322f77331d2
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/img-tag/generic.no-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[generic.no-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is stripped-referrer when a\n                                 document served over http requires an http\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with no-redirect and when\n                                 the target request is cross-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..81e533666e0
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[generic.swap-origin-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is stripped-referrer when a\n                                 document served over http requires an http\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with swap-origin-redirect and when\n                                 the target request is cross-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..65da9006ee2
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[generic.keep-origin-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is stripped-referrer when a\n                                 document served over http requires an https\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with keep-origin-redirect and when\n                                 the target request is cross-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/img-tag/generic.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/img-tag/generic.no-redirect.http.html.ini
new file mode 100644
index 00000000000..0a59208d946
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/img-tag/generic.no-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[generic.no-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is stripped-referrer when a\n                                 document served over http requires an https\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with no-redirect and when\n                                 the target request is cross-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..da215dfd12f
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[generic.swap-origin-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is stripped-referrer when a\n                                 document served over http requires an https\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with swap-origin-redirect and when\n                                 the target request is cross-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..185b741d0ef
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[generic.keep-origin-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is stripped-referrer when a\n                                 document served over http requires an http\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with keep-origin-redirect and when\n                                 the target request is same-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/img-tag/generic.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/img-tag/generic.no-redirect.http.html.ini
new file mode 100644
index 00000000000..f98b563c84b
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/img-tag/generic.no-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[generic.no-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is stripped-referrer when a\n                                 document served over http requires an http\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with no-redirect and when\n                                 the target request is same-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..2e007b670e5
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[generic.swap-origin-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is stripped-referrer when a\n                                 document served over http requires an http\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with swap-origin-redirect and when\n                                 the target request is same-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..d243a9a96e5
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[generic.keep-origin-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is stripped-referrer when a\n                                 document served over http requires an https\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with keep-origin-redirect and when\n                                 the target request is same-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/img-tag/generic.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/img-tag/generic.no-redirect.http.html.ini
new file mode 100644
index 00000000000..dfba96f711f
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/img-tag/generic.no-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[generic.no-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is stripped-referrer when a\n                                 document served over http requires an https\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with no-redirect and when\n                                 the target request is same-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini
new file mode 100644
index 00000000000..1839b1e43a0
--- /dev/null
+++ b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini
@@ -0,0 +1,6 @@
+[generic.swap-origin-redirect.http.html]
+  type: testharness
+  expected: TIMEOUT
+  [The referrer URL is stripped-referrer when a\n                                 document served over http requires an https\n                                 sub-resource via img-tag using the attr-referrer\n                                 delivery method with swap-origin-redirect and when\n                                 the target request is same-origin.]
+    expected: NOTRUN
+
diff --git a/testing/web-platform/meta/service-workers/cache-storage/serviceworker/__dir__.ini b/testing/web-platform/meta/service-workers/cache-storage/serviceworker/__dir__.ini
index e05911f92d2..7d3a07b3540 100644
--- a/testing/web-platform/meta/service-workers/cache-storage/serviceworker/__dir__.ini
+++ b/testing/web-platform/meta/service-workers/cache-storage/serviceworker/__dir__.ini
@@ -1 +1 @@
-prefs: [dom.serviceWorkers.enabled: true, dom.serviceWorkers.interception.enabled: true, dom.serviceWorkers.exemptFromPerDomainMax:true, dom.caches.enabled:true]
+prefs: [dom.serviceWorkers.enabled: true, dom.serviceWorkers.exemptFromPerDomainMax:true, dom.caches.enabled:true]
diff --git a/testing/web-platform/meta/shadow-dom/untriaged/events/events-that-are-always-stopped/test-001.html.ini b/testing/web-platform/meta/shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-001.html.ini
similarity index 100%
rename from testing/web-platform/meta/shadow-dom/untriaged/events/events-that-are-always-stopped/test-001.html.ini
rename to testing/web-platform/meta/shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-001.html.ini
diff --git a/testing/web-platform/meta/shadow-dom/untriaged/events/events-that-are-always-stopped/test-002.html.ini b/testing/web-platform/meta/shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-002.html.ini
similarity index 100%
rename from testing/web-platform/meta/shadow-dom/untriaged/events/events-that-are-always-stopped/test-002.html.ini
rename to testing/web-platform/meta/shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-002.html.ini
diff --git a/testing/web-platform/meta/shadow-dom/untriaged/events/events-that-are-always-stopped/test-003.html.ini b/testing/web-platform/meta/shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-003.html.ini
similarity index 100%
rename from testing/web-platform/meta/shadow-dom/untriaged/events/events-that-are-always-stopped/test-003.html.ini
rename to testing/web-platform/meta/shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-003.html.ini
diff --git a/testing/web-platform/meta/shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-004.html.ini b/testing/web-platform/meta/shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-004.html.ini
new file mode 100644
index 00000000000..c42babc9552
--- /dev/null
+++ b/testing/web-platform/meta/shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-004.html.ini
@@ -0,0 +1,6 @@
+[test-004.html]
+  type: testharness
+  expected: TIMEOUT
+  [A_05_04_04_T01]
+    expected: TIMEOUT
+
diff --git a/testing/web-platform/meta/shadow-dom/untriaged/events/events-that-are-always-stopped/test-005.html.ini b/testing/web-platform/meta/shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-005.html.ini
similarity index 100%
rename from testing/web-platform/meta/shadow-dom/untriaged/events/events-that-are-always-stopped/test-005.html.ini
rename to testing/web-platform/meta/shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-005.html.ini
diff --git a/testing/web-platform/meta/shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-006.html.ini b/testing/web-platform/meta/shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-006.html.ini
new file mode 100644
index 00000000000..24e93060b6a
--- /dev/null
+++ b/testing/web-platform/meta/shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-006.html.ini
@@ -0,0 +1,6 @@
+[test-006.html]
+  type: testharness
+  expected: TIMEOUT
+  [A_05_04_06_T01]
+    expected: TIMEOUT
+
diff --git a/testing/web-platform/meta/shadow-dom/untriaged/events/events-that-are-always-stopped/test-007.html.ini b/testing/web-platform/meta/shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-007.html.ini
similarity index 100%
rename from testing/web-platform/meta/shadow-dom/untriaged/events/events-that-are-always-stopped/test-007.html.ini
rename to testing/web-platform/meta/shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-007.html.ini
diff --git a/testing/web-platform/meta/shadow-dom/untriaged/events/events-that-are-always-stopped/test-008.html.ini b/testing/web-platform/meta/shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-008.html.ini
similarity index 100%
rename from testing/web-platform/meta/shadow-dom/untriaged/events/events-that-are-always-stopped/test-008.html.ini
rename to testing/web-platform/meta/shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-008.html.ini
diff --git a/testing/web-platform/meta/shadow-dom/untriaged/events/events-that-are-always-stopped/test-009.html.ini b/testing/web-platform/meta/shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-009.html.ini
similarity index 100%
rename from testing/web-platform/meta/shadow-dom/untriaged/events/events-that-are-always-stopped/test-009.html.ini
rename to testing/web-platform/meta/shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-009.html.ini
diff --git a/testing/web-platform/meta/url/a-element.html.ini b/testing/web-platform/meta/url/a-element.html.ini
index 8d296eb1132..459ce4f7c4e 100644
--- a/testing/web-platform/meta/url/a-element.html.ini
+++ b/testing/web-platform/meta/url/a-element.html.ini
@@ -497,3 +497,7 @@
 
   [Parsing:  against ]
     expected: FAIL
+
+  [Parsing:  against ]
+    expected: FAIL
+
diff --git a/testing/web-platform/meta/url/url-constructor.html.ini b/testing/web-platform/meta/url/url-constructor.html.ini
index e3087a04bf3..8a5976bd708 100644
--- a/testing/web-platform/meta/url/url-constructor.html.ini
+++ b/testing/web-platform/meta/url/url-constructor.html.ini
@@ -338,3 +338,7 @@
 
   [Parsing:  against ]
     expected: FAIL
+
+  [Parsing:  against ]
+    expected: FAIL
+
diff --git a/testing/web-platform/meta/web-animations/animatable/animate.html.ini b/testing/web-platform/meta/web-animations/animatable/animate.html.ini
index bb57bc344f6..bd180245576 100644
--- a/testing/web-platform/meta/web-animations/animatable/animate.html.ini
+++ b/testing/web-platform/meta/web-animations/animatable/animate.html.ini
@@ -3,3 +3,4 @@
   [Element.animate() accepts a single-valued keyframe specification]
     expected: FAIL
     bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1216844
+
diff --git a/testing/web-platform/meta/webrtc/rtcpeerconnection/rtcpeerconnection-idl.html.ini b/testing/web-platform/meta/webrtc/rtcpeerconnection/rtcpeerconnection-idl.html.ini
index 95413985286..d9589618e45 100644
--- a/testing/web-platform/meta/webrtc/rtcpeerconnection/rtcpeerconnection-idl.html.ini
+++ b/testing/web-platform/meta/webrtc/rtcpeerconnection/rtcpeerconnection-idl.html.ini
@@ -75,9 +75,6 @@
   [RTCPeerConnection interface: pc must inherit property "iceConnectionState" with the proper type (13)]
     expected: FAIL
 
-  [RTCPeerConnection interface: pc must inherit property "canTrickleIceCandidates" with the proper type (14)]
-    expected: PASS
-
   [RTCPeerConnection interface: pc must inherit property "setConfiguration" with the proper type (16)]
     expected: FAIL
 
@@ -117,9 +114,6 @@
   [RTCPeerConnection interface: operation updateIce(RTCConfiguration)]
     expected: FAIL
 
-  [RTCPeerConnection interface: attribute canTrickleIceCandidates]
-    expected: PASS
-
   [RTCPeerConnection interface: attribute onicegatheringstatechange]
     expected: FAIL
 
diff --git a/testing/web-platform/mozilla/meta/service-workers/service-worker/ServiceWorkerGlobalScope/__dir__.ini b/testing/web-platform/mozilla/meta/service-workers/service-worker/ServiceWorkerGlobalScope/__dir__.ini
index 57c38e8b32b..ae99e9ff719 100644
--- a/testing/web-platform/mozilla/meta/service-workers/service-worker/ServiceWorkerGlobalScope/__dir__.ini
+++ b/testing/web-platform/mozilla/meta/service-workers/service-worker/ServiceWorkerGlobalScope/__dir__.ini
@@ -1,3 +1 @@
-prefs: [dom.serviceWorkers.enabled: true,
-        dom.serviceWorkers.interception.enabled: true,
-        dom.serviceWorkers.interception.opaque.enabled: true]
+prefs: [dom.serviceWorkers.enabled:true]
diff --git a/testing/web-platform/mozilla/meta/service-workers/service-worker/__dir__.ini b/testing/web-platform/mozilla/meta/service-workers/service-worker/__dir__.ini
index 57c38e8b32b..ae99e9ff719 100644
--- a/testing/web-platform/mozilla/meta/service-workers/service-worker/__dir__.ini
+++ b/testing/web-platform/mozilla/meta/service-workers/service-worker/__dir__.ini
@@ -1,3 +1 @@
-prefs: [dom.serviceWorkers.enabled: true,
-        dom.serviceWorkers.interception.enabled: true,
-        dom.serviceWorkers.interception.opaque.enabled: true]
+prefs: [dom.serviceWorkers.enabled:true]
diff --git a/testing/web-platform/tests/IndexedDB/idbindex_get7.htm b/testing/web-platform/tests/IndexedDB/idbindex_get7.htm
index daf0f574968..e28fed4c591 100644
--- a/testing/web-platform/tests/IndexedDB/idbindex_get7.htm
+++ b/testing/web-platform/tests/IndexedDB/idbindex_get7.htm
@@ -17,13 +17,16 @@
         var store = db.createObjectStore("store", { keyPath: "key" });
         var index = store.createIndex("index", "indexedProperty");
         store.add({ key: 1, indexedProperty: "data" });
+    }
+    open_rq.onsuccess = function(e) {
+        db = e.target.result;
+        var tx = db.transaction('store');
+        var index = tx.objectStore('store').index('index');
+        tx.abort();
 
-        e.target.transaction.abort();
-
-        assert_throws("InvalidStateError", function(){
+        assert_throws("TransactionInactiveError", function(){
             index.get("data");
         });
         t.done();
     }
 
-
diff --git a/testing/web-platform/tests/IndexedDB/idbindex_get8.htm b/testing/web-platform/tests/IndexedDB/idbindex_get8.htm
new file mode 100644
index 00000000000..ef67c6d6d22
--- /dev/null
+++ b/testing/web-platform/tests/IndexedDB/idbindex_get8.htm
@@ -0,0 +1,27 @@
+
+
+IDBIndex.get() - throw InvalidStateError on index deleted by aborted upgrade
+
+
+
+
+
+ diff --git a/testing/web-platform/tests/IndexedDB/idbindex_getKey7.htm b/testing/web-platform/tests/IndexedDB/idbindex_getKey7.htm index f41f7635211..c949d39b3aa 100644 --- a/testing/web-platform/tests/IndexedDB/idbindex_getKey7.htm +++ b/testing/web-platform/tests/IndexedDB/idbindex_getKey7.htm @@ -17,13 +17,16 @@ var store = db.createObjectStore("store", { keyPath: "key" }); var index = store.createIndex("index", "indexedProperty"); store.add({ key: 1, indexedProperty: "data" }); + } + open_rq.onsuccess = function(e) { + db = e.target.result; + var tx = db.transaction('store'); + var index = tx.objectStore('store').index('index'); + tx.abort(); - e.target.transaction.abort(); - - assert_throws("InvalidStateError", function(){ + assert_throws("TransactionInactiveError", function(){ index.getKey("data"); }); t.done(); } - diff --git a/testing/web-platform/tests/IndexedDB/idbindex_getKey8.htm b/testing/web-platform/tests/IndexedDB/idbindex_getKey8.htm new file mode 100644 index 00000000000..e46f7bc3617 --- /dev/null +++ b/testing/web-platform/tests/IndexedDB/idbindex_getKey8.htm @@ -0,0 +1,27 @@ + + +IDBIndex.getKey() - throw InvalidStateError on index deleted by aborted upgrade + + + + +
+ diff --git a/testing/web-platform/tests/IndexedDB/idbindex_openCursor2.htm b/testing/web-platform/tests/IndexedDB/idbindex_openCursor2.htm index d39254055f1..7ce967e0b98 100644 --- a/testing/web-platform/tests/IndexedDB/idbindex_openCursor2.htm +++ b/testing/web-platform/tests/IndexedDB/idbindex_openCursor2.htm @@ -17,8 +17,12 @@ var store = db.createObjectStore("store", { keyPath: "key" }); var index = store.createIndex("index", "indexedProperty"); store.add({ key: 1, indexedProperty: "data" }); - - e.target.transaction.abort(); + } + open_rq.onsuccess = function(e) { + db = e.target.result; + var tx = db.transaction('store'); + var index = tx.objectStore('store').index('index'); + tx.abort(); assert_throws("TransactionInactiveError", function(){ index.openCursor(); @@ -26,4 +30,3 @@ t.done(); } - diff --git a/testing/web-platform/tests/IndexedDB/idbindex_openCursor3.htm b/testing/web-platform/tests/IndexedDB/idbindex_openCursor3.htm new file mode 100644 index 00000000000..fea479e9cc1 --- /dev/null +++ b/testing/web-platform/tests/IndexedDB/idbindex_openCursor3.htm @@ -0,0 +1,27 @@ + + +IDBIndex.openCursor() - throw InvalidStateError on index deleted by aborted upgrade + + + + +
+ diff --git a/testing/web-platform/tests/IndexedDB/idbindex_openKeyCursor3.htm b/testing/web-platform/tests/IndexedDB/idbindex_openKeyCursor3.htm index b4af3172417..f009cef49ac 100644 --- a/testing/web-platform/tests/IndexedDB/idbindex_openKeyCursor3.htm +++ b/testing/web-platform/tests/IndexedDB/idbindex_openKeyCursor3.htm @@ -17,8 +17,12 @@ var store = db.createObjectStore("store", { keyPath: "key" }); var index = store.createIndex("index", "indexedProperty"); store.add({ key: 1, indexedProperty: "data" }); - - e.target.transaction.abort(); + } + open_rq.onsuccess = function(e) { + db = e.target.result; + var tx = db.transaction('store'); + var index = tx.objectStore('store').index('index'); + tx.abort(); assert_throws("TransactionInactiveError", function(){ index.openKeyCursor(); @@ -26,4 +30,3 @@ t.done(); } - diff --git a/testing/web-platform/tests/IndexedDB/idbindex_openKeyCursor4.htm b/testing/web-platform/tests/IndexedDB/idbindex_openKeyCursor4.htm new file mode 100644 index 00000000000..bf134dff18a --- /dev/null +++ b/testing/web-platform/tests/IndexedDB/idbindex_openKeyCursor4.htm @@ -0,0 +1,27 @@ + + +IDBIndex.openKeyCursor() - throw InvalidStateError on index deleted by aborted upgrade + + + + +
+ diff --git a/testing/web-platform/tests/WebIDL/ecmascript-binding/has-instance.html b/testing/web-platform/tests/WebIDL/ecmascript-binding/has-instance.html new file mode 100644 index 00000000000..986d27c9b83 --- /dev/null +++ b/testing/web-platform/tests/WebIDL/ecmascript-binding/has-instance.html @@ -0,0 +1,13 @@ + + + + + + diff --git a/testing/web-platform/tests/XMLHttpRequest/event-readystate-sync-open.htm b/testing/web-platform/tests/XMLHttpRequest/event-readystate-sync-open.htm new file mode 100644 index 00000000000..ae9697ea13a --- /dev/null +++ b/testing/web-platform/tests/XMLHttpRequest/event-readystate-sync-open.htm @@ -0,0 +1,33 @@ + + + + XMLHttpRequest: open() call fires sync readystate event + + + + + + +
+ + + diff --git a/testing/web-platform/tests/XMLHttpRequest/open-method-responsetype-set-sync.htm b/testing/web-platform/tests/XMLHttpRequest/open-method-responsetype-set-sync.htm index 543a1390cdd..0b4d814041c 100644 --- a/testing/web-platform/tests/XMLHttpRequest/open-method-responsetype-set-sync.htm +++ b/testing/web-platform/tests/XMLHttpRequest/open-method-responsetype-set-sync.htm @@ -4,7 +4,7 @@ XMLHttpRequest: open() sync request not allowed if responseType is set - + @@ -15,6 +15,9 @@ function request(type) { test(function() { var client = new XMLHttpRequest() + client.onreadystatechange = this.step_func(function(){ + assert_unreached('No events should fire here') + }) client.responseType = type assert_throws("InvalidAccessError", function() { client.open('GET', "...", false) }) }, document.title + " (" + type + ")") diff --git a/testing/web-platform/tests/XMLHttpRequest/responsexml-get-twice.htm b/testing/web-platform/tests/XMLHttpRequest/responsexml-get-twice.htm new file mode 100644 index 00000000000..e86a6d59e51 --- /dev/null +++ b/testing/web-platform/tests/XMLHttpRequest/responsexml-get-twice.htm @@ -0,0 +1,66 @@ + + + + + + diff --git a/testing/web-platform/tests/cssom-view/negativeMargins.html b/testing/web-platform/tests/cssom-view/negativeMargins.html index 910ef457950..0616e8b4999 100644 --- a/testing/web-platform/tests/cssom-view/negativeMargins.html +++ b/testing/web-platform/tests/cssom-view/negativeMargins.html @@ -15,10 +15,10 @@ var inner = document.getElementById('inner'); var outerRect = outer.getBoundingClientRect(); test(function () { - assert_array_equals(document.elementFromPoint(outerRect.left + 1, - outerRect.top + 1), - outer, - "elementFromPoint should get outer element"); + assert_equals(document.elementFromPoint(outerRect.left + 1, + outerRect.top + 1), + outer, + "elementFromPoint should get outer element"); }); test(function () { assert_array_equals(document.elementsFromPoint(outerRect.left + 1, diff --git a/testing/web-platform/tests/dom/historical.html b/testing/web-platform/tests/dom/historical.html index 727a9e73e5c..1f065ed4cd3 100644 --- a/testing/web-platform/tests/dom/historical.html +++ b/testing/web-platform/tests/dom/historical.html @@ -18,6 +18,7 @@ var nukedInterfaces = [ "DOMImplementationSource", "DOMLocator", "DOMObject", + "DOMSettableTokenList", "DOMUserData", "Entity", "EntityReference", diff --git a/testing/web-platform/tests/dom/interface-objects.html b/testing/web-platform/tests/dom/interface-objects.html index 422ae6f8012..df4ca51e477 100644 --- a/testing/web-platform/tests/dom/interface-objects.html +++ b/testing/web-platform/tests/dom/interface-objects.html @@ -31,8 +31,8 @@ var interfaces = [ "NodeFilter", "NodeList", "HTMLCollection", - "DOMTokenList", - ]; + "DOMTokenList" +]; test(function() { for (var p in window) { interfaces.forEach(function(i) { diff --git a/testing/web-platform/tests/dom/interfaces.html b/testing/web-platform/tests/dom/interfaces.html index d84fb69c232..00cf70eb92d 100644 --- a/testing/web-platform/tests/dom/interfaces.html +++ b/testing/web-platform/tests/dom/interfaces.html @@ -460,6 +460,9 @@ interface DOMTokenList { void add(DOMString... tokens); void remove(DOMString... tokens); boolean toggle(DOMString token, optional boolean force); + void replace(DOMString token, DOMString newToken); + boolean supports(DOMString token); + attribute DOMString value; stringifier; // iterable; }; diff --git a/testing/web-platform/tests/dom/nodes/Element-classlist.html b/testing/web-platform/tests/dom/nodes/Element-classlist.html index 8c870305049..92412425103 100644 --- a/testing/web-platform/tests/dom/nodes/Element-classlist.html +++ b/testing/web-platform/tests/dom/nodes/Element-classlist.html @@ -290,15 +290,13 @@ test(function () { assert_false(failed,'an error was thrown'); }, 'classList.length must be read-only'); test(function () { - var failed = false, realList = secondelem.classList; - try { - secondelem.classList = ''; - } catch(e) { - failed = e; - } + var realList = secondelem.classList; + secondelem.classList = 'foo bar'; assert_equals(secondelem.classList,realList); - assert_false(failed,'an error was thrown'); -}, 'classList must be read-only'); + assert_equals(secondelem.classList.length,2); + assert_equals(secondelem.classList[0],'foo'); + assert_equals(secondelem.classList[1],'bar'); +}, 'classList must have [PutForwards=value]'); diff --git a/testing/web-platform/tests/dom/nodes/Node-isEqualNode.html b/testing/web-platform/tests/dom/nodes/Node-isEqualNode.html new file mode 100644 index 00000000000..9ff4c5b03cc --- /dev/null +++ b/testing/web-platform/tests/dom/nodes/Node-isEqualNode.html @@ -0,0 +1,161 @@ + + +Node.prototype.isEqualNode + + + + + diff --git a/testing/web-platform/tests/fetch/api/request/request-clone.sub.html b/testing/web-platform/tests/fetch/api/request/request-clone.sub.html index ae784564d70..40beb650390 100644 --- a/testing/web-platform/tests/fetch/api/request/request-clone.sub.html +++ b/testing/web-platform/tests/fetch/api/request/request-clone.sub.html @@ -11,7 +11,7 @@ diff --git a/testing/web-platform/tests/fetch/api/request/request-consume.html b/testing/web-platform/tests/fetch/api/request/request-consume.html index d0f756dc402..3c45ee6a288 100644 --- a/testing/web-platform/tests/fetch/api/request/request-consume.html +++ b/testing/web-platform/tests/fetch/api/request/request-consume.html @@ -84,6 +84,24 @@ checkRequestBody("This is request's body", "arrayBuffer", checkBodyArrayBuffer); checkRequestBody(JSON.stringify("This is request's body"), "json", checkBodyJSON); checkRequestBody(formData, "formData", checkBodyFormData); + + var goodJSONValues = ["null", "1", "true", "\"string\""]; + goodJSONValues.forEach(function(value) { + promise_test(function(test) { + var request = new Request("", {"method": "POST", "body": value}); + return request.json().then(function(v) { + assert_equals(v, JSON.parse(value)); + }); + }, "Consume JSON from text: '" + JSON.stringify(value) + "'"); + }); + + var badJSONValues = ["undefined", "{", "a", "["]; + badJSONValues.forEach(function(value) { + promise_test(function(test) { + var request = new Request("", {"method": "POST", "body": value}); + return promise_rejects(test, new SyntaxError(), request.json()); + }, "Trying to consume bad JSON text as JSON: '" + value + "'"); + }); diff --git a/testing/web-platform/tests/fetch/api/request/request-structure.html b/testing/web-platform/tests/fetch/api/request/request-structure.html index 2d7d4dba7bf..cbe6cee999f 100644 --- a/testing/web-platform/tests/fetch/api/request/request-structure.html +++ b/testing/web-platform/tests/fetch/api/request/request-structure.html @@ -51,7 +51,7 @@ break; case "headers": - request.headers = new Headers ( {"name":"value"} ); + request.headers = new Headers ({"name":"value"}); assert_false(request.headers.has("name"), "Headers attribute is read only"); return; break; @@ -117,16 +117,18 @@ "Attribute " + attributeToCheck + " is read only. Default value is " + defaultValue); } - for (var idx in methods) + for (var idx in methods) { test(function() { assert_true(methods[idx] in request, "request has " + methods[idx] + " method"); }, "Request has " + methods[idx] + " method"); + } - for (var idx in attributes) + for (var idx in attributes) { test(function() { assert_true(attributes[idx] in request, "request has " + attributes[idx] + " attribute"); IsreadOnly(request, attributes[idx]); }, "Check " + attributes[idx] + " attribute"); + } diff --git a/testing/web-platform/tests/html/browsers/browsing-the-web/scroll-to-fragid/scroll-frag-percent-encoded.html b/testing/web-platform/tests/html/browsers/browsing-the-web/scroll-to-fragid/scroll-frag-percent-encoded.html new file mode 100644 index 00000000000..3196d8be8bb --- /dev/null +++ b/testing/web-platform/tests/html/browsers/browsing-the-web/scroll-to-fragid/scroll-frag-percent-encoded.html @@ -0,0 +1,59 @@ + +Fragment Navigation: fragment id should be percent-decoded + + + + +
+
+
+
+
+
+ diff --git a/testing/web-platform/tests/html/browsers/browsing-the-web/scroll-to-fragid/scroll-to-anchor-name.html b/testing/web-platform/tests/html/browsers/browsing-the-web/scroll-to-fragid/scroll-to-anchor-name.html new file mode 100644 index 00000000000..43dbaf9e297 --- /dev/null +++ b/testing/web-platform/tests/html/browsers/browsing-the-web/scroll-to-fragid/scroll-to-anchor-name.html @@ -0,0 +1,53 @@ + +Fragment Navigation: scroll to anchor name is lower priority than equal id + + + + +
+ +
+ +
+ diff --git a/testing/web-platform/tests/html/browsers/browsing-the-web/scroll-to-fragid/scroll-to-id-top.html b/testing/web-platform/tests/html/browsers/browsing-the-web/scroll-to-fragid/scroll-to-id-top.html new file mode 100644 index 00000000000..601d40a2a1b --- /dev/null +++ b/testing/web-platform/tests/html/browsers/browsing-the-web/scroll-to-fragid/scroll-to-id-top.html @@ -0,0 +1,51 @@ + +Fragment Navigation: TOP is a valid element id, which overrides navigating to top of the document + + + + +
+
+
+ diff --git a/testing/web-platform/tests/html/browsers/browsing-the-web/scroll-to-fragid/scroll-to-top.html b/testing/web-platform/tests/html/browsers/browsing-the-web/scroll-to-fragid/scroll-to-top.html new file mode 100644 index 00000000000..3265a71bf7c --- /dev/null +++ b/testing/web-platform/tests/html/browsers/browsing-the-web/scroll-to-fragid/scroll-to-top.html @@ -0,0 +1,60 @@ + +Fragment Navigation: When fragid is TOP scroll to the top of the document + + + + +
+
+
+ diff --git a/testing/web-platform/tests/html/browsers/history/the-location-interface/location_reload.html b/testing/web-platform/tests/html/browsers/history/the-location-interface/location_reload.html index 513b60afd00..2972abf41a0 100644 --- a/testing/web-platform/tests/html/browsers/history/the-location-interface/location_reload.html +++ b/testing/web-platform/tests/html/browsers/history/the-location-interface/location_reload.html @@ -21,6 +21,7 @@ assert_equals(url, innerURL, "iframe url (" + pingCount + ")"); pingCount++; if (pingCount == 5) { + iframe.src = 'about:blank'; t.done(); } }); diff --git a/testing/web-platform/tests/html/dom/elements-embedded.js b/testing/web-platform/tests/html/dom/elements-embedded.js index 4966abdcf8e..1c45e5ba701 100644 --- a/testing/web-platform/tests/html/dom/elements-embedded.js +++ b/testing/web-platform/tests/html/dom/elements-embedded.js @@ -5,7 +5,7 @@ var embeddedElements = { alt: "string", src: "url", srcset: "string", - crossOrigin: {type: "enum", keywords: ["", "anonymous", "use-credentials"]}, + crossOrigin: {type: "enum", keywords: ["anonymous", "use-credentials"], nonCanon:{"": "anonymous"}, isNullable: true, defaultVal: null, invalidVal: "anonymous"}, useMap: "string", isMap: "boolean", width: {type: "unsigned long", customGetter: true}, @@ -84,7 +84,7 @@ var embeddedElements = { video: { // HTMLMediaElement src: "url", - crossOrigin: {type: "enum", keywords: ["anonymous", "use-credentials"], nonCanon:{"": "anonymous"}}, + crossOrigin: {type: "enum", keywords: ["anonymous", "use-credentials"], nonCanon:{"": "anonymous"}, isNullable: true, defaultVal: null, invalidVal: "anonymous"}, // As with "keytype", we have no missing value default defined here. preload: {type: "enum", keywords: ["none", "metadata", "auto"], nonCanon: {"": "auto"}, defaultVal: null}, autoplay: "boolean", @@ -100,7 +100,7 @@ var embeddedElements = { audio: { // HTMLMediaElement src: "url", - crossOrigin: {type: "enum", keywords: ["anonymous", "use-credentials"], nonCanon:{"": "anonymous"}}, + crossOrigin: {type: "enum", keywords: ["anonymous", "use-credentials"], nonCanon:{"": "anonymous"}, isNullable: true, defaultVal: null, invalidVal: "anonymous"}, // As with "keytype", we have no missing value default defined here. preload: {type: "enum", keywords: ["none", "metadata", "auto"], nonCanon: {"": "auto"}, defaultVal: null}, autoplay: "boolean", diff --git a/testing/web-platform/tests/html/dom/elements-misc.js b/testing/web-platform/tests/html/dom/elements-misc.js index 77cc4cd729a..8990afecfb9 100644 --- a/testing/web-platform/tests/html/dom/elements-misc.js +++ b/testing/web-platform/tests/html/dom/elements-misc.js @@ -13,7 +13,7 @@ var miscElements = { charset: "string", // TODO: async attribute (complicated). defer: "boolean", - crossOrigin: {type: "enum", keywords: ["anonymous", "use-credentials"], nonCanon:{"": "anonymous"}}, + crossOrigin: {type: "enum", keywords: ["anonymous", "use-credentials"], nonCanon:{"": "anonymous"}, isNullable: true, defaultVal: null, invalidVal: "anonymous"}, }, noscript: {}, diff --git a/testing/web-platform/tests/html/dom/interfaces.html b/testing/web-platform/tests/html/dom/interfaces.html index e1d3e6e4292..a9991a1f28e 100644 --- a/testing/web-platform/tests/html/dom/interfaces.html +++ b/testing/web-platform/tests/html/dom/interfaces.html @@ -462,11 +462,12 @@ interface DOMTokenList { void add(DOMString... tokens); void remove(DOMString... tokens); boolean toggle(DOMString token, optional boolean force); - attribute DOMString value; + void replace(DOMString token, DOMString newToken); + boolean supports(DOMString token); + attribute DOMString value; stringifier; // iterable; -}; - +}; + + + + + + + diff --git a/testing/web-platform/tests/html/semantics/document-metadata/the-base-element/base_multiple.html b/testing/web-platform/tests/html/semantics/document-metadata/the-base-element/base_multiple.html index f56fd443bf0..4b7c0d213c9 100644 --- a/testing/web-platform/tests/html/semantics/document-metadata/the-base-element/base_multiple.html +++ b/testing/web-platform/tests/html/semantics/document-metadata/the-base-element/base_multiple.html @@ -5,33 +5,25 @@ - +
diff --git a/testing/web-platform/tests/html/semantics/embedded-content-0/media-elements/video_008.htm b/testing/web-platform/tests/html/semantics/embedded-content-0/media-elements/video_008.htm new file mode 100644 index 00000000000..dff49d82418 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/embedded-content-0/media-elements/video_008.htm @@ -0,0 +1,45 @@ + + + + HTML5 Media Elements: 'media' attribute + + + + + + + + + + +
+ + + + diff --git a/testing/web-platform/tests/html/semantics/embedded-content/media-elements/historical.html b/testing/web-platform/tests/html/semantics/embedded-content/media-elements/historical.html index 408bb21b7a9..99f18b69fc7 100644 --- a/testing/web-platform/tests/html/semantics/embedded-content/media-elements/historical.html +++ b/testing/web-platform/tests/html/semantics/embedded-content/media-elements/historical.html @@ -22,7 +22,6 @@ t('loopCount'); // added in r692, replaced with playCount in r1105. t('currentLoop'); // added in r692, removed in r2401. t('addCuePoint'); // added in r721, replaced with addCueRange in r1106. t('removeCuePoint'); // added in r721, replaced with removeCueRanges in r1106. -t('media', 'source'); // added in r724, removed in r8472. t('playCount'); // added in r1105, removed in r2401. t('addCueRange'); // added in r1106, removed in r5070. t('removeCueRanges'); // added in r1106, removed in r5070. diff --git a/testing/web-platform/tests/html/semantics/forms/the-input-element/checkbox.html b/testing/web-platform/tests/html/semantics/forms/the-input-element/checkbox.html index 054d3444449..d9d3ec9cf93 100644 --- a/testing/web-platform/tests/html/semantics/forms/the-input-element/checkbox.html +++ b/testing/web-platform/tests/html/semantics/forms/the-input-element/checkbox.html @@ -40,7 +40,7 @@ assert_true(c1_click_fired, "input event should fire after click event"); assert_false(c1_change_fired, "input event should fire before change event"); assert_true(e.bubbles, "event should bubble"); - assert_true(e.isTrusted, "event should be trusted"); + assert_false(e.isTrusted, "click()-initiated event should be trusted"); assert_false(e.cancelable, "event should not be cancelable"); assert_true(checkbox1.checked, "checkbox is checked"); assert_false(checkbox1.indeterminate, "checkbox is not indeterminate"); @@ -51,7 +51,7 @@ assert_true(c1_click_fired, "change event should fire after click event"); assert_true(c1_input_fired, "change event should fire after input event"); assert_true(e.bubbles, "event should bubble") - assert_true(e.isTrusted, "event should be trusted"); + assert_false(e.isTrusted, "click()-initiated event should be trusted"); assert_false(e.cancelable, "event should not be cancelable"); assert_true(checkbox1.checked, "checkbox is checked"); assert_false(checkbox1.indeterminate, "checkbox is not indeterminate"); diff --git a/testing/web-platform/tests/html/semantics/forms/the-input-element/radio.html b/testing/web-platform/tests/html/semantics/forms/the-input-element/radio.html index 9f8fe096d52..8eaec42e9cf 100644 --- a/testing/web-platform/tests/html/semantics/forms/the-input-element/radio.html +++ b/testing/web-platform/tests/html/semantics/forms/the-input-element/radio.html @@ -90,7 +90,7 @@ assert_true(click_fired, "input event should fire after click event"); assert_false(change_fired, "input event should fire before change event"); assert_true(e.bubbles, "input event should bubble") - assert_true(e.isTrusted, "input event should be trusted"); + assert_false(e.isTrusted, "click()-initiated input event shouldn't be trusted"); assert_false(e.cancelable, "input event should not be cancelable"); }); @@ -99,7 +99,7 @@ assert_true(click_fired, "change event should fire after click event"); assert_true(input_fired, "change event should fire after input event"); assert_true(e.bubbles, "change event should bubble") - assert_true(e.isTrusted, "change event should be trusted"); + assert_false(e.isTrusted, "click()-initiated change event shouldn't be trusted"); assert_false(e.cancelable, "change event should not be cancelable"); }); diff --git a/testing/web-platform/tests/html/webappapis/scripting/events/inline-event-handler-ordering.html b/testing/web-platform/tests/html/webappapis/scripting/events/inline-event-handler-ordering.html new file mode 100644 index 00000000000..90e29bfd14b --- /dev/null +++ b/testing/web-platform/tests/html/webappapis/scripting/events/inline-event-handler-ordering.html @@ -0,0 +1,52 @@ + + +Inline event handlers retain their ordering even when invalid + + + + + diff --git a/testing/web-platform/tests/html/webappapis/scripting/events/invalid-uncompiled-raw-handler-compiled-once.html b/testing/web-platform/tests/html/webappapis/scripting/events/invalid-uncompiled-raw-handler-compiled-once.html new file mode 100644 index 00000000000..a67f66ead4f --- /dev/null +++ b/testing/web-platform/tests/html/webappapis/scripting/events/invalid-uncompiled-raw-handler-compiled-once.html @@ -0,0 +1,23 @@ + + +Invalid uncompiled raw handlers should only be compiled once. + + + + + diff --git a/testing/web-platform/tests/old-tests/submission/Microsoft/sandbox/sandbox_011.htm b/testing/web-platform/tests/old-tests/submission/Microsoft/sandbox/sandbox_011.htm index 442500fbd3b..ce3ee1a7d01 100644 --- a/testing/web-platform/tests/old-tests/submission/Microsoft/sandbox/sandbox_011.htm +++ b/testing/web-platform/tests/old-tests/submission/Microsoft/sandbox/sandbox_011.htm @@ -13,38 +13,38 @@
+ + + + + + + + + + diff --git a/testing/web-platform/tests/presentation-api/receiving-ua/idlharness.html b/testing/web-platform/tests/presentation-api/receiving-ua/idlharness.html new file mode 100644 index 00000000000..bc091d495b0 --- /dev/null +++ b/testing/web-platform/tests/presentation-api/receiving-ua/idlharness.html @@ -0,0 +1,119 @@ + + +Presentation API IDL tests for Receiving User Agent + + + + + + + + + + + + + diff --git a/testing/web-platform/tests/referrer-policy/generic/common.js b/testing/web-platform/tests/referrer-policy/generic/common.js index 571aef1f79e..ab211f8d2a4 100644 --- a/testing/web-platform/tests/referrer-policy/generic/common.js +++ b/testing/web-platform/tests/referrer-policy/generic/common.js @@ -19,21 +19,33 @@ function parseUrlQueryString(queryString) { return params; }; -function appendIframeToBody(url) { +function appendIframeToBody(url, attributes) { var iframe = document.createElement("iframe"); iframe.src = url; + // Extend element with attributes. (E.g. "referrer_policy" or "rel") + if (attributes) { + for (var attr in attributes) { + iframe[attr] = attributes[attr]; + } + } document.body.appendChild(iframe); return iframe; } -function loadImage(src, callback) { +function loadImage(src, callback, attributes) { var image = new Image(); image.crossOrigin = "Anonymous"; image.onload = function() { callback(image); } image.src = src; + // Extend element with attributes. (E.g. "referrer_policy" or "rel") + if (attributes) { + for (var attr in attributes) { + image[attr] = attributes[attr]; + } + } document.body.appendChild(image) } @@ -61,14 +73,14 @@ function decodeImageData(rgba) { return JSON.parse(string_data); } -function decodeImage(url, callback) { +function decodeImage(url, callback, referrer_policy) { loadImage(url, function(img) { var canvas = document.createElement("canvas"); var context = canvas.getContext('2d'); context.drawImage(img, 0, 0); var imgData = context.getImageData(0, 0, img.clientWidth, img.clientHeight); callback(decodeImageData(imgData.data)) - }); + }, referrer_policy); } function normalizePort(targetPort) { @@ -87,8 +99,8 @@ function wrapResult(url, server_data) { } } -function queryIframe(url, callback) { - var iframe = appendIframeToBody(url); +function queryIframe(url, callback, referrer_policy) { + var iframe = appendIframeToBody(url, referrer_policy); var listener = function(event) { if (event.source != iframe.contentWindow) return; @@ -99,10 +111,10 @@ function queryIframe(url, callback) { window.addEventListener("message", listener); } -function queryImage(url, callback) { +function queryImage(url, callback, referrer_policy) { decodeImage(url, function(server_data) { callback(wrapResult(url, server_data), url); - }) + }, referrer_policy) } function queryXhr(url, callback) { diff --git a/testing/web-platform/tests/referrer-policy/generic/referrer-policy-test-case.js b/testing/web-platform/tests/referrer-policy/generic/referrer-policy-test-case.js index 799c3603937..a2e1887530a 100644 --- a/testing/web-platform/tests/referrer-policy/generic/referrer-policy-test-case.js +++ b/testing/web-platform/tests/referrer-policy/generic/referrer-policy-test-case.js @@ -76,7 +76,7 @@ function ReferrerPolicyTestCase(scenario, testDescription, sanityChecker) { // Depending on the delivery method, extend the subresource element with // these attributes. var elementAttributesForDeliveryMethod = { - "attr-referrer": {referrer: t._scenario.referrer_policy}, + "attr-referrer": {referrerpolicy: t._scenario.referrer_policy}, "rel-noreferrer": {rel: "noreferrer"} }; diff --git a/testing/web-platform/tests/referrer-policy/generic/subresource-test/attr-referrer-invalid-value.html b/testing/web-platform/tests/referrer-policy/generic/subresource-test/attr-referrer-invalid-value.html new file mode 100644 index 00000000000..a90db9b2068 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/generic/subresource-test/attr-referrer-invalid-value.html @@ -0,0 +1,25 @@ + + + + Invalid referrerpolicy attribute value + + + + +

Invalid referrerpolicy attribute value

+
Running...
+ + + + diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html new file mode 100644 index 00000000000..744b51c8194 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html new file mode 100644 index 00000000000..2df26cb5fea --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html new file mode 100644 index 00000000000..e4deefd7546 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html new file mode 100644 index 00000000000..bfaf6dd1698 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html new file mode 100644 index 00000000000..716dc129671 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html new file mode 100644 index 00000000000..04ec21890f8 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html new file mode 100644 index 00000000000..7b56cea286e --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html new file mode 100644 index 00000000000..33dcd5bb22e --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html new file mode 100644 index 00000000000..ef6b85ad5a2 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html new file mode 100644 index 00000000000..0cdd4f6a1c3 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html new file mode 100644 index 00000000000..d09017d0772 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html new file mode 100644 index 00000000000..3e9aabd6ded --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html new file mode 100644 index 00000000000..fc93bcc4877 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html new file mode 100644 index 00000000000..3cdb3cd47ce --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html new file mode 100644 index 00000000000..a40ec4834d9 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html new file mode 100644 index 00000000000..11eb75b9f38 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html new file mode 100644 index 00000000000..e5f474654bd --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html new file mode 100644 index 00000000000..76d32826c57 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html new file mode 100644 index 00000000000..806aaeabd4d --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html new file mode 100644 index 00000000000..b6a846851dc --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html new file mode 100644 index 00000000000..e94f8a708ff --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html new file mode 100644 index 00000000000..6b60b283fbe --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html new file mode 100644 index 00000000000..5e41211abe0 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html new file mode 100644 index 00000000000..b02213bbfca --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html new file mode 100644 index 00000000000..f61f4640a8f --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'no-referrer' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/iframe-tag/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/iframe-tag/generic.no-redirect.http.html new file mode 100644 index 00000000000..12742c3eb6c --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/iframe-tag/generic.no-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'no-referrer' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html new file mode 100644 index 00000000000..18024b3e836 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'no-referrer' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html new file mode 100644 index 00000000000..6ca683ca689 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'no-referrer' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/img-tag/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/img-tag/generic.no-redirect.http.html new file mode 100644 index 00000000000..090c02861e8 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/img-tag/generic.no-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'no-referrer' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html new file mode 100644 index 00000000000..25e98d9ded1 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'no-referrer' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html new file mode 100644 index 00000000000..97df555d50a --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'no-referrer' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/iframe-tag/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/iframe-tag/generic.no-redirect.http.html new file mode 100644 index 00000000000..64ff1944abd --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/iframe-tag/generic.no-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'no-referrer' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html new file mode 100644 index 00000000000..d52fa9a5cf7 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'no-referrer' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html new file mode 100644 index 00000000000..2e90febcf57 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'no-referrer' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/img-tag/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/img-tag/generic.no-redirect.http.html new file mode 100644 index 00000000000..a84ec7b0f72 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/img-tag/generic.no-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'no-referrer' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html new file mode 100644 index 00000000000..0d6093325bc --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'no-referrer' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html new file mode 100644 index 00000000000..46b1f5ed70b --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'no-referrer' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/iframe-tag/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/iframe-tag/generic.no-redirect.http.html new file mode 100644 index 00000000000..4d94b8237c9 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/iframe-tag/generic.no-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'no-referrer' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html new file mode 100644 index 00000000000..6232e22a6b3 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'no-referrer' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html new file mode 100644 index 00000000000..2ce365a3bfe --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'no-referrer' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/img-tag/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/img-tag/generic.no-redirect.http.html new file mode 100644 index 00000000000..23ab82ac7ff --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/img-tag/generic.no-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'no-referrer' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html new file mode 100644 index 00000000000..a79043be68b --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'no-referrer' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html new file mode 100644 index 00000000000..44a56236993 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'no-referrer' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/iframe-tag/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/iframe-tag/generic.no-redirect.http.html new file mode 100644 index 00000000000..e9f26ab4505 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/iframe-tag/generic.no-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'no-referrer' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html new file mode 100644 index 00000000000..0319a318626 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'no-referrer' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html new file mode 100644 index 00000000000..a6442fe47ca --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'no-referrer' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/img-tag/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/img-tag/generic.no-redirect.http.html new file mode 100644 index 00000000000..45cd9643613 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/img-tag/generic.no-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'no-referrer' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html new file mode 100644 index 00000000000..015a0f12213 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'no-referrer' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html new file mode 100644 index 00000000000..163dd73e125 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'origin-only' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/cross-origin/http-http/iframe-tag/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/cross-origin/http-http/iframe-tag/generic.no-redirect.http.html new file mode 100644 index 00000000000..80622625303 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/cross-origin/http-http/iframe-tag/generic.no-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'origin-only' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/cross-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/cross-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html new file mode 100644 index 00000000000..5d10b743605 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/cross-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'origin-only' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html new file mode 100644 index 00000000000..243a1813c68 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'origin-only' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/cross-origin/http-http/img-tag/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/cross-origin/http-http/img-tag/generic.no-redirect.http.html new file mode 100644 index 00000000000..d9125879872 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/cross-origin/http-http/img-tag/generic.no-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'origin-only' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html new file mode 100644 index 00000000000..4b57da3a48d --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'origin-only' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/cross-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/cross-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html new file mode 100644 index 00000000000..635518fc544 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/cross-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'origin-only' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/cross-origin/http-https/iframe-tag/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/cross-origin/http-https/iframe-tag/generic.no-redirect.http.html new file mode 100644 index 00000000000..90db2f5ca7c --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/cross-origin/http-https/iframe-tag/generic.no-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'origin-only' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/cross-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/cross-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html new file mode 100644 index 00000000000..e236d3ec96e --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/cross-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'origin-only' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html new file mode 100644 index 00000000000..0580158c43a --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'origin-only' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/cross-origin/http-https/img-tag/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/cross-origin/http-https/img-tag/generic.no-redirect.http.html new file mode 100644 index 00000000000..56c45590e0a --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/cross-origin/http-https/img-tag/generic.no-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'origin-only' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html new file mode 100644 index 00000000000..773dc18a78f --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'origin-only' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/same-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/same-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html new file mode 100644 index 00000000000..6fa2b5825ef --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/same-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'origin-only' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/same-origin/http-http/iframe-tag/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/same-origin/http-http/iframe-tag/generic.no-redirect.http.html new file mode 100644 index 00000000000..b676690bfc2 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/same-origin/http-http/iframe-tag/generic.no-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'origin-only' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/same-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/same-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html new file mode 100644 index 00000000000..08e77173d7d --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/same-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'origin-only' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html new file mode 100644 index 00000000000..2a96458ec43 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'origin-only' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/same-origin/http-http/img-tag/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/same-origin/http-http/img-tag/generic.no-redirect.http.html new file mode 100644 index 00000000000..333c59b18cf --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/same-origin/http-http/img-tag/generic.no-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'origin-only' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html new file mode 100644 index 00000000000..4384f61abcd --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'origin-only' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/same-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/same-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html new file mode 100644 index 00000000000..49731d06cbc --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/same-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'origin-only' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/same-origin/http-https/iframe-tag/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/same-origin/http-https/iframe-tag/generic.no-redirect.http.html new file mode 100644 index 00000000000..a68b18ee3cc --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/same-origin/http-https/iframe-tag/generic.no-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'origin-only' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/same-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/same-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html new file mode 100644 index 00000000000..e8b52a57fe6 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/same-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'origin-only' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html new file mode 100644 index 00000000000..27a6f188f12 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'origin-only' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/same-origin/http-https/img-tag/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/same-origin/http-https/img-tag/generic.no-redirect.http.html new file mode 100644 index 00000000000..aad4487c82d --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/same-origin/http-https/img-tag/generic.no-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'origin-only' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html new file mode 100644 index 00000000000..d91f7743264 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/origin-only/attr-referrer/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'origin-only' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-origin.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-origin.keep-origin-redirect.http.html new file mode 100644 index 00000000000..9a203751137 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-origin.keep-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'origin-when-crossorigin' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-origin.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-origin.no-redirect.http.html new file mode 100644 index 00000000000..f6259f9ef80 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-origin.no-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'origin-when-crossorigin' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-origin.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-origin.swap-origin-redirect.http.html new file mode 100644 index 00000000000..117e704b743 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-origin.swap-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'origin-when-crossorigin' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-origin.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-origin.keep-origin-redirect.http.html new file mode 100644 index 00000000000..80530e61768 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-origin.keep-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'origin-when-crossorigin' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-origin.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-origin.no-redirect.http.html new file mode 100644 index 00000000000..0f3ad410f58 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-origin.no-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'origin-when-crossorigin' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-origin.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-origin.swap-origin-redirect.http.html new file mode 100644 index 00000000000..c6115d5432c --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-origin.swap-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'origin-when-crossorigin' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/cross-origin.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/cross-origin.keep-origin-redirect.http.html new file mode 100644 index 00000000000..97a5fdefb98 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/cross-origin.keep-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'origin-when-crossorigin' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/cross-origin.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/cross-origin.no-redirect.http.html new file mode 100644 index 00000000000..17745edfecd --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/cross-origin.no-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'origin-when-crossorigin' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/cross-origin.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/cross-origin.swap-origin-redirect.http.html new file mode 100644 index 00000000000..c88c22fb33d --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/cross-origin.swap-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'origin-when-crossorigin' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/cross-origin.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/cross-origin.keep-origin-redirect.http.html new file mode 100644 index 00000000000..e3ede1f5e1e --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/cross-origin.keep-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'origin-when-crossorigin' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/cross-origin.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/cross-origin.no-redirect.http.html new file mode 100644 index 00000000000..d8a41c61e39 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/cross-origin.no-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'origin-when-crossorigin' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/cross-origin.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/cross-origin.swap-origin-redirect.http.html new file mode 100644 index 00000000000..61578704c28 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/cross-origin.swap-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'origin-when-crossorigin' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-http/iframe-tag/same-origin-insecure.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-http/iframe-tag/same-origin-insecure.keep-origin-redirect.http.html new file mode 100644 index 00000000000..1c0c88bddd8 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-http/iframe-tag/same-origin-insecure.keep-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'origin-when-crossorigin' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-http/iframe-tag/same-origin-insecure.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-http/iframe-tag/same-origin-insecure.no-redirect.http.html new file mode 100644 index 00000000000..195fabe37ba --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-http/iframe-tag/same-origin-insecure.no-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'origin-when-crossorigin' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-http/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-http/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html new file mode 100644 index 00000000000..79699e833d2 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-http/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'origin-when-crossorigin' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-origin-insecure.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-origin-insecure.keep-origin-redirect.http.html new file mode 100644 index 00000000000..9bfb1481ab4 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-origin-insecure.keep-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'origin-when-crossorigin' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-origin-insecure.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-origin-insecure.no-redirect.http.html new file mode 100644 index 00000000000..0d8c6a66518 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-origin-insecure.no-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'origin-when-crossorigin' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-origin-insecure.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-origin-insecure.swap-origin-redirect.http.html new file mode 100644 index 00000000000..0845a9958a2 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-origin-insecure.swap-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'origin-when-crossorigin' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/same-origin-downgrade.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/same-origin-downgrade.keep-origin-redirect.http.html new file mode 100644 index 00000000000..cc978bafd18 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/same-origin-downgrade.keep-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'origin-when-crossorigin' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/same-origin-downgrade.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/same-origin-downgrade.no-redirect.http.html new file mode 100644 index 00000000000..f6936357031 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/same-origin-downgrade.no-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'origin-when-crossorigin' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/same-origin-downgrade.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/same-origin-downgrade.swap-origin-redirect.http.html new file mode 100644 index 00000000000..2867614e54a --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/same-origin-downgrade.swap-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'origin-when-crossorigin' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html new file mode 100644 index 00000000000..2867614e54a --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'origin-when-crossorigin' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/same-origin-upgrade.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/same-origin-upgrade.keep-origin-redirect.http.html new file mode 100644 index 00000000000..cc978bafd18 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/same-origin-upgrade.keep-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'origin-when-crossorigin' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/same-origin-upgrade.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/same-origin-upgrade.no-redirect.http.html new file mode 100644 index 00000000000..f6936357031 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/same-origin-upgrade.no-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'origin-when-crossorigin' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/same-origin-upgrade.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/same-origin-upgrade.swap-origin-redirect.http.html new file mode 100644 index 00000000000..2867614e54a --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/same-origin-upgrade.swap-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'origin-when-crossorigin' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-downgrade.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-downgrade.keep-origin-redirect.http.html new file mode 100644 index 00000000000..c01d0bb83b4 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-downgrade.keep-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'origin-when-crossorigin' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-downgrade.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-downgrade.no-redirect.http.html new file mode 100644 index 00000000000..d617b07b835 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-downgrade.no-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'origin-when-crossorigin' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-downgrade.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-downgrade.swap-origin-redirect.http.html new file mode 100644 index 00000000000..ed3a47cef81 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-downgrade.swap-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'origin-when-crossorigin' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-insecure.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-insecure.swap-origin-redirect.http.html new file mode 100644 index 00000000000..ed3a47cef81 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-insecure.swap-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'origin-when-crossorigin' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-upgrade.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-upgrade.keep-origin-redirect.http.html new file mode 100644 index 00000000000..c01d0bb83b4 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-upgrade.keep-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'origin-when-crossorigin' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-upgrade.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-upgrade.no-redirect.http.html new file mode 100644 index 00000000000..d617b07b835 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-upgrade.no-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'origin-when-crossorigin' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-upgrade.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-upgrade.swap-origin-redirect.http.html new file mode 100644 index 00000000000..ed3a47cef81 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-upgrade.swap-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'origin-when-crossorigin' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/spec.src.json b/testing/web-platform/tests/referrer-policy/spec.src.json index c97759ddae7..1c793c3364b 100644 --- a/testing/web-platform/tests/referrer-policy/spec.src.json +++ b/testing/web-platform/tests/referrer-policy/spec.src.json @@ -12,7 +12,7 @@ "expansion": "default", "source_protocol": "*", "target_protocol": "*", - "delivery_method": ["http-csp", "meta-referrer", "meta-csp"], + "delivery_method": ["http-csp", "meta-referrer", "meta-csp", "attr-referrer"], "redirection": "*", "origin": "*", "subresource": "*", @@ -32,7 +32,7 @@ "expansion": "default", "source_protocol": "*", "target_protocol": "*", - "delivery_method": ["http-csp", "meta-referrer", "meta-csp"], + "delivery_method": ["http-csp", "meta-referrer", "meta-csp", "attr-referrer"], "redirection": "*", "origin": "*", "subresource": "*", @@ -52,7 +52,7 @@ "expansion": "default", "source_protocol": "http", "target_protocol": "http", - "delivery_method": ["http-csp", "meta-referrer", "meta-csp"], + "delivery_method": ["http-csp", "meta-referrer", "meta-csp", "attr-referrer"], "redirection": "*", "origin": "*", "subresource": "*", @@ -63,7 +63,7 @@ "expansion": "default", "source_protocol": "http", "target_protocol": "https", - "delivery_method": ["http-csp", "meta-referrer", "meta-csp"], + "delivery_method": ["http-csp", "meta-referrer", "meta-csp", "attr-referrer"], "redirection": "*", "origin": "*", "subresource": "*", @@ -74,7 +74,7 @@ "expansion": "default", "source_protocol": "https", "target_protocol": "http", - "delivery_method": ["http-csp", "meta-referrer", "meta-csp"], + "delivery_method": ["http-csp", "meta-referrer", "meta-csp", "attr-referrer"], "redirection": "*", "origin": "*", "subresource": "*", @@ -85,7 +85,7 @@ "expansion": "default", "source_protocol": "https", "target_protocol": "https", - "delivery_method": ["http-csp", "meta-referrer", "meta-csp"], + "delivery_method": ["http-csp", "meta-referrer", "meta-csp", "attr-referrer"], "redirection": "*", "origin": "*", "subresource": "*", @@ -105,7 +105,7 @@ "expansion": "default", "source_protocol": "*", "target_protocol": "*", - "delivery_method": ["http-csp", "meta-referrer", "meta-csp"], + "delivery_method": ["http-csp", "meta-referrer", "meta-csp", "attr-referrer"], "redirection": "*", "origin": "*", "subresource": "*", @@ -125,7 +125,7 @@ "expansion": "default", "source_protocol": "http", "target_protocol": "http", - "delivery_method": ["http-csp", "meta-referrer", "meta-csp"], + "delivery_method": ["http-csp", "meta-referrer", "meta-csp", "attr-referrer"], "redirection": "*", "origin": "same-origin", "subresource": "*", @@ -136,7 +136,7 @@ "expansion": "default", "source_protocol": "https", "target_protocol": "https", - "delivery_method": ["http-csp", "meta-referrer", "meta-csp"], + "delivery_method": ["http-csp", "meta-referrer", "meta-csp", "attr-referrer"], "redirection": "*", "origin": "same-origin", "subresource": "*", @@ -147,7 +147,7 @@ "expansion": "default", "source_protocol": "http", "target_protocol": "https", - "delivery_method": ["http-csp", "meta-referrer", "meta-csp"], + "delivery_method": ["http-csp", "meta-referrer", "meta-csp", "attr-referrer"], "redirection": "*", "origin": "same-origin", "subresource": "*", @@ -158,7 +158,7 @@ "expansion": "default", "source_protocol": "http", "target_protocol": "https", - "delivery_method": ["http-csp", "meta-referrer", "meta-csp"], + "delivery_method": ["http-csp", "meta-referrer", "meta-csp", "attr-referrer"], "redirection": "*", "origin": "same-origin", "subresource": "*", @@ -169,7 +169,7 @@ "expansion": "override", "source_protocol": "*", "target_protocol": "*", - "delivery_method": ["http-csp", "meta-referrer", "meta-csp"], + "delivery_method": ["http-csp", "meta-referrer", "meta-csp", "attr-referrer"], "redirection": "swap-origin-redirect", "origin": "same-origin", "subresource": "*", @@ -180,7 +180,7 @@ "expansion": "default", "source_protocol": "*", "target_protocol": "*", - "delivery_method": ["http-csp", "meta-referrer", "meta-csp"], + "delivery_method": ["http-csp", "meta-referrer", "meta-csp", "attr-referrer"], "redirection": "*", "origin": "cross-origin", "subresource": "*", @@ -200,7 +200,7 @@ "expansion": "default", "source_protocol": "*", "target_protocol": "*", - "delivery_method": ["http-csp", "meta-referrer", "meta-csp"], + "delivery_method": ["http-csp", "meta-referrer", "meta-csp", "attr-referrer"], "redirection": "*", "origin": "*", "subresource": "*", @@ -245,11 +245,27 @@ "referrer_url": "*" }, { - "name": "elements-not-supporting-attr-referrer-or-rel-noreferrer", + "name": "elements-not-supporting-attr-referrer", "expansion": "*", "source_protocol": "*", "target_protocol": "*", - "delivery_method": ["attr-referrer", "rel-noreferrer"], + "delivery_method": ["attr-referrer"], + "redirection": "*", + "origin": "*", + "subresource": [ + "script-tag", + "xhr-request", + "worker-request", + "fetch-request" + ], + "referrer_url": "*" + }, + { + "name": "elements-not-supporting-rel-noreferrer", + "expansion": "*", + "source_protocol": "*", + "target_protocol": "*", + "delivery_method": ["rel-noreferrer"], "redirection": "*", "origin": "*", "subresource": [ diff --git a/testing/web-platform/tests/referrer-policy/spec_json.js b/testing/web-platform/tests/referrer-policy/spec_json.js index fc82f35563f..399c6bcf8dd 100644 --- a/testing/web-platform/tests/referrer-policy/spec_json.js +++ b/testing/web-platform/tests/referrer-policy/spec_json.js @@ -1 +1 @@ -var SPEC_JSON = {"subresource_path": {"img-tag": "/referrer-policy/generic/subresource/image.py", "fetch-request": "/referrer-policy/generic/subresource/xhr.py", "a-tag": "/referrer-policy/generic/subresource/document.py", "area-tag": "/referrer-policy/generic/subresource/document.py", "iframe-tag": "/referrer-policy/generic/subresource/document.py", "xhr-request": "/referrer-policy/generic/subresource/xhr.py", "worker-request": "/referrer-policy/generic/subresource/worker.py", "script-tag": "/referrer-policy/generic/subresource/script.py"}, "test_expansion_schema": {"origin": ["same-origin", "cross-origin"], "subresource": ["iframe-tag", "img-tag", "script-tag", "a-tag", "area-tag", "xhr-request", "worker-request", "fetch-request"], "target_protocol": ["http", "https"], "expansion": ["default", "override"], "delivery_method": ["http-csp", "meta-referrer", "meta-csp", "attr-referrer", "rel-noreferrer"], "redirection": ["no-redirect", "keep-origin-redirect", "swap-origin-redirect"], "referrer_url": ["omitted", "origin", "stripped-referrer"], "source_protocol": ["http", "https"]}, "specification": [{"specification_url": "https://w3c.github.io/webappsec/specs/referrer-policy/#referrer-policy-states", "referrer_policy": null, "title": "Referrer Policy is not explicitly defined", "test_expansion": [{"origin": "*", "name": "generic", "target_protocol": "*", "expansion": "default", "delivery_method": ["http-csp", "meta-referrer", "meta-csp"], "redirection": "*", "referrer_url": "stripped-referrer", "source_protocol": "*", "subresource": "*"}], "name": "unset-referrer-policy", "description": "Check that sub-resource gets the referrer URL when no explicit Referrer Policy is set."}, {"specification_url": "https://w3c.github.io/webappsec/specs/referrer-policy/#referrer-policy-state-no-referrer", "referrer_policy": "no-referrer", "title": "Referrer Policy is set to 'no-referrer'", "test_expansion": [{"origin": "*", "name": "generic", "target_protocol": "*", "expansion": "default", "delivery_method": ["http-csp", "meta-referrer", "meta-csp"], "redirection": "*", "referrer_url": "omitted", "source_protocol": "*", "subresource": "*"}], "name": "no-referrer", "description": "Check that sub-resource never gets the referrer URL."}, {"specification_url": "https://w3c.github.io/webappsec/specs/referrer-policy/#referrer-policy-state-no-referrer-when-downgrade", "referrer_policy": "no-referrer-when-downgrade", "title": "Referrer Policy is set to 'no-referrer-when-downgrade'", "test_expansion": [{"origin": "*", "name": "insecure-protocol", "target_protocol": "http", "expansion": "default", "delivery_method": ["http-csp", "meta-referrer", "meta-csp"], "redirection": "*", "referrer_url": "stripped-referrer", "source_protocol": "http", "subresource": "*"}, {"origin": "*", "name": "upgrade-protocol", "target_protocol": "https", "expansion": "default", "delivery_method": ["http-csp", "meta-referrer", "meta-csp"], "redirection": "*", "referrer_url": "stripped-referrer", "source_protocol": "http", "subresource": "*"}, {"origin": "*", "name": "downgrade-protocol", "target_protocol": "http", "expansion": "default", "delivery_method": ["http-csp", "meta-referrer", "meta-csp"], "redirection": "*", "referrer_url": "origin", "source_protocol": "https", "subresource": "*"}, {"origin": "*", "name": "secure-protocol", "target_protocol": "https", "expansion": "default", "delivery_method": ["http-csp", "meta-referrer", "meta-csp"], "redirection": "*", "referrer_url": "stripped-referrer", "source_protocol": "https", "subresource": "*"}], "name": "no-referrer-when-downgrade", "description": "Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information."}, {"specification_url": "https://w3c.github.io/webappsec/specs/referrer-policy/#referrer-policy-state-origin", "referrer_policy": "origin", "title": "Referrer Policy is set to 'origin-only'", "test_expansion": [{"origin": "*", "name": "generic", "target_protocol": "*", "expansion": "default", "delivery_method": ["http-csp", "meta-referrer", "meta-csp"], "redirection": "*", "referrer_url": "origin", "source_protocol": "*", "subresource": "*"}], "name": "origin-only", "description": "Check that all subresources in all casses get only the origin portion of the referrer URL."}, {"specification_url": "https://w3c.github.io/webappsec/specs/referrer-policy/#referrer-policy-state-origin-when-cross-origin", "referrer_policy": "origin-when-crossorigin", "title": "Referrer Policy is set to 'origin-when-crossorigin'", "test_expansion": [{"origin": "same-origin", "name": "same-origin-insecure", "target_protocol": "http", "expansion": "default", "delivery_method": ["http-csp", "meta-referrer", "meta-csp"], "redirection": "*", "referrer_url": "stripped-referrer", "source_protocol": "http", "subresource": "*"}, {"origin": "same-origin", "name": "same-origin-secure-default", "target_protocol": "https", "expansion": "default", "delivery_method": ["http-csp", "meta-referrer", "meta-csp"], "redirection": "*", "referrer_url": "stripped-referrer", "source_protocol": "https", "subresource": "*"}, {"origin": "same-origin", "name": "same-origin-upgrade", "target_protocol": "https", "expansion": "default", "delivery_method": ["http-csp", "meta-referrer", "meta-csp"], "redirection": "*", "referrer_url": "origin", "source_protocol": "http", "subresource": "*"}, {"origin": "same-origin", "name": "same-origin-downgrade", "target_protocol": "https", "expansion": "default", "delivery_method": ["http-csp", "meta-referrer", "meta-csp"], "redirection": "*", "referrer_url": "origin", "source_protocol": "http", "subresource": "*"}, {"origin": "same-origin", "name": "same-origin-insecure", "target_protocol": "*", "expansion": "override", "delivery_method": ["http-csp", "meta-referrer", "meta-csp"], "redirection": "swap-origin-redirect", "referrer_url": "origin", "source_protocol": "*", "subresource": "*"}, {"origin": "cross-origin", "name": "cross-origin", "target_protocol": "*", "expansion": "default", "delivery_method": ["http-csp", "meta-referrer", "meta-csp"], "redirection": "*", "referrer_url": "origin", "source_protocol": "*", "subresource": "*"}], "name": "origin-when-cross-origin", "description": "Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL."}, {"specification_url": "https://w3c.github.io/webappsec/specs/referrer-policy/#referrer-policy-state-unsafe-url", "referrer_policy": "unsafe-url", "title": "Referrer Policy is set to 'unsafe-url'", "test_expansion": [{"origin": "*", "name": "generic", "target_protocol": "*", "expansion": "default", "delivery_method": ["http-csp", "meta-referrer", "meta-csp"], "redirection": "*", "referrer_url": "stripped-referrer", "source_protocol": "*", "subresource": "*"}], "name": "unsafe-url", "description": "Check that all sub-resources get the stripped referrer URL."}], "referrer_policy_schema": [null, "no-referrer", "no-referrer-when-downgrade", "origin", "origin-when-crossorigin", "unsafe-url"], "excluded_tests": [{"origin": "cross-origin", "name": "cross-origin-workers", "target_protocol": "*", "expansion": "*", "delivery_method": "*", "redirection": "*", "referrer_url": "*", "source_protocol": "*", "subresource": "worker-request"}, {"origin": "*", "name": "upgraded-protocol-workers", "target_protocol": "https", "expansion": "*", "delivery_method": "*", "redirection": "*", "referrer_url": "*", "source_protocol": "http", "subresource": "worker-request"}, {"origin": "*", "name": "mixed-content-insecure-subresources", "target_protocol": "http", "expansion": "*", "delivery_method": "*", "redirection": "*", "referrer_url": "*", "source_protocol": "https", "subresource": "*"}, {"origin": "*", "name": "elements-not-supporting-attr-referrer-or-rel-noreferrer", "target_protocol": "*", "expansion": "*", "delivery_method": ["attr-referrer", "rel-noreferrer"], "redirection": "*", "referrer_url": "*", "source_protocol": "*", "subresource": ["iframe-tag", "img-tag", "script-tag", "xhr-request", "worker-request", "fetch-request", "area-tag"]}, {"origin": "*", "name": "area-tag", "target_protocol": "*", "expansion": "*", "delivery_method": "*", "redirection": "*", "referrer_url": "*", "source_protocol": "*", "subresource": "area-tag"}, {"origin": "*", "name": "worker-requests-with-swap-origin-redirect", "target_protocol": "*", "expansion": "*", "delivery_method": "*", "redirection": "swap-origin-redirect", "referrer_url": "*", "source_protocol": "*", "subresource": ["worker-request"]}, {"origin": "*", "name": "overhead-for-redirection", "target_protocol": "*", "expansion": "*", "delivery_method": "*", "redirection": ["keep-origin-redirect", "swap-origin-redirect"], "referrer_url": "*", "source_protocol": "*", "subresource": ["a-tag", "area-tag"]}, {"origin": "*", "name": "source-https-unsupported-by-web-platform-tests-runners", "target_protocol": "*", "expansion": "*", "delivery_method": "*", "redirection": "*", "referrer_url": "*", "source_protocol": "https", "subresource": "*"}]}; +var SPEC_JSON = {"subresource_path": {"img-tag": "/referrer-policy/generic/subresource/image.py", "fetch-request": "/referrer-policy/generic/subresource/xhr.py", "a-tag": "/referrer-policy/generic/subresource/document.py", "area-tag": "/referrer-policy/generic/subresource/document.py", "iframe-tag": "/referrer-policy/generic/subresource/document.py", "xhr-request": "/referrer-policy/generic/subresource/xhr.py", "worker-request": "/referrer-policy/generic/subresource/worker.py", "script-tag": "/referrer-policy/generic/subresource/script.py"}, "test_expansion_schema": {"origin": ["same-origin", "cross-origin"], "subresource": ["iframe-tag", "img-tag", "script-tag", "a-tag", "area-tag", "xhr-request", "worker-request", "fetch-request"], "target_protocol": ["http", "https"], "expansion": ["default", "override"], "delivery_method": ["http-csp", "meta-referrer", "meta-csp", "attr-referrer", "rel-noreferrer"], "redirection": ["no-redirect", "keep-origin-redirect", "swap-origin-redirect"], "referrer_url": ["omitted", "origin", "stripped-referrer"], "source_protocol": ["http", "https"]}, "specification": [{"specification_url": "https://w3c.github.io/webappsec/specs/referrer-policy/#referrer-policy-states", "referrer_policy": null, "title": "Referrer Policy is not explicitly defined", "test_expansion": [{"origin": "*", "name": "generic", "target_protocol": "*", "expansion": "default", "delivery_method": ["http-csp", "meta-referrer", "meta-csp", "attr-referrer"], "redirection": "*", "referrer_url": "stripped-referrer", "source_protocol": "*", "subresource": "*"}], "name": "unset-referrer-policy", "description": "Check that sub-resource gets the referrer URL when no explicit Referrer Policy is set."}, {"specification_url": "https://w3c.github.io/webappsec/specs/referrer-policy/#referrer-policy-state-no-referrer", "referrer_policy": "no-referrer", "title": "Referrer Policy is set to 'no-referrer'", "test_expansion": [{"origin": "*", "name": "generic", "target_protocol": "*", "expansion": "default", "delivery_method": ["http-csp", "meta-referrer", "meta-csp", "attr-referrer"], "redirection": "*", "referrer_url": "omitted", "source_protocol": "*", "subresource": "*"}], "name": "no-referrer", "description": "Check that sub-resource never gets the referrer URL."}, {"specification_url": "https://w3c.github.io/webappsec/specs/referrer-policy/#referrer-policy-state-no-referrer-when-downgrade", "referrer_policy": "no-referrer-when-downgrade", "title": "Referrer Policy is set to 'no-referrer-when-downgrade'", "test_expansion": [{"origin": "*", "name": "insecure-protocol", "target_protocol": "http", "expansion": "default", "delivery_method": ["http-csp", "meta-referrer", "meta-csp", "attr-referrer"], "redirection": "*", "referrer_url": "stripped-referrer", "source_protocol": "http", "subresource": "*"}, {"origin": "*", "name": "upgrade-protocol", "target_protocol": "https", "expansion": "default", "delivery_method": ["http-csp", "meta-referrer", "meta-csp", "attr-referrer"], "redirection": "*", "referrer_url": "stripped-referrer", "source_protocol": "http", "subresource": "*"}, {"origin": "*", "name": "downgrade-protocol", "target_protocol": "http", "expansion": "default", "delivery_method": ["http-csp", "meta-referrer", "meta-csp", "attr-referrer"], "redirection": "*", "referrer_url": "origin", "source_protocol": "https", "subresource": "*"}, {"origin": "*", "name": "secure-protocol", "target_protocol": "https", "expansion": "default", "delivery_method": ["http-csp", "meta-referrer", "meta-csp", "attr-referrer"], "redirection": "*", "referrer_url": "stripped-referrer", "source_protocol": "https", "subresource": "*"}], "name": "no-referrer-when-downgrade", "description": "Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information."}, {"specification_url": "https://w3c.github.io/webappsec/specs/referrer-policy/#referrer-policy-state-origin", "referrer_policy": "origin", "title": "Referrer Policy is set to 'origin-only'", "test_expansion": [{"origin": "*", "name": "generic", "target_protocol": "*", "expansion": "default", "delivery_method": ["http-csp", "meta-referrer", "meta-csp", "attr-referrer"], "redirection": "*", "referrer_url": "origin", "source_protocol": "*", "subresource": "*"}], "name": "origin-only", "description": "Check that all subresources in all casses get only the origin portion of the referrer URL."}, {"specification_url": "https://w3c.github.io/webappsec/specs/referrer-policy/#referrer-policy-state-origin-when-cross-origin", "referrer_policy": "origin-when-crossorigin", "title": "Referrer Policy is set to 'origin-when-crossorigin'", "test_expansion": [{"origin": "same-origin", "name": "same-origin-insecure", "target_protocol": "http", "expansion": "default", "delivery_method": ["http-csp", "meta-referrer", "meta-csp", "attr-referrer"], "redirection": "*", "referrer_url": "stripped-referrer", "source_protocol": "http", "subresource": "*"}, {"origin": "same-origin", "name": "same-origin-secure-default", "target_protocol": "https", "expansion": "default", "delivery_method": ["http-csp", "meta-referrer", "meta-csp", "attr-referrer"], "redirection": "*", "referrer_url": "stripped-referrer", "source_protocol": "https", "subresource": "*"}, {"origin": "same-origin", "name": "same-origin-upgrade", "target_protocol": "https", "expansion": "default", "delivery_method": ["http-csp", "meta-referrer", "meta-csp", "attr-referrer"], "redirection": "*", "referrer_url": "origin", "source_protocol": "http", "subresource": "*"}, {"origin": "same-origin", "name": "same-origin-downgrade", "target_protocol": "https", "expansion": "default", "delivery_method": ["http-csp", "meta-referrer", "meta-csp", "attr-referrer"], "redirection": "*", "referrer_url": "origin", "source_protocol": "http", "subresource": "*"}, {"origin": "same-origin", "name": "same-origin-insecure", "target_protocol": "*", "expansion": "override", "delivery_method": ["http-csp", "meta-referrer", "meta-csp", "attr-referrer"], "redirection": "swap-origin-redirect", "referrer_url": "origin", "source_protocol": "*", "subresource": "*"}, {"origin": "cross-origin", "name": "cross-origin", "target_protocol": "*", "expansion": "default", "delivery_method": ["http-csp", "meta-referrer", "meta-csp", "attr-referrer"], "redirection": "*", "referrer_url": "origin", "source_protocol": "*", "subresource": "*"}], "name": "origin-when-cross-origin", "description": "Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL."}, {"specification_url": "https://w3c.github.io/webappsec/specs/referrer-policy/#referrer-policy-state-unsafe-url", "referrer_policy": "unsafe-url", "title": "Referrer Policy is set to 'unsafe-url'", "test_expansion": [{"origin": "*", "name": "generic", "target_protocol": "*", "expansion": "default", "delivery_method": ["http-csp", "meta-referrer", "meta-csp", "attr-referrer"], "redirection": "*", "referrer_url": "stripped-referrer", "source_protocol": "*", "subresource": "*"}], "name": "unsafe-url", "description": "Check that all sub-resources get the stripped referrer URL."}], "referrer_policy_schema": [null, "no-referrer", "no-referrer-when-downgrade", "origin", "origin-when-crossorigin", "unsafe-url"], "excluded_tests": [{"origin": "cross-origin", "name": "cross-origin-workers", "target_protocol": "*", "expansion": "*", "delivery_method": "*", "redirection": "*", "referrer_url": "*", "source_protocol": "*", "subresource": "worker-request"}, {"origin": "*", "name": "upgraded-protocol-workers", "target_protocol": "https", "expansion": "*", "delivery_method": "*", "redirection": "*", "referrer_url": "*", "source_protocol": "http", "subresource": "worker-request"}, {"origin": "*", "name": "mixed-content-insecure-subresources", "target_protocol": "http", "expansion": "*", "delivery_method": "*", "redirection": "*", "referrer_url": "*", "source_protocol": "https", "subresource": "*"}, {"origin": "*", "name": "elements-not-supporting-attr-referrer", "target_protocol": "*", "expansion": "*", "delivery_method": ["attr-referrer"], "redirection": "*", "referrer_url": "*", "source_protocol": "*", "subresource": ["script-tag", "xhr-request", "worker-request", "fetch-request"]}, {"origin": "*", "name": "elements-not-supporting-rel-noreferrer", "target_protocol": "*", "expansion": "*", "delivery_method": ["rel-noreferrer"], "redirection": "*", "referrer_url": "*", "source_protocol": "*", "subresource": ["iframe-tag", "img-tag", "script-tag", "xhr-request", "worker-request", "fetch-request", "area-tag"]}, {"origin": "*", "name": "area-tag", "target_protocol": "*", "expansion": "*", "delivery_method": "*", "redirection": "*", "referrer_url": "*", "source_protocol": "*", "subresource": "area-tag"}, {"origin": "*", "name": "worker-requests-with-swap-origin-redirect", "target_protocol": "*", "expansion": "*", "delivery_method": "*", "redirection": "swap-origin-redirect", "referrer_url": "*", "source_protocol": "*", "subresource": ["worker-request"]}, {"origin": "*", "name": "overhead-for-redirection", "target_protocol": "*", "expansion": "*", "delivery_method": "*", "redirection": ["keep-origin-redirect", "swap-origin-redirect"], "referrer_url": "*", "source_protocol": "*", "subresource": ["a-tag", "area-tag"]}, {"origin": "*", "name": "source-https-unsupported-by-web-platform-tests-runners", "target_protocol": "*", "expansion": "*", "delivery_method": "*", "redirection": "*", "referrer_url": "*", "source_protocol": "https", "subresource": "*"}]}; diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html new file mode 100644 index 00000000000..cd97460de03 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'unsafe-url' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-http/iframe-tag/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-http/iframe-tag/generic.no-redirect.http.html new file mode 100644 index 00000000000..8f9ee244e38 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-http/iframe-tag/generic.no-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'unsafe-url' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html new file mode 100644 index 00000000000..300d115c815 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'unsafe-url' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html new file mode 100644 index 00000000000..49a6327a8a5 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'unsafe-url' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-http/img-tag/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-http/img-tag/generic.no-redirect.http.html new file mode 100644 index 00000000000..3166967a5d3 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-http/img-tag/generic.no-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'unsafe-url' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html new file mode 100644 index 00000000000..93e6518c3b8 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'unsafe-url' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html new file mode 100644 index 00000000000..4662f3aef7f --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'unsafe-url' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-https/iframe-tag/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-https/iframe-tag/generic.no-redirect.http.html new file mode 100644 index 00000000000..84682dc96a2 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-https/iframe-tag/generic.no-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'unsafe-url' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html new file mode 100644 index 00000000000..6699fc77f1e --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'unsafe-url' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html new file mode 100644 index 00000000000..7c435fa22c4 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'unsafe-url' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-https/img-tag/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-https/img-tag/generic.no-redirect.http.html new file mode 100644 index 00000000000..67844b794ea --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-https/img-tag/generic.no-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'unsafe-url' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html new file mode 100644 index 00000000000..0f29f22b957 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'unsafe-url' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/same-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/same-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html new file mode 100644 index 00000000000..e4ee2f1093b --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/same-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'unsafe-url' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/same-origin/http-http/iframe-tag/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/same-origin/http-http/iframe-tag/generic.no-redirect.http.html new file mode 100644 index 00000000000..abb26f38441 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/same-origin/http-http/iframe-tag/generic.no-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'unsafe-url' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/same-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/same-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html new file mode 100644 index 00000000000..a0e57405858 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/same-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'unsafe-url' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html new file mode 100644 index 00000000000..a580b058c71 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'unsafe-url' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/same-origin/http-http/img-tag/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/same-origin/http-http/img-tag/generic.no-redirect.http.html new file mode 100644 index 00000000000..123cbfe821b --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/same-origin/http-http/img-tag/generic.no-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'unsafe-url' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html new file mode 100644 index 00000000000..9a4a3c08b93 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'unsafe-url' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/same-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/same-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html new file mode 100644 index 00000000000..9ac747a9811 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/same-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'unsafe-url' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/same-origin/http-https/iframe-tag/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/same-origin/http-https/iframe-tag/generic.no-redirect.http.html new file mode 100644 index 00000000000..fa150ad22d9 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/same-origin/http-https/iframe-tag/generic.no-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'unsafe-url' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/same-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/same-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html new file mode 100644 index 00000000000..8fc6d28f1c1 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/same-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'unsafe-url' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html new file mode 100644 index 00000000000..c57f2702f9f --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'unsafe-url' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/same-origin/http-https/img-tag/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/same-origin/http-https/img-tag/generic.no-redirect.http.html new file mode 100644 index 00000000000..520d0d1d787 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/same-origin/http-https/img-tag/generic.no-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'unsafe-url' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html new file mode 100644 index 00000000000..74dd8c6c7b0 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/unsafe-url/attr-referrer/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'unsafe-url' + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html new file mode 100644 index 00000000000..d23e0a04545 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is not explicitly defined + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/iframe-tag/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/iframe-tag/generic.no-redirect.http.html new file mode 100644 index 00000000000..fa68896adb7 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/iframe-tag/generic.no-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is not explicitly defined + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html new file mode 100644 index 00000000000..887ad2b5bd1 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is not explicitly defined + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html new file mode 100644 index 00000000000..2e072ce8a64 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is not explicitly defined + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/img-tag/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/img-tag/generic.no-redirect.http.html new file mode 100644 index 00000000000..a555f9c486f --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/img-tag/generic.no-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is not explicitly defined + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html new file mode 100644 index 00000000000..236a2c55e07 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is not explicitly defined + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html new file mode 100644 index 00000000000..ae20c485fa2 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is not explicitly defined + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/iframe-tag/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/iframe-tag/generic.no-redirect.http.html new file mode 100644 index 00000000000..16f48aa2576 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/iframe-tag/generic.no-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is not explicitly defined + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html new file mode 100644 index 00000000000..f3473f2aa29 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is not explicitly defined + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html new file mode 100644 index 00000000000..ba3bd0b1216 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is not explicitly defined + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/img-tag/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/img-tag/generic.no-redirect.http.html new file mode 100644 index 00000000000..beab5f3b1a3 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/img-tag/generic.no-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is not explicitly defined + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html new file mode 100644 index 00000000000..6b2d09fc78b --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is not explicitly defined + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html new file mode 100644 index 00000000000..2a2bcc07203 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is not explicitly defined + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/iframe-tag/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/iframe-tag/generic.no-redirect.http.html new file mode 100644 index 00000000000..84d48f6ece1 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/iframe-tag/generic.no-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is not explicitly defined + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html new file mode 100644 index 00000000000..2589a863d88 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is not explicitly defined + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html new file mode 100644 index 00000000000..4561103882e --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is not explicitly defined + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/img-tag/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/img-tag/generic.no-redirect.http.html new file mode 100644 index 00000000000..f82790ac9bd --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/img-tag/generic.no-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is not explicitly defined + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html new file mode 100644 index 00000000000..3f7d476c6c9 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is not explicitly defined + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html new file mode 100644 index 00000000000..99d99d7f5a3 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is not explicitly defined + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/iframe-tag/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/iframe-tag/generic.no-redirect.http.html new file mode 100644 index 00000000000..e6ac450fdc8 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/iframe-tag/generic.no-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is not explicitly defined + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html new file mode 100644 index 00000000000..4aedef5c0de --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is not explicitly defined + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html new file mode 100644 index 00000000000..1165a51a1a0 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is not explicitly defined + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/img-tag/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/img-tag/generic.no-redirect.http.html new file mode 100644 index 00000000000..1427e3e5ef0 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/img-tag/generic.no-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is not explicitly defined + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html new file mode 100644 index 00000000000..7be250b2f8a --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is not explicitly defined + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/tests/selectors/attribute-selectors/attribute-case/cssom.html b/testing/web-platform/tests/selectors/attribute-selectors/attribute-case/cssom.html index 4b1c7d3bcc1..af5de10eb9d 100644 --- a/testing/web-platform/tests/selectors/attribute-selectors/attribute-case/cssom.html +++ b/testing/web-platform/tests/selectors/attribute-selectors/attribute-case/cssom.html @@ -41,13 +41,6 @@ tests.forEach(function(arr) { assert_equals(sheet.cssRules[0].cssText.substr(0, expected.length), expected); }, input + ' getting CSSRule#cssText' + use_media); - test(function() { - var sheet = new_sheet(use_media); - sheet.insertRule('before_set {}', 0); - sheet.cssRules[0].cssText = input + ' {}'; - assert_equals(sheet.cssRules[0].cssText.substr(0, expected.length), expected); - }, input + ' setting CSSRule#cssText' + use_media); - test(function() { var sheet = new_sheet(use_media); sheet.insertRule(input + ' {}', 0); diff --git a/testing/web-platform/tests/shadow-dom/untriaged/events/events-that-are-always-stopped/test-001.html b/testing/web-platform/tests/shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-001.html similarity index 74% rename from testing/web-platform/tests/shadow-dom/untriaged/events/events-that-are-always-stopped/test-001.html rename to testing/web-platform/tests/shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-001.html index e93bc840afc..df8b30bb092 100644 --- a/testing/web-platform/tests/shadow-dom/untriaged/events/events-that-are-always-stopped/test-001.html +++ b/testing/web-platform/tests/shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-001.html @@ -13,7 +13,7 @@ policies and contribution forms [3]. Shadow DOM Test: A_05_04_01 - + @@ -40,20 +40,22 @@ A_05_04_01_T01.step(unit(function (ctx) { inp1.setAttribute('id', 'inp1'); inp1.setAttribute('type', 'checkbox'); s.appendChild(inp1); + var pass = false; s.addEventListener('abort', A_05_04_01_T01.step_func(function(event) { - assert_equals(event.target.getAttribute('id'), 'inp1', 'Inside shadoe tree: Wrong target'); + assert_equals(event.target.getAttribute('id'), 'inp1', 'Inside shadow tree: Wrong target'); + pass = true; }), false); d.body.addEventListener('abort', A_05_04_01_T01.step_func(function(event) { - assert_true(false, 'Abort event should always be stopped at Shadow boundary'); + assert_true(pass, 'Abort event should first happen in shadow root, and check if the target is correct'); + assert_true(true, 'Abort event should not be stopped at Shadow boundary if created by users'); + A_05_04_01_T01.done(); }), false); var event = d.createEvent('UIEvent'); event.initUIEvent ('abort', true, false); inp1.dispatchEvent(event); - - A_05_04_01_T01.done(); })); diff --git a/testing/web-platform/tests/shadow-dom/untriaged/events/events-that-are-always-stopped/test-002.html b/testing/web-platform/tests/shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-002.html similarity index 74% rename from testing/web-platform/tests/shadow-dom/untriaged/events/events-that-are-always-stopped/test-002.html rename to testing/web-platform/tests/shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-002.html index c4d9ec2bc40..3c98212ce77 100644 --- a/testing/web-platform/tests/shadow-dom/untriaged/events/events-that-are-always-stopped/test-002.html +++ b/testing/web-platform/tests/shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-002.html @@ -13,7 +13,7 @@ policies and contribution forms [3]. Shadow DOM Test: A_05_04_02 - + @@ -40,20 +40,23 @@ A_05_04_02_T01.step(unit(function (ctx) { inp1.setAttribute('id', 'inp1'); inp1.setAttribute('type', 'checkbox'); s.appendChild(inp1); + var pass = false; s.addEventListener('error', A_05_04_02_T01.step_func(function(event) { - assert_equals(event.target.getAttribute('id'), 'inp1', 'Inside shadoe tree: Wrong target'); + assert_equals(event.target.getAttribute('id'), 'inp1', 'Inside shadow tree: Wrong target'); + pass = true; }), false); d.body.addEventListener('error', A_05_04_02_T01.step_func(function(event) { - assert_true(false, 'error event should always be stopped at Shadow boundary'); + assert_true(pass, 'Error event should first happen in shadow root, and check if the target is correct'); + assert_true(true, 'Error event should not be stopped at Shadow boundary if created by users'); + A_05_04_02_T01.done(); }), false); var event = d.createEvent('UIEvent'); event.initUIEvent ('error', true, false); inp1.dispatchEvent(event); - A_05_04_02_T01.done(); })); diff --git a/testing/web-platform/tests/shadow-dom/untriaged/events/events-that-are-always-stopped/test-003.html b/testing/web-platform/tests/shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-003.html similarity index 74% rename from testing/web-platform/tests/shadow-dom/untriaged/events/events-that-are-always-stopped/test-003.html rename to testing/web-platform/tests/shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-003.html index f5674f5ae26..e351e6ccd8f 100644 --- a/testing/web-platform/tests/shadow-dom/untriaged/events/events-that-are-always-stopped/test-003.html +++ b/testing/web-platform/tests/shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-003.html @@ -13,7 +13,7 @@ policies and contribution forms [3]. Shadow DOM Test: A_05_04_03 - + @@ -41,20 +41,23 @@ A_05_04_03_T01.step(unit(function (ctx) { inp1.setAttribute('type', 'text'); inp1.setAttribute('value', '12345'); s.appendChild(inp1); + var pass = false; s.addEventListener('select', A_05_04_03_T01.step_func(function(event) { - assert_equals(event.target.getAttribute('id'), 'inp1', 'Inside shadoe tree: Wrong target'); + assert_equals(event.target.getAttribute('id'), 'inp1', 'Inside shadow tree: Wrong target'); + pass = true; }), false); d.body.addEventListener('select', A_05_04_03_T01.step_func(function(event) { - assert_true(false, 'select event should always be stopped at Shadow boundary'); + assert_true(pass, 'Select event should first happen in shadow root, and check if the target is correct'); + assert_true(true, 'Select event should not be stopped at Shadow boundary if created by users'); + A_05_04_03_T01.done(); }), false); var event = d.createEvent('UIEvent'); event.initUIEvent ('select', true, false); inp1.dispatchEvent(event); - A_05_04_03_T01.done(); })); diff --git a/testing/web-platform/tests/shadow-dom/untriaged/events/events-that-are-always-stopped/test-004.html b/testing/web-platform/tests/shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-004.html similarity index 74% rename from testing/web-platform/tests/shadow-dom/untriaged/events/events-that-are-always-stopped/test-004.html rename to testing/web-platform/tests/shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-004.html index 56c7be9d514..98252beedec 100644 --- a/testing/web-platform/tests/shadow-dom/untriaged/events/events-that-are-always-stopped/test-004.html +++ b/testing/web-platform/tests/shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-004.html @@ -13,7 +13,7 @@ policies and contribution forms [3]. Shadow DOM Test: A_05_04_04 - + @@ -41,20 +41,23 @@ A_05_04_04_T01.step(unit(function (ctx) { inp1.setAttribute('type', 'text'); inp1.setAttribute('value', '12345'); s.appendChild(inp1); + var pass = false; s.addEventListener('change', A_05_04_04_T01.step_func(function(event) { - assert_equals(event.target.getAttribute('id'), 'inp1', 'Inside shadoe tree: Wrong target'); + assert_equals(event.target.getAttribute('id'), 'inp1', 'Inside shadow tree: Wrong target'); + pass = true; }), false); d.body.addEventListener('change', A_05_04_04_T01.step_func(function(event) { - assert_true(false, 'change event should always be stopped at Shadow boundary'); + assert_true(pass, 'Change event should first happen in shadow root, and check if the target is correct'); + assert_true(true, 'Change event should not be stopped at Shadow boundary if created by users'); + A_05_04_04_T01.done(); }), false); var event = d.createEvent('HTMLEvents'); event.initEvent ('change', true, false); inp1.dispatchEvent(event); - A_05_04_04_T01.done(); })); diff --git a/testing/web-platform/tests/shadow-dom/untriaged/events/events-that-are-always-stopped/test-005.html b/testing/web-platform/tests/shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-005.html similarity index 75% rename from testing/web-platform/tests/shadow-dom/untriaged/events/events-that-are-always-stopped/test-005.html rename to testing/web-platform/tests/shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-005.html index f2b8cad556a..2aad1e48197 100644 --- a/testing/web-platform/tests/shadow-dom/untriaged/events/events-that-are-always-stopped/test-005.html +++ b/testing/web-platform/tests/shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-005.html @@ -13,7 +13,7 @@ policies and contribution forms [3]. Shadow DOM Test: A_05_04_05 - + @@ -41,20 +41,23 @@ A_05_04_05_T01.step(unit(function (ctx) { inp1.setAttribute('type', 'text'); inp1.setAttribute('value', '12345'); s.appendChild(inp1); + var pass = false; s.addEventListener('load', A_05_04_05_T01.step_func(function(event) { - assert_equals(event.target.getAttribute('id'), 'inp1', 'Inside shadoe tree: Wrong target'); + assert_equals(event.target.getAttribute('id'), 'inp1', 'Inside shadow tree: Wrong target'); + pass = true; }), false); d.body.addEventListener('load', A_05_04_05_T01.step_func(function(event) { - assert_true(false, 'load event should always be stopped at Shadow boundary'); + assert_true(pass, 'Load event should first happen in shadow root, and check if the target is correct'); + assert_true(true, 'Load event should not be stopped at Shadow boundary if created by users'); + A_05_04_05_T01.done(); }), false); var event = d.createEvent('UIEvent'); event.initUIEvent ('load', true, false); inp1.dispatchEvent(event); - A_05_04_05_T01.done(); })); diff --git a/testing/web-platform/tests/shadow-dom/untriaged/events/events-that-are-always-stopped/test-006.html b/testing/web-platform/tests/shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-006.html similarity index 75% rename from testing/web-platform/tests/shadow-dom/untriaged/events/events-that-are-always-stopped/test-006.html rename to testing/web-platform/tests/shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-006.html index a055fd4d394..67212c8a45f 100644 --- a/testing/web-platform/tests/shadow-dom/untriaged/events/events-that-are-always-stopped/test-006.html +++ b/testing/web-platform/tests/shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-006.html @@ -13,7 +13,7 @@ policies and contribution forms [3]. Shadow DOM Test: A_05_04_06 - + @@ -41,20 +41,23 @@ A_05_04_06_T01.step(unit(function (ctx) { inp1.setAttribute('type', 'text'); inp1.setAttribute('value', '12345'); s.appendChild(inp1); + var pass = false; s.addEventListener('reset', A_05_04_06_T01.step_func(function(event) { - assert_equals(event.target.getAttribute('id'), 'inp1', 'Inside shadoe tree: Wrong target'); + assert_equals(event.target.getAttribute('id'), 'inp1', 'Inside shadow tree: Wrong target'); + pass = true; }), false); d.body.addEventListener('reset', A_05_04_06_T01.step_func(function(event) { - assert_true(false, 'reset event should always be stopped at Shadow boundary'); + assert_true(pass, 'Reset event should first happen in shadow root, and check if the target is correct'); + assert_true(true, 'Reset event should not be stopped at Shadow boundary if created by users'); + A_05_04_06_T01.done(); }), false); var event = d.createEvent('HTMLEvents'); event.initEvent ('reset', true, false); inp1.dispatchEvent(event); - A_05_04_06_T01.done(); })); diff --git a/testing/web-platform/tests/shadow-dom/untriaged/events/events-that-are-always-stopped/test-007.html b/testing/web-platform/tests/shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-007.html similarity index 74% rename from testing/web-platform/tests/shadow-dom/untriaged/events/events-that-are-always-stopped/test-007.html rename to testing/web-platform/tests/shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-007.html index c9db1cd94d7..a208f59b878 100644 --- a/testing/web-platform/tests/shadow-dom/untriaged/events/events-that-are-always-stopped/test-007.html +++ b/testing/web-platform/tests/shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-007.html @@ -13,7 +13,7 @@ policies and contribution forms [3]. Shadow DOM Test: A_05_04_07 - + @@ -41,20 +41,23 @@ A_05_04_07_T01.step(unit(function (ctx) { inp1.setAttribute('type', 'text'); inp1.setAttribute('value', '12345'); s.appendChild(inp1); + var pass = false; s.addEventListener('resize', A_05_04_07_T01.step_func(function(event) { - assert_equals(event.target.getAttribute('id'), 'inp1', 'Inside shadoe tree: Wrong target'); + assert_equals(event.target.getAttribute('id'), 'inp1', 'Inside shadow tree: Wrong target'); + pass = true; }), false); d.body.addEventListener('resize', A_05_04_07_T01.step_func(function(event) { - assert_true(false, 'resize event should always be stopped at Shadow boundary'); + assert_true(pass, 'Resize event should first happen in shadow root, and check if the target is correct'); + assert_true(true, 'Resize event should not be stopped at Shadow boundary if created by users'); + A_05_04_07_T01.done(); }), false); var event = d.createEvent('UIEvent'); event.initUIEvent ('resize', true, false); inp1.dispatchEvent(event); - A_05_04_07_T01.done(); })); diff --git a/testing/web-platform/tests/shadow-dom/untriaged/events/events-that-are-always-stopped/test-008.html b/testing/web-platform/tests/shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-008.html similarity index 74% rename from testing/web-platform/tests/shadow-dom/untriaged/events/events-that-are-always-stopped/test-008.html rename to testing/web-platform/tests/shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-008.html index f251a0c1a84..95ca483e7d5 100644 --- a/testing/web-platform/tests/shadow-dom/untriaged/events/events-that-are-always-stopped/test-008.html +++ b/testing/web-platform/tests/shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-008.html @@ -13,7 +13,7 @@ policies and contribution forms [3]. Shadow DOM Test: A_05_04_08 - + @@ -41,20 +41,23 @@ A_05_04_08_T01.step(unit(function (ctx) { inp1.setAttribute('type', 'text'); inp1.setAttribute('value', '12345'); s.appendChild(inp1); + var pass = false; s.addEventListener('scroll', A_05_04_08_T01.step_func(function(event) { - assert_equals(event.target.getAttribute('id'), 'inp1', 'Inside shadoe tree: Wrong target'); + assert_equals(event.target.getAttribute('id'), 'inp1', 'Inside shadow tree: Wrong target'); + pass = true; }), false); d.body.addEventListener('scroll', A_05_04_08_T01.step_func(function(event) { - assert_true(false, 'scroll event should always be stopped at Shadow boundary'); + assert_true(pass, 'Scroll event should first happen in shadow root, and check if the target is correct'); + assert_true(true, 'Scroll event should not be stopped at Shadow boundary if created by users'); + A_05_04_08_T01.done(); }), false); var event = d.createEvent('UIEvent'); event.initUIEvent ('scroll', true, false); inp1.dispatchEvent(event); - A_05_04_08_T01.done(); })); diff --git a/testing/web-platform/tests/shadow-dom/untriaged/events/events-that-are-always-stopped/test-009.html b/testing/web-platform/tests/shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-009.html similarity index 74% rename from testing/web-platform/tests/shadow-dom/untriaged/events/events-that-are-always-stopped/test-009.html rename to testing/web-platform/tests/shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-009.html index f6172892911..1dee7118684 100644 --- a/testing/web-platform/tests/shadow-dom/untriaged/events/events-that-are-always-stopped/test-009.html +++ b/testing/web-platform/tests/shadow-dom/untriaged/events/events-created-by-users-do-not-stop/test-009.html @@ -13,7 +13,7 @@ policies and contribution forms [3]. Shadow DOM Test: A_05_04_09 - + @@ -41,20 +41,23 @@ A_05_04_09_T01.step(unit(function (ctx) { inp1.setAttribute('type', 'text'); inp1.setAttribute('value', '12345'); s.appendChild(inp1); + var pass = false; s.addEventListener('selectstart', A_05_04_09_T01.step_func(function(event) { - assert_equals(event.target.getAttribute('id'), 'inp1', 'Inside shadoe tree: Wrong target'); + assert_equals(event.target.getAttribute('id'), 'inp1', 'Inside shadow tree: Wrong target'); + pass = true; }), false); d.body.addEventListener('selectstart', A_05_04_09_T01.step_func(function(event) { - assert_true(false, 'selectstart event should always be stopped at Shadow boundary'); + assert_true(pass, 'Selectstart event should first happen in shadow root, and check if the target is correct'); + assert_true(true, 'Selectstart event should not be stopped at Shadow boundary if created by users'); + A_05_04_09_T01.done(); }), false); var event = d.createEvent('UIEvent'); event.initUIEvent ('selectstart', true, false); inp1.dispatchEvent(event); - A_05_04_09_T01.done(); })); diff --git a/testing/web-platform/tests/uievents/order-of-events/mouse-events/click-on-div-manual.html b/testing/web-platform/tests/uievents/order-of-events/mouse-events/click-on-div-manual.html new file mode 100644 index 00000000000..173e520a17e --- /dev/null +++ b/testing/web-platform/tests/uievents/order-of-events/mouse-events/click-on-div-manual.html @@ -0,0 +1,43 @@ + + + + + Clicking on a div element that has no click event handler fires a click event + + + + + + + + + +

Click on the blue square below. If a "PASS" result appears, the test passes; otherwise, it fails.

+
Click me
+ + + diff --git a/testing/web-platform/tests/url/OWNERS b/testing/web-platform/tests/url/OWNERS index b91af6024f0..fe4257cdb03 100644 --- a/testing/web-platform/tests/url/OWNERS +++ b/testing/web-platform/tests/url/OWNERS @@ -6,3 +6,4 @@ @zcorpan @xiaojunwu @smola +@domenic diff --git a/testing/web-platform/tests/url/README.md b/testing/web-platform/tests/url/README.md index 68dfa7543ff..77965cc43df 100644 --- a/testing/web-platform/tests/url/README.md +++ b/testing/web-platform/tests/url/README.md @@ -1,6 +1,26 @@ -The test for browsers is `a-element.html`. The reusable format is `urltestdata.txt`, which -is not documented in detail. Reverse engineering through `urltestparser.js` should not be -too hard. Documentation welcome! +These tests are for browsers, but the data for +`a-element.html`, `url-constructor.html`, and `a-element-xhtml.xhtml` +is in `urltestdata.json` and can be re-used by non-browser implementations. +This file contains a JSON array of comments as strings and test cases as objects. +The keys for each test case are: + +* `base`: an absolute URL as a string whose [parsing] without a base of its own should succeed. + This key is always present, + and may have a value like `"about:blank"` when `input` is an absolute URL. +* `input`: an URL as a string to be [parsed][parsing] with `base` as its base URL. +* Either: + * `failure` with the value `true`, indicating that parsing `input` should return failure, + * or `href`, `origin`, `protocol`, `username`, `password`, `host`, `hostname`, `port`, + `pathname`, `search`, and `hash` with string values; + indicating that parsing `input` should return an URL record + and that the getters of each corresponding attribute in that URL’s [API] + should return the corresponding value. + + The `origin` key may be missing. + In that case, the API’s `origin` attribute is not tested. + +[parsing]: https://url.spec.whatwg.org/#concept-basic-url-parser +[API]: https://url.spec.whatwg.org/#api [`annevk/url`](https://github.com/annevk/url) hosts some other files that might be of interest if you want to create additional tests. diff --git a/testing/web-platform/tests/url/urltestdata.json b/testing/web-platform/tests/url/urltestdata.json index 1e8c68fc46b..2c7d344f163 100644 --- a/testing/web-platform/tests/url/urltestdata.json +++ b/testing/web-platform/tests/url/urltestdata.json @@ -919,7 +919,6 @@ "input": "file:/example.com/", "base": "http://example.org/foo/bar", "href": "file:///example.com/", - "origin": "file://", "protocol": "file:", "username": "", "password": "", @@ -1295,7 +1294,6 @@ "input": "file:c:\\foo\\bar.html", "base": "file:///tmp/mock/path", "href": "file:///c:/foo/bar.html", - "origin": "file://", "protocol": "file:", "username": "", "password": "", @@ -1310,7 +1308,6 @@ "input": " File:c|////foo\\bar.html", "base": "file:///tmp/mock/path", "href": "file:///c:////foo/bar.html", - "origin": "file://", "protocol": "file:", "username": "", "password": "", @@ -1325,7 +1322,6 @@ "input": "C|/foo/bar", "base": "file:///tmp/mock/path", "href": "file:///C:/foo/bar", - "origin": "file://", "protocol": "file:", "username": "", "password": "", @@ -1340,7 +1336,6 @@ "input": "/C|\\foo\\bar", "base": "file:///tmp/mock/path", "href": "file:///C:/foo/bar", - "origin": "file://", "protocol": "file:", "username": "", "password": "", @@ -1355,7 +1350,6 @@ "input": "//C|/foo/bar", "base": "file:///tmp/mock/path", "href": "file:///C:/foo/bar", - "origin": "file://", "protocol": "file:", "username": "", "password": "", @@ -1370,7 +1364,6 @@ "input": "//server/file", "base": "file:///tmp/mock/path", "href": "file://server/file", - "origin": "file://", "protocol": "file:", "username": "", "password": "", @@ -1385,7 +1378,6 @@ "input": "\\\\server\\file", "base": "file:///tmp/mock/path", "href": "file://server/file", - "origin": "file://", "protocol": "file:", "username": "", "password": "", @@ -1400,7 +1392,6 @@ "input": "/\\server/file", "base": "file:///tmp/mock/path", "href": "file://server/file", - "origin": "file://", "protocol": "file:", "username": "", "password": "", @@ -1415,7 +1406,6 @@ "input": "file:///foo/bar.txt", "base": "file:///tmp/mock/path", "href": "file:///foo/bar.txt", - "origin": "file://", "protocol": "file:", "username": "", "password": "", @@ -1430,7 +1420,6 @@ "input": "file:///home/me", "base": "file:///tmp/mock/path", "href": "file:///home/me", - "origin": "file://", "protocol": "file:", "username": "", "password": "", @@ -1445,7 +1434,6 @@ "input": "//", "base": "file:///tmp/mock/path", "href": "file:///", - "origin": "file://", "protocol": "file:", "username": "", "password": "", @@ -1460,7 +1448,6 @@ "input": "///", "base": "file:///tmp/mock/path", "href": "file:///", - "origin": "file://", "protocol": "file:", "username": "", "password": "", @@ -1475,7 +1462,6 @@ "input": "///test", "base": "file:///tmp/mock/path", "href": "file:///test", - "origin": "file://", "protocol": "file:", "username": "", "password": "", @@ -1490,7 +1476,6 @@ "input": "file://test", "base": "file:///tmp/mock/path", "href": "file://test/", - "origin": "file://", "protocol": "file:", "username": "", "password": "", @@ -1505,7 +1490,6 @@ "input": "file://localhost", "base": "file:///tmp/mock/path", "href": "file:///", - "origin": "file://", "protocol": "file:", "username": "", "password": "", @@ -1520,7 +1504,6 @@ "input": "file://localhost/", "base": "file:///tmp/mock/path", "href": "file:///", - "origin": "file://", "protocol": "file:", "username": "", "password": "", @@ -1535,7 +1518,6 @@ "input": "file://localhost/test", "base": "file:///tmp/mock/path", "href": "file:///test", - "origin": "file://", "protocol": "file:", "username": "", "password": "", @@ -1550,7 +1532,6 @@ "input": "test", "base": "file:///tmp/mock/path", "href": "file:///tmp/mock/test", - "origin": "file://", "protocol": "file:", "username": "", "password": "", @@ -1565,7 +1546,6 @@ "input": "file:test", "base": "file:///tmp/mock/path", "href": "file:///tmp/mock/test", - "origin": "file://", "protocol": "file:", "username": "", "password": "", @@ -1938,7 +1918,7 @@ "hash": "" }, { - "input": "http://example.com/foo\t‘%91", + "input": "http://example.com/foo\t\u0091%91", "base": "about:blank", "href": "http://example.com/foo%C2%91%91", "origin": "http://example.com", @@ -2201,7 +2181,7 @@ { "input": "http://www/foo%2Ehtml", "base": "about:blank", - "href": "http://www/foo%2Ehtml", + "href": "http://www/foo.html", "origin": "http://www", "protocol": "http:", "username": "", @@ -2209,7 +2189,7 @@ "host": "www", "hostname": "www", "port": "", - "pathname": "/foo%2Ehtml", + "pathname": "/foo.html", "search": "", "hash": "" }, @@ -2587,7 +2567,6 @@ "input": "file:/example.com/", "base": "about:blank", "href": "file:///example.com/", - "origin": "file://", "protocol": "file:", "username": "", "password": "", @@ -3344,7 +3323,6 @@ "input": "file:...", "base": "http://www.example.com/test", "href": "file:///...", - "origin": "file://", "protocol": "file:", "username": "", "password": "", @@ -3359,7 +3337,6 @@ "input": "file:..", "base": "http://www.example.com/test", "href": "file:///", - "origin": "file://", "protocol": "file:", "username": "", "password": "", @@ -3374,7 +3351,6 @@ "input": "file:a", "base": "http://www.example.com/test", "href": "file:///a", - "origin": "file://", "protocol": "file:", "username": "", "password": "", diff --git a/testing/web-platform/tests/websockets/Send-data.worker.js b/testing/web-platform/tests/websockets/Send-data.worker.js new file mode 100644 index 00000000000..f03776fb323 --- /dev/null +++ b/testing/web-platform/tests/websockets/Send-data.worker.js @@ -0,0 +1,21 @@ +importScripts("/resources/testharness.js"); +importScripts('websocket.js?pipe=sub') + +var data = "test data"; + +async_test(function(t) { + + var wsocket = CreateWebSocket(false, false, false); + + wsocket.addEventListener('open', function (e) { + wsocket.send(data) + }, true) + + wsocket.addEventListener('message', t.step_func_done(function(e) { + assert_equals(e.data, data); + done(); + }), true); + +}, "W3C WebSocket API - Send data on a WebSocket in a Worker") + + diff --git a/testing/web-platform/tests/websockets/websocket.js b/testing/web-platform/tests/websockets/websocket.js index 1563dc2175c..65c4c30365d 100644 --- a/testing/web-platform/tests/websockets/websocket.js +++ b/testing/web-platform/tests/websockets/websocket.js @@ -8,7 +8,7 @@ var wsocket; var data; function IsWebSocket() { - if (!window.WebSocket) { + if (!self.WebSocket) { assert_true(false, "Browser does not support WebSocket"); } } diff --git a/toolkit/components/build/moz.build b/toolkit/components/build/moz.build index f6786438c58..9bc7822aa66 100644 --- a/toolkit/components/build/moz.build +++ b/toolkit/components/build/moz.build @@ -21,6 +21,7 @@ LOCAL_INCLUDES += [ '../feeds', '../find', '../jsdownloads/src', + '../perfmonitoring', '../protobuf', '../startup', '../statusfilter', @@ -33,10 +34,5 @@ if not CONFIG['MOZ_DISABLE_PARENTAL_CONTROLS']: '../parentalcontrols', ] -if CONFIG['NIGHTLY_BUILD']: - LOCAL_INCLUDES += [ - '../perfmonitoring', - ] - if CONFIG['GNU_CXX']: CXXFLAGS += ['-Wshadow'] diff --git a/toolkit/components/terminator/nsTerminator.cpp b/toolkit/components/terminator/nsTerminator.cpp index c7f8add6c1c..65ff990d5fe 100644 --- a/toolkit/components/terminator/nsTerminator.cpp +++ b/toolkit/components/terminator/nsTerminator.cpp @@ -33,6 +33,12 @@ #include "nsExceptionHandler.h" #endif +#if defined(XP_WIN) +#include +#else +#include +#endif + #include "mozilla/ArrayUtils.h" #include "mozilla/Attributes.h" #include "mozilla/DebugOnly.h" @@ -127,7 +133,6 @@ RunWatchdog(void* arg) options = nullptr; const uint32_t timeToLive = crashAfterTicks; - const PRIntervalTime ticksDuration = PR_MillisecondsToInterval(1000); while (true) { // // We do not want to sleep for the entire duration, @@ -139,7 +144,11 @@ RunWatchdog(void* arg) // we have lost at most one second, which is much // more reasonable. // - PR_Sleep(ticksDuration); +#if defined(XP_WIN) + Sleep(1000 /* ms */); +#else + usleep(1000000 /* usec */); +#endif if (gHeartbeat++ < timeToLive) { continue; diff --git a/toolkit/mozapps/downloads/tests/Makefile.in b/toolkit/mozapps/downloads/tests/Makefile.in deleted file mode 100644 index 2a5fe66d574..00000000000 --- a/toolkit/mozapps/downloads/tests/Makefile.in +++ /dev/null @@ -1,9 +0,0 @@ -# -# 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 $(topsrcdir)/config/rules.mk - -libs:: - $(INSTALL) $(topsrcdir)/testing/specialpowers/content/MockFilePicker.jsm $(DEPTH)/_tests/xpcshell/$(relativesrcdir)/unit diff --git a/widget/windows/nsWindow.cpp b/widget/windows/nsWindow.cpp index f42225773e5..f81f908d498 100644 --- a/widget/windows/nsWindow.cpp +++ b/widget/windows/nsWindow.cpp @@ -2326,18 +2326,6 @@ nsWindow::UpdateNonClientMargins(int32_t aSizeMode, bool aReflowWindow) // maximized. If we try to mess with the frame sizes by setting these // offsets to positive values, our client area will fall off the screen. mNonClientOffset.top = mCaptionHeight; - // Adjust for the case where the window is maximized on a screen with DPI - // different from the primary monitor; this seems to be linked to Windows' - // failure to scale the non-client area the same as the client area. - // Any modifications here need to be tested for both high- and low-dpi - // secondary displays, and for windows both with and without the titlebar - // and/or menubar displayed. - double ourScale = WinUtils::LogToPhysFactor(mWnd); - double primaryScale = - WinUtils::LogToPhysFactor(WinUtils::GetPrimaryMonitor()); - mNonClientOffset.top += - NSToIntRound(mVertResizeMargin * (ourScale - primaryScale)); - mNonClientOffset.bottom = 0; mNonClientOffset.left = 0; mNonClientOffset.right = 0; diff --git a/xpcom/Makefile.in b/xpcom/Makefile.in deleted file mode 100644 index b8515521fab..00000000000 --- a/xpcom/Makefile.in +++ /dev/null @@ -1,8 +0,0 @@ -# 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/. - -INSTALL_TARGETS += xpcom -xpcom_FILES := xpcom-config.h -xpcom_DEST = $(DIST)/include -xpcom_TARGET := export diff --git a/xpcom/moz.build b/xpcom/moz.build index fdd2183b523..56b20e26018 100644 --- a/xpcom/moz.build +++ b/xpcom/moz.build @@ -43,3 +43,7 @@ CONFIGURE_DEFINE_FILES += [ 'xpcom-config.h', 'xpcom-private.h', ] + +EXPORTS += [ + '!xpcom-config.h', +]