aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/wpt/metadata/MANIFEST.json333
-rw-r--r--tests/wpt/metadata/css/css-transitions/transitions-animatable-properties-01.html.ini3
-rw-r--r--tests/wpt/metadata/fetch/cross-origin-resource-policy/fetch-in-iframe.html.ini1
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini4
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html.ini10
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini10
-rw-r--r--tests/wpt/metadata/quirks/unitless-length/limited-quirks.html.ini283
-rw-r--r--tests/wpt/metadata/url/urlencoded-parser.any.js.ini15
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-postmessage-sharedarraybuffer.https.html.ini4
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/navigate-to/child-navigates-parent-allowed.html3
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/navigate-to/child-navigates-parent-blocked.sub.html9
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-action/form-action-allows-navigate-to-allows.html2
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-action/form-action-allows-navigate-to-blocks.html2
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-action/form-action-blocks-navigate-to-allows.html2
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-action/form-action-blocks-navigate-to-blocks.html2
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-blocked.sub.html7
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-cross-origin-blocked.sub.html7
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-redirected-blocked.sub.html8
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/navigate-to/href-location-blocked.sub.html6
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/navigate-to/href-location-cross-origin-blocked.sub.html6
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/navigate-to/href-location-redirected-blocked.sub.html6
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-allowed.html1
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-blocked.sub.html9
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-cross-origin-allowed.sub.html1
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-cross-origin-blocked.sub.html9
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-redirected-allowed.html1
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-redirected-blocked.sub.html8
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/navigate-to/meta-refresh-blocked.sub.html8
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/navigate-to/meta-refresh-cross-origin-blocked.sub.html8
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/navigate-to/meta-refresh-redirected-blocked.sub.html8
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/navigate-to/parent-navigates-child-allowed.html4
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/navigate-to/parent-navigates-child-blocked.html9
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/navigate-to/spv-only-sent-to-initiator.html48
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/delayed_frame.py12
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/href_location_navigation.sub.html4
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/link_click_navigation.sub.html4
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/redirect_to_post_message_to_frame_owner.py2
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/spv-test-iframe1.sub.html19
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/spv-test-iframe1.sub.html.sub.headers4
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/spv-test-iframe2.sub.html14
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/spv-test-iframe3.sub.html12
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/navigate-to/unsafe-allow-redirects/allowed-end-of-chain-because-of-same-origin.sub.html29
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/navigate-to/unsafe-allow-redirects/allowed-end-of-chain.sub.html28
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/navigate-to/unsafe-allow-redirects/blocked-end-of-chain.sub.html29
-rw-r--r--tests/wpt/web-platform-tests/css/css-paint-api/registered-property-type.https.html40
-rw-r--r--tests/wpt/web-platform-tests/css/css-position/position-sticky-child-multicolumn-ref.html50
-rw-r--r--tests/wpt/web-platform-tests/css/css-position/position-sticky-child-multicolumn.html55
-rw-r--r--tests/wpt/web-platform-tests/css/css-properties-values-api/typedom.tentative.html127
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-ignored-cases-ib-split-001-ref.html76
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-ignored-cases-ib-split-001.html77
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-paint-ignored-cases-ib-split-001-ref.html76
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-paint-ignored-cases-ib-split-001.html77
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-block-001-ref.html7
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-block-001.html2
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-fieldset-001-ref.html1
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-fieldset-001.html1
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-fieldset-002-ref.html14
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-fieldset-002.html4
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-inline-block-001-ref.html17
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-inline-block-001.html4
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-inline-flex-001-ref.html9
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-inline-flex-001.html6
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/reftest.list2
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/picture-in-picture-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html1
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/picture-in-picture-allowed-by-feature-policy-attribute.https.sub.html1
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/picture-in-picture-allowed-by-feature-policy.https.sub.html1
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/picture-in-picture-default-feature-policy.https.sub.html1
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/picture-in-picture-disabled-by-feature-policy.https.sub.html1
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/reporting/picture-in-picture-reporting.html3
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/resources/feature-policy-picture-in-picture.html1
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/resources/picture-in-picture.js2
-rw-r--r--tests/wpt/web-platform-tests/mediacapture-streams/MediaStream-MediaElement-srcObject.https.html11
-rw-r--r--tests/wpt/web-platform-tests/picture-in-picture/disable-picture-in-picture.html12
-rw-r--r--tests/wpt/web-platform-tests/picture-in-picture/enter-picture-in-picture.html1
-rw-r--r--tests/wpt/web-platform-tests/picture-in-picture/exit-picture-in-picture.html1
-rw-r--r--tests/wpt/web-platform-tests/picture-in-picture/idlharness.window.js1
-rw-r--r--tests/wpt/web-platform-tests/picture-in-picture/leave-picture-in-picture.html1
-rw-r--r--tests/wpt/web-platform-tests/picture-in-picture/picture-in-picture-element.html1
-rw-r--r--tests/wpt/web-platform-tests/picture-in-picture/picture-in-picture-window.html1
-rw-r--r--tests/wpt/web-platform-tests/picture-in-picture/request-picture-in-picture-twice.html12
-rw-r--r--tests/wpt/web-platform-tests/picture-in-picture/request-picture-in-picture.html3
-rw-r--r--tests/wpt/web-platform-tests/picture-in-picture/resources/picture-in-picture-helpers.js9
-rw-r--r--tests/wpt/web-platform-tests/picture-in-picture/shadow-dom.html11
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/fetch-audio-tainting.https.html47
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testrunner.py11
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-postmessage-sharedarraybuffer.https.html85
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/processors/sharedarraybuffer-processor.js35
87 files changed, 1441 insertions, 451 deletions
diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json
index 3aa3d2388ba..a234e25c27b 100644
--- a/tests/wpt/metadata/MANIFEST.json
+++ b/tests/wpt/metadata/MANIFEST.json
@@ -129333,6 +129333,18 @@
{}
]
],
+ "css/css-position/position-sticky-child-multicolumn.html": [
+ [
+ "/css/css-position/position-sticky-child-multicolumn.html",
+ [
+ [
+ "/css/css-position/position-sticky-child-multicolumn-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-position/position-sticky-flexbox.html": [
[
"/css/css-position/position-sticky-flexbox.html",
@@ -171217,6 +171229,18 @@
{}
]
],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-ignored-cases-ib-split-001.html": [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-ignored-cases-ib-split-001.html",
+ [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-ignored-cases-ib-split-001-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-ignored-cases-no-principal-box-001.html": [
[
"/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-ignored-cases-no-principal-box-001.html",
@@ -171409,6 +171433,18 @@
{}
]
],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-paint-ignored-cases-ib-split-001.html": [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-paint-ignored-cases-ib-split-001.html",
+ [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-paint-ignored-cases-ib-split-001-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-paint-ignored-cases-internal-table-001a.html": [
[
"/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-paint-ignored-cases-internal-table-001a.html",
@@ -222588,6 +222624,11 @@
{}
]
],
+ "content-security-policy/navigate-to/support/delayed_frame.py": [
+ [
+ {}
+ ]
+ ],
"content-security-policy/navigate-to/support/form_action_navigation.sub.html": [
[
{}
@@ -222648,6 +222689,26 @@
{}
]
],
+ "content-security-policy/navigate-to/support/spv-test-iframe1.sub.html": [
+ [
+ {}
+ ]
+ ],
+ "content-security-policy/navigate-to/support/spv-test-iframe1.sub.html.sub.headers": [
+ [
+ {}
+ ]
+ ],
+ "content-security-policy/navigate-to/support/spv-test-iframe2.sub.html": [
+ [
+ {}
+ ]
+ ],
+ "content-security-policy/navigate-to/support/spv-test-iframe3.sub.html": [
+ [
+ {}
+ ]
+ ],
"content-security-policy/navigate-to/support/wait_for_navigation.html": [
[
{}
@@ -262343,6 +262404,11 @@
{}
]
],
+ "css/css-position/position-sticky-child-multicolumn-ref.html": [
+ [
+ {}
+ ]
+ ],
"css/css-position/position-sticky-flexbox-ref.html": [
[
{}
@@ -275573,6 +275639,11 @@
{}
]
],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-ignored-cases-ib-split-001-ref.html": [
+ [
+ {}
+ ]
+ ],
"css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-ignored-cases-no-principal-box-002-ref.html": [
[
{}
@@ -275638,6 +275709,11 @@
{}
]
],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-paint-ignored-cases-ib-split-001-ref.html": [
+ [
+ {}
+ ]
+ ],
"css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-paint-ignored-cases-internal-table-001-ref.html": [
[
{}
@@ -315058,6 +315134,11 @@
{}
]
],
+ "webaudio/the-audio-api/the-audioworklet-interface/processors/sharedarraybuffer-processor.js": [
+ [
+ {}
+ ]
+ ],
"webaudio/the-audio-api/the-audioworklet-interface/processors/timing-info-processor.js": [
[
{}
@@ -330715,9 +330796,7 @@
"content-security-policy/navigate-to/child-navigates-parent-allowed.html": [
[
"/content-security-policy/navigate-to/child-navigates-parent-allowed.html",
- {
- "timeout": "long"
- }
+ {}
]
],
"content-security-policy/navigate-to/child-navigates-parent-blocked.sub.html": [
@@ -330825,9 +330904,7 @@
"content-security-policy/navigate-to/link-click-allowed.html": [
[
"/content-security-policy/navigate-to/link-click-allowed.html",
- {
- "timeout": "long"
- }
+ {}
]
],
"content-security-policy/navigate-to/link-click-blocked.sub.html": [
@@ -330839,33 +330916,25 @@
"content-security-policy/navigate-to/link-click-cross-origin-allowed.sub.html": [
[
"/content-security-policy/navigate-to/link-click-cross-origin-allowed.sub.html",
- {
- "timeout": "long"
- }
+ {}
]
],
"content-security-policy/navigate-to/link-click-cross-origin-blocked.sub.html": [
[
"/content-security-policy/navigate-to/link-click-cross-origin-blocked.sub.html",
- {
- "timeout": "long"
- }
+ {}
]
],
"content-security-policy/navigate-to/link-click-redirected-allowed.html": [
[
"/content-security-policy/navigate-to/link-click-redirected-allowed.html",
- {
- "timeout": "long"
- }
+ {}
]
],
"content-security-policy/navigate-to/link-click-redirected-blocked.sub.html": [
[
"/content-security-policy/navigate-to/link-click-redirected-blocked.sub.html",
- {
- "timeout": "long"
- }
+ {}
]
],
"content-security-policy/navigate-to/meta-refresh-allowed.html": [
@@ -330916,6 +330985,30 @@
{}
]
],
+ "content-security-policy/navigate-to/spv-only-sent-to-initiator.html": [
+ [
+ "/content-security-policy/navigate-to/spv-only-sent-to-initiator.html",
+ {}
+ ]
+ ],
+ "content-security-policy/navigate-to/unsafe-allow-redirects/allowed-end-of-chain-because-of-same-origin.sub.html": [
+ [
+ "/content-security-policy/navigate-to/unsafe-allow-redirects/allowed-end-of-chain-because-of-same-origin.sub.html",
+ {}
+ ]
+ ],
+ "content-security-policy/navigate-to/unsafe-allow-redirects/allowed-end-of-chain.sub.html": [
+ [
+ "/content-security-policy/navigate-to/unsafe-allow-redirects/allowed-end-of-chain.sub.html",
+ {}
+ ]
+ ],
+ "content-security-policy/navigate-to/unsafe-allow-redirects/blocked-end-of-chain.sub.html": [
+ [
+ "/content-security-policy/navigate-to/unsafe-allow-redirects/blocked-end-of-chain.sub.html",
+ {}
+ ]
+ ],
"content-security-policy/navigation/javascript-url-navigation-inherits-csp.html": [
[
"/content-security-policy/navigation/javascript-url-navigation-inherits-csp.html",
@@ -398398,6 +398491,12 @@
{}
]
],
+ "service-workers/service-worker/fetch-audio-tainting.https.html": [
+ [
+ "/service-workers/service-worker/fetch-audio-tainting.https.html",
+ {}
+ ]
+ ],
"service-workers/service-worker/fetch-canvas-tainting-image-cache.https.html": [
[
"/service-workers/service-worker/fetch-canvas-tainting-image-cache.https.html",
@@ -404646,6 +404745,12 @@
{}
]
],
+ "webaudio/the-audio-api/the-audioworklet-interface/audioworklet-postmessage-sharedarraybuffer.https.html": [
+ [
+ "/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-postmessage-sharedarraybuffer.https.html",
+ {}
+ ]
+ ],
"webaudio/the-audio-api/the-audioworklet-interface/audioworkletglobalscope-sample-rate.https.html": [
[
"/webaudio/the-audio-api/the-audioworklet-interface/audioworkletglobalscope-sample-rate.https.html",
@@ -463714,7 +463819,7 @@
"support"
],
"content-security-policy/navigate-to/child-navigates-parent-allowed.html": [
- "6c05478190f5c33b42ee87fe94d012eacaecb89c",
+ "7b4b455d8d4e783d6006e58d9423943efa0241df",
"testharness"
],
"content-security-policy/navigate-to/child-navigates-parent-allowed.html.headers": [
@@ -463722,7 +463827,7 @@
"support"
],
"content-security-policy/navigate-to/child-navigates-parent-blocked.sub.html": [
- "2acf417a3b901d6e6cdac4eded279444c6ad0cf4",
+ "4e50617e3c253eae90e7e4ea5094e4cbca3b5fd0",
"testharness"
],
"content-security-policy/navigate-to/child-navigates-parent-blocked.sub.html.headers": [
@@ -463730,19 +463835,19 @@
"support"
],
"content-security-policy/navigate-to/form-action/form-action-allows-navigate-to-allows.html": [
- "452b881829f65ba7f69cd2eb4780b6be802e4dcd",
+ "458373fbc01591c25a901379282a5370989b5084",
"testharness"
],
"content-security-policy/navigate-to/form-action/form-action-allows-navigate-to-blocks.html": [
- "44dcc516357ce96d635ec95d3fd515dd4605811f",
+ "3ed4815bff6c363661ab94bdc1796067870aadab",
"testharness"
],
"content-security-policy/navigate-to/form-action/form-action-blocks-navigate-to-allows.html": [
- "5e6557d9d9bb0a5f64f495b21d30a84763e3495d",
+ "f3f7896e932aafa137cf11b76c38246a101f4a00",
"testharness"
],
"content-security-policy/navigate-to/form-action/form-action-blocks-navigate-to-blocks.html": [
- "9f9c803d53ad05a3c621159e19df762ee2e30a0a",
+ "08e0cbe3fb9b39f8b4945b422c5e459a2f862fb9",
"testharness"
],
"content-security-policy/navigate-to/form-allowed.html": [
@@ -463750,7 +463855,7 @@
"testharness"
],
"content-security-policy/navigate-to/form-blocked.sub.html": [
- "beb22214faaec7d109b6757ff85cefc846a41fba",
+ "72db7b8d1d584292ac3eeaef6919229d3cedf369",
"testharness"
],
"content-security-policy/navigate-to/form-cross-origin-allowed.sub.html": [
@@ -463758,7 +463863,7 @@
"testharness"
],
"content-security-policy/navigate-to/form-cross-origin-blocked.sub.html": [
- "49fe958adb771249198f641a926fc0404217e8eb",
+ "be5f70c8b1e07de9b8d7934d7427cfc445d6226f",
"testharness"
],
"content-security-policy/navigate-to/form-redirected-allowed.html": [
@@ -463766,7 +463871,7 @@
"testharness"
],
"content-security-policy/navigate-to/form-redirected-blocked.sub.html": [
- "6adc9efdaaf827bf2f4ee0e394619c101bdacd50",
+ "d60b8a7aa8d41d9498a72a60e5d3ae807d31fea2",
"testharness"
],
"content-security-policy/navigate-to/href-location-allowed.html": [
@@ -463774,7 +463879,7 @@
"testharness"
],
"content-security-policy/navigate-to/href-location-blocked.sub.html": [
- "6aef250eeedd1a0163fa32b000ee740e233d0d6c",
+ "721f055c71507ec85fea9a4d86b107fe0e91d2f7",
"testharness"
],
"content-security-policy/navigate-to/href-location-cross-origin-allowed.sub.html": [
@@ -463782,7 +463887,7 @@
"testharness"
],
"content-security-policy/navigate-to/href-location-cross-origin-blocked.sub.html": [
- "894719b3ac869d517b353623127666ae848af044",
+ "cd0cd9106dbb429e2d8ec4cbbc7c3fcb6c56aa93",
"testharness"
],
"content-security-policy/navigate-to/href-location-redirected-allowed.html": [
@@ -463790,31 +463895,31 @@
"testharness"
],
"content-security-policy/navigate-to/href-location-redirected-blocked.sub.html": [
- "b91c473bef4148bd8943d30fcae56d9f7dfb3df8",
+ "5d8fafb31313f0ec18306d4ee1c071f278a34272",
"testharness"
],
"content-security-policy/navigate-to/link-click-allowed.html": [
- "667a3a59f2fafd4022f769a05e7e83d1eddcb4c3",
+ "977b85dfb2cbaaa4a69288e8d283c483e35eed97",
"testharness"
],
"content-security-policy/navigate-to/link-click-blocked.sub.html": [
- "0ad98264c9636884ad353efa875110f9c6bea4e0",
+ "29686fcaeff6b57eca88ccfd599727bd2cc06464",
"testharness"
],
"content-security-policy/navigate-to/link-click-cross-origin-allowed.sub.html": [
- "2f9f0e2af0ce68585a9d0f96d3afc067c5c1a75b",
+ "4381bcb08d6ed73abf13da54c9ccf583bd5d7523",
"testharness"
],
"content-security-policy/navigate-to/link-click-cross-origin-blocked.sub.html": [
- "970f5a2d3065c66dbc650dcff0de7b1227a8e038",
+ "f2b106c57730c00b95cbe6cb66582c2d33dcdede",
"testharness"
],
"content-security-policy/navigate-to/link-click-redirected-allowed.html": [
- "81c4f4e1677f07df0e2ab3187e8b03d5978e74c5",
+ "87dea95b1dc0b238b8c033b815daba960935f5d8",
"testharness"
],
"content-security-policy/navigate-to/link-click-redirected-blocked.sub.html": [
- "bb61126244e5602f76d080746302bdfbb32e2ca0",
+ "9b9205a526a4834e8ba918e86c67710353a4ccd8",
"testharness"
],
"content-security-policy/navigate-to/meta-refresh-allowed.html": [
@@ -463822,7 +463927,7 @@
"testharness"
],
"content-security-policy/navigate-to/meta-refresh-blocked.sub.html": [
- "d4d52a51ccbc959694e738fb7824cc74bddd9ad8",
+ "1292c9ba5fc0b7bb7383e584296c29c627a87a96",
"testharness"
],
"content-security-policy/navigate-to/meta-refresh-cross-origin-allowed.sub.html": [
@@ -463830,7 +463935,7 @@
"testharness"
],
"content-security-policy/navigate-to/meta-refresh-cross-origin-blocked.sub.html": [
- "2118b27ba33c784066faaa5dee114fc455ea7e92",
+ "d7ccd336205da0087c67bc8cdb778d426f167188",
"testharness"
],
"content-security-policy/navigate-to/meta-refresh-redirected-allowed.html": [
@@ -463838,11 +463943,11 @@
"testharness"
],
"content-security-policy/navigate-to/meta-refresh-redirected-blocked.sub.html": [
- "55e3295ec1abc57a0ec57076b518b61c094446d3",
+ "0734473ee6331318a3913e6dd2ba41d52ed2c02c",
"testharness"
],
"content-security-policy/navigate-to/parent-navigates-child-allowed.html": [
- "e5455ceaa275b0723b90bac2f3fcfe8f37a6591c",
+ "47a661157c3f9b27184cf6f391bd0c55ecb2cc72",
"testharness"
],
"content-security-policy/navigate-to/parent-navigates-child-allowed.html.headers": [
@@ -463850,13 +463955,21 @@
"support"
],
"content-security-policy/navigate-to/parent-navigates-child-blocked.html": [
- "fc549b47fd8b6e941ab92d4e8a0cca69afe2bd89",
+ "c662da95fa1b89e13c61c7b65226cb55a15d93e1",
"testharness"
],
"content-security-policy/navigate-to/parent-navigates-child-blocked.html.sub.headers": [
"6784a56c8eb5e84d9434676d2c335173c7de1970",
"support"
],
+ "content-security-policy/navigate-to/spv-only-sent-to-initiator.html": [
+ "a09057e71567efa082578541a624b9fe51e13737",
+ "testharness"
+ ],
+ "content-security-policy/navigate-to/support/delayed_frame.py": [
+ "21886c7092a63b77239ba3af92194b5d185ac2d1",
+ "support"
+ ],
"content-security-policy/navigate-to/support/form_action_navigation.sub.html": [
"3e3e2afcaccec7ea72f0b1b4a7afab46d8900ba3",
"support"
@@ -463866,7 +463979,7 @@
"support"
],
"content-security-policy/navigate-to/support/href_location_navigation.sub.html": [
- "c577e935cd43d558fcdba417606c512fdd79753e",
+ "15b1365cc21fbccb02fd11c9e46a067a8fa40b6f",
"support"
],
"content-security-policy/navigate-to/support/href_location_navigation.sub.html.sub.headers": [
@@ -463874,7 +463987,7 @@
"support"
],
"content-security-policy/navigate-to/support/link_click_navigation.sub.html": [
- "f1b42428344368f8567bb254e1fe40a7a0f87897",
+ "2434271211f36a456ea2bf61e717e4233a660bba",
"support"
],
"content-security-policy/navigate-to/support/link_click_navigation.sub.html.sub.headers": [
@@ -463902,7 +464015,23 @@
"support"
],
"content-security-policy/navigate-to/support/redirect_to_post_message_to_frame_owner.py": [
- "652f9a57b967c64630bc30203e6370ce43da0745",
+ "d22e9202a2a57fac314b1fee26a9a88d68db6c26",
+ "support"
+ ],
+ "content-security-policy/navigate-to/support/spv-test-iframe1.sub.html": [
+ "9e26c02be3110c19b7b6f69719fc5cd9cfcf2086",
+ "support"
+ ],
+ "content-security-policy/navigate-to/support/spv-test-iframe1.sub.html.sub.headers": [
+ "50d77dc7dbb24583e7e91a4e8e2128e73c69336a",
+ "support"
+ ],
+ "content-security-policy/navigate-to/support/spv-test-iframe2.sub.html": [
+ "1329683c88bf584cbc63479f3ba3f6e06281f223",
+ "support"
+ ],
+ "content-security-policy/navigate-to/support/spv-test-iframe3.sub.html": [
+ "09dbf6863dc7c8374fc082aa63f36690fe80a4a0",
"support"
],
"content-security-policy/navigate-to/support/wait_for_navigation.html": [
@@ -463913,6 +464042,18 @@
"d3c635b9a062bba15489562293cf0ebf3d2aa0c1",
"support"
],
+ "content-security-policy/navigate-to/unsafe-allow-redirects/allowed-end-of-chain-because-of-same-origin.sub.html": [
+ "192477296b61d283d9a229ede466a4ed516e46f3",
+ "testharness"
+ ],
+ "content-security-policy/navigate-to/unsafe-allow-redirects/allowed-end-of-chain.sub.html": [
+ "74fe8f2e7a673564ebf2502d07ec4136802b1537",
+ "testharness"
+ ],
+ "content-security-policy/navigate-to/unsafe-allow-redirects/blocked-end-of-chain.sub.html": [
+ "86e54b3d93745d4eb892ba33074f66fa4dfa9bd9",
+ "testharness"
+ ],
"content-security-policy/navigation/javascript-url-navigation-inherits-csp.html": [
"21c4fb33ce2d66db750d92a892e3871bd5d9b576",
"testharness"
@@ -553138,7 +553279,7 @@
"support"
],
"css/css-paint-api/registered-property-type.https.html": [
- "6ff7ce4e0af6b290ea269573c596caa364a5c1c8",
+ "8f02008333c9ed50091fb6605c5d4432ff0a87b4",
"reftest"
],
"css/css-paint-api/resources/html5.png": [
@@ -553301,6 +553442,14 @@
"ba23f0145cf497c4d21b36f387d2017acf45bf34",
"testharness"
],
+ "css/css-position/position-sticky-child-multicolumn-ref.html": [
+ "c44f9f43eb51df8a8499a53db3d7c47d76f38829",
+ "support"
+ ],
+ "css/css-position/position-sticky-child-multicolumn.html": [
+ "b5b180a4b1b85ee40120c4e2a5b2af8a02529370",
+ "reftest"
+ ],
"css/css-position/position-sticky-flexbox-ref.html": [
"554ffa6d6bc9a7d76087b45649c1a69824eb2e59",
"support"
@@ -553582,7 +553731,7 @@
"support"
],
"css/css-properties-values-api/typedom.tentative.html": [
- "1d757df168b0db1acfdbd358951b30dbb25d3016",
+ "6d0623bba420dfe5becafb9eb59cbdf4ad115954",
"testharness"
],
"css/css-properties-values-api/unit-cycles.html": [
@@ -586133,6 +586282,14 @@
"a8520ee2d1c81d46dac54d8fb4bcb667fa22d40f",
"reftest"
],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-ignored-cases-ib-split-001-ref.html": [
+ "eb787424ed47314b50fa9a47986a68e785d346fa",
+ "support"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-ignored-cases-ib-split-001.html": [
+ "d9f976deb8ca604315f105a339de9eac7ee48741",
+ "reftest"
+ ],
"css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-ignored-cases-no-principal-box-001.html": [
"bd2f4cb8178054e0aab0b208610e8a2ba97b1141",
"reftest"
@@ -586249,6 +586406,14 @@
"d37464228658dbf60e8dfbb59ee86dcd9c9f6ad7",
"reftest"
],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-paint-ignored-cases-ib-split-001-ref.html": [
+ "8a698b9d2ce2deea6b86aa667e53247f57f3d998",
+ "support"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-paint-ignored-cases-ib-split-001.html": [
+ "eb21a2d460957cb6fdd887c69dec4f9247bcd951",
+ "reftest"
+ ],
"css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-paint-ignored-cases-internal-table-001-ref.html": [
"d23678941e2f0188a2cadfe06264a98ffd161bcb",
"support"
@@ -586298,11 +586463,11 @@
"reftest"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-block-001-ref.html": [
- "b8f983a8153bcbaf5f1de41ca41aba2cca4b9fea",
+ "7f13a517a6656dbe70957b0a12f3c6688d16c75e",
"support"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-block-001.html": [
- "c5bdc6adead0dd31147ded92e3c2cf2db87d86e4",
+ "20272cff8ff20b4330a8fb987a31ef62a93358c0",
"reftest"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-button-001-ref.html": [
@@ -586314,19 +586479,19 @@
"reftest"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-fieldset-001-ref.html": [
- "a7869752692542a724826426f026c32db6f3ae51",
+ "6a77ee68879cddb13bfd01ac4e9271f341d93e9c",
"support"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-fieldset-001.html": [
- "c21e5517225e81b086ea7d24a6e8a40b787a168a",
+ "8cea7f5a60e71cf598ce5889df3af2dfe78bc329",
"reftest"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-fieldset-002-ref.html": [
- "040da171aaf07aef505d89802ee228c645cd1626",
+ "31ca88312da778b688138e3313e4bde43ec93554",
"support"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-fieldset-002.html": [
- "18d6ad8c3c692689f30f44e64caaac0ab105ef95",
+ "67aa64bb271c924dd4e36fcec625053a0c4a7acf",
"reftest"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-flex-001-ref.html": [
@@ -586346,19 +586511,19 @@
"reftest"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-inline-block-001-ref.html": [
- "56d1cdd8cee77b81d3229e6843b8a646608928ae",
+ "92a6c7de5ee4fdc19be842955fc413f36097cc4b",
"support"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-inline-block-001.html": [
- "48f8bc279a6a43848232fee8dcd8a57a82fedfdd",
+ "41458550272f896d47e15210c82f4c22d386d9e0",
"reftest"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-inline-flex-001-ref.html": [
- "fb013752d058a263474183b7cfb20e7d122a6841",
+ "93a263b5b2ffc131bdfe4989c3d90c312cadf6e4",
"support"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-inline-flex-001.html": [
- "e79d0c18599f655d9ed49637fa32158ea31ef530",
+ "15a2c943bb65e658de58330b4cec76fbdc5294ad",
"reftest"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-multicol-001-ref.html": [
@@ -586394,7 +586559,7 @@
"reftest"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/contain/reftest.list": [
- "6b2e31bcd46c4dd38bbf45f2515a6bdc84128e43",
+ "6b872e79f2e15cdb55d9a12ea95c5d981e9ed2d0",
"support"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/counter-styles-3/dependent-builtin-ref.html": [
@@ -599454,15 +599619,15 @@
"support"
],
"feature-policy/picture-in-picture-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html": [
- "c591be46479223b686f8e831c36dfd7b70d62257",
+ "e2b52f257a12aae267c96eab1a20cc805f007abb",
"testharness"
],
"feature-policy/picture-in-picture-allowed-by-feature-policy-attribute.https.sub.html": [
- "8a0a4374b2dfed303b112121eb24decfbb9f848e",
+ "0c3897a4ad0f33c1cffd90f063c9d3425d506bd0",
"testharness"
],
"feature-policy/picture-in-picture-allowed-by-feature-policy.https.sub.html": [
- "0f8a0c0665250a659c0452a20f0b60a951346b02",
+ "1ecd874c009a89241902950ac916b5cac22799eb",
"testharness"
],
"feature-policy/picture-in-picture-allowed-by-feature-policy.https.sub.html.headers": [
@@ -599470,11 +599635,11 @@
"support"
],
"feature-policy/picture-in-picture-default-feature-policy.https.sub.html": [
- "f47661bd7d50cd6afb66c00dec630c8b2439fed0",
+ "12bbf7f2f1f80fa28c43c85e028649e3bcedc896",
"testharness"
],
"feature-policy/picture-in-picture-disabled-by-feature-policy.https.sub.html": [
- "2f7576b16e1355a3fe7c6e81b385386e83356335",
+ "b36afbda503f523d7298021ee8ea3f7a2f71a433",
"testharness"
],
"feature-policy/picture-in-picture-disabled-by-feature-policy.https.sub.html.headers": [
@@ -599550,7 +599715,7 @@
"support"
],
"feature-policy/reporting/picture-in-picture-reporting.html": [
- "a8a998ed2a15af10ffa6dba02273bc8d0b2d5eb4",
+ "60e4825d988218bda9422ec6342597823aebabef",
"testharness"
],
"feature-policy/reporting/picture-in-picture-reporting.html.headers": [
@@ -599622,7 +599787,7 @@
"support"
],
"feature-policy/resources/feature-policy-picture-in-picture.html": [
- "436682d8754bb5855e1bdee68a9fe5560a7f417d",
+ "2f33c449536d1b0253a9a1c0b52073bc500121f3",
"support"
],
"feature-policy/resources/feature-policy-usb-worker.html": [
@@ -599650,7 +599815,7 @@
"support"
],
"feature-policy/resources/picture-in-picture.js": [
- "e7aabcd5083355e5fd9b6300c90a7f29d07ba702",
+ "e245d798acfc2ebbe9e1524ec8413156b8967a84",
"support"
],
"feature-policy/resources/redirect-on-load.html": [
@@ -623682,7 +623847,7 @@
"manual"
],
"mediacapture-streams/MediaStream-MediaElement-srcObject.https.html": [
- "fc2e619a463c6e18433f395090fdb7a42d863cb6",
+ "4b9a3c8246d04aafff5877fc78001a5f9d00f82d",
"testharness"
],
"mediacapture-streams/MediaStream-add-audio-track.https.html": [
@@ -634178,47 +634343,47 @@
"support"
],
"picture-in-picture/disable-picture-in-picture.html": [
- "efde31bc3a30914d4e2e932a7de3522c105f5d62",
+ "31e0d12ad770fb9bcc8bbc2f7f86d690efe3c06d",
"testharness"
],
"picture-in-picture/enter-picture-in-picture.html": [
- "9df2bfabcf272a25a6f5177c128e095f8b970427",
+ "a9d7b5c04899c72f91c07d614dbf7df3b37757bc",
"testharness"
],
"picture-in-picture/exit-picture-in-picture.html": [
- "9a5eedd9be8f98e8d0317de7ea2cb644d353f4e1",
+ "c8d76f5244a41754e4a8a5b0c9fd01d056caee96",
"testharness"
],
"picture-in-picture/idlharness.window.js": [
- "a7f25e3be588e876168625c254b3d5e4a79ecaba",
+ "31cd4a14177bccd277023a98ea5956e5f018e2e1",
"testharness"
],
"picture-in-picture/leave-picture-in-picture.html": [
- "5a5182bf64d7fd6414e1e0b264759f6a53950537",
+ "04de95e47ecc6373fd45906b28ba88ad46f4fcc8",
"testharness"
],
"picture-in-picture/picture-in-picture-element.html": [
- "809b3eeabcc30acc48d65e8d63ffcd52bf9a8e95",
+ "2763eca476d716aeb88bf923f32279a3bc55998a",
"testharness"
],
"picture-in-picture/picture-in-picture-window.html": [
- "693a13717e2e283e25d1cb338e7310728bbd521b",
+ "c32787f46f771c7e8d7f689ea328f626dce70908",
"testharness"
],
"picture-in-picture/request-picture-in-picture-twice.html": [
- "0924ad21a4f5eaad75b43fb19d3ad8eb2bc51e91",
+ "17e494bbe88b52b68a6e34e5be37a346479087e1",
"testharness"
],
"picture-in-picture/request-picture-in-picture.html": [
- "403d416c7d454fb0a6a2f8442cc23c53f83212e1",
+ "37ae94829f3c6590ef61841c070eeffaf28e770a",
"testharness"
],
"picture-in-picture/resources/picture-in-picture-helpers.js": [
- "55eed5393d62628313a558fab121230705fd85ac",
+ "96972dcbc8ef07aa7ea0150c4ee645507eea0856",
"support"
],
"picture-in-picture/shadow-dom.html": [
- "e36acc02193c6ef10daa1ef74a511adffe5515f3",
+ "17816b93c94b1de504062f934437ecc090213819",
"testharness"
],
"pointerevents/META.yml": [
@@ -646589,6 +646754,10 @@
"8e790d0ef5ad6d851534362de5647d96699a65f7",
"testharness"
],
+ "service-workers/service-worker/fetch-audio-tainting.https.html": [
+ "9821759bc7b311672a54387edc7d8c26a11d5e54",
+ "testharness"
+ ],
"service-workers/service-worker/fetch-canvas-tainting-image-cache.https.html": [
"213238112257923657fe84a637ddd45cc0c038c5",
"testharness"
@@ -659178,7 +659347,7 @@
"support"
],
"tools/wptrunner/wptrunner/testrunner.py": [
- "46e3ff7926de2f2a2c86c8971e9f5a07f1f33a8a",
+ "2b7c091c84722c750b46d6143c74c8d329a7fd99",
"support"
],
"tools/wptrunner/wptrunner/tests/__init__.py": [
@@ -663125,6 +663294,10 @@
"546bd1d0d0e34480113290bcc5008f0240be8d4a",
"testharness"
],
+ "webaudio/the-audio-api/the-audioworklet-interface/audioworklet-postmessage-sharedarraybuffer.https.html": [
+ "8194d1977ad452390efb870197057bcf48fad499",
+ "testharness"
+ ],
"webaudio/the-audio-api/the-audioworklet-interface/audioworkletglobalscope-sample-rate.https.html": [
"d87e35b571d75c0ff595ab023f4a54a420111523",
"testharness"
@@ -663205,6 +663378,10 @@
"5a8baf03372d25b906948dcdd6c40990eeb860fa",
"support"
],
+ "webaudio/the-audio-api/the-audioworklet-interface/processors/sharedarraybuffer-processor.js": [
+ "2ccacccd4bb0a4d289ddccd9cafa4e29a0484730",
+ "support"
+ ],
"webaudio/the-audio-api/the-audioworklet-interface/processors/timing-info-processor.js": [
"714e32dbb5c1d0fbe4d0ff2ae38deaed75b4b96e",
"support"
diff --git a/tests/wpt/metadata/css/css-transitions/transitions-animatable-properties-01.html.ini b/tests/wpt/metadata/css/css-transitions/transitions-animatable-properties-01.html.ini
index 98c044f3c1a..97a457d2897 100644
--- a/tests/wpt/metadata/css/css-transitions/transitions-animatable-properties-01.html.ini
+++ b/tests/wpt/metadata/css/css-transitions/transitions-animatable-properties-01.html.ini
@@ -71,3 +71,6 @@
[bottom intermediate]
expected: FAIL
+ [border-bottom-width end]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/fetch/cross-origin-resource-policy/fetch-in-iframe.html.ini b/tests/wpt/metadata/fetch/cross-origin-resource-policy/fetch-in-iframe.html.ini
index 0d630fb814a..3951cd266d5 100644
--- a/tests/wpt/metadata/fetch/cross-origin-resource-policy/fetch-in-iframe.html.ini
+++ b/tests/wpt/metadata/fetch/cross-origin-resource-policy/fetch-in-iframe.html.ini
@@ -1,5 +1,4 @@
[fetch-in-iframe.html]
- expected: CRASH
[Untitled]
expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini
new file mode 100644
index 00000000000..dc2e45516de
--- /dev/null
+++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini
@@ -0,0 +1,4 @@
+[traverse_the_history_5.html]
+ [Multiple history traversals, last would be aborted]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html.ini
index 6b57ca778ee..6a2b93b1aa8 100644
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html.ini
+++ b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html.ini
@@ -5,20 +5,20 @@
expected: TIMEOUT
[picture: source (max-width:500px) valid image, img valid image, resize to wide]
- expected: TIMEOUT
+ expected: FAIL
[picture: source (max-width:500px) valid image, img broken image, resize to narrow]
expected: TIMEOUT
[picture: source (max-width:500px) valid image, img valid image, resize to narrow]
- expected: FAIL
+ expected: TIMEOUT
- [picture: source (max-width:500px) broken image, img valid image, resize to narrow]
+ [img (srcset 1 cand) valid image, resize to wide]
expected: FAIL
- [img (srcset 1 cand) valid image, resize to narrow]
+ [picture: same URL in source (max-width:500px) and img, resize to wide]
expected: FAIL
- [picture: same URL in source (max-width:500px) and img, resize to narrow]
+ [picture: source (max-width:500px) valid image, img broken image, resize to wide]
expected: FAIL
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini
new file mode 100644
index 00000000000..8cc42056d34
--- /dev/null
+++ b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini
@@ -0,0 +1,10 @@
+[non-active-document.html]
+ [DOMParser]
+ expected: FAIL
+
+ [createHTMLDocument]
+ expected: FAIL
+
+ [<template>]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/quirks/unitless-length/limited-quirks.html.ini b/tests/wpt/metadata/quirks/unitless-length/limited-quirks.html.ini
deleted file mode 100644
index c7e9c7434f5..00000000000
--- a/tests/wpt/metadata/quirks/unitless-length/limited-quirks.html.ini
+++ /dev/null
@@ -1,283 +0,0 @@
-[limited-quirks.html]
- [top: -\\31 .5]
- expected: FAIL
-
- [bottom: -1A]
- expected: FAIL
-
- [bottom: -1a]
- expected: FAIL
-
- [top: @1]
- expected: FAIL
-
- [top: "1a"]
- expected: FAIL
-
- [top: @a]
- expected: FAIL
-
- [bottom: "1"]
- expected: FAIL
-
- [bottom: -/**/1]
- expected: FAIL
-
- [top: +/**/1]
- expected: FAIL
-
- [bottom: @1a]
- expected: FAIL
-
- [top: 1\\31 ]
- expected: FAIL
-
- [top: url('1')]
- expected: FAIL
-
- [bottom: -\\31 ]
- expected: FAIL
-
- [top: calc(1)]
- expected: FAIL
-
- [top: \\31 ]
- expected: FAIL
-
- [bottom: +1\\31 ]
- expected: FAIL
-
- [bottom: 1\\31 .5]
- expected: FAIL
-
- [bottom: #0001]
- expected: FAIL
-
- [top: calc(2 * 2px)]
- expected: FAIL
-
- [bottom: 1a]
- expected: FAIL
-
- [bottom: A]
- expected: FAIL
-
- [bottom: #01]
- expected: FAIL
-
- [top: +\\31 .5]
- expected: FAIL
-
- [bottom: #1]
- expected: FAIL
-
- [top: -/**/1]
- expected: FAIL
-
- [bottom: +\\31 .5]
- expected: FAIL
-
- [bottom: \\31 ]
- expected: FAIL
-
- [bottom: calc(1)]
- expected: FAIL
-
- [top: #001]
- expected: FAIL
-
- [top: +\\31 ]
- expected: FAIL
-
- [bottom: +\\31 ]
- expected: FAIL
-
- [top: +1.5]
- expected: FAIL
-
- [top: +1\\31 ]
- expected: FAIL
-
- [bottom: @a]
- expected: FAIL
-
- [bottom: @1]
- expected: FAIL
-
- [top: #1]
- expected: FAIL
-
- [top: 1a]
- expected: FAIL
-
- [bottom: +1a]
- expected: FAIL
-
- [bottom: +1A]
- expected: FAIL
-
- [bottom: "a"]
- expected: FAIL
-
- [top: #00001]
- expected: FAIL
-
- [bottom: -1\\31 .5]
- expected: FAIL
-
- [top: "1"]
- expected: FAIL
-
- [bottom: 1.5]
- expected: FAIL
-
- [bottom: -\\31 .5]
- expected: FAIL
-
- [bottom: url('1')]
- expected: FAIL
-
- [bottom: -1.5]
- expected: FAIL
-
- [top: \\31 .5]
- expected: FAIL
-
- [bottom: "1a"]
- expected: FAIL
-
- [bottom: calc(2 * 2px)]
- expected: FAIL
-
- [bottom: +1\\31 .5]
- expected: FAIL
-
- [bottom: 1\\31 ]
- expected: FAIL
-
- [bottom: +/**/1]
- expected: FAIL
-
- [bottom: #00001]
- expected: FAIL
-
- [top: url(1)]
- expected: FAIL
-
- [bottom: #001]
- expected: FAIL
-
- [top: +1\\31 .5]
- expected: FAIL
-
- [top: -1a]
- expected: FAIL
-
- [top: -1A]
- expected: FAIL
-
- [bottom: url(1)]
- expected: FAIL
-
- [top: a]
- expected: FAIL
-
- [top: A]
- expected: FAIL
-
- [top: #000001]
- expected: FAIL
-
- [top: 1]
- expected: FAIL
-
- [top: 1\\31 .5]
- expected: FAIL
-
- [bottom: a]
- expected: FAIL
-
- [bottom: 1]
- expected: FAIL
-
- [bottom: +1]
- expected: FAIL
-
- [bottom: #000001]
- expected: FAIL
-
- [bottom: +a]
- expected: FAIL
-
- [bottom: +A]
- expected: FAIL
-
- [top: 1.5]
- expected: FAIL
-
- [top: +A]
- expected: FAIL
-
- [top: +a]
- expected: FAIL
-
- [top: +1]
- expected: FAIL
-
- [top: -1.5]
- expected: FAIL
-
- [top: -1\\31 .5]
- expected: FAIL
-
- [top: +1a]
- expected: FAIL
-
- [top: +1A]
- expected: FAIL
-
- [top: @1a]
- expected: FAIL
-
- [bottom: \\31 .5]
- expected: FAIL
-
- [top: "a"]
- expected: FAIL
-
- [top: #01]
- expected: FAIL
-
- [bottom: +1.5]
- expected: FAIL
-
- [bottom: -A]
- expected: FAIL
-
- [bottom: -a]
- expected: FAIL
-
- [bottom: -1\\31 ]
- expected: FAIL
-
- [top: #0001]
- expected: FAIL
-
- [bottom: -1]
- expected: FAIL
-
- [top: -\\31 ]
- expected: FAIL
-
- [top: -A]
- expected: FAIL
-
- [top: -a]
- expected: FAIL
-
- [top: -1]
- expected: FAIL
-
- [top: -1\\31 ]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/url/urlencoded-parser.any.js.ini b/tests/wpt/metadata/url/urlencoded-parser.any.js.ini
index 29123761468..8408c819fd6 100644
--- a/tests/wpt/metadata/url/urlencoded-parser.any.js.ini
+++ b/tests/wpt/metadata/url/urlencoded-parser.any.js.ini
@@ -1,10 +1,4 @@
[urlencoded-parser.any.html]
- [response.formData() with input: _charset_=windows-1252&test=%C2x]
- expected: FAIL
-
- [request.formData() with input: _charset_=windows-1252&test=%C2x]
- expected: FAIL
-
[request.formData() with input: &&&a=b&&&&c=d&]
expected: FAIL
@@ -17,17 +11,11 @@
[response.formData() with input: a=b&c=d&]
expected: FAIL
- [request.formData() with input: a=b&c=d]
- expected: FAIL
-
[urlencoded-parser.any.worker.html]
[request.formData() with input: a&b&c]
expected: FAIL
- [request.formData() with input: a=b&c=d&]
- expected: FAIL
-
[response.formData() with input: a&b&c]
expected: FAIL
@@ -40,6 +28,3 @@
[request.formData() with input: a=b&c=d]
expected: FAIL
- [response.formData() with input: _charset_=windows-1252&test=%C2x]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-postmessage-sharedarraybuffer.https.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-postmessage-sharedarraybuffer.https.html.ini
new file mode 100644
index 00000000000..476a2e87036
--- /dev/null
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-postmessage-sharedarraybuffer.https.html.ini
@@ -0,0 +1,4 @@
+[audioworklet-postmessage-sharedarraybuffer.https.html]
+ [\n Test passing SharedArrayBuffer to an AudioWorklet\n ]
+ expected: FAIL
+
diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/child-navigates-parent-allowed.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/child-navigates-parent-allowed.html
index 6c05478190f..7b4b455d8d4 100644
--- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/child-navigates-parent-allowed.html
+++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/child-navigates-parent-allowed.html
@@ -1,14 +1,13 @@
<!DOCTYPE html>
<head>
-<meta name="timeout" content="long">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
<body>
<script>
- var t = async_test("Test that the child can navigate the parent because the relevant policy belongs to the navigation initiator (in this case the child)");
+ var t = async_test("Test that the child can navigate the parent because the relevant policy belongs to the navigation initiator (in this case the child, which has the policy `navigate-to 'self'`)");
window.onmessage = t.step_func_done(function(e) {
assert_equals(e.data.result, 'success');
});
diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/child-navigates-parent-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/child-navigates-parent-blocked.sub.html
index 2acf417a3b9..4e50617e3c2 100644
--- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/child-navigates-parent-blocked.sub.html
+++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/child-navigates-parent-blocked.sub.html
@@ -6,7 +6,14 @@
</head>
<body>
+<script>
+ var t = async_test("Test that the child can't navigate the parent because the relevant policy belongs to the navigation initiator (in this case the child which has the policy `navigate-to 'none'`)");
+ window.onmessage = t.step_func_done(function(e) {
+ assert_equals(e.data.result, 'fail');
+ assert_equals(e.data.violatedDirective, 'navigate-to');
+ });
+</script>
<iframe srcdoc="<iframe src='support/navigate_parent.sub.html?csp=navigate-to%20%27none%27&report_id={{$id:uuid()}}'>"></iframe>
<script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=navigate-to%20%27none%27&reportID={{$id}}'></script>
-</body> \ No newline at end of file
+</body>
diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-action/form-action-allows-navigate-to-allows.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-action/form-action-allows-navigate-to-allows.html
index 452b881829f..458373fbc01 100644
--- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-action/form-action-allows-navigate-to-allows.html
+++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-action/form-action-allows-navigate-to-allows.html
@@ -12,5 +12,5 @@
assert_equals(e.data.result, 'success');
});
</script>
-<iframe src="../support/form_action_navigation.sub.html?csp=navigate-to%20%27self%27%3B%20form-action%20%27self%27%3B&action=post_message_to_frame_owner.html">
+<iframe src="../support/form_action_navigation.sub.html?csp=navigate-to%20%27self%27%3B%20form-action%20%27self%27%3B&action=post_message_to_frame_owner.html&report_id=dummy">
</body> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-action/form-action-allows-navigate-to-blocks.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-action/form-action-allows-navigate-to-blocks.html
index 44dcc516357..3ed4815bff6 100644
--- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-action/form-action-allows-navigate-to-blocks.html
+++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-action/form-action-allows-navigate-to-blocks.html
@@ -12,5 +12,5 @@
assert_equals(e.data.result, 'success');
});
</script>
-<iframe src="../support/form_action_navigation.sub.html?csp=navigate-to%20%27none%27%3B%20form-action%20%27self%27%3B&action=post_message_to_frame_owner.html">
+<iframe src="../support/form_action_navigation.sub.html?csp=navigate-to%20%27none%27%3B%20form-action%20%27self%27%3B&action=post_message_to_frame_owner.html&report_id=dummy">
</body> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-action/form-action-blocks-navigate-to-allows.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-action/form-action-blocks-navigate-to-allows.html
index 5e6557d9d9b..f3f7896e932 100644
--- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-action/form-action-blocks-navigate-to-allows.html
+++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-action/form-action-blocks-navigate-to-allows.html
@@ -13,5 +13,5 @@
assert_equals(e.data.violatedDirective, 'form-action');
});
</script>
-<iframe src="../support/form_action_navigation.sub.html?csp=navigate-to%20%27self%27%3B%20form-action%20%27none%27%3B&action=post_message_to_frame_owner.html">
+<iframe src="../support/form_action_navigation.sub.html?csp=navigate-to%20%27self%27%3B%20form-action%20%27none%27%3B&action=post_message_to_frame_owner.html&report_id=dummy">
</body> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-action/form-action-blocks-navigate-to-blocks.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-action/form-action-blocks-navigate-to-blocks.html
index 9f9c803d53a..08e0cbe3fb9 100644
--- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-action/form-action-blocks-navigate-to-blocks.html
+++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-action/form-action-blocks-navigate-to-blocks.html
@@ -13,5 +13,5 @@
assert_equals(e.data.violatedDirective, 'form-action');
});
</script>
-<iframe src="../support/form_action_navigation.sub.html?csp=navigate-to%20%27none%27%3B%20form-action%20%27none%27%3B&action=post_message_to_frame_owner.html">
+<iframe src="../support/form_action_navigation.sub.html?csp=navigate-to%20%27none%27%3B%20form-action%20%27none%27%3B&action=post_message_to_frame_owner.html&report_id=dummy">
</body> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-blocked.sub.html
index beb22214faa..72db7b8d1d5 100644
--- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-blocked.sub.html
+++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-blocked.sub.html
@@ -6,6 +6,13 @@
</head>
<body>
+<script>
+ var t = async_test("Test that the child iframe navigation is not allowed");
+ window.onmessage = t.step_func_done(function(e) {
+ assert_equals(e.data.result, 'fail');
+ assert_equals(e.data.violatedDirective, 'navigate-to');
+ });
+</script>
<iframe src="support/form_action_navigation.sub.html?csp=navigate-to%20%27none%27&report_id={{$id:uuid()}}&action=post_message_to_frame_owner.html"></iframe>
<script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=navigate-to%20%27none%27&reportID={{$id}}'></script>
diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-cross-origin-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-cross-origin-blocked.sub.html
index 49fe958adb7..be5f70c8b1e 100644
--- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-cross-origin-blocked.sub.html
+++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-cross-origin-blocked.sub.html
@@ -6,6 +6,13 @@
</head>
<body>
+<script>
+ var t = async_test("Test that the child iframe navigation is not allowed");
+ window.onmessage = t.step_func_done(function(e) {
+ assert_equals(e.data.result, 'fail');
+ assert_equals(e.data.violatedDirective, 'navigate-to');
+ });
+</script>
<iframe src="support/form_action_navigation.sub.html?csp=navigate-to%20%27self%27&report_id={{$id:uuid()}}&action=http%3A%2F%2F{{domains[www1]}}:{{ports[http][0]}}%2Fcontent-security-policy%2Fnavigate-to%2Fsupport%2Fpost_message_to_frame_owner.html"></iframe>
<script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=navigate-to%20%27self%27&reportID={{$id}}'></script>
diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-redirected-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-redirected-blocked.sub.html
index 6adc9efdaaf..d60b8a7aa8d 100644
--- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-redirected-blocked.sub.html
+++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-redirected-blocked.sub.html
@@ -6,6 +6,14 @@
</head>
<body>
+<script>
+ var t = async_test("Test that the child iframe navigation is not allowed");
+ window.onmessage = t.step_func_done(function(e) {
+ assert_equals(e.data.result, 'fail');
+ assert_equals(e.data.violatedDirective, 'navigate-to');
+ });
+</script>
+
<iframe src="support/form_action_navigation.sub.html?csp=navigate-to%20%27self%27&report_id={{$id:uuid()}}&action=redirect_to_post_message_to_frame_owner.py%3Flocation%3Dhttp%3A%2F%2F{{domains[www1]}}%3A{{ports[http][0]}}%2Fcontent-security-policy%2Fnavigate-to%2Fsupport%2Fpost_message_to_frame_owner.html"></iframe>
<script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=navigate-to%20%27self%27&reportID={{$id}}'></script>
diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/href-location-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/href-location-blocked.sub.html
index 6aef250eeed..721f055c715 100644
--- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/href-location-blocked.sub.html
+++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/href-location-blocked.sub.html
@@ -7,6 +7,12 @@
<body>
<script>
+ var t = async_test("Test that the child iframe navigation is not allowed");
+ window.onmessage = t.step_func_done(function(e) {
+ assert_equals(e.data.result, 'fail');
+ assert_equals(e.data.violatedDirective, 'navigate-to');
+ });
+
window.open("support/href_location_navigation.sub.html?csp=navigate-to%20%27none%27&report_id={{$id:uuid()}}&target=post_message_to_frame_owner.html", "_blank");
</script>
diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/href-location-cross-origin-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/href-location-cross-origin-blocked.sub.html
index 894719b3ac8..cd0cd9106db 100644
--- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/href-location-cross-origin-blocked.sub.html
+++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/href-location-cross-origin-blocked.sub.html
@@ -7,6 +7,12 @@
<body>
<script>
+ var t = async_test("Test that the child iframe navigation is not allowed");
+ window.onmessage = t.step_func_done(function(e) {
+ assert_equals(e.data.result, 'fail');
+ assert_equals(e.data.violatedDirective, 'navigate-to');
+ });
+
window.open("support/href_location_navigation.sub.html?csp=navigate-to%20%27self%27&report_id={{$id:uuid()}}&target=http%3A%2F%2F{{domains[www1]}}:{{ports[http][0]}}%2Fcontent-security-policy%2Fnavigate-to%2Fsupport%2Fpost_message_to_frame_owner.html", "_blank");
</script>
diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/href-location-redirected-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/href-location-redirected-blocked.sub.html
index b91c473bef4..5d8fafb3131 100644
--- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/href-location-redirected-blocked.sub.html
+++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/href-location-redirected-blocked.sub.html
@@ -7,6 +7,12 @@
<body>
<script>
+ var t = async_test("Test that the child iframe navigation is not allowed");
+ window.onmessage = t.step_func_done(function(e) {
+ assert_equals(e.data.result, 'fail');
+ assert_equals(e.data.violatedDirective, 'navigate-to');
+ });
+
window.open("support/href_location_navigation.sub.html?csp=navigate-to%20%27self%27&report_id={{$id:uuid()}}&target=redirect_to_post_message_to_frame_owner.py%3Flocation%3Dhttp%3A%2F%2F{{domains[www1]}}%3A{{ports[http][0]}}%2Fcontent-security-policy%2Fnavigate-to%2Fsupport%2Fpost_message_to_frame_owner.html", "_blank");
</script>
diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-allowed.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-allowed.html
index 667a3a59f2f..977b85dfb2c 100644
--- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-allowed.html
+++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-allowed.html
@@ -1,7 +1,6 @@
<!DOCTYPE html>
<head>
-<meta name="timeout" content="long">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-blocked.sub.html
index 0ad98264c96..29686fcaeff 100644
--- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-blocked.sub.html
+++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-blocked.sub.html
@@ -6,7 +6,14 @@
</head>
<body>
+<script>
+ var t = async_test("Test that the child iframe navigation is not allowed");
+ window.onmessage = t.step_func_done(function(e) {
+ assert_equals(e.data.result, 'fail');
+ assert_equals(e.data.violatedDirective, 'navigate-to');
+ });
+</script>
<iframe src="support/link_click_navigation.sub.html?csp=navigate-to%20%27none%27&report_id={{$id:uuid()}}&target=post_message_to_frame_owner.html"></iframe>
-<script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=navigate-to%20%27none%27&reportID={{$id}}'></script>
+<script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=navigate-to%20%27self%27&reportID={{$id}}'></script>
</body> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-cross-origin-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-cross-origin-allowed.sub.html
index 2f9f0e2af0c..4381bcb08d6 100644
--- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-cross-origin-allowed.sub.html
+++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-cross-origin-allowed.sub.html
@@ -1,7 +1,6 @@
<!DOCTYPE html>
<head>
-<meta name="timeout" content="long">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-cross-origin-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-cross-origin-blocked.sub.html
index 970f5a2d306..f2b106c5773 100644
--- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-cross-origin-blocked.sub.html
+++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-cross-origin-blocked.sub.html
@@ -1,12 +1,19 @@
<!DOCTYPE html>
<head>
-<meta name="timeout" content="long">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
<body>
+<script>
+ var t = async_test("Test that the child iframe navigation is not allowed");
+ window.onmessage = t.step_func_done(function(e) {
+ assert_equals(e.data.result, 'fail');
+ assert_equals(e.data.violatedDirective, 'navigate-to');
+ });
+</script>
+
<iframe src="support/link_click_navigation.sub.html?csp=navigate-to%20%27self%27&report_id={{$id:uuid()}}&target=http%3A%2F%2F{{domains[www1]}}:{{ports[http][0]}}%2Fcontent-security-policy%2Fnavigate-to%2Fsupport%2Fpost_message_to_frame_owner.html"></iframe>
<script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=navigate-to%20%27self%27&reportID={{$id}}'></script>
diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-redirected-allowed.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-redirected-allowed.html
index 81c4f4e1677..87dea95b1dc 100644
--- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-redirected-allowed.html
+++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-redirected-allowed.html
@@ -1,7 +1,6 @@
<!DOCTYPE html>
<head>
-<meta name="timeout" content="long">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-redirected-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-redirected-blocked.sub.html
index bb61126244e..9b9205a526a 100644
--- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-redirected-blocked.sub.html
+++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-redirected-blocked.sub.html
@@ -1,12 +1,18 @@
<!DOCTYPE html>
<head>
-<meta name="timeout" content="long">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
<body>
+<script>
+ var t = async_test("Test that the child iframe navigation is not allowed");
+ window.onmessage = t.step_func_done(function(e) {
+ assert_equals(e.data.result, 'fail');
+ assert_equals(e.data.violatedDirective, 'navigate-to');
+ });
+</script>
<iframe src="support/link_click_navigation.sub.html?csp=navigate-to%20%27self%27&report_id={{$id:uuid()}}&target=redirect_to_post_message_to_frame_owner.py%3Flocation%3Dhttp%3A%2F%2F{{domains[www1]}}%3A{{ports[http][0]}}%2Fcontent-security-policy%2Fnavigate-to%2Fsupport%2Fpost_message_to_frame_owner.html"></iframe>
<script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=navigate-to%20%27self%27&reportID={{$id}}'></script>
diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/meta-refresh-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/meta-refresh-blocked.sub.html
index d4d52a51ccb..1292c9ba5fc 100644
--- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/meta-refresh-blocked.sub.html
+++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/meta-refresh-blocked.sub.html
@@ -6,6 +6,14 @@
</head>
<body>
+<script>
+ var t = async_test("Test that the child iframe navigation is not allowed");
+ window.onmessage = t.step_func_done(function(e) {
+ assert_equals(e.data.result, 'fail');
+ assert_equals(e.data.violatedDirective, 'navigate-to');
+ });
+</script>
+
<iframe src="support/meta_refresh_navigation.sub.html?csp=navigate-to%20%27none%27&report_id={{$id:uuid()}}&target=post_message_to_frame_owner.html"></iframe>
<script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=navigate-to%20%27none%27&reportID={{$id}}'></script>
diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/meta-refresh-cross-origin-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/meta-refresh-cross-origin-blocked.sub.html
index 2118b27ba33..d7ccd336205 100644
--- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/meta-refresh-cross-origin-blocked.sub.html
+++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/meta-refresh-cross-origin-blocked.sub.html
@@ -6,6 +6,14 @@
</head>
<body>
+<script>
+ var t = async_test("Test that the child iframe navigation is not allowed");
+ window.onmessage = t.step_func_done(function(e) {
+ assert_equals(e.data.result, 'fail');
+ assert_equals(e.data.violatedDirective, 'navigate-to');
+ });
+</script>
+
<iframe src="support/meta_refresh_navigation.sub.html?csp=navigate-to%20%27self%27&report_id={{$id:uuid()}}&target=http%3A%2F%2F{{domains[www1]}}:{{ports[http][0]}}%2Fcontent-security-policy%2Fnavigate-to%2Fsupport%2Fpost_message_to_frame_owner.html"></iframe>
<script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=navigate-to%20%27self%27&reportID={{$id}}'></script>
diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/meta-refresh-redirected-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/meta-refresh-redirected-blocked.sub.html
index 55e3295ec1a..0734473ee63 100644
--- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/meta-refresh-redirected-blocked.sub.html
+++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/meta-refresh-redirected-blocked.sub.html
@@ -6,6 +6,14 @@
</head>
<body>
+<script>
+ var t = async_test("Test that the child iframe navigation is not allowed");
+ window.onmessage = t.step_func_done(function(e) {
+ assert_equals(e.data.result, 'fail');
+ assert_equals(e.data.violatedDirective, 'navigate-to');
+ });
+</script>
+
<iframe src="support/meta_refresh_navigation.sub.html?csp=navigate-to%20%27self%27&report_id={{$id:uuid()}}&target=redirect_to_post_message_to_frame_owner.py%3Flocation%3Dhttp%3A%2F%2F{{domains[www1]}}%3A{{ports[http][0]}}%2Fcontent-security-policy%2Fnavigate-to%2Fsupport%2Fpost_message_to_frame_owner.html"></iframe>
<script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=navigate-to%20%27self%27&reportID={{$id}}'></script>
diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/parent-navigates-child-allowed.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/parent-navigates-child-allowed.html
index e5455ceaa27..47a661157c3 100644
--- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/parent-navigates-child-allowed.html
+++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/parent-navigates-child-allowed.html
@@ -7,7 +7,7 @@
<body>
<script>
- var t = async_test("Test that the parent can navigate the child because the relevant policy belongs to the navigation initiator (in this case the parent)");
+ var t = async_test("Test that the parent can navigate the child because the relevant policy belongs to the navigation initiator (in this case the parent, which has the policy `navigate-to 'self'`)");
window.onmessage = t.step_func_done(function(e) {
assert_equals(e.data.result, 'success');
});
@@ -23,4 +23,4 @@
i.src = "support/wait_for_navigation.html?csp=navigate-to%20%none%27";
document.body.appendChild(i);
</script>
-</body> \ No newline at end of file
+</body>
diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/parent-navigates-child-blocked.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/parent-navigates-child-blocked.html
index fc549b47fd8..c662da95fa1 100644
--- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/parent-navigates-child-blocked.html
+++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/parent-navigates-child-blocked.html
@@ -7,6 +7,12 @@
<body>
<script>
+ var t = async_test("Test that the parent can't navigate the child because the relevant policy belongs to the navigation initiator (in this case the parent, which has the policy `navigate-to support/wait_for_navigation.html;`)");
+ window.onmessage = t.unreached_func("Should not have received a message as the navigation should not have been successful");
+ window.addEventListener('securitypolicyviolation', t.step_func_done(function(e) {
+ assert_equals(e.violatedDirective, 'navigate-to');
+ }));
+
var i = document.createElement('iframe');
var src_changed = false;
i.onload = function() {
@@ -17,5 +23,6 @@
i.src = "support/wait_for_navigation.html?csp=navigate-to%20%27self%27";
document.body.appendChild(i);
</script>
+
<script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=navigate-to%20support%2Fwait_for_navigation.html'></script>
-</body> \ No newline at end of file
+</body>
diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/spv-only-sent-to-initiator.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/spv-only-sent-to-initiator.html
new file mode 100644
index 00000000000..a09057e7156
--- /dev/null
+++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/spv-only-sent-to-initiator.html
@@ -0,0 +1,48 @@
+<!DOCTYPE html>
+
+<head>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+</head>
+<body>
+<!-- This tests that a navigation initiator that has been replaced by the time
+ the navigation it initiates is blocked, will not receive the SPV event.
+
+ An iframe will navigate another iframe and the navigate itself.
+ The second iframe's navigation response will be delayed by the server but will
+ eventually be blocked by the CSP of the first iframe.
+ By the time this happens the first iframe should be an entirely different
+ document and it should not receive a SPV event -->
+<script>
+ var t = async_test("Test that no spv event is raised");
+ window.onmessage = t.step_func(function(e) {
+ if (e.data == "end_test") t.done();
+ else assert_unreached("Should not have raised a spv event");
+ });
+
+ var frames_loaded_count = 0;
+ var frame_loaded = function() {
+ if (++frames_loaded_count == 2) {
+ // both child frame have loaded we can start the
+ // test now, send a message to iframe1 so it knows to start
+ document.getElementById('iframe1').contentWindow.postMessage('start_test', '*');
+ }
+ }
+ var i1 = document.createElement('iframe');
+ i1.src = "support/spv-test-iframe1.sub.html?report_id={{$id:uuid()}}";
+ i1.id = "iframe1";
+ i1.name = "iframe1";
+ i1.onload = frame_loaded;
+ document.body.appendChild(i1);
+
+ var i2 = document.createElement('iframe');
+ i2.src = "support/spv-test-iframe2.sub.html";
+ i2.id = "iframe2";
+ i2.name = "iframe2";
+ i2.onload = frame_loaded;
+ document.body.appendChild(i2);
+</script>
+
+<script async defer src='../support/checkReport.sub.js?reportExists=false&reportID={{$id}}'></script>
+
+</body>
diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/delayed_frame.py b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/delayed_frame.py
new file mode 100644
index 00000000000..21886c7092a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/delayed_frame.py
@@ -0,0 +1,12 @@
+import time
+def main(request, response):
+ time.sleep(1)
+ headers = [("Content-Type", "text/html")]
+ return headers, '''
+<!DOCTYPE html>
+<head>
+</head>
+<body>
+ DELAYED FRAME
+</body
+'''
diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/href_location_navigation.sub.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/href_location_navigation.sub.html
index c577e935cd4..15b1365cc21 100644
--- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/href_location_navigation.sub.html
+++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/href_location_navigation.sub.html
@@ -6,6 +6,10 @@
<body>
<script>
+ window.addEventListener('securitypolicyviolation', function(e) {
+ opener.postMessage({result: 'fail', violatedDirective: e.violatedDirective}, '*');
+ });
+
try {
location.href = "{{GET[target]}}";
} catch(ex) {}
diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/link_click_navigation.sub.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/link_click_navigation.sub.html
index f1b42428344..2434271211f 100644
--- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/link_click_navigation.sub.html
+++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/link_click_navigation.sub.html
@@ -7,6 +7,10 @@
<body>
<a href="{{GET[target]}}" id="link">dummy link</a>
<script>
+ window.addEventListener('securitypolicyviolation', function(e) {
+ top.postMessage({result: 'fail', violatedDirective: e.violatedDirective}, '*');
+ });
+
document.getElementById('link').click();
</script>
</body> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/redirect_to_post_message_to_frame_owner.py b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/redirect_to_post_message_to_frame_owner.py
index 652f9a57b96..d22e9202a2a 100644
--- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/redirect_to_post_message_to_frame_owner.py
+++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/redirect_to_post_message_to_frame_owner.py
@@ -3,4 +3,4 @@ def main(request, response):
if "location" in request.GET:
response.headers.set("Location", request.GET["location"])
else:
- response.headers.set("Location", "post_message_to_frame_owner.html") \ No newline at end of file
+ response.headers.set("Location", "post_message_to_frame_owner.html")
diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/spv-test-iframe1.sub.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/spv-test-iframe1.sub.html
new file mode 100644
index 00000000000..9e26c02be31
--- /dev/null
+++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/spv-test-iframe1.sub.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<head>
+ <script>
+ window.onmessage = function(e) {
+ if (e.data == "start_test") {
+ document.getElementById('link').click();
+ location.href = "{{location[server]}}/content-security-policy/navigate-to/support/spv-test-iframe3.sub.html";
+ }
+ }
+ window.addEventListener('securitypolicyviolation', function(e) {
+ top.postMessage({iframe: 'iframe1', violatedDirective: e.violatedDirective}, '*');
+ });
+ </script>
+</head>
+
+<body>
+ <a href="{{location[server]}}/content-security-policy/navigate-to/support/delayed_frame.py" id="link" target="iframe2">dummy link</a>
+ IFRAME 1
+</body>
diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/spv-test-iframe1.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/spv-test-iframe1.sub.html.sub.headers
new file mode 100644
index 00000000000..50d77dc7dbb
--- /dev/null
+++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/spv-test-iframe1.sub.html.sub.headers
@@ -0,0 +1,4 @@
+Expires: Mon, 26 Jul 1997 05:00:00 GMT
+Cache-Control: no-store, no-cache, must-revalidate
+Pragma: no-cache
+Content-Security-Policy: navigate-to {{location[server]}}/content-security-policy/navigate-to/support/spv-test-iframe3.sub.html 'unsafe-allow-redirects'; report-uri /content-security-policy/support/report.py?op=put&reportID={{GET[report_id]}}
diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/spv-test-iframe2.sub.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/spv-test-iframe2.sub.html
new file mode 100644
index 00000000000..1329683c88b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/spv-test-iframe2.sub.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<head>
+</head>
+<body>
+ <script>
+ window.addEventListener('securitypolicyviolation', function(e) {
+ top.postMessage({iframe: 'iframe1', violatedDirective: e.violatedDirective}, '*');
+ });
+ setTimeout(function() {
+ top.postMessage("end_test", "*");
+ }, 4000);
+ </script>
+ IFRAME 2
+</body>
diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/spv-test-iframe3.sub.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/spv-test-iframe3.sub.html
new file mode 100644
index 00000000000..09dbf6863dc
--- /dev/null
+++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/spv-test-iframe3.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<head>
+ <script>
+ window.addEventListener('securitypolicyviolation', function(e) {
+ top.postMessage({iframe: 'iframe3', violatedDirective: e.violatedDirective}, '*');
+ });
+ </script>
+</head>
+
+<body>
+ IFRAME 3
+</body>
diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/unsafe-allow-redirects/allowed-end-of-chain-because-of-same-origin.sub.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/unsafe-allow-redirects/allowed-end-of-chain-because-of-same-origin.sub.html
new file mode 100644
index 00000000000..192477296b6
--- /dev/null
+++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/unsafe-allow-redirects/allowed-end-of-chain-because-of-same-origin.sub.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+
+<head>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+</head>
+
+<body>
+<script>
+ var t = async_test("Test that the child iframe navigation is allowed");
+ window.onmessage = t.step_func_done(function(e) {
+ assert_equals(e.data.result, 'success');
+ });
+
+ // the iframe will navigate to:
+ // [www2]/..../redirect.py (which is not in the navigate-to source list) which will in turn navigate to
+ // [www1]/..../post_message_to_frame_owner.html which is not exactly in
+ // the list but the check should be reduced to an origin check since there has been a redirect.
+ // Because of 'unsafe-allow-redirects' only the second one is checked since the first is a redirect
+
+ var i = document.createElement('iframe');
+ i.src = "../support/link_click_navigation.sub.html" +
+ "?csp=" + encodeURIComponent("navigate-to {{location[scheme]}}://{{domains[www1]}}:{{location[port]}}/some-path/ 'unsafe-allow-redirects'") +
+ "&target=" + encodeURIComponent("{{location[scheme]}}://{{domains[www2]}}:{{location[port]}}/common/redirect.py?location=" +
+ encodeURIComponent("{{location[scheme]}}://{{domains[www1]}}:{{location[port]}}/content-security-policy/navigate-to/support/post_message_to_frame_owner.html"));
+ document.body.appendChild(i);
+</script>
+
+</body>
diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/unsafe-allow-redirects/allowed-end-of-chain.sub.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/unsafe-allow-redirects/allowed-end-of-chain.sub.html
new file mode 100644
index 00000000000..74fe8f2e7a6
--- /dev/null
+++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/unsafe-allow-redirects/allowed-end-of-chain.sub.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+
+<head>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+</head>
+
+<body>
+<script>
+ var t = async_test("Test that the child iframe navigation is allowed");
+ window.onmessage = t.step_func_done(function(e) {
+ assert_equals(e.data.result, 'success');
+ });
+
+ // the iframe will navigate to:
+ // [www2]/..../redirect.py (which is not in the navigate-to source list) which will in turn navigate to
+ // [www1]/..../post_message_to_frame_owner.html which is in the list
+ // because of 'unsafe-allow-redirects' only the second one is checked since the first is a redirect
+
+ var i = document.createElement('iframe');
+ i.src = "../support/link_click_navigation.sub.html" +
+ "?csp=" + encodeURIComponent("navigate-to {{location[scheme]}}://{{domains[www1]}}:{{location[port]}} 'unsafe-allow-redirects'") +
+ "&target=" + encodeURIComponent("{{location[scheme]}}://{{domains[www2]}}:{{location[port]}}/common/redirect.py?location=" +
+ encodeURIComponent("{{location[scheme]}}://{{domains[www1]}}:{{location[port]}}/content-security-policy/navigate-to/support/post_message_to_frame_owner.html"));
+ document.body.appendChild(i);
+</script>
+
+</body>
diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/unsafe-allow-redirects/blocked-end-of-chain.sub.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/unsafe-allow-redirects/blocked-end-of-chain.sub.html
new file mode 100644
index 00000000000..86e54b3d937
--- /dev/null
+++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/unsafe-allow-redirects/blocked-end-of-chain.sub.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+
+<head>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+</head>
+
+<body>
+<script>
+ var t = async_test("Test that the child iframe navigation is blocked");
+ window.onmessage = t.step_func_done(function(e) {
+ assert_equals(e.data.result, 'fail');
+ assert_equals(e.data.violatedDirective, 'navigate-to');
+ });
+
+ // the iframe will navigate to:
+ // [www2]/..../redirect.py (which is not in the navigate-to source list) which will in turn navigate to
+ // [www2]/..../post_message_to_frame_owner.html which is also not in the list
+ // because of 'unsafe-allow-redirects' only the second one is checked since the first is a redirect
+
+ var i = document.createElement('iframe');
+ i.src = "../support/link_click_navigation.sub.html" +
+ "?csp=" + encodeURIComponent("navigate-to {{location[scheme]}}://{{domains[www1]}}:{{location[port]}} 'unsafe-allow-redirects'") +
+ "&target=" + encodeURIComponent("{{location[scheme]}}://{{domains[www2]}}:{{location[port]}}/common/redirect.py?location=" +
+ encodeURIComponent("{{location[scheme]}}://{{domains[www2]}}:{{location[port]}}/content-security-policy/navigate-to/support/post_message_to_frame_owner.html"));
+ document.body.appendChild(i);
+</script>
+
+</body>
diff --git a/tests/wpt/web-platform-tests/css/css-paint-api/registered-property-type.https.html b/tests/wpt/web-platform-tests/css/css-paint-api/registered-property-type.https.html
index 6ff7ce4e0af..8f02008333c 100644
--- a/tests/wpt/web-platform-tests/css/css-paint-api/registered-property-type.https.html
+++ b/tests/wpt/web-platform-tests/css/css-paint-api/registered-property-type.https.html
@@ -27,16 +27,42 @@
paint(ctx, geom, styleMap) {
ctx.strokeStyle = 'green';
for (let prop of props) {
- let first = styleMap.get(prop.name);
- let all = styleMap.getAll(prop.name);
+ // Read values using get, getAll and iterator:
+ let valueFromGet = styleMap.get(prop.name);
+ let valueFromGetAll = styleMap.getAll(prop.name);
+ let valueFromIterator = Array.from(styleMap).filter(e => e[0] == prop.name)[0][1];
+
+ // Serialize 'actual'-values for all three cases:
let serialize = v => v.constructor.name + '=' + v.toString()
- let actual = all.map(serialize).join(',');
- let expected = prop.expected.join(',');
- let pass = actual === expected
- && serialize(first) === prop.expected[0];
+ let actualFromGet = serialize(valueFromGet);
+ let actualFromGetAll = valueFromGetAll.map(serialize).join(',');
+ let actualFromIterator = valueFromIterator.map(serialize).join(',');
+
+ // Create 'expected'-values for all three cases:
+ let expectedForGet = prop.expected[0];
+ let expectedForGetAll = prop.expected.join(',');
+ let expectedForIterator = expectedForGetAll;
+
+ let pass = true;
+
+ // Assertions:
+ if (actualFromGet !== expectedForGet) {
+ debugLog(`FAIL: StylePropertyMap.get: actual: ${actualFromGet} expected: ${expectedForGet}`);
+ pass = false;
+ }
+ if (actualFromGetAll !== expectedForGetAll) {
+ debugLog(`FAIL: StylePropertyMap.getAll: actual: ${actualFromGetAll} expected: ${expectedForGetAll}`);
+ pass = false;
+ }
+ if (actualFromIterator !== expectedForIterator) {
+ debugLog(`FAIL: StylePropertyMap iterator: actual: ${actualFromIterator} expected: ${expectedForIterator}`);
+ pass = false;
+ }
+
if (!pass)
ctx.strokeStyle = 'red';
- debugLog(pass ? 'PASS' : 'FAIL', prop.syntax, actual, expected);
+ else
+ debugLog('PASS', prop.syntax, actualFromGetAll, expectedForGetAll);
}
ctx.lineWidth = 4;
ctx.strokeRect(0, 0, geom.width, geom.height);
diff --git a/tests/wpt/web-platform-tests/css/css-position/position-sticky-child-multicolumn-ref.html b/tests/wpt/web-platform-tests/css/css-position/position-sticky-child-multicolumn-ref.html
new file mode 100644
index 00000000000..c44f9f43eb5
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-position/position-sticky-child-multicolumn-ref.html
@@ -0,0 +1,50 @@
+<!DOCTYPE html>
+<title>Reference for multicolumn under position:sticky should be positioned correctly</title>
+<style>
+ body {
+ margin: 0;
+ }
+ #scroller {
+ overflow-y: scroll;
+ width: 200px;
+ height: 200px;
+ }
+ #relative {
+ position: relative;
+ top: 100px;
+ margin: 10px;
+ }
+ #child {
+ width: 100px;
+ height: 100px;
+ background: green;
+ }
+ #contents {
+ position: relative;
+ top: 10%;
+ left: 10%;
+ width: 80%;
+ height: 80%;
+ background: lightgreen;
+ }
+ #spacer {
+ height: 400px;
+ }
+</style>
+
+<div id="scroller">
+ <div id="relative">
+ <div id="child">
+ <div id="contents"></div>
+ </div>
+ </div>
+ <div id="spacer"></div>
+</div>
+
+<div>You should see a light green box above with a dark green border.</div>
+
+<script>
+ window.addEventListener('load', function() {
+ scroller.scrollTop = 100;
+ });
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-position/position-sticky-child-multicolumn.html b/tests/wpt/web-platform-tests/css/css-position/position-sticky-child-multicolumn.html
new file mode 100644
index 00000000000..b5b180a4b1b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-position/position-sticky-child-multicolumn.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<title>Multicolumn under position:sticky should be positioned correctly</title>
+<link rel="help" href="https://www.w3.org/TR/css-position-3/#sticky-pos" />
+<link rel="match" href="position-sticky-child-multicolumn-ref.html" />
+<link rel="author" title="Philip Rogers" href="mailto:pdr@chromium.org" />
+<meta name="assert" content="This test checks that a multicolumn element is positioned relative to a sticky position" />
+
+<style>
+ body {
+ margin: 0;
+ }
+ #scroller {
+ overflow-y: scroll;
+ width: 200px;
+ height: 200px;
+ }
+ #sticky {
+ position: sticky;
+ top: 10px;
+ margin: 10px;
+ }
+ #multicolumn {
+ width: 100px;
+ height: 100px;
+ background: green;
+ columns: 1;
+ }
+ #contents {
+ margin-left: 10%;
+ margin-top: 10%;
+ width: 80%;
+ height: 80%;
+ background: lightgreen;
+ }
+ #spacer {
+ height: 400px;
+ }
+</style>
+
+<div id="scroller">
+ <div id="sticky">
+ <div id="multicolumn">
+ <div id="contents"></div>
+ </div>
+ </div>
+ <div id="spacer"></div>
+</div>
+
+<div>You should see a light green box above with a dark green border.</div>
+
+<script>
+ window.addEventListener('load', function() {
+ scroller.scrollTop = 100;
+ });
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-properties-values-api/typedom.tentative.html b/tests/wpt/web-platform-tests/css/css-properties-values-api/typedom.tentative.html
index 1d757df168b..6d0623bba42 100644
--- a/tests/wpt/web-platform-tests/css/css-properties-values-api/typedom.tentative.html
+++ b/tests/wpt/web-platform-tests/css/css-properties-values-api/typedom.tentative.html
@@ -33,6 +33,13 @@ function gen_prop(syntax, initialValue) {
return name;
}
+// Cleans style rules used for testing between every test.
+add_result_callback(function(){
+ target.attributeStyleMap.clear();
+ // Clears 'div' rule in #style:
+ style.sheet.rules[0].styleMap.clear();
+});
+
// On the target element, verify that computed value of 'name' is an instance
// of 'expected' and not an instance of CSSUnparsedValue.
//
@@ -594,4 +601,124 @@ test(function(){
}
}, 'Direct CSSStyleValue instances are tied to their associated property');
+// StylePropertyMapReadOnly iteration
+
+test(function(){
+ let name = gen_prop('<length>', '10px');
+ let result = Array.from(target.computedStyleMap()).filter(e => e[0] == name)[0];
+ assert_true(typeof(result) !== 'undefined');
+}, 'Registered property with initial value show up on iteration of computedStyleMap');
+
+// Verifies that iterating a StylePropertyMap[ReadOnly] yields correctly
+// typed objects for a given syntax/value.
+function test_iteration_type_for_property_map(propertyMapName, propertyMap, options) {
+ test(function(){
+ let name = gen_prop(options.syntax, options.initialValue);
+ if (propertyMap instanceof StylePropertyMap) {
+ // Only set the value if the propertyMap is mutable.
+ propertyMap.set(name, options.value);
+ }
+ let result = Array.from(propertyMap).filter(e => e[0] == name)[0];
+ let value = result[1];
+ assert_true(options.expect(value));
+ }, `Iteration on ${propertyMapName} produces correct type for ${options.syntax}`);
+}
+
+function test_iteration_type(options) {
+ test_iteration_type_for_property_map('computedStyleMap', target.computedStyleMap(), options);
+ test_iteration_type_for_property_map('attributeStyleMap', target.attributeStyleMap, options);
+ test_iteration_type_for_property_map('styleMap', style.sheet.rules[0].styleMap, options);
+}
+
+test_iteration_type({
+ syntax: '*',
+ initialValue: 'none',
+ value: 'thing',
+ expect: v => v.length == 1 && v[0] instanceof CSSUnparsedValue,
+});
+
+test_iteration_type({
+ syntax: '<angle>',
+ initialValue: '0deg',
+ value: '42deg',
+ expect: v => v.length == 1 && v[0] instanceof CSSUnitValue,
+});
+
+test_iteration_type({
+ syntax: '<custom-ident>',
+ initialValue: 'none',
+ value: 'thing',
+ expect: v => v.length == 1 && v[0] instanceof CSSKeywordValue,
+});
+
+test_iteration_type({
+ syntax: '<image>',
+ initialValue: 'url(a)',
+ value: 'url(b)',
+ expect: v => v.length == 1 && v[0] instanceof CSSImageValue,
+});
+
+test_iteration_type({
+ syntax: '<integer>',
+ initialValue: '0',
+ value: '100',
+ expect: v => v.length == 1 && v[0] instanceof CSSUnitValue,
+});
+
+test_iteration_type({
+ syntax: '<length>',
+ initialValue: '0px',
+ value: '10px',
+ expect: v => v.length == 1 && v[0] instanceof CSSUnitValue,
+});
+
+test_iteration_type({
+ syntax: '<number>',
+ initialValue: '0',
+ value: '42',
+ expect: v => v.length == 1 && v[0] instanceof CSSUnitValue,
+});
+
+test_iteration_type({
+ syntax: '<percentage>',
+ initialValue: '0%',
+ value: '10%',
+ expect: v => v.length == 1 && v[0] instanceof CSSUnitValue,
+});
+
+test_iteration_type({
+ syntax: '<resolution>',
+ initialValue: '0dpi',
+ value: '300dpi',
+ expect: v => v.length == 1 && v[0] instanceof CSSUnitValue,
+});
+
+test_iteration_type({
+ syntax: '<time>',
+ initialValue: '0s',
+ value: '10s',
+ expect: v => v.length == 1 && v[0] instanceof CSSUnitValue,
+});
+
+test_iteration_type({
+ syntax: '<url>',
+ initialValue: 'url(a)',
+ value: 'url(b)',
+ expect: v => v.length == 1 && v[0].constructor === CSSStyleValue,
+});
+
+test_iteration_type({
+ syntax: 'none | thing | THING',
+ initialValue: 'none',
+ value: 'THING',
+ expect: v => v.length == 1 && v[0] instanceof CSSKeywordValue,
+});
+
+test_iteration_type({
+ syntax: '<angle> | <length>',
+ initialValue: '0deg',
+ value: '10px',
+ expect: v => v.length == 1 && v[0] instanceof CSSUnitValue,
+});
+
</script>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-ignored-cases-ib-split-001-ref.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-ignored-cases-ib-split-001-ref.html
new file mode 100644
index 00000000000..eb787424ed4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-ignored-cases-ib-split-001-ref.html
@@ -0,0 +1,76 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="utf-8">
+ <title>CSS Reftest Reference</title>
+ <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com">
+ <style>
+ .abspos-box {
+ position: absolute;
+ width: 200px;
+ height: 200px;
+ }
+
+ /* The boxes should stack in the order that I've listed their CSS classes
+ here. The class names' first word (outside/before/inside/after) refers
+ to the boxes' DOM position, and "background"/"midground"/"foreground"
+ refers to their z-index values. */
+
+ .before-IB-background {
+ background: darkmagenta;
+ z-index: -1;
+ top: 50px;
+ left: 50px;
+ }
+ .after-IB-background {
+ background: magenta;
+ z-index: -1;
+ top: 70px;
+ left: 70px;
+ }
+ .outside-span-midground {
+ background: darkkhaki;
+ top: 90px;
+ left: 90px;
+ }
+ .inside-IB-midground {
+ background: khaki;
+ top: 110px;
+ left: 110px;
+ }
+ .before-IB-foreground {
+ background: darkcyan;
+ z-index: 1;
+ top: 130px;
+ left: 130px;
+ }
+ .after-IB-foreground {
+ background: cyan;
+ z-index: 1;
+ top: 150px;
+ left: 150px;
+ }
+ </style>
+</head>
+<body>
+ <!-- The expectation here is that 'abspos-box' elements will all interact in
+ the same top-level stacking context. That means the box ordering should
+ be (back to front): darkmagenta/magenta/darkkhaki/khaki/darkcyan/cyan,
+ with the boxes stacked (visually) from top-left to bottom-right. -->
+
+ <div class="abspos-box outside-span-midground"></div>
+
+ <!-- Note: this file is identical to the testcase,
+ except for the lack of "contain: layout" on this span. -->
+ <span>
+ <div class="abspos-box before-IB-background"></div>
+ <div class="abspos-box before-IB-foreground"></div>
+ <!-- This unstyled div crates the IB split: -->
+ <div>
+ <div class="abspos-box inside-IB-midground"></div>
+ </div>
+ <div class="abspos-box after-IB-background"></div>
+ <div class="abspos-box after-IB-foreground"></div>
+ </span>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-ignored-cases-ib-split-001.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-ignored-cases-ib-split-001.html
new file mode 100644
index 00000000000..d9f976deb8c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-ignored-cases-ib-split-001.html
@@ -0,0 +1,77 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="utf-8">
+ <title>CSS Test: 'contain: layout' should have no effect on non-atomic inline
+ (including its block part, if there's a block-in-inline split)</title>
+ <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com">
+ <link rel="help" href="https://drafts.csswg.org/css-contain/#containment-layout">
+ <link rel="match" href="contain-layout-ignored-cases-ib-split-001-ref.html">
+ <style>
+ .abspos-box {
+ position: absolute;
+ width: 200px;
+ height: 200px;
+ }
+
+ /* The boxes should stack in the order that I've listed their CSS classes
+ here. The class names' first word (outside/before/inside/after) refers
+ to the boxes' DOM position, and "background"/"midground"/"foreground"
+ refers to their z-index values. */
+
+ .before-IB-background {
+ background: darkmagenta;
+ z-index: -1;
+ top: 50px;
+ left: 50px;
+ }
+ .after-IB-background {
+ background: magenta;
+ z-index: -1;
+ top: 70px;
+ left: 70px;
+ }
+ .outside-span-midground {
+ background: darkkhaki;
+ top: 90px;
+ left: 90px;
+ }
+ .inside-IB-midground {
+ background: khaki;
+ top: 110px;
+ left: 110px;
+ }
+ .before-IB-foreground {
+ background: darkcyan;
+ z-index: 1;
+ top: 130px;
+ left: 130px;
+ }
+ .after-IB-foreground {
+ background: cyan;
+ z-index: 1;
+ top: 150px;
+ left: 150px;
+ }
+ </style>
+</head>
+<body>
+ <!-- The expectation here is that 'abspos-box' elements will all interact in
+ the same top-level stacking context. That means the box ordering should
+ be (back to front): darkmagenta/magenta/darkkhaki/khaki/darkcyan/cyan,
+ with the boxes stacked (visually) from top-left to bottom-right. -->
+
+ <div class="abspos-box outside-span-midground"></div>
+
+ <span style="contain: layout">
+ <div class="abspos-box before-IB-background"></div>
+ <div class="abspos-box before-IB-foreground"></div>
+ <!-- This unstyled div crates the IB split: -->
+ <div>
+ <div class="abspos-box inside-IB-midground"></div>
+ </div>
+ <div class="abspos-box after-IB-background"></div>
+ <div class="abspos-box after-IB-foreground"></div>
+ </span>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-paint-ignored-cases-ib-split-001-ref.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-paint-ignored-cases-ib-split-001-ref.html
new file mode 100644
index 00000000000..8a698b9d2ce
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-paint-ignored-cases-ib-split-001-ref.html
@@ -0,0 +1,76 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="utf-8">
+ <title>CSS Reftest Reference</title>
+ <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com">
+ <style>
+ .abspos-box {
+ position: absolute;
+ width: 200px;
+ height: 200px;
+ }
+
+ /* The boxes should stack in the order that I've listed their CSS classes
+ here. The class names' first word (outside/before/inside/after) refers
+ to the boxes' DOM position, and "background"/"midground"/"foreground"
+ refers to their z-index values. */
+
+ .before-IB-background {
+ background: darkmagenta;
+ z-index: -1;
+ top: 50px;
+ left: 50px;
+ }
+ .after-IB-background {
+ background: magenta;
+ z-index: -1;
+ top: 70px;
+ left: 70px;
+ }
+ .outside-span-midground {
+ background: darkkhaki;
+ top: 90px;
+ left: 90px;
+ }
+ .inside-IB-midground {
+ background: khaki;
+ top: 110px;
+ left: 110px;
+ }
+ .before-IB-foreground {
+ background: darkcyan;
+ z-index: 1;
+ top: 130px;
+ left: 130px;
+ }
+ .after-IB-foreground {
+ background: cyan;
+ z-index: 1;
+ top: 150px;
+ left: 150px;
+ }
+ </style>
+</head>
+<body>
+ <!-- The expectation here is that 'abspos-box' elements will all interact in
+ the same top-level stacking context. That means the box ordering should
+ be (back to front): darkmagenta/magenta/darkkhaki/khaki/darkcyan/cyan,
+ with the boxes stacked (visually) from top-left to bottom-right. -->
+
+ <div class="abspos-box outside-span-midground"></div>
+
+ <!-- Note: this file is identical to the testcase,
+ except for the lack of "contain: paint" on this span. -->
+ <span>
+ <div class="abspos-box before-IB-background"></div>
+ <div class="abspos-box before-IB-foreground"></div>
+ <!-- This unstyled div crates the IB split: -->
+ <div>
+ <div class="abspos-box inside-IB-midground"></div>
+ </div>
+ <div class="abspos-box after-IB-background"></div>
+ <div class="abspos-box after-IB-foreground"></div>
+ </span>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-paint-ignored-cases-ib-split-001.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-paint-ignored-cases-ib-split-001.html
new file mode 100644
index 00000000000..eb21a2d4609
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-paint-ignored-cases-ib-split-001.html
@@ -0,0 +1,77 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="utf-8">
+ <title>CSS Test: 'contain: paint' should have no effect on non-atomic inline
+ (including its block part, if there's a block-in-inline split)</title>
+ <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com">
+ <link rel="help" href="https://drafts.csswg.org/css-contain/#containment-paint">
+ <link rel="match" href="contain-paint-ignored-cases-ib-split-001-ref.html">
+ <style>
+ .abspos-box {
+ position: absolute;
+ width: 200px;
+ height: 200px;
+ }
+
+ /* The boxes should stack in the order that I've listed their CSS classes
+ here. The class names' first word (outside/before/inside/after) refers
+ to the boxes' DOM position, and "background"/"midground"/"foreground"
+ refers to their z-index values. */
+
+ .before-IB-background {
+ background: darkmagenta;
+ z-index: -1;
+ top: 50px;
+ left: 50px;
+ }
+ .after-IB-background {
+ background: magenta;
+ z-index: -1;
+ top: 70px;
+ left: 70px;
+ }
+ .outside-span-midground {
+ background: darkkhaki;
+ top: 90px;
+ left: 90px;
+ }
+ .inside-IB-midground {
+ background: khaki;
+ top: 110px;
+ left: 110px;
+ }
+ .before-IB-foreground {
+ background: darkcyan;
+ z-index: 1;
+ top: 130px;
+ left: 130px;
+ }
+ .after-IB-foreground {
+ background: cyan;
+ z-index: 1;
+ top: 150px;
+ left: 150px;
+ }
+ </style>
+</head>
+<body>
+ <!-- The expectation here is that 'abspos-box' elements will all interact in
+ the same top-level stacking context. That means the box ordering should
+ be (back to front): darkmagenta/magenta/darkkhaki/khaki/darkcyan/cyan,
+ with the boxes stacked (visually) from top-left to bottom-right. -->
+
+ <div class="abspos-box outside-span-midground"></div>
+
+ <span style="contain: paint">
+ <div class="abspos-box before-IB-background"></div>
+ <div class="abspos-box before-IB-foreground"></div>
+ <!-- This unstyled div crates the IB split: -->
+ <div>
+ <div class="abspos-box inside-IB-midground"></div>
+ </div>
+ <div class="abspos-box after-IB-background"></div>
+ <div class="abspos-box after-IB-foreground"></div>
+ </span>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-block-001-ref.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-block-001-ref.html
index b8f983a8153..7f13a517a66 100644
--- a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-block-001-ref.html
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-block-001-ref.html
@@ -26,6 +26,11 @@
display: flex;
align-items: baseline;
}
+ .innerContents {
+ color: transparent;
+ width: 0;
+ height: 0;
+ }
</style>
</head>
<body>
@@ -51,7 +56,7 @@
<br>
<div class="flexBaselineCheck">
- outside before<div class="basic"></div>outside after
+ outside before<div class="basic innerContents">i</div>outside after
</div>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-block-001.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-block-001.html
index c5bdc6adead..20272cff8ff 100644
--- a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-block-001.html
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-block-001.html
@@ -73,7 +73,7 @@
<div class="contain floatLWidth"><div class="innerContents">inner</div></div>
<br>
- <!--CSS Test: A size-contained block element should perform baseline alignment as if the container were empty.-->
+ <!--CSS Test: A size-contained block element should perform baseline alignment regularly.-->
<div class="flexBaselineCheck">
outside before<div class="contain"><div class="innerContents">inner</div></div>outside after
</div>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-fieldset-001-ref.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-fieldset-001-ref.html
index a7869752692..6a77ee68879 100644
--- a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-fieldset-001-ref.html
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-fieldset-001-ref.html
@@ -12,6 +12,7 @@
.container {
border: 10px solid green;
display: inline-block;
+ vertical-align: top;
}
.height {
height: 30px;
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-fieldset-001.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-fieldset-001.html
index c21e5517225..8cea7f5a60e 100644
--- a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-fieldset-001.html
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-fieldset-001.html
@@ -16,6 +16,7 @@
.container {
border: 10px solid green;
display: inline-block;
+ vertical-align: top;
}
.innerContents {
height: 50px;
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-fieldset-002-ref.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-fieldset-002-ref.html
index 040da171aaf..31ca88312da 100644
--- a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-fieldset-002-ref.html
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-fieldset-002-ref.html
@@ -24,11 +24,23 @@
display: flex;
align-items: baseline;
}
+ fieldset {
+ border: none;
+ color: transparent;
+ }
+ legend, .innerContents {
+ width: 0;
+ height: 0;
+ padding: 0;
+ }
</style>
</head>
<body>
<div class="flexBaselineCheck">
- outside before<fieldset class="basic"></fieldset>outside after
+ outside before<fieldset class="basc">
+ <legend>l</legend>
+ <div class="innerContents">i</div>
+ </fieldset>outside after
</div>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-fieldset-002.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-fieldset-002.html
index 18d6ad8c3c6..67aa64bb271 100644
--- a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-fieldset-002.html
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-fieldset-002.html
@@ -2,7 +2,7 @@
<html>
<head>
<meta charset="utf-8">
- <title>CSS Test: 'contain: size' on fieldset elements should cause them to be baseline-aligned as if they had no contents.</title>
+ <title>CSS Test: 'contain: size' on fieldset elements shouldn't prevent them from being baseline-aligned regularly.</title>
<link rel="author" title="Morgan Rae Reschenberg" href="mailto:mreschenberg@berkeley.edu">
<link rel="help" href="https://drafts.csswg.org/css-contain/#containment-size">
<link rel="match" href="contain-size-fieldset-002-ref.html">
@@ -24,7 +24,7 @@
</style>
</head>
<body>
- <!--CSS Test: A size-contained fieldset element should perform baseline alignment as if the container were empty.-->
+ <!--CSS Test: A size-contained fieldset element should perform baseline alignment regularly.-->
<div class="flexBaselineCheck">
outside before<fieldset class="contain">
<legend>legend</legend>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-inline-block-001-ref.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-inline-block-001-ref.html
index 56d1cdd8cee..92a6c7de5ee 100644
--- a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-inline-block-001-ref.html
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-inline-block-001-ref.html
@@ -15,24 +15,29 @@
.width-ref {
width: 50px;
}
+ .innerContents {
+ color: transparent;
+ width: 0;
+ height: 0;
+ }
</style>
</head>
<body>
- <div class="basic"></div>
+ <div class="basic"><div class="innerContents">i</div></div>
<br>
- outside before<div class="basic"></div>outside after
+ outside before<div class="basic"><div class="innerContents">i</div></div>outside after
<br>
- <div class="basic height-ref"></div>
+ <div class="basic height-ref"><div class="innerContents">i</div></div>
<br>
- <div class="basic height-ref"></div>
+ <div class="basic height-ref"><div class="innerContents">i</div></div>
<br>
- <div class="basic width-ref"></div>
+ <div class="basic width-ref"><div class="innerContents">i</div></div>
<br>
- <div class="basic width-ref"></div>
+ <div class="basic width-ref"><div class="innerContents">i</div></div>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-inline-block-001.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-inline-block-001.html
index 48f8bc279a6..41458550272 100644
--- a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-inline-block-001.html
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-inline-block-001.html
@@ -2,7 +2,7 @@
<html>
<head>
<meta charset="utf-8">
- <title>CSS Test: 'contain: size' on inline-block elements should cause them to be sized and baseline-aligned as if they had no contents.</title>
+ <title>CSS Test: 'contain: size' on inline-block elements should cause them to be sized as if they had no contents and baseline-aligned regularly.</title>
<link rel="author" title="Morgan Rae Reschenberg" href="mailto:mreschenberg@berkeley.edu">
<link rel="help" href="https://drafts.csswg.org/css-contain/#containment-size">
<link rel="match" href="contain-size-inline-block-001-ref.html">
@@ -37,7 +37,7 @@
<div class="contain"><div class="innerContents">inner</div></div>
<br>
- <!--CSS Test: A size-contained inline-block element should perform baseline alignment as if the container were empty.-->
+ <!--CSS Test: A size-contained inline-block element should perform baseline alignment regularly.-->
outside before<div class="contain"><div class="innerContents">inner</div></div>outside after
<br>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-inline-flex-001-ref.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-inline-flex-001-ref.html
index fb013752d05..93a263b5b2f 100644
--- a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-inline-flex-001-ref.html
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-inline-flex-001-ref.html
@@ -12,12 +12,17 @@
.width-ref {
width: 50px;
}
+ .innerContents {
+ color: transparent;
+ width: 0;
+ height: 0;
+ }
</style>
</head>
<body>
- aa<div class="basic"></div>bb
+ aa<div class="basic"><div class="innerContents">i</div></div>bb
<br>
- aa<div class="basic width-ref"></div>bb
+ aa<div class="basic width-ref"><div class="innerContents">i</div></div>bb
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-inline-flex-001.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-inline-flex-001.html
index e79d0c18599..15a2c943bb6 100644
--- a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-inline-flex-001.html
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-inline-flex-001.html
@@ -2,7 +2,7 @@
<html>
<head>
<meta charset="utf-8">
- <title>CSS Test: 'contain: size' on inline-flex elements should cause them to be sized and baseline-aligned as if they had no contents.</title>
+ <title>CSS Test: 'contain: size' on inline-flex elements should cause them to be sized as if they had no contents and baseline-aligned regularly.</title>
<link rel="author" title="Morgan Rae Reschenberg" href="mailto:mreschenberg@berkeley.edu">
<link rel="help" href="https://drafts.csswg.org/css-contain/#containment-size">
<link rel="match" href="contain-size-inline-flex-001-ref.html">
@@ -24,11 +24,11 @@
</style>
</head>
<body>
- <!--CSS Test: A size-contained inline-flex element without dimensions should ensure baseline alignment behaviour matches that of an empty object of the same type.-->
+ <!--CSS Test: A size-contained inline-flex element without dimensions should ensure baseline alignment behaves regularly.-->
aa<div class="contain"><div class="innerContents">inner</div></div>bb
<br>
- <!--CSS Test: A size-contained inline-flex element with specified width should ensure baseline alignment behaviour matches that of an empty object of the same type.-->
+ <!--CSS Test: A size-contained inline-flex element with specified width should ensure baseline alignment behaves regularly.-->
aa<div class="contain width"><div class="innerContents">inner</div></div>bb
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/reftest.list b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/reftest.list
index 6b2e31bcd46..6b872e79f2e 100644
--- a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/reftest.list
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/reftest.list
@@ -9,6 +9,7 @@
== contain-paint-containing-block-fixed-001.html contain-paint-containing-block-fixed-001-ref.html
== contain-paint-formatting-context-float-001.html contain-paint-formatting-context-float-001-ref.html
== contain-paint-formatting-context-margin-001.html contain-paint-formatting-context-margin-001-ref.html
+== contain-paint-ignored-cases-ib-split-001.html contain-paint-ignored-cases-ib-split-001-ref.html
== contain-paint-ignored-cases-internal-table-001a.html contain-paint-ignored-cases-internal-table-001-ref.html
== contain-paint-ignored-cases-internal-table-001b.html contain-paint-ignored-cases-internal-table-001-ref.html
== contain-paint-ignored-cases-no-principal-box-001.html contain-paint-ignored-cases-no-principal-box-001-ref.html
@@ -35,6 +36,7 @@
== contain-layout-formatting-context-margin-001.html contain-layout-formatting-context-margin-001-ref.html
== contain-layout-containing-block-fixed-001.html contain-paint-containing-block-fixed-001-ref.html
== contain-layout-containing-block-absolute-001.html contain-paint-containing-block-absolute-001-ref.html
+== contain-layout-ignored-cases-ib-split-001.html contain-layout-ignored-cases-ib-split-001-ref.html
== contain-layout-ignored-cases-no-principal-box-001.html contain-paint-ignored-cases-no-principal-box-001-ref.html
== contain-layout-ignored-cases-no-principal-box-002.html contain-layout-ignored-cases-no-principal-box-002-ref.html
== contain-layout-ignored-cases-no-principal-box-003.html contain-layout-ignored-cases-no-principal-box-003-ref.html
diff --git a/tests/wpt/web-platform-tests/feature-policy/picture-in-picture-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html b/tests/wpt/web-platform-tests/feature-policy/picture-in-picture-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html
index c591be46479..e2b52f257a1 100644
--- a/tests/wpt/web-platform-tests/feature-policy/picture-in-picture-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html
+++ b/tests/wpt/web-platform-tests/feature-policy/picture-in-picture-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html
@@ -1,5 +1,6 @@
<!DOCTYPE html>
<body>
+ <script src=/common/media.js></script>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src=/resources/testdriver.js></script>
diff --git a/tests/wpt/web-platform-tests/feature-policy/picture-in-picture-allowed-by-feature-policy-attribute.https.sub.html b/tests/wpt/web-platform-tests/feature-policy/picture-in-picture-allowed-by-feature-policy-attribute.https.sub.html
index 8a0a4374b2d..0c3897a4ad0 100644
--- a/tests/wpt/web-platform-tests/feature-policy/picture-in-picture-allowed-by-feature-policy-attribute.https.sub.html
+++ b/tests/wpt/web-platform-tests/feature-policy/picture-in-picture-allowed-by-feature-policy-attribute.https.sub.html
@@ -1,5 +1,6 @@
<!DOCTYPE html>
<body>
+ <script src=/common/media.js></script>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src=/resources/testdriver.js></script>
diff --git a/tests/wpt/web-platform-tests/feature-policy/picture-in-picture-allowed-by-feature-policy.https.sub.html b/tests/wpt/web-platform-tests/feature-policy/picture-in-picture-allowed-by-feature-policy.https.sub.html
index 0f8a0c06652..1ecd874c009 100644
--- a/tests/wpt/web-platform-tests/feature-policy/picture-in-picture-allowed-by-feature-policy.https.sub.html
+++ b/tests/wpt/web-platform-tests/feature-policy/picture-in-picture-allowed-by-feature-policy.https.sub.html
@@ -1,5 +1,6 @@
<!DOCTYPE html>
<body>
+ <script src=/common/media.js></script>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src=/resources/testdriver.js></script>
diff --git a/tests/wpt/web-platform-tests/feature-policy/picture-in-picture-default-feature-policy.https.sub.html b/tests/wpt/web-platform-tests/feature-policy/picture-in-picture-default-feature-policy.https.sub.html
index f47661bd7d5..12bbf7f2f1f 100644
--- a/tests/wpt/web-platform-tests/feature-policy/picture-in-picture-default-feature-policy.https.sub.html
+++ b/tests/wpt/web-platform-tests/feature-policy/picture-in-picture-default-feature-policy.https.sub.html
@@ -1,5 +1,6 @@
<!DOCTYPE html>
<body>
+ <script src=/common/media.js></script>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src=/resources/testdriver.js></script>
diff --git a/tests/wpt/web-platform-tests/feature-policy/picture-in-picture-disabled-by-feature-policy.https.sub.html b/tests/wpt/web-platform-tests/feature-policy/picture-in-picture-disabled-by-feature-policy.https.sub.html
index 2f7576b16e1..b36afbda503 100644
--- a/tests/wpt/web-platform-tests/feature-policy/picture-in-picture-disabled-by-feature-policy.https.sub.html
+++ b/tests/wpt/web-platform-tests/feature-policy/picture-in-picture-disabled-by-feature-policy.https.sub.html
@@ -1,5 +1,6 @@
<!DOCTYPE html>
<body>
+ <script src=/common/media.js></script>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src=/resources/testdriver.js></script>
diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/picture-in-picture-reporting.html b/tests/wpt/web-platform-tests/feature-policy/reporting/picture-in-picture-reporting.html
index a8a998ed2a1..60e4825d988 100644
--- a/tests/wpt/web-platform-tests/feature-policy/reporting/picture-in-picture-reporting.html
+++ b/tests/wpt/web-platform-tests/feature-policy/reporting/picture-in-picture-reporting.html
@@ -1,6 +1,7 @@
<!DOCTYPE html>
<html>
<head>
+ <script src='/common/media.js'></script>
<script src='/resources/testharness.js'></script>
<script src='/resources/testharnessreport.js'></script>
<script src="/resources/testdriver.js"></script>
@@ -21,7 +22,7 @@ const check_report_format = (reports, observer) => {
const loadVideo = () => new Promise(resolve => {
const video = document.createElement('video');
- video.src = '/media/movie_5.ogv';
+ video.src = getVideoURI('/media/movie_5');
video.addEventListener('loadedmetadata', () => {
resolve(video);
}, { once: true });
diff --git a/tests/wpt/web-platform-tests/feature-policy/resources/feature-policy-picture-in-picture.html b/tests/wpt/web-platform-tests/feature-policy/resources/feature-policy-picture-in-picture.html
index 436682d8754..2f33c449536 100644
--- a/tests/wpt/web-platform-tests/feature-policy/resources/feature-policy-picture-in-picture.html
+++ b/tests/wpt/web-platform-tests/feature-policy/resources/feature-policy-picture-in-picture.html
@@ -1,3 +1,4 @@
+<script src=/common/media.js></script>
<script src=/feature-policy/resources/picture-in-picture.js></script>
<script>
'use strict';
diff --git a/tests/wpt/web-platform-tests/feature-policy/resources/picture-in-picture.js b/tests/wpt/web-platform-tests/feature-policy/resources/picture-in-picture.js
index e7aabcd5083..e245d798acf 100644
--- a/tests/wpt/web-platform-tests/feature-policy/resources/picture-in-picture.js
+++ b/tests/wpt/web-platform-tests/feature-policy/resources/picture-in-picture.js
@@ -4,7 +4,7 @@ function isPictureInPictureAllowed() {
return new Promise(resolve => {
let video = document.createElement('video');
- video.src = '/media/movie_5.ogv';
+ video.src = getVideoURI('/media/movie_5');
video.onloadedmetadata = () => {
video.requestPictureInPicture()
.then(() => resolve(document.pictureInPictureEnabled))
diff --git a/tests/wpt/web-platform-tests/mediacapture-streams/MediaStream-MediaElement-srcObject.https.html b/tests/wpt/web-platform-tests/mediacapture-streams/MediaStream-MediaElement-srcObject.https.html
index fc2e619a463..4b9a3c8246d 100644
--- a/tests/wpt/web-platform-tests/mediacapture-streams/MediaStream-MediaElement-srcObject.https.html
+++ b/tests/wpt/web-platform-tests/mediacapture-streams/MediaStream-MediaElement-srcObject.https.html
@@ -28,15 +28,26 @@ promise_test(async t => {
const stream = await timeout(navigator.mediaDevices.getUserMedia({video: true}), 10000, "getUserMedia timeout");
t.add_cleanup(() => stream.getTracks().forEach(track => track.stop()));
+ vid.defaultPlaybackRate = 0.4;
+ vid.playbackRate = 0.4;
+ vid.preload = "metadata";
vid.srcObject = stream;
+ vid.onratechange = t.unreached_func('ratechange event must not be fired');
vid.play();
assert_true(!vid.seeking, "A MediaStream is not seekable");
assert_equals(vid.seekable.length, 0, "A MediaStream is not seekable");
assert_equals(vid.defaultPlaybackRate, 1, "playback rate is always 1");
+ vid.defaultPlaybackRate = 0.5;
+ assert_equals(vid.defaultPlaybackRate, 1, "Setting defaultPlaybackRate must be ignored");
assert_equals(vid.playbackRate, 1, "playback rate is always 1");
+ vid.playbackRate = 0.5;
+ assert_equals(vid.playbackRate, 1, "Setting playbackRate must be ignored");
assert_equals(vid.buffered.length, 0, "A MediaStream cannot be preloaded. Therefore, there is no buffered timeranges");
assert_equals(vid.readyState, vid.HAVE_NOTHING, "readyState is HAVE_NOTHING initially");
assert_equals(vid.duration, NaN, "A MediaStream does not have any duration initially.");
+ assert_equals(vid.preload, "none", "preload must always be none");
+ vid.preload = "metadata";
+ assert_equals(vid.preload, "none", "Setting preload must be ignored");
const haveLoadedData = new Promise(r => vid.addEventListener("loadeddata", r, {once: true}));
diff --git a/tests/wpt/web-platform-tests/picture-in-picture/disable-picture-in-picture.html b/tests/wpt/web-platform-tests/picture-in-picture/disable-picture-in-picture.html
index efde31bc3a3..31e0d12ad77 100644
--- a/tests/wpt/web-platform-tests/picture-in-picture/disable-picture-in-picture.html
+++ b/tests/wpt/web-platform-tests/picture-in-picture/disable-picture-in-picture.html
@@ -1,5 +1,6 @@
<!DOCTYPE html>
<title>Test disable Picture-in-Picture</title>
+<script src="/common/media.js"></script>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/testdriver.js"></script>
@@ -33,12 +34,11 @@ promise_test(async t => {
promise_test(async t => {
const video = await loadVideo();
- return test_driver.bless('request Picture-in-Picture', async () => {
- const promise = video.requestPictureInPicture();
- video.disablePictureInPicture = true;
- await promise_rejects(t, 'InvalidStateError', promise);
- assert_equals(document.pictureInPictureElement, null);
- });
+ await test_driver.bless('request Picture-in-Picture');
+ const promise = video.requestPictureInPicture();
+ video.disablePictureInPicture = true;
+ await promise_rejects(t, 'InvalidStateError', promise);
+ assert_equals(document.pictureInPictureElement, null);
}, 'Request Picture-in-Picture rejects if disablePictureInPicture becomes ' +
'true before promise resolves.');
diff --git a/tests/wpt/web-platform-tests/picture-in-picture/enter-picture-in-picture.html b/tests/wpt/web-platform-tests/picture-in-picture/enter-picture-in-picture.html
index 9df2bfabcf2..a9d7b5c0489 100644
--- a/tests/wpt/web-platform-tests/picture-in-picture/enter-picture-in-picture.html
+++ b/tests/wpt/web-platform-tests/picture-in-picture/enter-picture-in-picture.html
@@ -1,5 +1,6 @@
<!DOCTYPE html>
<title>Test enterpictureinpicture event</title>
+<script src="/common/media.js"></script>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/testdriver.js"></script>
diff --git a/tests/wpt/web-platform-tests/picture-in-picture/exit-picture-in-picture.html b/tests/wpt/web-platform-tests/picture-in-picture/exit-picture-in-picture.html
index 9a5eedd9be8..c8d76f5244a 100644
--- a/tests/wpt/web-platform-tests/picture-in-picture/exit-picture-in-picture.html
+++ b/tests/wpt/web-platform-tests/picture-in-picture/exit-picture-in-picture.html
@@ -1,5 +1,6 @@
<!DOCTYPE html>
<title>Test exit Picture-in-Picture</title>
+<script src="/common/media.js"></script>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/testdriver.js"></script>
diff --git a/tests/wpt/web-platform-tests/picture-in-picture/idlharness.window.js b/tests/wpt/web-platform-tests/picture-in-picture/idlharness.window.js
index a7f25e3be58..31cd4a14177 100644
--- a/tests/wpt/web-platform-tests/picture-in-picture/idlharness.window.js
+++ b/tests/wpt/web-platform-tests/picture-in-picture/idlharness.window.js
@@ -1,3 +1,4 @@
+// META: script=/common/media.js
// META: script=/resources/WebIDLParser.js
// META: script=/resources/idlharness.js
// META: script=/resources/testdriver.js
diff --git a/tests/wpt/web-platform-tests/picture-in-picture/leave-picture-in-picture.html b/tests/wpt/web-platform-tests/picture-in-picture/leave-picture-in-picture.html
index 5a5182bf64d..04de95e47ec 100644
--- a/tests/wpt/web-platform-tests/picture-in-picture/leave-picture-in-picture.html
+++ b/tests/wpt/web-platform-tests/picture-in-picture/leave-picture-in-picture.html
@@ -1,5 +1,6 @@
<!DOCTYPE html>
<title>Test leavepictureinpicture event</title>
+<script src="/common/media.js"></script>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/testdriver.js"></script>
diff --git a/tests/wpt/web-platform-tests/picture-in-picture/picture-in-picture-element.html b/tests/wpt/web-platform-tests/picture-in-picture/picture-in-picture-element.html
index 809b3eeabcc..2763eca476d 100644
--- a/tests/wpt/web-platform-tests/picture-in-picture/picture-in-picture-element.html
+++ b/tests/wpt/web-platform-tests/picture-in-picture/picture-in-picture-element.html
@@ -1,5 +1,6 @@
<!DOCTYPE html>
<title>Test Picture-in-Picture element</title>
+<script src="/common/media.js"></script>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/testdriver.js"></script>
diff --git a/tests/wpt/web-platform-tests/picture-in-picture/picture-in-picture-window.html b/tests/wpt/web-platform-tests/picture-in-picture/picture-in-picture-window.html
index 693a13717e2..c32787f46f7 100644
--- a/tests/wpt/web-platform-tests/picture-in-picture/picture-in-picture-window.html
+++ b/tests/wpt/web-platform-tests/picture-in-picture/picture-in-picture-window.html
@@ -1,5 +1,6 @@
<!DOCTYPE html>
<title>Test Picture-in-Picture window</title>
+<script src="/common/media.js"></script>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/testdriver.js"></script>
diff --git a/tests/wpt/web-platform-tests/picture-in-picture/request-picture-in-picture-twice.html b/tests/wpt/web-platform-tests/picture-in-picture/request-picture-in-picture-twice.html
index 0924ad21a4f..17e494bbe88 100644
--- a/tests/wpt/web-platform-tests/picture-in-picture/request-picture-in-picture-twice.html
+++ b/tests/wpt/web-platform-tests/picture-in-picture/request-picture-in-picture-twice.html
@@ -1,5 +1,6 @@
<!DOCTYPE html>
<title>Test request Picture-in-Picture on two videos</title>
+<script src="/common/media.js"></script>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/testdriver.js"></script>
@@ -10,12 +11,9 @@
promise_test(async t => {
const video1 = await loadVideo();
const video2 = await loadVideo();
- return test_driver.bless(
- 'request Picture-in-Picture',
- async () => {
- video1.requestPictureInPicture();
- promise_rejects(t, 'NotAllowedError', video2.requestPictureInPicture());
- }
- );
+ await test_driver.bless('request Picture-in-Picture');
+ const promise = video1.requestPictureInPicture();
+ await promise_rejects(t, 'NotAllowedError', video2.requestPictureInPicture());
+ return promise;
}, 'request Picture-in-Picture consumes user gesture');
</script>
diff --git a/tests/wpt/web-platform-tests/picture-in-picture/request-picture-in-picture.html b/tests/wpt/web-platform-tests/picture-in-picture/request-picture-in-picture.html
index 403d416c7d4..37ae94829f3 100644
--- a/tests/wpt/web-platform-tests/picture-in-picture/request-picture-in-picture.html
+++ b/tests/wpt/web-platform-tests/picture-in-picture/request-picture-in-picture.html
@@ -1,5 +1,6 @@
<!DOCTYPE html>
<title>Test request Picture-in-Picture</title>
+<script src="/common/media.js"></script>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/testdriver.js"></script>
@@ -21,7 +22,7 @@ promise_test(t => {
promise_test(async t => {
const video = document.createElement('video');
await new Promise(resolve => {
- video.src = '/media/sound_5.oga';
+ video.src = getAudioURI('/media/sound_5');
video.onloadeddata = resolve;
}).then(() => {
return promise_rejects(t, 'InvalidStateError',
diff --git a/tests/wpt/web-platform-tests/picture-in-picture/resources/picture-in-picture-helpers.js b/tests/wpt/web-platform-tests/picture-in-picture/resources/picture-in-picture-helpers.js
index 55eed5393d6..96972dcbc8e 100644
--- a/tests/wpt/web-platform-tests/picture-in-picture/resources/picture-in-picture-helpers.js
+++ b/tests/wpt/web-platform-tests/picture-in-picture/resources/picture-in-picture-helpers.js
@@ -8,15 +8,14 @@ function loadVideo(activeDocument, sourceUrl) {
return new Promise((resolve, reject) => {
const document = activeDocument || window.document;
const video = document.createElement('video');
- video.src = sourceUrl || '/media/movie_5.ogv';
+ video.src = sourceUrl || getVideoURI('/media/movie_5');
video.onloadedmetadata = () => { resolve(video); };
video.onerror = error => { reject(error); };
});
}
// Calls requestPictureInPicture() in a context that's 'allowed to request PiP'.
-function requestPictureInPictureWithTrustedClick(videoElement) {
- return test_driver.bless(
- 'request Picture-in-Picture',
- () => videoElement.requestPictureInPicture());
+async function requestPictureInPictureWithTrustedClick(videoElement) {
+ await test_driver.bless('request Picture-in-Picture');
+ return videoElement.requestPictureInPicture();
}
diff --git a/tests/wpt/web-platform-tests/picture-in-picture/shadow-dom.html b/tests/wpt/web-platform-tests/picture-in-picture/shadow-dom.html
index e36acc02193..17816b93c94 100644
--- a/tests/wpt/web-platform-tests/picture-in-picture/shadow-dom.html
+++ b/tests/wpt/web-platform-tests/picture-in-picture/shadow-dom.html
@@ -1,11 +1,12 @@
<!DOCTYPE html>
<title>Test for pictureInPictureElement adjustment for Shadow DOM</title>
-<script src='/resources/testharness.js'></script>
-<script src='/resources/testharnessreport.js'></script>
+<script src="/common/media.js"></script>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
<script src="/resources/testdriver.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<script src="resources/picture-in-picture-helpers.js"></script>
-<script src='../shadow-dom/resources/shadow-dom.js'></script>
+<script src="../shadow-dom/resources/shadow-dom.js"></script>
<body>
<div id='host'>
<template data-mode='open' id='root'>
@@ -45,7 +46,7 @@ promise_test(async t => {
assert_equals(ids.root5.pictureInPictureElement, null);
await new Promise(resolve => {
- ids.video.src = '/media/movie_5.ogv';
+ ids.video.src = getVideoURI('/media/movie_5');
ids.video.onloadeddata = resolve;
})
.then(() => requestPictureInPictureWithTrustedClick(ids.video))
@@ -58,4 +59,4 @@ promise_test(async t => {
assert_equals(ids.root5.pictureInPictureElement, null);
})
});
-</script> \ No newline at end of file
+</script>
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-audio-tainting.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-audio-tainting.https.html
new file mode 100644
index 00000000000..9821759bc7b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-audio-tainting.https.html
@@ -0,0 +1,47 @@
+<!doctype html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="resources/test-helpers.sub.js?pipe=sub"></script>
+<script>
+promise_test(async (t) => {
+ const SCOPE = 'resources/empty.html';
+ const SCRIPT = 'resources/fetch-rewrite-worker.js';
+ const host_info = get_host_info();
+ const REMOTE_ORIGIN = host_info.HTTPS_REMOTE_ORIGIN;
+
+ const reg = await service_worker_unregister_and_register(t, SCRIPT, SCOPE);
+ await wait_for_state(t, reg.installing, 'activated');
+ const frame = await with_iframe(SCOPE);
+
+ const doc = frame.contentDocument;
+ const win = frame.contentWindow;
+
+ const context = new win.AudioContext();
+ try {
+ context.suspend();
+ const audio = doc.createElement('audio');
+ audio.autoplay = true;
+ const source = context.createMediaElementSource(audio);
+ const spn = context.createScriptProcessor(16384, 1, 1);
+ source.connect(spn).connect(context.destination);
+ const url = `${REMOTE_ORIGIN}/webaudio/resources/sin_440Hz_-6dBFS_1s.wav`;
+ audio.src = '/test?url=' + encodeURIComponent(url);
+ doc.body.appendChild(audio);
+
+ await new Promise((resolve) => {
+ audio.addEventListener('playing', resolve);
+ });
+ await context.resume();
+ const event = await new Promise((resolve) => {
+ spn.addEventListener('audioprocess', resolve);
+ });
+ const data = event.inputBuffer.getChannelData(0);
+ for (const e of data) {
+ assert_equals(e, 0);
+ }
+ } finally {
+ context.close();
+ }
+ }, 'Verify CORS XHR of fetch() in a Service Worker');
+</script>
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testrunner.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testrunner.py
index 46e3ff7926d..2b7c091c847 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testrunner.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testrunner.py
@@ -693,7 +693,16 @@ class TestRunnerManager(threading.Thread):
# This might leak a file handle from the queue
self.logger.warning("Forcibly terminating runner process")
self.test_runner_proc.terminate()
- self.test_runner_proc.join(10)
+
+ # Multiprocessing queues are backed by operating system pipes. If
+ # the pipe in the child process had buffered data at the time of
+ # forced termination, the queue is no longer in a usable state
+ # (subsequent attempts to retrieve items may block indefinitely).
+ # Discard the potentially-corrupted queue and create a new one.
+ self.command_queue.close()
+ self.command_queue = Queue()
+ self.remote_queue.close()
+ self.remote_queue = Queue()
else:
self.logger.debug("Runner process exited with code %i" % self.test_runner_proc.exitcode)
diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-postmessage-sharedarraybuffer.https.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-postmessage-sharedarraybuffer.https.html
new file mode 100644
index 00000000000..8194d1977ad
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-postmessage-sharedarraybuffer.https.html
@@ -0,0 +1,85 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>
+ Test passing SharedArrayBuffer to an AudioWorklet
+ </title>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/webaudio/resources/audit.js"></script>
+ </head>
+ <body>
+ <script id="layout-test-code">
+ let audit = Audit.createTaskRunner();
+
+ let context = new AudioContext();
+
+ let filePath = 'processors/sharedarraybuffer-processor.js';
+
+ if (window.SharedArrayBuffer) {
+ audit.define(
+ 'Test postMessage from AudioWorkletProcessor to AudioWorkletNode',
+ (task, should) => {
+ let workletNode =
+ new AudioWorkletNode(context, 'sharedarraybuffer-processor');
+
+ // After it is created, the worklet will send a new
+ // SharedArrayBuffer to the main thread.
+ //
+ // The worklet will then wait to receive a message from the main
+ // thread.
+ //
+ // When it receives the message, it will check whether it is a
+ // SharedArrayBuffer, and send this information back to the main
+ // thread.
+
+ workletNode.port.onmessage = (event) => {
+ let data = event.data;
+ switch (data.state) {
+ case 'created':
+ should(
+ data.sab instanceof SharedArrayBuffer,
+ 'event.data.sab from worklet is an instance of SharedArrayBuffer')
+ .beTrue();
+
+ // Send a SharedArrayBuffer back to the worklet.
+ let sab = new SharedArrayBuffer(8);
+ workletNode.port.postMessage(sab);
+ break;
+
+ case 'received message':
+ should(data.isSab, 'event.data from main thread is an instance of SharedArrayBuffer')
+ .beTrue();
+ task.done();
+ break;
+
+ default:
+ should(false,
+ `Got unexpected message from worklet: ${data.state}`)
+ .beTrue();
+ task.done();
+ break;
+ }
+ };
+
+ workletNode.port.onmessageerror = (event) => {
+ should(false, 'Got messageerror from worklet').beTrue();
+ task.done();
+ };
+ });
+ } else {
+ // NOTE(binji): SharedArrayBuffer is only enabled where we have site
+ // isolation.
+ audit.define('Skipping test because SharedArrayBuffer is not defined',
+ (task, should) => {
+ task.done();
+ });
+ }
+
+ context.audioWorklet.addModule(filePath).then(() => {
+ audit.run();
+ });
+ </script>
+ </body>
+</html>
+
diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/processors/sharedarraybuffer-processor.js b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/processors/sharedarraybuffer-processor.js
new file mode 100644
index 00000000000..2ccacccd4bb
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/processors/sharedarraybuffer-processor.js
@@ -0,0 +1,35 @@
+/**
+ * @class SharedArrayBufferProcessor
+ * @extends AudioWorkletProcessor
+ *
+ * This processor class demonstrates passing SharedArrayBuffers to and from
+ * workers.
+ */
+class SharedArrayBufferProcessor extends AudioWorkletProcessor {
+ constructor() {
+ super();
+ this.port.onmessage = this.handleMessage.bind(this);
+ this.port.onmessageerror = this.handleMessageError.bind(this);
+ let sab = new SharedArrayBuffer(8);
+ this.port.postMessage({state: 'created', sab});
+ }
+
+ handleMessage(event) {
+ this.port.postMessage({
+ state: 'received message',
+ isSab: event.data instanceof SharedArrayBuffer
+ });
+ }
+
+ handleMessageError(event) {
+ this.port.postMessage({
+ state: 'received messageerror'
+ });
+ }
+
+ process() {
+ return true;
+ }
+}
+
+registerProcessor('sharedarraybuffer-processor', SharedArrayBufferProcessor);