aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini2
-rw-r--r--tests/wpt/metadata/MANIFEST.json599
-rw-r--r--tests/wpt/metadata/cors/preflight-cache.htm.ini3
-rw-r--r--tests/wpt/metadata/css/CSS2/text/bidi-span-003.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-flexbox/table-as-item-wide-content.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/white-space/white-space-zero-fontsize-002.html.ini2
-rw-r--r--tests/wpt/metadata/css/cssom-view/CaretPosition-001.html.ini4
-rw-r--r--tests/wpt/metadata/fetch/content-type/response.window.js.ini15
-rw-r--r--tests/wpt/metadata/fetch/content-type/script.window.js.ini3
-rw-r--r--tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini2
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-location-interface/location_reload_javascript_url.html.ini4
-rw-r--r--tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/skip-document-with-fragment.html.ini4
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini2
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini3
-rw-r--r--tests/wpt/metadata/performance-timeline/webtiming-resolution.any.js.ini3
-rw-r--r--tests/wpt/metadata/webmessaging/with-ports/017.html.ini5
-rw-r--r--tests/wpt/metadata/webxr/ar-module/xrDevice_isSessionSupported_immersive-ar.https.html.ini7
-rw-r--r--tests/wpt/metadata/webxr/ar-module/xrDevice_requestSession_immersive-ar.https.html.ini4
-rw-r--r--tests/wpt/metadata/webxr/ar-module/xrSession_environmentBlendMode.https.html.ini4
-rw-r--r--tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini1
-rw-r--r--tests/wpt/web-platform-tests/WebIDL/ecmascript-binding/put-forwards.html14
-rw-r--r--tests/wpt/web-platform-tests/client-hints/accept-ch-lifetime.tentative.https.html106
-rw-r--r--tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/cross-origin-iframe-not-setting-other-origins.https.html19
-rw-r--r--tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/cross-origin-iframe-not-setting-own-origin.https.html19
-rw-r--r--tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/cross-origin-navigation.https.html19
-rw-r--r--tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/cross-origin-subresource.https.html19
-rw-r--r--tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/http-equiv-cross-origin-iframe-not-setting-other-origins.https.html19
-rw-r--r--tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/http-equiv-cross-origin-iframe-not-setting-own-origin.https.html19
-rw-r--r--tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/http-equiv-cross-origin-navigation.https.html19
-rw-r--r--tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/http-equiv-cross-origin-subresource.https.html19
-rw-r--r--tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/http-equiv-same-origin-iframe.https.html19
-rw-r--r--tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/http-equiv-same-origin-navigation.https.html19
-rw-r--r--tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/http-equiv-same-origin-subresource.https.html19
-rw-r--r--tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/accept-ch-test.js (renamed from tests/wpt/web-platform-tests/client-hints/resources/accept-ch-lifetime-test.js)14
-rw-r--r--tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/accept-ch.html (renamed from tests/wpt/web-platform-tests/client-hints/resources/accept_ch_lifetime.html)7
-rw-r--r--tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/accept-ch.html.headers (renamed from tests/wpt/web-platform-tests/client-hints/resources/accept_ch_lifetime.html.headers)0
-rw-r--r--tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/clear-site-data.html (renamed from tests/wpt/web-platform-tests/client-hints/resources/clear-site-data.html)0
-rw-r--r--tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/clear-site-data.html.headers (renamed from tests/wpt/web-platform-tests/client-hints/resources/clear-site-data.html.headers)0
-rw-r--r--tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/do-not-expect-client-hints-headers.html (renamed from tests/wpt/web-platform-tests/client-hints/resources/do_not_expect_client_hints_headers.html)4
-rw-r--r--tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/echo-client-hints-received.py12
-rw-r--r--tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/expect-client-hints-headers.html22
-rw-r--r--tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/http-equiv-accept-ch.html (renamed from tests/wpt/web-platform-tests/client-hints/resources/http_equiv_accept_ch_lifetime.html)1
-rw-r--r--tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/http-equiv-accept-ch.html.headers (renamed from tests/wpt/web-platform-tests/client-hints/resources/http_equiv_accept_ch_lifetime.html.headers)0
-rw-r--r--tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/same-origin-iframe.https.html19
-rw-r--r--tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/same-origin-navigation.https.html19
-rw-r--r--tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/same-origin-subresource.https.html19
-rw-r--r--tests/wpt/web-platform-tests/client-hints/resources/square.pngbin18299 -> 0 bytes
-rw-r--r--tests/wpt/web-platform-tests/common/security-features/README.md25
-rwxr-xr-x[-rw-r--r--]tests/wpt/web-platform-tests/common/security-features/tools/generate.py66
-rwxr-xr-xtests/wpt/web-platform-tests/common/security-features/tools/spec_validator.py2
-rw-r--r--tests/wpt/web-platform-tests/common/security-features/tools/template/disclaimer.template2
-rw-r--r--tests/wpt/web-platform-tests/cors/preflight-cache.htm9
-rw-r--r--tests/wpt/web-platform-tests/css/CSS2/text/bidi-span-003-ref.html30
-rw-r--r--tests/wpt/web-platform-tests/css/CSS2/text/bidi-span-003.html33
-rw-r--r--tests/wpt/web-platform-tests/css/css-flexbox/table-as-item-fixed-min-width.html12
-rw-r--r--tests/wpt/web-platform-tests/css/css-flexbox/table-as-item-wide-content.html24
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-content-distribution-vertical-lr.html34
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-content-distribution-vertical-rl.html34
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-content-distribution.html1
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/grid-layout-properties.html28
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/subgrid/contain-strict-nested-subgrid-crash.html18
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/subgrid/contain-strict-subgrid-crash.html21
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/white-space/reference/white-space-zero-fontsize-001-ref.html16
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/white-space/reference/white-space-zero-fontsize-002-ref.html17
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/white-space/white-space-zero-fontsize-001.html20
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/white-space/white-space-zero-fontsize-002.html21
-rw-r--r--tests/wpt/web-platform-tests/docs/writing-tests/python-handlers/index.md15
-rw-r--r--tests/wpt/web-platform-tests/encrypted-media/scripts/check-encryption-scheme.js5
-rw-r--r--tests/wpt/web-platform-tests/eventsource/resources/cors-cookie.py3
-rw-r--r--tests/wpt/web-platform-tests/eventsource/resources/cors.py2
-rw-r--r--tests/wpt/web-platform-tests/eventsource/resources/last-event-id.py4
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/location_reload_javascript_url.html60
-rw-r--r--tests/wpt/web-platform-tests/mixed-content/generic/spec_json.js1
-rwxr-xr-xtests/wpt/web-platform-tests/mixed-content/generic/tools/generate.py40
-rw-r--r--tests/wpt/web-platform-tests/mixed-content/spec.src.json4
-rw-r--r--tests/wpt/web-platform-tests/mixed-content/spec_json.js1
-rw-r--r--tests/wpt/web-platform-tests/payment-request/allowpaymentrequest/removing-allowpaymentrequest.https.sub.html3
-rw-r--r--tests/wpt/web-platform-tests/payment-request/allowpaymentrequest/setting-allowpaymentrequest-timing.https.sub.html6
-rw-r--r--tests/wpt/web-platform-tests/payment-request/allowpaymentrequest/setting-allowpaymentrequest.https.sub.html3
-rw-r--r--tests/wpt/web-platform-tests/referrer-policy/generic/spec_json.js1
-rwxr-xr-xtests/wpt/web-platform-tests/referrer-policy/generic/tools/generate.py40
-rw-r--r--tests/wpt/web-platform-tests/referrer-policy/spec.src.json4
-rw-r--r--tests/wpt/web-platform-tests/referrer-policy/spec_json.js1
-rw-r--r--tests/wpt/web-platform-tests/resources/chromium/webxr-test.js5
-rw-r--r--tests/wpt/web-platform-tests/resources/test/conftest.py22
-rw-r--r--tests/wpt/web-platform-tests/resources/test/tox.ini1
-rw-r--r--tests/wpt/web-platform-tests/tools/serve/serve.py2
-rw-r--r--tests/wpt/web-platform-tests/tools/wpt/browser.py6
-rw-r--r--tests/wpt/web-platform-tests/tools/wpt/install.py2
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/requirements.txt3
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/environment.py2
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executormarionette.py8
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorservo.py6
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wpttest.py2
-rw-r--r--tests/wpt/web-platform-tests/uievents/order-of-events/mouse-events/wheel-basic-manual.html17
-rw-r--r--tests/wpt/web-platform-tests/uievents/order-of-events/mouse-events/wheel-scrolling-manual.html13
-rw-r--r--tests/wpt/web-platform-tests/upgrade-insecure-requests/generic/spec_json.js1
-rwxr-xr-xtests/wpt/web-platform-tests/upgrade-insecure-requests/generic/tools/generate.py40
-rw-r--r--tests/wpt/web-platform-tests/upgrade-insecure-requests/spec.src.json4
-rw-r--r--tests/wpt/web-platform-tests/upgrade-insecure-requests/spec_json.js1
-rw-r--r--tests/wpt/web-platform-tests/webrtc/RTCDTMFSender-insertDTMF.https.html2
-rw-r--r--tests/wpt/web-platform-tests/webrtc/RTCIceConnectionState-candidate-pair.https.html2
-rw-r--r--tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-addTrack.https.html6
-rw-r--r--tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-addTransceiver.https.html5
-rw-r--r--tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-connectionState.https.html4
-rw-r--r--tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-iceConnectionState-disconnected.https.html2
-rw-r--r--tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-iceConnectionState.https.html10
-rw-r--r--tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-onsignalingstatechanged.https.html2
-rw-r--r--tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-removeTrack.https.html18
-rw-r--r--tests/wpt/web-platform-tests/webrtc/RTCRtpReceiver-getContributingSources.https.html2
-rw-r--r--tests/wpt/web-platform-tests/webrtc/RTCRtpReceiver-getSynchronizationSources.https.html2
-rw-r--r--tests/wpt/web-platform-tests/webrtc/RTCRtpSender-transport.https.html8
-rw-r--r--tests/wpt/web-platform-tests/webrtc/RTCRtpTransceiver.https.html2
-rw-r--r--tests/wpt/web-platform-tests/webxr/ar-module/xrDevice_isSessionSupported_immersive-ar.https.html34
-rw-r--r--tests/wpt/web-platform-tests/webxr/ar-module/xrDevice_requestSession_immersive-ar.https.html28
-rw-r--r--tests/wpt/web-platform-tests/webxr/ar-module/xrSession_environmentBlendMode.https.html24
-rw-r--r--tests/wpt/web-platform-tests/webxr/resources/webxr_test_constants.js15
-rw-r--r--tests/wpt/web-platform-tests/wpt.py2
119 files changed, 1446 insertions, 584 deletions
diff --git a/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini b/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini
index a9e46713244..76b398963ae 100644
--- a/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini
+++ b/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini
@@ -7,7 +7,7 @@
expected: FAIL
[Opening a blob URL in a new window immediately before revoking it works.]
- expected: TIMEOUT
+ expected: FAIL
[Opening a blob URL in a noopener about:blank window immediately before revoking it works.]
expected: FAIL
diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json
index 735905e5118..1750f277d6b 100644
--- a/tests/wpt/metadata/MANIFEST.json
+++ b/tests/wpt/metadata/MANIFEST.json
@@ -37,6 +37,18 @@
{}
]
],
+ "css/css-grid/subgrid/contain-strict-nested-subgrid-crash.html": [
+ [
+ "css/css-grid/subgrid/contain-strict-nested-subgrid-crash.html",
+ {}
+ ]
+ ],
+ "css/css-grid/subgrid/contain-strict-subgrid-crash.html": [
+ [
+ "css/css-grid/subgrid/contain-strict-subgrid-crash.html",
+ {}
+ ]
+ ],
"css/css-multicol/abspos-in-multicol-with-spanner-crash.html": [
[
"css/css-multicol/abspos-in-multicol-with-spanner-crash.html",
@@ -96279,6 +96291,18 @@
{}
]
],
+ "css/CSS2/text/bidi-span-003.html": [
+ [
+ "css/CSS2/text/bidi-span-003.html",
+ [
+ [
+ "/css/CSS2/text/bidi-span-003-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/CSS2/text/letter-spacing-004.xht": [
[
"css/CSS2/text/letter-spacing-004.xht",
@@ -123431,6 +123455,18 @@
{}
]
],
+ "css/css-flexbox/table-as-item-fixed-min-width.html": [
+ [
+ "css/css-flexbox/table-as-item-fixed-min-width.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-flexbox/table-as-item-narrow-content.html": [
[
"css/css-flexbox/table-as-item-narrow-content.html",
@@ -123448,7 +123484,7 @@
"css/css-flexbox/table-as-item-wide-content.html",
[
[
- "/css/reference/ref-filled-green-100px-square-only.html",
+ "/css/reference/ref-filled-green-100px-square.xht",
"=="
]
],
@@ -157957,6 +157993,30 @@
{}
]
],
+ "css/css-text/white-space/white-space-zero-fontsize-001.html": [
+ [
+ "css/css-text/white-space/white-space-zero-fontsize-001.html",
+ [
+ [
+ "/css/css-text/white-space/reference/white-space-zero-fontsize-001-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/white-space/white-space-zero-fontsize-002.html": [
+ [
+ "css/css-text/white-space/white-space-zero-fontsize-002.html",
+ [
+ [
+ "/css/css-text/white-space/reference/white-space-zero-fontsize-002-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-text/word-boundary/word-boundary-001.html": [
[
"css/css-text/word-boundary/word-boundary-001.html",
@@ -218267,64 +218327,70 @@
"client-hints/accept-ch-no-feature-policy-navigation.https.html.headers": [
[]
],
- "client-hints/accept_ch.http.html.headers": [
+ "client-hints/accept-ch-stickiness/resources/accept-ch-test.js": [
[]
],
- "client-hints/accept_ch.tentative.sub.https.html.headers": [
+ "client-hints/accept-ch-stickiness/resources/accept-ch.html": [
[]
],
- "client-hints/accept_ch_feature_policy.tentative.sub.https.html.headers": [
+ "client-hints/accept-ch-stickiness/resources/accept-ch.html.headers": [
[]
],
- "client-hints/accept_ch_malformed_header.https.html.headers": [
+ "client-hints/accept-ch-stickiness/resources/clear-site-data.html": [
[]
],
- "client-hints/accept_ch_no_feature_policy.tentative.sub.https.html.headers": [
+ "client-hints/accept-ch-stickiness/resources/clear-site-data.html.headers": [
[]
],
- "client-hints/echo_client_hints_received.py": [
+ "client-hints/accept-ch-stickiness/resources/do-not-expect-client-hints-headers.html": [
[]
],
- "client-hints/echo_ua_client_hints_received.py": [
+ "client-hints/accept-ch-stickiness/resources/echo-client-hints-received.py": [
[]
],
- "client-hints/resources/accept-ch-lifetime-test.js": [
+ "client-hints/accept-ch-stickiness/resources/expect-client-hints-headers.html": [
[]
],
- "client-hints/resources/accept_ch.html": [
+ "client-hints/accept-ch-stickiness/resources/http-equiv-accept-ch.html": [
[]
],
- "client-hints/resources/accept_ch.html.headers": [
+ "client-hints/accept-ch-stickiness/resources/http-equiv-accept-ch.html.headers": [
[]
],
- "client-hints/resources/accept_ch_lifetime.html": [
+ "client-hints/accept_ch.http.html.headers": [
[]
],
- "client-hints/resources/accept_ch_lifetime.html.headers": [
+ "client-hints/accept_ch.tentative.sub.https.html.headers": [
[]
],
- "client-hints/resources/clear-site-data.html": [
+ "client-hints/accept_ch_feature_policy.tentative.sub.https.html.headers": [
[]
],
- "client-hints/resources/clear-site-data.html.headers": [
+ "client-hints/accept_ch_malformed_header.https.html.headers": [
[]
],
- "client-hints/resources/do_not_expect_client_hints_headers.html": [
+ "client-hints/accept_ch_no_feature_policy.tentative.sub.https.html.headers": [
[]
],
- "client-hints/resources/expect-client-hints-headers-iframe.py": [
+ "client-hints/echo_client_hints_received.py": [
[]
],
- "client-hints/resources/expect_client_hints_headers.html": [
+ "client-hints/echo_ua_client_hints_received.py": [
[]
],
- "client-hints/resources/feature-policy-navigation.js": [
+ "client-hints/resources/accept_ch.html": [
[]
],
- "client-hints/resources/http_equiv_accept_ch_lifetime.html": [
+ "client-hints/resources/accept_ch.html.headers": [
[]
],
- "client-hints/resources/http_equiv_accept_ch_lifetime.html.headers": [
+ "client-hints/resources/expect-client-hints-headers-iframe.py": [
+ []
+ ],
+ "client-hints/resources/expect_client_hints_headers.html": [
+ []
+ ],
+ "client-hints/resources/feature-policy-navigation.js": [
[]
],
"client-hints/resources/iframe-accept-ch-lifetime.html": [
@@ -218336,9 +218402,6 @@
"client-hints/resources/sec-ch-ua.py": [
[]
],
- "client-hints/resources/square.png": [
- []
- ],
"client-hints/resources/stale-echo-client-hints.py": [
[]
],
@@ -244493,6 +244556,9 @@
"css/CSS2/text/bidi-span-002-ref.html": [
[]
],
+ "css/CSS2/text/bidi-span-003-ref.html": [
+ []
+ ],
"css/CSS2/text/letter-spacing-004-ref.xht": [
[]
],
@@ -261020,6 +261086,12 @@
"css/css-text/white-space/reference/white-space-wrap-after-nowrap-001-ref.html": [
[]
],
+ "css/css-text/white-space/reference/white-space-zero-fontsize-001-ref.html": [
+ []
+ ],
+ "css/css-text/white-space/reference/white-space-zero-fontsize-002-ref.html": [
+ []
+ ],
"css/css-text/word-boundary/reference/word-boundary-001-ref.html": [
[]
],
@@ -281687,18 +281759,15 @@
"mixed-content/generic/sanity-checker.js": [
[]
],
- "mixed-content/generic/test-case.sub.js": [
+ "mixed-content/generic/spec_json.js": [
[]
],
- "mixed-content/generic/tools/generate.py": [
+ "mixed-content/generic/test-case.sub.js": [
[]
],
"mixed-content/spec.src.json": [
[]
],
- "mixed-content/spec_json.js": [
- []
- ],
"mst-content-hint/META.yml": [
[]
],
@@ -284495,18 +284564,15 @@
"referrer-policy/generic/sanity-checker.js": [
[]
],
- "referrer-policy/generic/test-case.sub.js": [
+ "referrer-policy/generic/spec_json.js": [
[]
],
- "referrer-policy/generic/tools/generate.py": [
+ "referrer-policy/generic/test-case.sub.js": [
[]
],
"referrer-policy/spec.src.json": [
[]
],
- "referrer-policy/spec_json.js": [
- []
- ],
"remote-playback/META.yml": [
[]
],
@@ -292886,10 +292952,10 @@
"upgrade-insecure-requests/gen/top.http-rp/upgrade/xhr/same-https.downgrade.https.html.headers": [
[]
],
- "upgrade-insecure-requests/generic/test-case.sub.js": [
+ "upgrade-insecure-requests/generic/spec_json.js": [
[]
],
- "upgrade-insecure-requests/generic/tools/generate.py": [
+ "upgrade-insecure-requests/generic/test-case.sub.js": [
[]
],
"upgrade-insecure-requests/link-upgrade/basic-link-no-upgrade.sub.html": [
@@ -292955,9 +293021,6 @@
"upgrade-insecure-requests/spec.src.json": [
[]
],
- "upgrade-insecure-requests/spec_json.js": [
- []
- ],
"upgrade-insecure-requests/support/redirect-cors.py": [
[]
],
@@ -315548,20 +315611,122 @@
{}
]
],
- "client-hints/accept-ch-lifetime.tentative.https.html": [
+ "client-hints/accept-ch-no-feature-policy-navigation.https.html": [
[
- "client-hints/accept-ch-lifetime.tentative.https.html",
+ "client-hints/accept-ch-no-feature-policy-navigation.https.html",
+ {}
+ ]
+ ],
+ "client-hints/accept-ch-stickiness/cross-origin-iframe-not-setting-other-origins.https.html": [
+ [
+ "client-hints/accept-ch-stickiness/cross-origin-iframe-not-setting-other-origins.https.html",
{
"timeout": "long"
}
]
],
- "client-hints/accept-ch-no-feature-policy-navigation.https.html": [
+ "client-hints/accept-ch-stickiness/cross-origin-iframe-not-setting-own-origin.https.html": [
[
- "client-hints/accept-ch-no-feature-policy-navigation.https.html",
+ "client-hints/accept-ch-stickiness/cross-origin-iframe-not-setting-own-origin.https.html",
+ {
+ "timeout": "long"
+ }
+ ]
+ ],
+ "client-hints/accept-ch-stickiness/cross-origin-navigation.https.html": [
+ [
+ "client-hints/accept-ch-stickiness/cross-origin-navigation.https.html",
+ {
+ "timeout": "long"
+ }
+ ]
+ ],
+ "client-hints/accept-ch-stickiness/cross-origin-subresource.https.html": [
+ [
+ "client-hints/accept-ch-stickiness/cross-origin-subresource.https.html",
+ {
+ "timeout": "long"
+ }
+ ]
+ ],
+ "client-hints/accept-ch-stickiness/http-equiv-cross-origin-iframe-not-setting-other-origins.https.html": [
+ [
+ "client-hints/accept-ch-stickiness/http-equiv-cross-origin-iframe-not-setting-other-origins.https.html",
+ {
+ "timeout": "long"
+ }
+ ]
+ ],
+ "client-hints/accept-ch-stickiness/http-equiv-cross-origin-iframe-not-setting-own-origin.https.html": [
+ [
+ "client-hints/accept-ch-stickiness/http-equiv-cross-origin-iframe-not-setting-own-origin.https.html",
+ {
+ "timeout": "long"
+ }
+ ]
+ ],
+ "client-hints/accept-ch-stickiness/http-equiv-cross-origin-navigation.https.html": [
+ [
+ "client-hints/accept-ch-stickiness/http-equiv-cross-origin-navigation.https.html",
+ {
+ "timeout": "long"
+ }
+ ]
+ ],
+ "client-hints/accept-ch-stickiness/http-equiv-cross-origin-subresource.https.html": [
+ [
+ "client-hints/accept-ch-stickiness/http-equiv-cross-origin-subresource.https.html",
+ {
+ "timeout": "long"
+ }
+ ]
+ ],
+ "client-hints/accept-ch-stickiness/http-equiv-same-origin-iframe.https.html": [
+ [
+ "client-hints/accept-ch-stickiness/http-equiv-same-origin-iframe.https.html",
{}
]
],
+ "client-hints/accept-ch-stickiness/http-equiv-same-origin-navigation.https.html": [
+ [
+ "client-hints/accept-ch-stickiness/http-equiv-same-origin-navigation.https.html",
+ {
+ "timeout": "long"
+ }
+ ]
+ ],
+ "client-hints/accept-ch-stickiness/http-equiv-same-origin-subresource.https.html": [
+ [
+ "client-hints/accept-ch-stickiness/http-equiv-same-origin-subresource.https.html",
+ {
+ "timeout": "long"
+ }
+ ]
+ ],
+ "client-hints/accept-ch-stickiness/same-origin-iframe.https.html": [
+ [
+ "client-hints/accept-ch-stickiness/same-origin-iframe.https.html",
+ {
+ "timeout": "long"
+ }
+ ]
+ ],
+ "client-hints/accept-ch-stickiness/same-origin-navigation.https.html": [
+ [
+ "client-hints/accept-ch-stickiness/same-origin-navigation.https.html",
+ {
+ "timeout": "long"
+ }
+ ]
+ ],
+ "client-hints/accept-ch-stickiness/same-origin-subresource.https.html": [
+ [
+ "client-hints/accept-ch-stickiness/same-origin-subresource.https.html",
+ {
+ "timeout": "long"
+ }
+ ]
+ ],
"client-hints/accept_ch.http.html": [
[
"client-hints/accept_ch.http.html",
@@ -360904,6 +361069,12 @@
{}
]
],
+ "html/browsers/history/the-location-interface/location_reload_javascript_url.html": [
+ [
+ "html/browsers/history/the-location-interface/location_reload_javascript_url.html",
+ {}
+ ]
+ ],
"html/browsers/history/the-location-interface/location_replace.html": [
[
"html/browsers/history/the-location-interface/location_replace.html",
@@ -439449,6 +439620,24 @@
}
]
],
+ "webxr/ar-module/xrDevice_isSessionSupported_immersive-ar.https.html": [
+ [
+ "webxr/ar-module/xrDevice_isSessionSupported_immersive-ar.https.html",
+ {}
+ ]
+ ],
+ "webxr/ar-module/xrDevice_requestSession_immersive-ar.https.html": [
+ [
+ "webxr/ar-module/xrDevice_requestSession_immersive-ar.https.html",
+ {}
+ ]
+ ],
+ "webxr/ar-module/xrSession_environmentBlendMode.https.html": [
+ [
+ "webxr/ar-module/xrSession_environmentBlendMode.https.html",
+ {}
+ ]
+ ],
"webxr/events_input_source_recreation.https.html": [
[
"webxr/events_input_source_recreation.https.html",
@@ -472341,7 +472530,7 @@
"testharness"
],
"WebIDL/ecmascript-binding/put-forwards.html": [
- "b004bd008d8ce679009e7ed339775fc253fdd6fa",
+ "d7cc389b1c88ec6f8c166115dbf45b4bc58b540b",
"testharness"
],
"WebIDL/ecmascript-binding/sequence-conversion.html": [
@@ -476560,10 +476749,6 @@
"f9595a794d9c93dca09f371f5797399a9204ed53",
"support"
],
- "client-hints/accept-ch-lifetime.tentative.https.html": [
- "f0b03ba0a8c311642af793a341653995fb73cbd9",
- "testharness"
- ],
"client-hints/accept-ch-no-feature-policy-navigation.https.html": [
"5fb6c22f50873ce597e6d5ed04c1ebeef64a17c1",
"testharness"
@@ -476572,6 +476757,102 @@
"7eb28a000bdde9634e618701e2ba512e4a9ebc49",
"support"
],
+ "client-hints/accept-ch-stickiness/cross-origin-iframe-not-setting-other-origins.https.html": [
+ "5316c2874cf624751f846d554b35b57e8630af40",
+ "testharness"
+ ],
+ "client-hints/accept-ch-stickiness/cross-origin-iframe-not-setting-own-origin.https.html": [
+ "f83aa6173e2dbca7de68d817914a56700a0cdd79",
+ "testharness"
+ ],
+ "client-hints/accept-ch-stickiness/cross-origin-navigation.https.html": [
+ "e05c8e3ef5bf853c04acc396166e0cd5a6a00b60",
+ "testharness"
+ ],
+ "client-hints/accept-ch-stickiness/cross-origin-subresource.https.html": [
+ "249ccb4a60d4756b1be34e2e324b29eae8e59370",
+ "testharness"
+ ],
+ "client-hints/accept-ch-stickiness/http-equiv-cross-origin-iframe-not-setting-other-origins.https.html": [
+ "226b3116fc173ebb7c217df94addbcadbfacec04",
+ "testharness"
+ ],
+ "client-hints/accept-ch-stickiness/http-equiv-cross-origin-iframe-not-setting-own-origin.https.html": [
+ "705b65a7bf44c1343a9e45045c17cd24cf2dbfd2",
+ "testharness"
+ ],
+ "client-hints/accept-ch-stickiness/http-equiv-cross-origin-navigation.https.html": [
+ "ffebeb919f0d440579fd207ee8a4dee59102ceae",
+ "testharness"
+ ],
+ "client-hints/accept-ch-stickiness/http-equiv-cross-origin-subresource.https.html": [
+ "7bb5d1520c746373d60bb9d0bee150d29dc0b048",
+ "testharness"
+ ],
+ "client-hints/accept-ch-stickiness/http-equiv-same-origin-iframe.https.html": [
+ "f07adaa901c4ed73bd27410cc081f9daed602918",
+ "testharness"
+ ],
+ "client-hints/accept-ch-stickiness/http-equiv-same-origin-navigation.https.html": [
+ "91b8cd639f26afe3d9d26bcbd92f9fc708a0bdb4",
+ "testharness"
+ ],
+ "client-hints/accept-ch-stickiness/http-equiv-same-origin-subresource.https.html": [
+ "793bf5e0796cb25c3847259bd56a74b0c1da108b",
+ "testharness"
+ ],
+ "client-hints/accept-ch-stickiness/resources/accept-ch-test.js": [
+ "ed635513fd70f20ec2c5b51fd88a4b0380b77190",
+ "support"
+ ],
+ "client-hints/accept-ch-stickiness/resources/accept-ch.html": [
+ "694c5b03bc18a0062689caaac5147e6aca8b6415",
+ "support"
+ ],
+ "client-hints/accept-ch-stickiness/resources/accept-ch.html.headers": [
+ "370f9869226db4bdf8785c876b13d69b415e5abf",
+ "support"
+ ],
+ "client-hints/accept-ch-stickiness/resources/clear-site-data.html": [
+ "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
+ "support"
+ ],
+ "client-hints/accept-ch-stickiness/resources/clear-site-data.html.headers": [
+ "a0077c0577fc31220a63d0424f3fd4d1ab2de2bc",
+ "support"
+ ],
+ "client-hints/accept-ch-stickiness/resources/do-not-expect-client-hints-headers.html": [
+ "147206b26aeb8fe3f4813e4b1f68d7a59b658c46",
+ "support"
+ ],
+ "client-hints/accept-ch-stickiness/resources/echo-client-hints-received.py": [
+ "be712293be3c749d98d328dd2fec7334da4ad9b2",
+ "support"
+ ],
+ "client-hints/accept-ch-stickiness/resources/expect-client-hints-headers.html": [
+ "cda1f81978d9a8dbc7dd12286d8885f16007b9e0",
+ "support"
+ ],
+ "client-hints/accept-ch-stickiness/resources/http-equiv-accept-ch.html": [
+ "05e18a44fb96665299ab79f037a7ca20180bf92a",
+ "support"
+ ],
+ "client-hints/accept-ch-stickiness/resources/http-equiv-accept-ch.html.headers": [
+ "27140bf36e4dbd22b8f7190587f42a570c9d12bd",
+ "support"
+ ],
+ "client-hints/accept-ch-stickiness/same-origin-iframe.https.html": [
+ "25e29017f403816e0917979a7c4886ac28f65fc4",
+ "testharness"
+ ],
+ "client-hints/accept-ch-stickiness/same-origin-navigation.https.html": [
+ "e35cbdcedd0f30e31834764cb23a574ce75feed5",
+ "testharness"
+ ],
+ "client-hints/accept-ch-stickiness/same-origin-subresource.https.html": [
+ "0b7151a2cca08d941d313e014e41769c08c350cc",
+ "testharness"
+ ],
"client-hints/accept_ch.http.html": [
"50d77646f89aea13c212c6ecee4e7f32107007e9",
"testharness"
@@ -476640,10 +476921,6 @@
"dd516a97c965f4a248fa27ed8ce71dae6251e106",
"testharness"
],
- "client-hints/resources/accept-ch-lifetime-test.js": [
- "05aaec1aef8a50c9aac835fd523c48c680e998a3",
- "support"
- ],
"client-hints/resources/accept_ch.html": [
"48d09f2d95c57875b71b088c2db8ce9585f5a237",
"support"
@@ -476652,26 +476929,6 @@
"91ee40652f06508478bb776bf4068fd61277cef3",
"support"
],
- "client-hints/resources/accept_ch_lifetime.html": [
- "a77eaab3f0baac62797e2b48592603da463c2f8a",
- "support"
- ],
- "client-hints/resources/accept_ch_lifetime.html.headers": [
- "370f9869226db4bdf8785c876b13d69b415e5abf",
- "support"
- ],
- "client-hints/resources/clear-site-data.html": [
- "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
- "support"
- ],
- "client-hints/resources/clear-site-data.html.headers": [
- "a0077c0577fc31220a63d0424f3fd4d1ab2de2bc",
- "support"
- ],
- "client-hints/resources/do_not_expect_client_hints_headers.html": [
- "b3cf5df4c27224fe30a6ec3b4507aa30a8fe6a95",
- "support"
- ],
"client-hints/resources/expect-client-hints-headers-iframe.py": [
"e72d77c47d9aae36c619e8e065e5685f7a9c166b",
"support"
@@ -476684,14 +476941,6 @@
"4487d9a447313f87dd2f230ce7d858b38008fae8",
"support"
],
- "client-hints/resources/http_equiv_accept_ch_lifetime.html": [
- "ab2ab9e60c8a4ee6d4fc088fb6c8d4d6d0daffd6",
- "support"
- ],
- "client-hints/resources/http_equiv_accept_ch_lifetime.html.headers": [
- "27140bf36e4dbd22b8f7190587f42a570c9d12bd",
- "support"
- ],
"client-hints/resources/iframe-accept-ch-lifetime.html": [
"693e4f94dcc3363f0d15e7c7a18a7a598c72cf77",
"support"
@@ -476704,10 +476953,6 @@
"a14a27dadf9e333784a5c636c821634b387e475f",
"support"
],
- "client-hints/resources/square.png": [
- "01c9666a8de9d5535615aff830810e5df4b2156f",
- "support"
- ],
"client-hints/resources/stale-echo-client-hints.py": [
"769fa909fa4b3b960fbde2e6df282efc970b35d0",
"support"
@@ -476889,7 +477134,7 @@
"support"
],
"common/security-features/README.md": [
- "c19874653a7cac4d314fd9dd0bf921082c6f8d70",
+ "2509d661b4afb68a5bfca0a41270d93586ddbe49",
"support"
],
"common/security-features/resources/common.sub.js": [
@@ -477013,15 +477258,15 @@
"support"
],
"common/security-features/tools/generate.py": [
- "6fac19827aa1043ad7d3244cf78f44a8ed0b5cbc",
+ "3c298b5a3e20216f822b420d3460e1bea48e22d5",
"support"
],
"common/security-features/tools/spec_validator.py": [
- "06a5acce23a41ad0157871bc2d5de26d307a1c53",
+ "d845b086a3ed55aae6cd0645ece986c238a54a55",
"support"
],
"common/security-features/tools/template/disclaimer.template": [
- "66c43ed6f21324d44b1596c09a02fecf53f41323",
+ "ba9458cb31252aecf3c447b43c505a04d7abf92f",
"support"
],
"common/security-features/tools/template/spec_json.js.template": [
@@ -501181,7 +501426,7 @@
"testharness"
],
"cors/preflight-cache.htm": [
- "0b6138bdffacee41537e4ed4131620e863ceb3d1",
+ "b3de663ebc1d32409c8ed376a3873b2a2b675eb5",
"testharness"
],
"cors/preflight-failure.htm": [
@@ -550460,6 +550705,14 @@
"d4fc6de070d23ebe8817e9a299c44e48cad256a9",
"reftest"
],
+ "css/CSS2/text/bidi-span-003-ref.html": [
+ "4cebcb90bba5d842f2f617c5f7878bca117d4acb",
+ "support"
+ ],
+ "css/CSS2/text/bidi-span-003.html": [
+ "92a90d529c5a10ff099a03a3133f6c96c5b4d91c",
+ "reftest"
+ ],
"css/CSS2/text/bidi-text-decoration-underline-001.xht": [
"e3efb521f2208113ad3278a261348bc5997240f5",
"visual"
@@ -574084,12 +574337,16 @@
"a83f518a232e82bf76a8b9c7a8d6cae71808b420",
"reftest"
],
+ "css/css-flexbox/table-as-item-fixed-min-width.html": [
+ "3a676babde0e573f3f801d1f498b02e8a6b891ff",
+ "reftest"
+ ],
"css/css-flexbox/table-as-item-narrow-content.html": [
"31cf112518198044d485b4ba5ff477773c29487c",
"reftest"
],
"css/css-flexbox/table-as-item-wide-content.html": [
- "475adf548fdba180ec684ff4702aadc305d6c632",
+ "45ad49ec2d69808cb09892515ea882716edd369d",
"reftest"
],
"css/css-flexbox/table-with-infinite-max-intrinsic-width.html": [
@@ -582945,15 +583202,15 @@
"support"
],
"css/css-grid/alignment/grid-align-content-distribution-vertical-lr.html": [
- "8217f4dd2c3cfd031aece87d54a78d5bcec640ca",
+ "cecab3e213653fbb732cc12f04cc44daee6da5a5",
"testharness"
],
"css/css-grid/alignment/grid-align-content-distribution-vertical-rl.html": [
- "096e3fd6910a09ba5097b66acdb1dcf8a6d5326e",
+ "40ee22190b917488af3005e16574a75f1de210ca",
"testharness"
],
"css/css-grid/alignment/grid-align-content-distribution.html": [
- "7b66ddb995191c67278d861aa6cb6a637bc6adaf",
+ "488fc05aad441bd2a648ad1a95c339ae82504ee1",
"testharness"
],
"css/css-grid/alignment/grid-align-content.html": [
@@ -584901,7 +585158,7 @@
"reftest"
],
"css/css-grid/grid-layout-properties.html": [
- "0debe91f9246f67753cdb89c62ef818cbba73063",
+ "7cdda674b4759ef50766416fb5399033a0f09f06",
"testharness"
],
"css/css-grid/grid-model/display-grid.html": [
@@ -585504,6 +585761,14 @@
"995b1a8d2ae1aaa7c0230379e5b799b12ac9e93c",
"reftest"
],
+ "css/css-grid/subgrid/contain-strict-nested-subgrid-crash.html": [
+ "a98e43777eee9347ba1d69a4b133140cea0577fc",
+ "crashtest"
+ ],
+ "css/css-grid/subgrid/contain-strict-subgrid-crash.html": [
+ "0d377175b7b6aa6b8fd5ba0dc3e3f3ed20f8aad2",
+ "crashtest"
+ ],
"css/css-grid/subgrid/grid-gap-001-ref.html": [
"e7909fc2064e4d3498ab90da179cf4ad0d0e9c79",
"support"
@@ -607712,6 +607977,14 @@
"80b2260cbbe6122e90c297ab1f2cd83917712030",
"support"
],
+ "css/css-text/white-space/reference/white-space-zero-fontsize-001-ref.html": [
+ "3c27ed25beed79a983f221c203f9aa72abe2beca",
+ "support"
+ ],
+ "css/css-text/white-space/reference/white-space-zero-fontsize-002-ref.html": [
+ "6d2134ac4da3fc7bc3ce78fea834f2037e47cf6c",
+ "support"
+ ],
"css/css-text/white-space/seg-break-transformation-000.html": [
"cb7b0f30b566320c1022f61fde44bc09695badb1",
"testharness"
@@ -608036,6 +608309,14 @@
"a484f1cf9167e468063cf2205493b8e71a254470",
"reftest"
],
+ "css/css-text/white-space/white-space-zero-fontsize-001.html": [
+ "900e1143f2fd84ed68892be4622f93e678250ab9",
+ "reftest"
+ ],
+ "css/css-text/white-space/white-space-zero-fontsize-002.html": [
+ "1b8d3b7eb60f07d12ea87d3464c228269262ec7d",
+ "reftest"
+ ],
"css/css-text/word-boundary/reference/word-boundary-001-ref.html": [
"620079f6ad48bba3d65a9bcd92edfd717228b973",
"support"
@@ -641845,7 +642126,7 @@
"support"
],
"docs/writing-tests/python-handlers/index.md": [
- "f75703bb9efdb1a467b9172be9385bfdd63ad537",
+ "e3be1485bf0e6a07af647000c6dee0d69b79a2dc",
"support"
],
"docs/writing-tests/reftest-tutorial.md": [
@@ -646829,7 +647110,7 @@
"support"
],
"encrypted-media/scripts/check-encryption-scheme.js": [
- "5d629271b42ff374e1b40a9a3b4113b42d1afbaf",
+ "ffab4a34911eb918d5e999e131205b4a9f92d92c",
"support"
],
"encrypted-media/scripts/check-initdata-type.js": [
@@ -647473,11 +647754,11 @@
"support"
],
"eventsource/resources/cors-cookie.py": [
- "7deaff498d7c0c077f6417cd725725ca55039b96",
+ "c35824ff437feed72364181b57d7732c170722ab",
"support"
],
"eventsource/resources/cors.py": [
- "d01596c8366367b87e4fcfd971208c3e44604f31",
+ "42a0a0bb5843389674453fc56d8a87c67cd48dcd",
"support"
],
"eventsource/resources/eventsource-onmessage-realm.htm": [
@@ -647489,7 +647770,7 @@
"support"
],
"eventsource/resources/last-event-id.py": [
- "09e4f29731a1d597172b64311c6400a189a4dd20",
+ "2b74bf66a286ff65b386662412018002c762dee2",
"support"
],
"eventsource/resources/message.py": [
@@ -653144,6 +653425,10 @@
"eb2c21b38a307b6ac015f018a8192384455ac9fb",
"testharness"
],
+ "html/browsers/history/the-location-interface/location_reload_javascript_url.html": [
+ "737cafbcd3ec2955102427227b58c63edf3ec525",
+ "testharness"
+ ],
"html/browsers/history/the-location-interface/location_replace.html": [
"2f2d573084598e0de753b9e03045cbd281e3efe5",
"testharness"
@@ -679952,12 +680237,12 @@
"55a103adf0f29c615d40bc47943be1aec25c8f1e",
"support"
],
- "mixed-content/generic/test-case.sub.js": [
- "661cff12d00e1d7cc1f8e9b2ca2f4ff2b65f4e06",
+ "mixed-content/generic/spec_json.js": [
+ "2f5212e9ff762d0f9e10a738120035beea618560",
"support"
],
- "mixed-content/generic/tools/generate.py": [
- "060bdabf91cc41f9be0d6c8e5bbf4a8e05c381c1",
+ "mixed-content/generic/test-case.sub.js": [
+ "661cff12d00e1d7cc1f8e9b2ca2f4ff2b65f4e06",
"support"
],
"mixed-content/imageset.https.sub.html": [
@@ -679965,11 +680250,7 @@
"testharness"
],
"mixed-content/spec.src.json": [
- "c272bb3f642bfd71ace5e4bcab4a66cadaf732c5",
- "support"
- ],
- "mixed-content/spec_json.js": [
- "00428b1fa5e6396b82484d33cf36589a8c64dd9a",
+ "8ece6de3ffdf84c6acdcfd4c9c17ec5d83099212",
"support"
],
"mst-content-hint/META.yml": [
@@ -687789,15 +688070,15 @@
"testharness"
],
"payment-request/allowpaymentrequest/removing-allowpaymentrequest.https.sub.html": [
- "b0e0cbacbf2e611139cd30747acaaf1186ae21f6",
+ "64baebb50246514e9fd3db59d3dada4af9720825",
"testharness"
],
"payment-request/allowpaymentrequest/setting-allowpaymentrequest-timing.https.sub.html": [
- "45661de7e0dedd19cda4a7a2f0a76aaa72e91ccc",
+ "a741296d5da75460f3d2877f228d4c59e13d643c",
"testharness"
],
"payment-request/allowpaymentrequest/setting-allowpaymentrequest.https.sub.html": [
- "06f0c8479da9450c748fe01c6d411f73355210da",
+ "c1d53a4bc261759d5ee7243c90e4beb7f8b7de4e",
"testharness"
],
"payment-request/billing-address-changed-manual.https.html": [
@@ -701872,6 +702153,10 @@
"e296ce93b965b788ea79f2f2b6cff45d5dce55f0",
"support"
],
+ "referrer-policy/generic/spec_json.js": [
+ "cad5e79f1f8b80bdc54f2f8e861d821770b29721",
+ "support"
+ ],
"referrer-policy/generic/subresource-test/area-navigate.html": [
"2a4f29654df1da8e3f18359dacf6ce092c325a67",
"testharness"
@@ -701912,20 +702197,12 @@
"c8a6b139f33fa044ddb644409b1e4437d3df338c",
"support"
],
- "referrer-policy/generic/tools/generate.py": [
- "7cace61c0f0b7cd973bf2ea6f88d12a436805d48",
- "support"
- ],
"referrer-policy/generic/unsupported-csp-referrer-directive.html": [
"a7f22210edd9703c67cf9df819c07117b5399445",
"testharness"
],
"referrer-policy/spec.src.json": [
- "2674a45d6db37fdd2fed84bf08fea51b5432f456",
- "support"
- ],
- "referrer-policy/spec_json.js": [
- "8a15eaee1ebd7886a1f80dc7dc0bac46b08f595d",
+ "b0e07eb132861688d58126ab506afb4c8de03256",
"support"
],
"remote-playback/META.yml": [
@@ -702825,7 +703102,7 @@
"support"
],
"resources/chromium/webxr-test.js": [
- "b45ff20dbc4ec9cf9fbcd36b8e3b7887ba512947",
+ "54788b4ca3de9fc99dd01d2693829bd5be08956f",
"support"
],
"resources/chromium/webxr-test.js.headers": [
@@ -702853,7 +703130,7 @@
"support"
],
"resources/test/conftest.py": [
- "857f1b41bcb11c422d6603e79d8c98a6b1dfbb07",
+ "a9f4203f279cbadb702456b1d71d6aa60ed5d0ef",
"support"
],
"resources/test/harness.html": [
@@ -703193,7 +703470,7 @@
"support"
],
"resources/test/tox.ini": [
- "d0c5186f15692153fe0d09ba727e4350f1de2ef7",
+ "a7a02e4b93bdc009ef0b05cbc039c3977fcdd46e",
"support"
],
"resources/test/variants.js": [
@@ -714765,7 +715042,7 @@
"support"
],
"tools/serve/serve.py": [
- "1868b1a36e51c187491d73aa2708484da882042f",
+ "f33846bc24c042729857113f8e8be9387b9a8e56",
"support"
],
"tools/serve/test_functional.py": [
@@ -718721,7 +718998,7 @@
"support"
],
"tools/wpt/browser.py": [
- "3ee98d959ec5befc58b884e0ec5385d554bc8725",
+ "6dd2f5c4c9001f1edfa0a723759444c53106d673",
"support"
],
"tools/wpt/commands.json": [
@@ -718733,7 +719010,7 @@
"support"
],
"tools/wpt/install.py": [
- "24915f0c98d0be3a864a3a515ba0e162dc37da8c",
+ "3da697e5333a55510d0b63b74f79c236303b4c4f",
"support"
],
"tools/wpt/mach-emulator.manifest": [
@@ -718845,7 +719122,7 @@
"support"
],
"tools/wptrunner/requirements.txt": [
- "3cd01446e25bceb4dadef48259117bd057ea6f48",
+ "74a358ed10b54d1482b4732fdc9c97e01c75c22d",
"support"
],
"tools/wptrunner/requirements_android_webview.txt": [
@@ -719125,7 +719402,7 @@
"support"
],
"tools/wptrunner/wptrunner/environment.py": [
- "7dcea4aeafabb9c481dccdc1aaf9bd153572bb7d",
+ "608b24dfd3ad878a95d27b030e17890d27eb9a0a",
"support"
],
"tools/wptrunner/wptrunner/executors/__init__.py": [
@@ -719153,7 +719430,7 @@
"support"
],
"tools/wptrunner/wptrunner/executors/executormarionette.py": [
- "01306397db7944cd0dfadf8f1bf0327dbacf94d6",
+ "837329fccb7795fbd612fea4c0b7cacbcaf469ed",
"support"
],
"tools/wptrunner/wptrunner/executors/executoropera.py": [
@@ -719169,7 +719446,7 @@
"support"
],
"tools/wptrunner/wptrunner/executors/executorservo.py": [
- "2b8e865fa9bd1f0f62a1b9cbd6f79ffd0bcb8d46",
+ "8f8e120e66da6403f256f99f279f1f5dc8008272",
"support"
],
"tools/wptrunner/wptrunner/executors/executorservodriver.py": [
@@ -719469,7 +719746,7 @@
"support"
],
"tools/wptrunner/wptrunner/wpttest.py": [
- "d650e98dfbf5976afa0138f0ac166e950e194e82",
+ "bff61f3e77657926ab0d501963d00621bdc2a78f",
"support"
],
"tools/wptserve/.gitignore": [
@@ -720389,11 +720666,11 @@
"manual"
],
"uievents/order-of-events/mouse-events/wheel-basic-manual.html": [
- "093951dfe49b4f68e9015614f320f9254d54f391",
+ "c5a09f6cb4f8919539090187fa8be1a670617b33",
"manual"
],
"uievents/order-of-events/mouse-events/wheel-scrolling-manual.html": [
- "5acae6d4777ccff91d4bafcfa16cdde2eba69912",
+ "cae4cf6523b4a23d125d187215a96ad7918675cc",
"manual"
],
"uievents/resources/eventrecorder.js": [
@@ -723372,12 +723649,12 @@
"43c8dcf97b3ea5af9cee9403392b998c8d079a0a",
"testharness"
],
- "upgrade-insecure-requests/generic/test-case.sub.js": [
- "cde228dbad89f7b707a6332dc8ed3b41e0474555",
+ "upgrade-insecure-requests/generic/spec_json.js": [
+ "89b17048e22f642255e67aa13bed9bdbecf01bec",
"support"
],
- "upgrade-insecure-requests/generic/tools/generate.py": [
- "4c19f4c34dab0ecd302ae22fcffdc3f07ce935c6",
+ "upgrade-insecure-requests/generic/test-case.sub.js": [
+ "cde228dbad89f7b707a6332dc8ed3b41e0474555",
"support"
],
"upgrade-insecure-requests/link-upgrade.sub.https.html": [
@@ -723465,11 +723742,7 @@
"support"
],
"upgrade-insecure-requests/spec.src.json": [
- "6aee9a280b0ff5001c77e2d8a688618c049dc226",
- "support"
- ],
- "upgrade-insecure-requests/spec_json.js": [
- "9122ce38e31e1a2c2c2c3f4caa291ae24e91a8cb",
+ "dcf63008f63116fceb47d5d2bfb7aa15696202f0",
"support"
],
"upgrade-insecure-requests/support/redirect-cors.py": [
@@ -729117,7 +729390,7 @@
"support"
],
"webrtc/RTCDTMFSender-insertDTMF.https.html": [
- "8ac144bab9286fbaa560272ae9c1ca7965090532",
+ "62a5f0472c1983140f1ccd29b10e5b86d302c79b",
"testharness"
],
"webrtc/RTCDTMFSender-ontonechange-long.https.html": [
@@ -729169,7 +729442,7 @@
"testharness"
],
"webrtc/RTCIceConnectionState-candidate-pair.https.html": [
- "6c93aec9260d50d1d6cfcd637d15dd44385bee0d",
+ "0752c9aaee65cd4216861e9900c8f863f9d14456",
"testharness"
],
"webrtc/RTCIceTransport-extension-helper.js": [
@@ -729197,11 +729470,11 @@
"testharness"
],
"webrtc/RTCPeerConnection-addTrack.https.html": [
- "1550fc4f7943b79cc331d5c93ca6d5643793dead",
+ "3f4f927883de757d23caf7fda2af30715d67d8ed",
"testharness"
],
"webrtc/RTCPeerConnection-addTransceiver.https.html": [
- "6df056117d02452e040b153147dbdad7bf8fa9bb",
+ "3640bfb31cd32b926c0493aa1d80f9d291dfae26",
"testharness"
],
"webrtc/RTCPeerConnection-canTrickleIceCandidates.html": [
@@ -729213,7 +729486,7 @@
"testharness"
],
"webrtc/RTCPeerConnection-connectionState.https.html": [
- "a054a1e8cccbd02cc7b55f96ff483219846cf997",
+ "9e2f3649aec145f3f8787846c0cd3b9ac74a7a81",
"testharness"
],
"webrtc/RTCPeerConnection-constructor.html": [
@@ -729253,11 +729526,11 @@
"support"
],
"webrtc/RTCPeerConnection-iceConnectionState-disconnected.https.html": [
- "dbfc41e0c375dea0711a8cf312846cbdb27c570b",
+ "ff405f32851037e3880b674b4553896d36d92544",
"testharness"
],
"webrtc/RTCPeerConnection-iceConnectionState.https.html": [
- "a2b2827b8494af7e33e5c81b765b92041064fe6f",
+ "a5bf7536ff5fa8dea448010c73dcbee4ad7532ff",
"testharness"
],
"webrtc/RTCPeerConnection-iceGatheringState.html": [
@@ -729281,7 +729554,7 @@
"testharness"
],
"webrtc/RTCPeerConnection-onsignalingstatechanged.https.html": [
- "fc3182d3d59ea5ba80cbcf022a76c4fc40f18a1a",
+ "c09285956dfc73fba1390343903af377181ec08a",
"testharness"
],
"webrtc/RTCPeerConnection-ontrack.https.html": [
@@ -729293,7 +729566,7 @@
"testharness"
],
"webrtc/RTCPeerConnection-removeTrack.https.html": [
- "f2add7f0d34bada5c156cafeac399e104b2a414a",
+ "10b4cfb3a613d8abc508da9ed12c3c3605d32ebe",
"testharness"
],
"webrtc/RTCPeerConnection-restartIce-onnegotiationneeded.https.html": [
@@ -729413,7 +729686,7 @@
"testharness"
],
"webrtc/RTCRtpReceiver-getContributingSources.https.html": [
- "aa59f1b910aca14b2101b063654a17d1602ba26b",
+ "7245d477cc8994098e1d0af2a8a5ddbf2f57620e",
"testharness"
],
"webrtc/RTCRtpReceiver-getParameters.html": [
@@ -729425,7 +729698,7 @@
"testharness"
],
"webrtc/RTCRtpReceiver-getSynchronizationSources.https.html": [
- "a78ede0d90863dbfa458807d435a34cd9087b61f",
+ "8436a44ebcd227fa934ceba5488918b10d92acd3",
"testharness"
],
"webrtc/RTCRtpSender-getCapabilities.html": [
@@ -729449,7 +729722,7 @@
"testharness"
],
"webrtc/RTCRtpSender-transport.https.html": [
- "8c0552dd68aba8c707c6cbe2c7d6f9f3c5f64f17",
+ "cd419ebc186b720c2a5f961451eec723ad229fa8",
"testharness"
],
"webrtc/RTCRtpTransceiver-direction.html": [
@@ -729465,7 +729738,7 @@
"testharness"
],
"webrtc/RTCRtpTransceiver.https.html": [
- "67571895175f19c008743523f035aa31fced9681",
+ "36708d11ec82bfff5e55489f334a74668cb51698",
"testharness"
],
"webrtc/RTCSctpTransport-constructor.html": [
@@ -734256,6 +734529,18 @@
"1268f4ea2a5eb228fb49a6f06d8905f8d9480ae7",
"testharness"
],
+ "webxr/ar-module/xrDevice_isSessionSupported_immersive-ar.https.html": [
+ "2cd36a17f62243eedd9eed8efcac416f5f029d8d",
+ "testharness"
+ ],
+ "webxr/ar-module/xrDevice_requestSession_immersive-ar.https.html": [
+ "c3fdeb34db0f65b9c0af3b79aa8adf22f799d6c6",
+ "testharness"
+ ],
+ "webxr/ar-module/xrSession_environmentBlendMode.https.html": [
+ "da2ddc28d8dc8c4903b985dbe08f9ad034ef0f1b",
+ "testharness"
+ ],
"webxr/events_input_source_recreation.https.html": [
"ecb4b022bf09410cae44b4f5a3c71bc5c054181e",
"testharness"
@@ -734345,7 +734630,7 @@
"support"
],
"webxr/resources/webxr_test_constants.js": [
- "3d9bfa2082baa90670131774920805a7f16cd5a2",
+ "553a8127fcf80fd3999add61439fca4a58c5d065",
"support"
],
"webxr/resources/webxr_test_constants_fake_world.js": [
@@ -736705,7 +736990,7 @@
"support"
],
"wpt.py": [
- "c65e1ed2c6cde4d3abd9e9a771f02542398fec49",
+ "affba7343eadfd1b6144febf6c0083ddd970db71",
"support"
],
"x-frame-options/META.yml": [
diff --git a/tests/wpt/metadata/cors/preflight-cache.htm.ini b/tests/wpt/metadata/cors/preflight-cache.htm.ini
index 951b025fc02..39e05f5c64a 100644
--- a/tests/wpt/metadata/cors/preflight-cache.htm.ini
+++ b/tests/wpt/metadata/cors/preflight-cache.htm.ini
@@ -6,3 +6,6 @@
[preflight first request, second from cache, wait, third should preflight again]
expected: FAIL
+ [age = blank, should be cached]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/CSS2/text/bidi-span-003.html.ini b/tests/wpt/metadata/css/CSS2/text/bidi-span-003.html.ini
new file mode 100644
index 00000000000..a6a9aa51c11
--- /dev/null
+++ b/tests/wpt/metadata/css/CSS2/text/bidi-span-003.html.ini
@@ -0,0 +1,2 @@
+[bidi-span-003.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-flexbox/table-as-item-wide-content.html.ini b/tests/wpt/metadata/css/css-flexbox/table-as-item-wide-content.html.ini
deleted file mode 100644
index f6def90a63b..00000000000
--- a/tests/wpt/metadata/css/css-flexbox/table-as-item-wide-content.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[table-as-item-wide-content.html]
- expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/white-space/white-space-zero-fontsize-002.html.ini b/tests/wpt/metadata/css/css-text/white-space/white-space-zero-fontsize-002.html.ini
new file mode 100644
index 00000000000..132bd51076f
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/white-space/white-space-zero-fontsize-002.html.ini
@@ -0,0 +1,2 @@
+[white-space-zero-fontsize-002.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/cssom-view/CaretPosition-001.html.ini b/tests/wpt/metadata/css/cssom-view/CaretPosition-001.html.ini
deleted file mode 100644
index 4c79907309b..00000000000
--- a/tests/wpt/metadata/css/cssom-view/CaretPosition-001.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[CaretPosition-001.html]
- [Element at (400, 100)]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/fetch/content-type/response.window.js.ini b/tests/wpt/metadata/fetch/content-type/response.window.js.ini
index 0ba07b8e86a..7807ef6db4c 100644
--- a/tests/wpt/metadata/fetch/content-type/response.window.js.ini
+++ b/tests/wpt/metadata/fetch/content-type/response.window.js.ini
@@ -312,21 +312,24 @@
[fetch(): separate response Content-Type: text/plain ]
expected: NOTRUN
- [<iframe>: combined response Content-Type: text/html;" \\" text/plain]
+ [<iframe>: separate response Content-Type: text/plain */*]
expected: FAIL
- [<iframe>: separate response Content-Type: text/plain */*]
+ [<iframe>: separate response Content-Type: text/html;" \\" text/plain]
expected: FAIL
- [<iframe>: combined response Content-Type: text/html */*;charset=gbk]
+ [<iframe>: combined response Content-Type: text/html;" text/plain]
expected: FAIL
- [<iframe>: separate response Content-Type: text/html;x=" text/plain]
+ [<iframe>: combined response Content-Type: */* text/html]
expected: FAIL
- [<iframe>: separate response Content-Type: text/html;" \\" text/plain]
+ [<iframe>: combined response Content-Type: text/html */*]
+ expected: FAIL
+
+ [<iframe>: separate response Content-Type: text/html */*;charset=gbk]
expected: FAIL
- [<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
+ [<iframe>: combined response Content-Type: text/html;x=" text/plain]
expected: FAIL
diff --git a/tests/wpt/metadata/fetch/content-type/script.window.js.ini b/tests/wpt/metadata/fetch/content-type/script.window.js.ini
index e67f0406fc3..d2df9b78483 100644
--- a/tests/wpt/metadata/fetch/content-type/script.window.js.ini
+++ b/tests/wpt/metadata/fetch/content-type/script.window.js.ini
@@ -53,3 +53,6 @@
[combined text/javascript ]
expected: FAIL
+ [separate text/javascript x/x]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini
index ecd755157c7..f036bb9d96d 100644
--- a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini
+++ b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini
@@ -14,6 +14,6 @@
[X-Content-Type-Options%3A%20%40%23%24%23%25%25%26%5E%26%5E*()()11!%2Cnosniff]
expected: FAIL
- [X-Content-Type-Options%3A%20%2Cnosniff]
+ [X-Content-Type-Options%3A%20%22nosniFF%22]
expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini
deleted file mode 100644
index 385376c7321..00000000000
--- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[traverse_the_history_4.html]
- [Multiple history traversals, last would be aborted]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/browsers/history/the-location-interface/location_reload_javascript_url.html.ini b/tests/wpt/metadata/html/browsers/history/the-location-interface/location_reload_javascript_url.html.ini
new file mode 100644
index 00000000000..26688502d5d
--- /dev/null
+++ b/tests/wpt/metadata/html/browsers/history/the-location-interface/location_reload_javascript_url.html.ini
@@ -0,0 +1,4 @@
+[location_reload_javascript_url.html]
+ [location_reload_javascript_url]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/skip-document-with-fragment.html.ini b/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/skip-document-with-fragment.html.ini
index c12c0f8ae48..6852d7663de 100644
--- a/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/skip-document-with-fragment.html.ini
+++ b/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/skip-document-with-fragment.html.ini
@@ -1,4 +1,8 @@
[skip-document-with-fragment.html]
+ expected: TIMEOUT
[Autofocus elements in iframed documents with URL fragments should be skipped.]
expected: FAIL
+ [Autofocus elements in top-level browsing context's documents with URI fragments should be skipped.]
+ expected: TIMEOUT
+
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini
index 5f60c78e73c..b3bd9f4c289 100644
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini
+++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini
@@ -1,6 +1,6 @@
[iframe_sandbox_popups_escaping-3.html]
type: testharness
- expected: TIMEOUT
+ expected: CRASH
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini
index dc856a3d5a3..e440b1e38c6 100644
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini
+++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini
@@ -1,5 +1,6 @@
[iframe_sandbox_popups_nonescaping-3.html]
type: testharness
+ expected: TIMEOUT
[Check that popups from a sandboxed iframe do not escape the sandbox]
- expected: FAIL
+ expected: NOTRUN
diff --git a/tests/wpt/metadata/performance-timeline/webtiming-resolution.any.js.ini b/tests/wpt/metadata/performance-timeline/webtiming-resolution.any.js.ini
index 97f8a0cc51f..6d08beab111 100644
--- a/tests/wpt/metadata/performance-timeline/webtiming-resolution.any.js.ini
+++ b/tests/wpt/metadata/performance-timeline/webtiming-resolution.any.js.ini
@@ -10,6 +10,3 @@
[Verifies the resolution of entry.startTime is at least 20 microseconds.]
expected: TIMEOUT
- [Verifies the resolution of performance.now() is at least 5 microseconds.]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/webmessaging/with-ports/017.html.ini b/tests/wpt/metadata/webmessaging/with-ports/017.html.ini
new file mode 100644
index 00000000000..064cf47545b
--- /dev/null
+++ b/tests/wpt/metadata/webmessaging/with-ports/017.html.ini
@@ -0,0 +1,5 @@
+[017.html]
+ expected: TIMEOUT
+ [origin of the script that invoked the method, about:blank]
+ expected: TIMEOUT
+
diff --git a/tests/wpt/metadata/webxr/ar-module/xrDevice_isSessionSupported_immersive-ar.https.html.ini b/tests/wpt/metadata/webxr/ar-module/xrDevice_isSessionSupported_immersive-ar.https.html.ini
new file mode 100644
index 00000000000..b4c7bff7568
--- /dev/null
+++ b/tests/wpt/metadata/webxr/ar-module/xrDevice_isSessionSupported_immersive-ar.https.html.ini
@@ -0,0 +1,7 @@
+[xrDevice_isSessionSupported_immersive-ar.https.html]
+ [isSessionSupported resolves to true for immersive-ar on a supported device]
+ expected: FAIL
+
+ [isSessionSupported resolves to false for immersive-ar on an unsupported device]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webxr/ar-module/xrDevice_requestSession_immersive-ar.https.html.ini b/tests/wpt/metadata/webxr/ar-module/xrDevice_requestSession_immersive-ar.https.html.ini
new file mode 100644
index 00000000000..956d3ed136a
--- /dev/null
+++ b/tests/wpt/metadata/webxr/ar-module/xrDevice_requestSession_immersive-ar.https.html.ini
@@ -0,0 +1,4 @@
+[xrDevice_requestSession_immersive-ar.https.html]
+ [Tests requestSession rejects immersive-ar mode when unsupported]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webxr/ar-module/xrSession_environmentBlendMode.https.html.ini b/tests/wpt/metadata/webxr/ar-module/xrSession_environmentBlendMode.https.html.ini
new file mode 100644
index 00000000000..76f40939f59
--- /dev/null
+++ b/tests/wpt/metadata/webxr/ar-module/xrSession_environmentBlendMode.https.html.ini
@@ -0,0 +1,4 @@
+[xrSession_environmentBlendMode.https.html]
+ [Tests environmentBlendMode for an AR device]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini b/tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini
index f584fce5df1..268949ced5c 100644
--- a/tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini
+++ b/tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini
@@ -1,5 +1,4 @@
[005.html]
- expected: ERROR
[dedicated worker in shared worker in dedicated worker]
expected: FAIL
diff --git a/tests/wpt/web-platform-tests/WebIDL/ecmascript-binding/put-forwards.html b/tests/wpt/web-platform-tests/WebIDL/ecmascript-binding/put-forwards.html
index b004bd008d8..d7cc389b1c8 100644
--- a/tests/wpt/web-platform-tests/WebIDL/ecmascript-binding/put-forwards.html
+++ b/tests/wpt/web-platform-tests/WebIDL/ecmascript-binding/put-forwards.html
@@ -114,4 +114,18 @@ test(() => {
element.style = "color: green";
});
}, "TypeError when getter of [PutForwards] attribute returns non-object");
+
+test(() => {
+ var element = document.createElement("div");
+
+ var element_style = element.style;
+ Object.defineProperty(element.style, "cssText", {
+ value: null,
+ writable: false,
+ });
+
+ element.style = "color: green";
+ assert_equals(element.style, element_style);
+ assert_equals(element.style.cssText, null);
+}, "Does not throw when setter of [PutForwards] attribute returns false");
</script>
diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-lifetime.tentative.https.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-lifetime.tentative.https.html
deleted file mode 100644
index f0b03ba0a8c..00000000000
--- a/tests/wpt/web-platform-tests/client-hints/accept-ch-lifetime.tentative.https.html
+++ /dev/null
@@ -1,106 +0,0 @@
-<!doctype html>
-<meta name="timeout" content="long">
-<title>Accept-CH-Lifetime test</title>
-<body>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/common/get-host-info.sub.js"></script>
-<script src="resources/accept-ch-lifetime-test.js"></script>
-
-<script>
-setup({ explicit_done: true });
-
-// Cross-origin header tests
-run_test({ name: "cross origin iframe not setting other origins",
- initial_url: echo,
- accept_url: host_info.HTTPS_REMOTE_ORIGIN + accept,
- expect_url: do_not_expect,
- type: "iframe" });
-
-run_test({ name: "cross origin iframe not setting own origin",
- initial_url: host_info.HTTPS_REMOTE_ORIGIN + echo,
- accept_url: host_info.HTTPS_REMOTE_ORIGIN + accept,
- expect_url: host_info.HTTPS_REMOTE_ORIGIN + do_not_expect,
- type: "iframe" });
-
-run_test({ name: "cross origin navigation",
- initial_url: echo,
- accept_url: host_info.HTTPS_REMOTE_ORIGIN + accept,
- expect_url: host_info.HTTPS_REMOTE_ORIGIN + expect,
- type: "navigation" });
-
-run_test({ name: "cross origin subresource",
- initial_url: host_info.HTTPS_REMOTE_ORIGIN + echo,
- accept_url: host_info.HTTPS_REMOTE_ORIGIN + accept,
- expect_url: host_info.HTTPS_REMOTE_ORIGIN + do_not_expect,
- type: "subresource" });
-
-// Same origin header tests
-run_test({ name: "same origin iframe",
- initial_url: echo,
- accept_url: accept,
- expect_url: expect,
- type: "iframe" });
-
-run_test({ name: "same origin navigation",
- initial_url: echo,
- accept_url: accept,
- expect_url: expect,
- type: "navigation" });
-
-run_test({ name: "same origin subresource",
- initial_url: echo,
- accept_url: accept,
- expect_url: do_not_expect,
- type: "subresource" });
-
-// Cross-origin http-equiv tests
-run_test({ name: "http-equiv cross origin iframe not setting other origins",
- initial_url: echo,
- accept_url: host_info.HTTPS_REMOTE_ORIGIN + httpequiv_accept,
- expect_url: do_not_expect,
- type: "iframe" });
-
-run_test({ name: "http-equiv cross origin iframe not setting own origin",
- initial_url: host_info.HTTPS_REMOTE_ORIGIN + echo,
- accept_url: host_info.HTTPS_REMOTE_ORIGIN + httpequiv_accept,
- expect_url: host_info.HTTPS_REMOTE_ORIGIN + do_not_expect,
- type: "iframe" });
-
-run_test({ name: "http-equiv cross origin navigation",
- initial_url: echo,
- accept_url: host_info.HTTPS_REMOTE_ORIGIN + httpequiv_accept,
- expect_url: host_info.HTTPS_REMOTE_ORIGIN + expect,
- type: "navigation" });
-
-run_test({ name: "http-equiv cross origin subresource",
- initial_url: host_info.HTTPS_REMOTE_ORIGIN + echo,
- accept_url: host_info.HTTPS_REMOTE_ORIGIN + httpequiv_accept,
- expect_url: host_info.HTTPS_REMOTE_ORIGIN + do_not_expect,
- type: "subresource" });
-
-// same-origin http-equiv tests
-run_test({ name: "http-equiv same origin iframe",
- initial_url: echo,
- accept_url: httpequiv_accept,
- expect_url: expect,
- type: "iframe" });
-
-run_test({ name: "http-equiv same origin navigation",
- initial_url: echo,
- accept_url: httpequiv_accept,
- expect_url: expect,
- type: "navigation" });
-
-run_test({ name: "http-equiv same origin subresource",
- initial_url: echo,
- accept_url: httpequiv_accept,
- expect_url: do_not_expect,
- type: "subresource" });
-
-done();
-
-</script>
-</body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/cross-origin-iframe-not-setting-other-origins.https.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/cross-origin-iframe-not-setting-other-origins.https.html
new file mode 100644
index 00000000000..5316c2874cf
--- /dev/null
+++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/cross-origin-iframe-not-setting-other-origins.https.html
@@ -0,0 +1,19 @@
+<!doctype html>
+<meta name="timeout" content="long">
+<title>Accept-CH Persistence test</title>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="resources/accept-ch-test.js"></script>
+
+<script>
+run_test({ name: "cross origin iframe not setting other origins",
+ initial_url: echo,
+ accept_url: host_info.HTTPS_REMOTE_ORIGIN + accept,
+ expect_url: do_not_expect,
+ type: "iframe" });
+</script>
+</body>
+</html>
+
diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/cross-origin-iframe-not-setting-own-origin.https.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/cross-origin-iframe-not-setting-own-origin.https.html
new file mode 100644
index 00000000000..f83aa6173e2
--- /dev/null
+++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/cross-origin-iframe-not-setting-own-origin.https.html
@@ -0,0 +1,19 @@
+<!doctype html>
+<meta name="timeout" content="long">
+<title>Accept-CH Persistence test</title>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="resources/accept-ch-test.js"></script>
+
+<script>
+run_test({ name: "cross origin iframe not setting own origin",
+ initial_url: host_info.HTTPS_REMOTE_ORIGIN + echo,
+ accept_url: host_info.HTTPS_REMOTE_ORIGIN + accept,
+ expect_url: host_info.HTTPS_REMOTE_ORIGIN + do_not_expect,
+ type: "iframe" });
+</script>
+</body>
+</html>
+
diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/cross-origin-navigation.https.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/cross-origin-navigation.https.html
new file mode 100644
index 00000000000..e05c8e3ef5b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/cross-origin-navigation.https.html
@@ -0,0 +1,19 @@
+<!doctype html>
+<meta name="timeout" content="long">
+<title>Accept-CH Persistence test</title>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="resources/accept-ch-test.js"></script>
+
+<script>
+run_test({ name: "cross origin navigation",
+ initial_url: echo,
+ accept_url: host_info.HTTPS_REMOTE_ORIGIN + accept,
+ expect_url: host_info.HTTPS_REMOTE_ORIGIN + expect,
+ type: "navigation" });
+</script>
+</body>
+</html>
+
diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/cross-origin-subresource.https.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/cross-origin-subresource.https.html
new file mode 100644
index 00000000000..249ccb4a60d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/cross-origin-subresource.https.html
@@ -0,0 +1,19 @@
+<!doctype html>
+<meta name="timeout" content="long">
+<title>Accept-CH Persistence test</title>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="resources/accept-ch-test.js"></script>
+
+<script>
+run_test({ name: "cross origin subresource",
+ initial_url: host_info.HTTPS_REMOTE_ORIGIN + echo,
+ accept_url: host_info.HTTPS_REMOTE_ORIGIN + accept,
+ expect_url: host_info.HTTPS_REMOTE_ORIGIN + do_not_expect,
+ type: "subresource" });
+</script>
+</body>
+</html>
+
diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/http-equiv-cross-origin-iframe-not-setting-other-origins.https.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/http-equiv-cross-origin-iframe-not-setting-other-origins.https.html
new file mode 100644
index 00000000000..226b3116fc1
--- /dev/null
+++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/http-equiv-cross-origin-iframe-not-setting-other-origins.https.html
@@ -0,0 +1,19 @@
+<!doctype html>
+<meta name="timeout" content="long">
+<title>Accept-CH Persistence test</title>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="resources/accept-ch-test.js"></script>
+
+<script>
+run_test({ name: "http-equiv cross origin iframe not setting other origins",
+ initial_url: echo,
+ accept_url: host_info.HTTPS_REMOTE_ORIGIN + httpequiv_accept,
+ expect_url: do_not_expect,
+ type: "iframe" });
+</script>
+</body>
+</html>
+
diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/http-equiv-cross-origin-iframe-not-setting-own-origin.https.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/http-equiv-cross-origin-iframe-not-setting-own-origin.https.html
new file mode 100644
index 00000000000..705b65a7bf4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/http-equiv-cross-origin-iframe-not-setting-own-origin.https.html
@@ -0,0 +1,19 @@
+<!doctype html>
+<meta name="timeout" content="long">
+<title>Accept-CH Persistence test</title>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="resources/accept-ch-test.js"></script>
+
+<script>
+run_test({ name: "http-equiv cross origin iframe not setting own origin",
+ initial_url: host_info.HTTPS_REMOTE_ORIGIN + echo,
+ accept_url: host_info.HTTPS_REMOTE_ORIGIN + httpequiv_accept,
+ expect_url: host_info.HTTPS_REMOTE_ORIGIN + do_not_expect,
+ type: "iframe" });
+</script>
+</body>
+</html>
+
diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/http-equiv-cross-origin-navigation.https.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/http-equiv-cross-origin-navigation.https.html
new file mode 100644
index 00000000000..ffebeb919f0
--- /dev/null
+++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/http-equiv-cross-origin-navigation.https.html
@@ -0,0 +1,19 @@
+<!doctype html>
+<meta name="timeout" content="long">
+<title>Accept-CH Persistence test</title>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="resources/accept-ch-test.js"></script>
+
+<script>
+run_test({ name: "http-equiv cross origin navigation",
+ initial_url: echo,
+ accept_url: host_info.HTTPS_REMOTE_ORIGIN + httpequiv_accept,
+ expect_url: host_info.HTTPS_REMOTE_ORIGIN + expect,
+ type: "navigation" });
+</script>
+</body>
+</html>
+
diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/http-equiv-cross-origin-subresource.https.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/http-equiv-cross-origin-subresource.https.html
new file mode 100644
index 00000000000..7bb5d1520c7
--- /dev/null
+++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/http-equiv-cross-origin-subresource.https.html
@@ -0,0 +1,19 @@
+<!doctype html>
+<meta name="timeout" content="long">
+<title>Accept-CH Persistence test</title>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="resources/accept-ch-test.js"></script>
+
+<script>
+run_test({ name: "http-equiv cross origin subresource",
+ initial_url: host_info.HTTPS_REMOTE_ORIGIN + echo,
+ accept_url: host_info.HTTPS_REMOTE_ORIGIN + httpequiv_accept,
+ expect_url: host_info.HTTPS_REMOTE_ORIGIN + do_not_expect,
+ type: "subresource" });
+</script>
+</body>
+</html>
+
diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/http-equiv-same-origin-iframe.https.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/http-equiv-same-origin-iframe.https.html
new file mode 100644
index 00000000000..f07adaa901c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/http-equiv-same-origin-iframe.https.html
@@ -0,0 +1,19 @@
+<!doctype html>
+<!-- <meta name="timeout" content="long"> -->
+<title>Accept-CH Persistence test</title>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="resources/accept-ch-test.js"></script>
+
+<script>
+run_test({ name: "http-equiv same origin iframe",
+ initial_url: echo,
+ accept_url: httpequiv_accept,
+ expect_url: expect,
+ type: "iframe" });
+</script>
+</body>
+</html>
+
diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/http-equiv-same-origin-navigation.https.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/http-equiv-same-origin-navigation.https.html
new file mode 100644
index 00000000000..91b8cd639f2
--- /dev/null
+++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/http-equiv-same-origin-navigation.https.html
@@ -0,0 +1,19 @@
+<!doctype html>
+<meta name="timeout" content="long">
+<title>Accept-CH Persistence test</title>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="resources/accept-ch-test.js"></script>
+
+<script>
+run_test({ name: "http-equiv same origin navigation",
+ initial_url: echo,
+ accept_url: httpequiv_accept,
+ expect_url: expect,
+ type: "navigation" });
+</script>
+</body>
+</html>
+
diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/http-equiv-same-origin-subresource.https.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/http-equiv-same-origin-subresource.https.html
new file mode 100644
index 00000000000..793bf5e0796
--- /dev/null
+++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/http-equiv-same-origin-subresource.https.html
@@ -0,0 +1,19 @@
+<!doctype html>
+<meta name="timeout" content="long">
+<title>Accept-CH Persistence test</title>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="resources/accept-ch-test.js"></script>
+
+<script>
+run_test({ name: "http-equiv same origin subresource",
+ initial_url: echo,
+ accept_url: httpequiv_accept,
+ expect_url: do_not_expect,
+ type: "subresource" });
+</script>
+</body>
+</html>
+
diff --git a/tests/wpt/web-platform-tests/client-hints/resources/accept-ch-lifetime-test.js b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/accept-ch-test.js
index 05aaec1aef8..ed635513fd7 100644
--- a/tests/wpt/web-platform-tests/client-hints/resources/accept-ch-lifetime-test.js
+++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/accept-ch-test.js
@@ -1,8 +1,8 @@
-const echo = "/client-hints/echo_client_hints_received.py";
-const accept = "/client-hints/resources/accept_ch_lifetime.html";
-const httpequiv_accept = "/client-hints/resources/http_equiv_accept_ch_lifetime.html";
-const expect = "/client-hints/resources/expect_client_hints_headers.html"
-const do_not_expect = "/client-hints/resources/do_not_expect_client_hints_headers.html"
+const echo = "/client-hints/accept-ch-stickiness/resources/echo-client-hints-received.py";
+const accept = "/client-hints/accept-ch-stickiness/resources/accept-ch.html";
+const httpequiv_accept = "/client-hints/accept-ch-stickiness/resources/http-equiv-accept-ch.html";
+const expect = "/client-hints/accept-ch-stickiness/resources/expect-client-hints-headers.html"
+const do_not_expect = "/client-hints/accept-ch-stickiness/resources/do-not-expect-client-hints-headers.html"
const host_info = get_host_info();
const run_test = test => {
@@ -53,7 +53,7 @@ const run_test = test => {
assert_unreached("unknown test type");
}
});
- }, test.name + " set Accept-CH-Lifetime");
+ }, test.name + " set Accept-CH");
// Finally, verify that CH are actually sent (or not) on requests
promise_test(t => {
@@ -62,7 +62,7 @@ const run_test = test => {
window.addEventListener('message', t.step_func(function(e) {
win.close();
assert_equals(e.data, "PASS", "message from opened page");
- fetch("/client-hints/resources/clear-site-data.html").then(resolve);
+ fetch("/client-hints/accept-ch-stickiness/resources/clear-site-data.html").then(resolve);
}));
// Open a new window. Verify that the user agent attaches client hints.
win = window.open(test.expect_url);
diff --git a/tests/wpt/web-platform-tests/client-hints/resources/accept_ch_lifetime.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/accept-ch.html
index a77eaab3f0b..694c5b03bc1 100644
--- a/tests/wpt/web-platform-tests/client-hints/resources/accept_ch_lifetime.html
+++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/accept-ch.html
@@ -2,10 +2,11 @@
<body>
<!-- An empty webpage whose response headers include Accept-CH
-and Accept-CH-Lifetime header. Fetching this webpage should cause
+header. Fetching this webpage should cause
user-agent to persist origin preferences for the client hints
-specified in the Accept-CH header for a duration specified in
-the Accept-CH-Lifetime header.-->
+specified in the Accept-CH header until a Clear-Site-Data header
+is sent or user action is take to clear the session or data about
+the origin.-->
<script>
window.top.opener.postMessage('Loaded', '*');
</script>
diff --git a/tests/wpt/web-platform-tests/client-hints/resources/accept_ch_lifetime.html.headers b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/accept-ch.html.headers
index 370f9869226..370f9869226 100644
--- a/tests/wpt/web-platform-tests/client-hints/resources/accept_ch_lifetime.html.headers
+++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/accept-ch.html.headers
diff --git a/tests/wpt/web-platform-tests/client-hints/resources/clear-site-data.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/clear-site-data.html
index e69de29bb2d..e69de29bb2d 100644
--- a/tests/wpt/web-platform-tests/client-hints/resources/clear-site-data.html
+++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/clear-site-data.html
diff --git a/tests/wpt/web-platform-tests/client-hints/resources/clear-site-data.html.headers b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/clear-site-data.html.headers
index a0077c0577f..a0077c0577f 100644
--- a/tests/wpt/web-platform-tests/client-hints/resources/clear-site-data.html.headers
+++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/clear-site-data.html.headers
diff --git a/tests/wpt/web-platform-tests/client-hints/resources/do_not_expect_client_hints_headers.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/do-not-expect-client-hints-headers.html
index b3cf5df4c27..147206b26ae 100644
--- a/tests/wpt/web-platform-tests/client-hints/resources/do_not_expect_client_hints_headers.html
+++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/do-not-expect-client-hints-headers.html
@@ -5,10 +5,10 @@
// This test checks if browser attaches the device-memory client hint in the
// HTTP request headers.
-// echo_client_hints_received.py sets the response headers depending on the set
+// echo-client-hints-received.py sets the response headers depending on the set
// of client hints it receives in the request headers.
-fetch("../echo_client_hints_received.py").then(r => {
+fetch("/client-hints/accept-ch-stickiness/resources/echo-client-hints-received.py").then(r => {
if(r.status == 200 && !r.headers.has("device-memory-received")) {
window.top.opener.postMessage('PASS', '*');
}
diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/echo-client-hints-received.py b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/echo-client-hints-received.py
new file mode 100644
index 00000000000..be712293be3
--- /dev/null
+++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/echo-client-hints-received.py
@@ -0,0 +1,12 @@
+def main(request, response):
+ """
+ Simple handler that sets a response header based on which client hint
+ request headers were received.
+ """
+
+ response.headers.append("Access-Control-Allow-Origin", "*")
+ response.headers.append("Access-Control-Allow-Headers", "*")
+ response.headers.append("Access-Control-Expose-Headers", "*")
+
+ if "device-memory" in request.headers:
+ response.headers.set("device-memory-received", request.headers.get("device-memory"))
diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/expect-client-hints-headers.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/expect-client-hints-headers.html
new file mode 100644
index 00000000000..cda1f81978d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/expect-client-hints-headers.html
@@ -0,0 +1,22 @@
+<html>
+<body>
+<script>
+
+// This test checks if browser attaches the device-memory client hint in the
+// HTTP request headers.
+
+// echo-client-hints-received.py sets the response headers depending on the set
+// of client hints it receives in the request headers.
+
+fetch("/client-hints/accept-ch-stickiness/resources/echo-client-hints-received.py").then(r => {
+ if(r.status == 200 && r.headers.has("device-memory-received")) {
+ window.top.opener.postMessage('PASS', '*');
+ }
+ else {
+ window.top.opener.postMessage('FAIL', '*');
+ }
+});
+
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/client-hints/resources/http_equiv_accept_ch_lifetime.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/http-equiv-accept-ch.html
index ab2ab9e60c8..05e18a44fb9 100644
--- a/tests/wpt/web-platform-tests/client-hints/resources/http_equiv_accept_ch_lifetime.html
+++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/http-equiv-accept-ch.html
@@ -1,6 +1,5 @@
<html>
<meta http-equiv="Accept-CH" content="device-memory">
-<meta http-equiv="Accept-CH-Lifetime" content="5">
<body>
<script>
window.top.opener.postMessage('Loaded', '*');
diff --git a/tests/wpt/web-platform-tests/client-hints/resources/http_equiv_accept_ch_lifetime.html.headers b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/http-equiv-accept-ch.html.headers
index 27140bf36e4..27140bf36e4 100644
--- a/tests/wpt/web-platform-tests/client-hints/resources/http_equiv_accept_ch_lifetime.html.headers
+++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/http-equiv-accept-ch.html.headers
diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/same-origin-iframe.https.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/same-origin-iframe.https.html
new file mode 100644
index 00000000000..25e29017f40
--- /dev/null
+++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/same-origin-iframe.https.html
@@ -0,0 +1,19 @@
+<!doctype html>
+<meta name="timeout" content="long">
+<title>Accept-CH Persistence test</title>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="resources/accept-ch-test.js"></script>
+
+<script>
+run_test({ name: "same origin iframe",
+ initial_url: echo,
+ accept_url: accept,
+ expect_url: expect,
+ type: "iframe" });
+</script>
+</body>
+</html>
+
diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/same-origin-navigation.https.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/same-origin-navigation.https.html
new file mode 100644
index 00000000000..e35cbdcedd0
--- /dev/null
+++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/same-origin-navigation.https.html
@@ -0,0 +1,19 @@
+<!doctype html>
+<meta name="timeout" content="long">
+<title>Accept-CH Persistence test</title>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="resources/accept-ch-test.js"></script>
+
+<script>
+run_test({ name: "same origin navigation",
+ initial_url: echo,
+ accept_url: accept,
+ expect_url: expect,
+ type: "navigation" });
+</script>
+</body>
+</html>
+
diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/same-origin-subresource.https.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/same-origin-subresource.https.html
new file mode 100644
index 00000000000..0b7151a2cca
--- /dev/null
+++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/same-origin-subresource.https.html
@@ -0,0 +1,19 @@
+<!doctype html>
+<meta name="timeout" content="long">
+<title>Accept-CH Persistence test</title>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="resources/accept-ch-test.js"></script>
+
+<script>
+run_test({ name: "same origin subresource",
+ initial_url: echo,
+ accept_url: accept,
+ expect_url: do_not_expect,
+ type: "subresource" });
+</script>
+</body>
+</html>
+
diff --git a/tests/wpt/web-platform-tests/client-hints/resources/square.png b/tests/wpt/web-platform-tests/client-hints/resources/square.png
deleted file mode 100644
index 01c9666a8de..00000000000
--- a/tests/wpt/web-platform-tests/client-hints/resources/square.png
+++ /dev/null
Binary files differ
diff --git a/tests/wpt/web-platform-tests/common/security-features/README.md b/tests/wpt/web-platform-tests/common/security-features/README.md
index c19874653a7..2509d661b4a 100644
--- a/tests/wpt/web-platform-tests/common/security-features/README.md
+++ b/tests/wpt/web-platform-tests/common/security-features/README.md
@@ -39,28 +39,25 @@ project-directory/ (e.g. referrer-policy/)
├── spec.src.json
├── generic/
│ ├── test-case.sub.js - Per-project test helper
-│ └── tools/
-│ └── generator.py - Per-project generator script
+│ ├── sanity-checker.js (Used by debug target only)
+│ └── spec_json.js (Used by debug target only)
└── gen/ - generated tests
```
-Invoking `project-directory/generic/tools/generate.py` will parse the spec JSON and determine which tests to generate (or skip) while using templates.
-
## Generating the tests
-The repository already contains generated tests, so if you're making changes, see the [Removing all generated tests](#removing-all-generated-tests) section below, on how to remove them before you start generating tests which include your changes.
+Note: When the repository already contains generated tests, [remove all generated tests](#removing-all-generated-tests) first.
```bash
-# Chdir into the project directory.
-cd ~/web-platform-tests/project-directory
-
# Generate the test files under gen/ (HTMLs and .headers files).
-./generic/tools/generate.py
+path/to/common/security-features/tools/generate.py --spec path/to/project-directory/
# Add all generated tests to the repo.
-git add gen/ && git commit -m "Add generated tests"
+git add path/to/project-directory/gen/ && git commit -m "Add generated tests"
```
+This will parse the spec JSON (`project-directory/spec.src.json`) and determine which tests to generate (or skip) while using templates.
+
During the generation, the spec is validated by ```common/security-features/tools/spec_validator.py```. This is specially important when you're making changes to `spec.src.json`. Make sure it's a valid JSON (no comments or trailing commas). The validator reports specific errors (missing keys etc.), if any.
### Removing all generated tests
@@ -68,18 +65,14 @@ During the generation, the spec is validated by ```common/security-features/tool
Simply remove all files under `project-directory/gen/`.
```bash
-# Chdir into the project directory.
-cd ~/web-platform-tests/project-directory
-
-# Remove all generated tests.
-rm -r gen/
+rm -r path/to/project-directory/gen/
```
### Options for generating tests
Note: this section is currently obsolete. Only the release template is working.
-The generator script ```./generic/tools/generate.py``` has two targets: ```release``` and ```debug```.
+The generator script has two targets: ```release``` and ```debug```.
* Using **release** for the target will produce tests using a template for optimizing size and performance. The release template is intended for the official web-platform-tests and possibly other test suites. No sanity checking is done in release mode. Use this option whenever you're checking into web-platform-tests.
diff --git a/tests/wpt/web-platform-tests/common/security-features/tools/generate.py b/tests/wpt/web-platform-tests/common/security-features/tools/generate.py
index 6fac19827aa..3c298b5a3e2 100644..100755
--- a/tests/wpt/web-platform-tests/common/security-features/tools/generate.py
+++ b/tests/wpt/web-platform-tests/common/security-features/tools/generate.py
@@ -1,3 +1,5 @@
+#!/usr/bin/env python
+
from __future__ import print_function
import argparse
@@ -64,7 +66,7 @@ def dump_test_parameters(selection):
cls=util.CustomEncoder)
-def get_test_filename(config, selection):
+def get_test_filename(spec_directory, spec_json, selection):
'''Returns the filname for the main test HTML file'''
selection_for_filename = copy.deepcopy(selection)
@@ -72,8 +74,9 @@ def get_test_filename(config, selection):
if selection_for_filename['delivery_value'] is None:
selection_for_filename['delivery_value'] = 'unset'
- return os.path.join(config.spec_directory,
- config.test_file_path_pattern % selection_for_filename)
+ return os.path.join(
+ spec_directory,
+ spec_json['test_file_path_pattern'] % selection_for_filename)
def handle_deliveries(policy_deliveries):
@@ -127,9 +130,9 @@ def handle_deliveries(policy_deliveries):
return {"meta": meta, "headers": headers}
-def generate_selection(spec_json, config, selection, spec,
+def generate_selection(spec_directory, spec_json, selection, spec,
test_html_template_basename):
- test_filename = get_test_filename(config, selection)
+ test_filename = get_test_filename(spec_directory, spec_json, selection)
target_policy_delivery = util.PolicyDelivery(selection['delivery_type'],
selection['delivery_key'],
@@ -175,17 +178,24 @@ def generate_selection(spec_json, config, selection, spec,
"\n", indent)
selection['spec_name'] = spec['name']
- selection[
- 'test_page_title'] = config.test_page_title_template % spec['title']
+ selection['test_page_title'] = spec_json['test_page_title_template'] % spec
selection['spec_description'] = spec['description']
selection['spec_specification_url'] = spec['specification_url']
- selection['helper_js'] = config.helper_js
- selection['sanity_checker_js'] = config.sanity_checker_js
- selection['spec_json_js'] = config.spec_json_js
- test_headers_filename = test_filename + ".headers"
test_directory = os.path.dirname(test_filename)
+ selection['helper_js'] = os.path.relpath(
+ os.path.join(spec_directory, 'generic', 'test-case.sub.js'),
+ test_directory)
+ selection['sanity_checker_js'] = os.path.relpath(
+ os.path.join(spec_directory, 'generic', 'sanity-checker.js'),
+ test_directory)
+ selection['spec_json_js'] = os.path.relpath(
+ os.path.join(spec_directory, 'generic', 'spec_json.js'),
+ test_directory)
+
+ test_headers_filename = test_filename + ".headers"
+
test_html_template = util.get_template(test_html_template_basename)
disclaimer_template = util.get_template('disclaimer.template')
@@ -194,13 +204,13 @@ def generate_selection(spec_json, config, selection, spec,
generated_disclaimer = disclaimer_template \
% {'generating_script_filename': os.path.relpath(sys.argv[0],
util.test_root_directory),
- 'html_template_filename': os.path.relpath(html_template_filename,
- util.test_root_directory)}
+ 'spec_directory': os.path.relpath(spec_directory,
+ util.test_root_directory)}
# Adjust the template for the test invoking JS. Indent it to look nice.
selection['generated_disclaimer'] = generated_disclaimer.rstrip()
- selection[
- 'test_description'] = config.test_description_template % selection
+ selection['test_description'] = spec_json[
+ 'test_description_template'] % selection
selection['test_description'] = \
selection['test_description'].rstrip().replace("\n", "\n" + " " * 33)
@@ -227,12 +237,12 @@ def generate_selection(spec_json, config, selection, spec,
util.write_file(test_filename, test_html_template % selection)
-def generate_test_source_files(config, spec_json, target):
+def generate_test_source_files(spec_directory, spec_json, target):
test_expansion_schema = spec_json['test_expansion_schema']
specification = spec_json['specification']
spec_json_js_template = util.get_template('spec_json.js.template')
- generated_spec_json_filename = os.path.join(config.spec_directory,
+ generated_spec_json_filename = os.path.join(spec_directory, "generic",
"spec_json.js")
util.write_file(
generated_spec_json_filename,
@@ -251,7 +261,8 @@ def generate_test_source_files(config, spec_json, target):
expand_pattern(excluded_pattern, test_expansion_schema)
for excluded_selection in permute_expansion(excluded_expansion,
artifact_order):
- excluded_selection_path = config.selection_pattern % excluded_selection
+ excluded_selection_path = spec_json[
+ 'selection_pattern'] % excluded_selection
exclusion_dict[excluded_selection_path] = True
for spec in specification:
@@ -264,7 +275,7 @@ def generate_test_source_files(config, spec_json, target):
test_expansion_schema)
for selection in permute_expansion(expansion, artifact_order):
selection['delivery_key'] = spec_json['delivery_key']
- selection_path = config.selection_pattern % selection
+ selection_path = spec_json['selection_pattern'] % selection
if not selection_path in exclusion_dict:
if selection_path in output_dict:
if expansion_pattern['expansion'] != 'override':
@@ -280,13 +291,13 @@ def generate_test_source_files(config, spec_json, target):
for selection_path in output_dict:
selection = output_dict[selection_path]
try:
- generate_selection(spec_json, config, selection, spec,
+ generate_selection(spec_directory, spec_json, selection, spec,
html_template)
except util.ShouldSkip:
continue
-def main(config):
+def main():
parser = argparse.ArgumentParser(
description='Test suite generator utility')
parser.add_argument(
@@ -300,16 +311,19 @@ def main(config):
'-s',
'--spec',
type=str,
- default=None,
+ default=os.getcwd(),
help='Specify a file used for describing and generating the tests')
# TODO(kristijanburnik): Add option for the spec_json file.
args = parser.parse_args()
- if args.spec:
- config.spec_directory = args.spec
+ spec_directory = os.path.abspath(args.spec)
- spec_filename = os.path.join(config.spec_directory, "spec.src.json")
+ spec_filename = os.path.join(spec_directory, "spec.src.json")
spec_json = util.load_spec_json(spec_filename)
spec_validator.assert_valid_spec_json(spec_json)
- generate_test_source_files(config, spec_json, args.target)
+ generate_test_source_files(spec_directory, spec_json, args.target)
+
+
+if __name__ == '__main__':
+ main()
diff --git a/tests/wpt/web-platform-tests/common/security-features/tools/spec_validator.py b/tests/wpt/web-platform-tests/common/security-features/tools/spec_validator.py
index 06a5acce23a..d845b086a3e 100755
--- a/tests/wpt/web-platform-tests/common/security-features/tools/spec_validator.py
+++ b/tests/wpt/web-platform-tests/common/security-features/tools/spec_validator.py
@@ -87,6 +87,8 @@ def validate(spec_json, details):
details['object'] = spec_json
assert_contains_only_fields(spec_json, [
+ "selection_pattern", "test_file_path_pattern",
+ "test_description_template", "test_page_title_template",
"specification", "delivery_key", "subresource_schema",
"source_context_schema", "source_context_list_schema",
"test_expansion_schema", "excluded_tests"
diff --git a/tests/wpt/web-platform-tests/common/security-features/tools/template/disclaimer.template b/tests/wpt/web-platform-tests/common/security-features/tools/template/disclaimer.template
index 66c43ed6f21..ba9458cb312 100644
--- a/tests/wpt/web-platform-tests/common/security-features/tools/template/disclaimer.template
+++ b/tests/wpt/web-platform-tests/common/security-features/tools/template/disclaimer.template
@@ -1 +1 @@
-<!-- DO NOT EDIT! Generated by %(generating_script_filename)s using %(html_template_filename)s. -->
+<!-- DO NOT EDIT! Generated by `%(generating_script_filename)s --spec %(spec_directory)s/` -->
diff --git a/tests/wpt/web-platform-tests/cors/preflight-cache.htm b/tests/wpt/web-platform-tests/cors/preflight-cache.htm
index 0b6138bdffa..b3de663ebc1 100644
--- a/tests/wpt/web-platform-tests/cors/preflight-cache.htm
+++ b/tests/wpt/web-platform-tests/cors/preflight-cache.htm
@@ -64,6 +64,15 @@ test(function() {
var time = new Date().getTime()
var client = new XMLHttpRequest()
+ var id = did_preflight(true, client, {extra:'max_age='})
+ did_preflight(false, client, {extra:'max_age=', token: id})
+},
+'age = blank, should be cached')
+
+test(function() {
+ var time = new Date().getTime()
+ var client = new XMLHttpRequest()
+
var id = did_preflight(true, client, {extra:'max_age=0'})
did_preflight(true, client, {extra:'max_age=0', token: id})
},
diff --git a/tests/wpt/web-platform-tests/css/CSS2/text/bidi-span-003-ref.html b/tests/wpt/web-platform-tests/css/CSS2/text/bidi-span-003-ref.html
new file mode 100644
index 00000000000..4cebcb90bba
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/CSS2/text/bidi-span-003-ref.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<style>
+.container {
+ width: 300px;
+ background: pink;
+}
+div {
+ margin-bottom: 10px;
+ text-align: right;
+}
+.purple {
+ border: purple solid 5px;
+}
+.orange {
+ background: orange;
+}
+</style>
+<body>
+ <div class="container">
+ <div>
+ <span class="purple">inspect</span><span class="orange">pause</span>
+ </div>
+ <div>
+ <span class="purple">inspect</span> <span class="orange">pause</span>
+ </div
+ <div>
+ <span class="purple">inspect<span class="orange">pause</span></span>
+ </div>
+ </div>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/CSS2/text/bidi-span-003.html b/tests/wpt/web-platform-tests/css/CSS2/text/bidi-span-003.html
new file mode 100644
index 00000000000..92a90d529c5
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/CSS2/text/bidi-span-003.html
@@ -0,0 +1,33 @@
+<!DOCTYPE html>
+<title>CSS Test: Bidi reordering with inline boxes</title>
+<link rel="match" href="bidi-span-003-ref.html">
+<link rel="help" href="https://drafts.csswg.org/css2/visuren.html#direction">
+<link rel="author" title="Koji Ishii" href="mailto:kojii@chromium.org">
+<style>
+.container {
+ width: 300px;
+ background: pink;
+}
+div {
+ margin-bottom: 10px;
+}
+.purple {
+ border: purple solid 5px;
+}
+.orange {
+ background: orange;
+}
+</style>
+<body>
+ <div class="container">
+ <div dir=rtl>
+ <span class="purple">inspect</span><span class="orange">pause</span>
+ </div>
+ <div dir=rtl>
+ <span class="purple">inspect</span> <span class="orange">pause</span>
+ </div>
+ <div dir=rtl>
+ <span class="purple">inspect<span class="orange">pause</span></span>
+ </div>
+ </div>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/table-as-item-fixed-min-width.html b/tests/wpt/web-platform-tests/css/css-flexbox/table-as-item-fixed-min-width.html
new file mode 100644
index 00000000000..3a676babde0
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-flexbox/table-as-item-fixed-min-width.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<title>CSS Flexbox Test: Flex item as table, specified width and min-width less than minimum intrinsic width</title>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="author" title="David Grogan" href="mailto:dgrogan@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-flexbox-1/#layout-algorithm" title="9. Flex Layout Algorithm">
+<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="display:flex; width:100px; background:red;">
+ <div style="display:table; min-width: 5px; width: 10px; max-width:10px; height:100px; background:green;">
+ <div style="width:100px; height:10px; background:green;"></div>
+ </div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/table-as-item-wide-content.html b/tests/wpt/web-platform-tests/css/css-flexbox/table-as-item-wide-content.html
index 475adf548fd..45ad49ec2d6 100644
--- a/tests/wpt/web-platform-tests/css/css-flexbox/table-as-item-wide-content.html
+++ b/tests/wpt/web-platform-tests/css/css-flexbox/table-as-item-wide-content.html
@@ -1,12 +1,24 @@
<!DOCTYPE html>
<title>CSS Flexbox Test: Flex item as table with wide content</title>
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
-<link rel="help" href="https://www.w3.org/TR/css-flexbox-1/#layout-algorithm" title="9. Flex Layout Algorithm">
-<meta name="assert" content="A flex item as a table uses the sizing algorithm of the flexbox">
-<link rel="match" href="../reference/ref-filled-green-100px-square-only.html">
-<p>Test passes if there is a filled green square.</p>
-<div style="display:flex; width:100px;">
+<link rel="author" title="David Grogan" href="mailto:dgrogan@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-flexbox/#algo-main-item" title="Sentence beginning with 'The hypothetical main size is...'">
+<meta name="assert" content="A flex item respects the _used_ min size of an item, which tables define specially.">
+<link rel="bookmark" href="https://github.com/w3c/csswg-drafts/issues/2442" />
+<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
+<style>
+#reference-overlapped-red {
+ position: absolute;
+ background-color: red;
+ width: 100px;
+ height: 100px;
+ z-index: -1;
+}
+</style>
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div id=reference-overlapped-red></div>
+<div style="display:flex; width:50px;">
<div style="min-width:0; flex:1 1; display:table; background:green;">
- <div style="width:500px; height:100px;"></div>
+ <div style="width:100px; height:100px;"></div>
</div>
</div>
diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-content-distribution-vertical-lr.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-content-distribution-vertical-lr.html
index 8217f4dd2c3..cecab3e2136 100644
--- a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-content-distribution-vertical-lr.html
+++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-content-distribution-vertical-lr.html
@@ -6,6 +6,7 @@
<meta name="flags" content="ahem">
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<link rel="stylesheet" href="/css/support/grid.css">
+<link rel="stylesheet" href="/css/support/alignment.css">
<style>
@@ -21,6 +22,11 @@
grid-auto-rows: auto;
}
+.width300height400 {
+ width: 300px;
+ height: 400px;
+}
+
.thirdRowFirstColumn {
background-color: green;
grid-column: 1;
@@ -145,13 +151,13 @@
<div style="position: relative">
<p>direction: LTR | align-content: 'stretch'</p>
- <div class="grid stretchedGrid alignContentStretch verticalLR" data-expected-width="400" data-expected-height="300">
- <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="133" data-expected-height="20"></div>
- <div class="firstRowSecondColumn" data-offset-x="0" data-offset-y="20" data-expected-width="133" data-expected-height="20"></div>
- <div class="secondRowFirstColumn" data-offset-x="133" data-offset-y="0" data-expected-width="133" data-expected-height="20"></div>
- <div class="secondRowSecondColumn" data-offset-x="133" data-offset-y="20" data-expected-width="133" data-expected-height="20"></div>
- <div class="thirdRowFirstColumn" data-offset-x="267" data-offset-y="0" data-expected-width="133" data-expected-height="20"></div>
- <div class="thirdRowSecondColumn" data-offset-x="267" data-offset-y="20" data-expected-width="133" data-expected-height="20"></div>
+ <div class="grid stretchedGrid width300height400 alignContentStretch verticalLR" data-expected-width="300" data-expected-height="400">
+ <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="100" data-expected-height="20"></div>
+ <div class="firstRowSecondColumn" data-offset-x="0" data-offset-y="20" data-expected-width="100" data-expected-height="20"></div>
+ <div class="secondRowFirstColumn" data-offset-x="100" data-offset-y="0" data-expected-width="100" data-expected-height="20"></div>
+ <div class="secondRowSecondColumn" data-offset-x="100" data-offset-y="20" data-expected-width="100" data-expected-height="20"></div>
+ <div class="thirdRowFirstColumn" data-offset-x="200" data-offset-y="0" data-expected-width="100" data-expected-height="20"></div>
+ <div class="thirdRowSecondColumn" data-offset-x="200" data-offset-y="20" data-expected-width="100" data-expected-height="20"></div>
</div>
</div>
@@ -290,13 +296,13 @@
<div style="position: relative">
<p>direction: RTL | align-content: 'stretch'</p>
- <div class="grid stretchedGrid alignContentStretch verticalLR directionRTL" data-expected-width="400" data-expected-height="300">
- <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="280" data-expected-width="133" data-expected-height="20"></div>
- <div class="firstRowSecondColumn" data-offset-x="0" data-offset-y="260" data-expected-width="133" data-expected-height="20"></div>
- <div class="secondRowFirstColumn" data-offset-x="133" data-offset-y="280" data-expected-width="133" data-expected-height="20"></div>
- <div class="secondRowSecondColumn" data-offset-x="133" data-offset-y="260" data-expected-width="133" data-expected-height="20"></div>
- <div class="thirdRowFirstColumn" data-offset-x="267" data-offset-y="280" data-expected-width="133" data-expected-height="20"></div>
- <div class="thirdRowSecondColumn" data-offset-x="267" data-offset-y="260" data-expected-width="133" data-expected-height="20"></div>
+ <div class="grid stretchedGrid width300height400 alignContentStretch verticalLR directionRTL" data-expected-width="300" data-expected-height="400">
+ <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="380" data-expected-width="100" data-expected-height="20"></div>
+ <div class="firstRowSecondColumn" data-offset-x="0" data-offset-y="360" data-expected-width="100" data-expected-height="20"></div>
+ <div class="secondRowFirstColumn" data-offset-x="100" data-offset-y="380" data-expected-width="100" data-expected-height="20"></div>
+ <div class="secondRowSecondColumn" data-offset-x="100" data-offset-y="360" data-expected-width="100" data-expected-height="20"></div>
+ <div class="thirdRowFirstColumn" data-offset-x="200" data-offset-y="380" data-expected-width="100" data-expected-height="20"></div>
+ <div class="thirdRowSecondColumn" data-offset-x="200" data-offset-y="360" data-expected-width="100" data-expected-height="20"></div>
</div>
</div>
diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-content-distribution-vertical-rl.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-content-distribution-vertical-rl.html
index 096e3fd6910..40ee22190b9 100644
--- a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-content-distribution-vertical-rl.html
+++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-content-distribution-vertical-rl.html
@@ -6,6 +6,7 @@
<meta name="flags" content="ahem">
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<link rel="stylesheet" href="/css/support/grid.css">
+<link rel="stylesheet" href="/css/support/alignment.css">
<style>
@@ -21,6 +22,11 @@
grid-auto-rows: auto;
}
+.width300height400 {
+ width: 300px;
+ height: 400px;
+}
+
.thirdRowFirstColumn {
background-color: green;
grid-column: 1;
@@ -145,13 +151,13 @@
<div style="position: relative">
<p>direction: LTR | align-content: 'stretch'</p>
- <div class="grid stretchedGrid alignContentStretch verticalRL" data-expected-width="400" data-expected-height="300">
- <div class="firstRowFirstColumn" data-offset-x="267" data-offset-y="0" data-expected-width="133" data-expected-height="20"></div>
- <div class="firstRowSecondColumn" data-offset-x="267" data-offset-y="20" data-expected-width="133" data-expected-height="20"></div>
- <div class="secondRowFirstColumn" data-offset-x="133" data-offset-y="0" data-expected-width="133" data-expected-height="20"></div>
- <div class="secondRowSecondColumn" data-offset-x="133" data-offset-y="20" data-expected-width="133" data-expected-height="20"></div>
- <div class="thirdRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="133" data-expected-height="20"></div>
- <div class="thirdRowSecondColumn" data-offset-x="0" data-offset-y="20" data-expected-width="133" data-expected-height="20"></div>
+ <div class="grid stretchedGrid width300height400 alignContentStretch verticalRL" data-expected-width="300" data-expected-height="400">
+ <div class="firstRowFirstColumn" data-offset-x="200" data-offset-y="0" data-expected-width="100" data-expected-height="20"></div>
+ <div class="firstRowSecondColumn" data-offset-x="200" data-offset-y="20" data-expected-width="100" data-expected-height="20"></div>
+ <div class="secondRowFirstColumn" data-offset-x="100" data-offset-y="0" data-expected-width="100" data-expected-height="20"></div>
+ <div class="secondRowSecondColumn" data-offset-x="100" data-offset-y="20" data-expected-width="100" data-expected-height="20"></div>
+ <div class="thirdRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="100" data-expected-height="20"></div>
+ <div class="thirdRowSecondColumn" data-offset-x="0" data-offset-y="20" data-expected-width="100" data-expected-height="20"></div>
</div>
</div>
@@ -290,13 +296,13 @@
<div style="position: relative">
<p>direction: RTL | align-content: 'stretch'</p>
- <div class="grid stretchedGrid alignContentStretch verticalRL directionRTL" data-expected-width="400" data-expected-height="300">
- <div class="firstRowFirstColumn" data-offset-x="267" data-offset-y="280" data-expected-width="133" data-expected-height="20"></div>
- <div class="firstRowSecondColumn" data-offset-x="267" data-offset-y="260" data-expected-width="133" data-expected-height="20"></div>
- <div class="secondRowFirstColumn" data-offset-x="133" data-offset-y="280" data-expected-width="133" data-expected-height="20"></div>
- <div class="secondRowSecondColumn" data-offset-x="133" data-offset-y="260" data-expected-width="133" data-expected-height="20"></div>
- <div class="thirdRowFirstColumn" data-offset-x="0" data-offset-y="280" data-expected-width="133" data-expected-height="20"></div>
- <div class="thirdRowSecondColumn" data-offset-x="0" data-offset-y="260" data-expected-width="133" data-expected-height="20"></div>
+ <div class="grid stretchedGrid width300height400 alignContentStretch verticalRL directionRTL" data-expected-width="300" data-expected-height="400">
+ <div class="firstRowFirstColumn" data-offset-x="200" data-offset-y="380" data-expected-width="100" data-expected-height="20"></div>
+ <div class="firstRowSecondColumn" data-offset-x="200" data-offset-y="360" data-expected-width="100" data-expected-height="20"></div>
+ <div class="secondRowFirstColumn" data-offset-x="100" data-offset-y="380" data-expected-width="100" data-expected-height="20"></div>
+ <div class="secondRowSecondColumn" data-offset-x="100" data-offset-y="360" data-expected-width="100" data-expected-height="20"></div>
+ <div class="thirdRowFirstColumn" data-offset-x="0" data-offset-y="380" data-expected-width="100" data-expected-height="20"></div>
+ <div class="thirdRowSecondColumn" data-offset-x="0" data-offset-y="360" data-expected-width="100" data-expected-height="20"></div>
</div>
</div>
diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-content-distribution.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-content-distribution.html
index 7b66ddb9951..488fc05aad4 100644
--- a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-content-distribution.html
+++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-content-distribution.html
@@ -6,6 +6,7 @@
<meta name="flags" content="ahem">
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<link rel="stylesheet" href="/css/support/grid.css">
+<link rel="stylesheet" href="/css/support/alignment.css">
<style>
diff --git a/tests/wpt/web-platform-tests/css/css-grid/grid-layout-properties.html b/tests/wpt/web-platform-tests/css/css-grid/grid-layout-properties.html
index 0debe91f924..7cdda674b47 100644
--- a/tests/wpt/web-platform-tests/css/css-grid/grid-layout-properties.html
+++ b/tests/wpt/web-platform-tests/css/css-grid/grid-layout-properties.html
@@ -79,8 +79,8 @@
}({
'grid-template-columns': { // named 'grid-definition-columns' in last draft
- initial: '150px',
- 'none': ['none', '150px'],
+ initial: 'none',
+ 'none': ['none', 'none'],
'<line-names>': ['[a] auto [b] auto [c]', '[a] 150px [b] 100px [c]'],
'<track-size>.auto': ['auto', '150px'],
'<track-size>.<track-breadth>.<length>': ['100px', '100px'],
@@ -89,20 +89,20 @@
'<track-size>.<track-breadth>.min-content': ['min-content', '100px'],
'<track-size>.<track-breadth>.max-content': ['max-content', '150px'],
'<track-size>.<track-breadth>.minmax()': ['minmax(100px, 200px)', '200px'],
- 'reset': ['none', '150px'],
+ 'reset': ['none', 'none'],
},
'grid-template-rows': { // named 'grid-definition-rows' in last draft
- initial: '50px 50px 50px',
- 'none': ['none', '50px 50px 50px'],
- '<line-names>': ['[a] auto [b] auto [c]', '[a] 50px [b] 50px [c] 50px'],
- '<track-size>.auto': ['auto', '50px 50px 50px'],
- '<track-size>.<track-breadth>.<length>': ['100px', '100px 50px 50px'],
- '<track-size>.<track-breadth>.<percentage>': ['100%', '150px 50px 50px'],
- '<track-size>.<track-breadth>.<flex>': ['1fr', '50px 50px 50px'],
- '<track-size>.<track-breadth>.min-content': ['min-content', '50px 50px 50px'],
- '<track-size>.<track-breadth>.max-content': ['max-content', '50px 50px 50px'],
- '<track-size>.<track-breadth>.minmax()': ['minmax(100px, 200px)', '200px 50px 50px'],
- 'reset': ['none', '50px 50px 50px'],
+ initial: 'none',
+ 'none': ['none', 'none'],
+ '<line-names>': ['[a] auto [b] auto [c]', '[a] 50px [b] 50px [c]'],
+ '<track-size>.auto': ['auto', '50px'],
+ '<track-size>.<track-breadth>.<length>': ['100px', '100px'],
+ '<track-size>.<track-breadth>.<percentage>': ['100%', '50px'],
+ '<track-size>.<track-breadth>.<flex>': ['1fr', '50px'],
+ '<track-size>.<track-breadth>.min-content': ['min-content', '50px'],
+ '<track-size>.<track-breadth>.max-content': ['max-content', '50px'],
+ '<track-size>.<track-breadth>.minmax()': ['minmax(100px, 200px)', '200px'],
+ 'reset': ['none', 'none'],
},
'grid-template-areas': {
initial: 'none',
diff --git a/tests/wpt/web-platform-tests/css/css-grid/subgrid/contain-strict-nested-subgrid-crash.html b/tests/wpt/web-platform-tests/css/css-grid/subgrid/contain-strict-nested-subgrid-crash.html
new file mode 100644
index 00000000000..a98e43777ee
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-grid/subgrid/contain-strict-nested-subgrid-crash.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<link rel="author" title="Mozilla" href="https://mozilla.org">
+<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1606485">
+<style>
+* {
+ grid-template-rows: subgrid;
+ display: grid;
+ overflow: scroll;
+ contain: strict;
+}
+</style>
+<script>
+document.addEventListener('DOMContentLoaded', function() {
+ let e = document.createElement('s');
+ document.documentElement.appendChild(e);
+ document.documentElement.getBoundingClientRect() // Update layout
+});
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-grid/subgrid/contain-strict-subgrid-crash.html b/tests/wpt/web-platform-tests/css/css-grid/subgrid/contain-strict-subgrid-crash.html
new file mode 100644
index 00000000000..0d377175b7b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-grid/subgrid/contain-strict-subgrid-crash.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<head>
+<title>contain: strict element with subgrid properties</title>
+<link rel="author" title="Mozilla" href="https://mozilla.org">
+<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1606485">
+</head>
+<style>
+
+#gridcontainer {
+ display: grid;
+ contain: strict;
+}
+
+.item {
+ display: grid;
+ grid: subgrid [x] / subgrid [x];
+}
+</style>
+<div id="gridcontainer">
+<div class="item">Text1</div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/reference/white-space-zero-fontsize-001-ref.html b/tests/wpt/web-platform-tests/css/css-text/white-space/reference/white-space-zero-fontsize-001-ref.html
new file mode 100644
index 00000000000..3c27ed25bee
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/white-space/reference/white-space-zero-fontsize-001-ref.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<title>CSS Text test reference</title>
+<link rel="author" title="Jonathan Kew" href="mailto:jkew@mozilla.com">
+<style>
+pre {
+ font-size: 12px;
+ float: left;
+ border: 1px solid black;
+ margin: 12px;
+}
+</style>
+<pre>
+foo
+bar
+</pre>
diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/reference/white-space-zero-fontsize-002-ref.html b/tests/wpt/web-platform-tests/css/css-text/white-space/reference/white-space-zero-fontsize-002-ref.html
new file mode 100644
index 00000000000..6d2134ac4da
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/white-space/reference/white-space-zero-fontsize-002-ref.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<title>CSS Text test reference</title>
+<link rel="author" title="Jonathan Kew" href="mailto:jkew@mozilla.com">
+<style>
+pre {
+ font-size: 12px;
+ float: left;
+ border: 1px solid black;
+ margin: 12px;
+ -moz-tab-size: 100px;
+ tab-size: 100px;
+}
+</style>
+<pre>
+<span>foo</span>&#x9;<span>bar</span>
+</pre>
diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/white-space-zero-fontsize-001.html b/tests/wpt/web-platform-tests/css/css-text/white-space/white-space-zero-fontsize-001.html
new file mode 100644
index 00000000000..900e1143f2f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/white-space/white-space-zero-fontsize-001.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<title>CSS Text Test: preserved white space with zero font-size</title>
+<link rel="author" title="Jonathan Kew" href="mailto:jkew@mozilla.com">
+<link rel="help" href="https://drafts.csswg.org/css-text-3/#white-space-property">
+<link rel="match" href="reference/white-space-zero-fontsize-001-ref.html">
+<meta name="assert" content="Forced line break in preserved white space is respected even when font-size is zero">
+<style>
+pre {
+ font-size: 0;
+ float: left;
+ border: 1px solid black;
+ margin: 12px;
+}
+span { font-size: 12px; }
+</style>
+<pre>
+<span>foo</span>
+<span>bar</span>
+</pre>
diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/white-space-zero-fontsize-002.html b/tests/wpt/web-platform-tests/css/css-text/white-space/white-space-zero-fontsize-002.html
new file mode 100644
index 00000000000..1b8d3b7eb60
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/white-space/white-space-zero-fontsize-002.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<title>CSS Text Test: preserved white space with zero font-size</title>
+<link rel="author" title="Jonathan Kew" href="mailto:jkew@mozilla.com">
+<link rel="help" href="https://drafts.csswg.org/css-text-3/#white-space-property">
+<link rel="match" href="reference/white-space-zero-fontsize-002-ref.html">
+<meta name="assert" content="Tab in preserved white space is respected even when font-size is zero">
+<style>
+pre {
+ font-size: 0;
+ float: left;
+ border: 1px solid black;
+ margin: 12px;
+ -moz-tab-size: 100px;
+ tab-size: 100px;
+}
+span { font-size: 12px; }
+</style>
+<pre>
+<span>foo</span>&#x9;<span>bar</span>
+</pre>
diff --git a/tests/wpt/web-platform-tests/docs/writing-tests/python-handlers/index.md b/tests/wpt/web-platform-tests/docs/writing-tests/python-handlers/index.md
index f75703bb9ef..e3be1485bf0 100644
--- a/tests/wpt/web-platform-tests/docs/writing-tests/python-handlers/index.md
+++ b/tests/wpt/web-platform-tests/docs/writing-tests/python-handlers/index.md
@@ -43,6 +43,21 @@ The wptserver implements a number of Python APIs for controlling traffic.
/tools/wptserve/docs/stash
```
+### Python3 compatibility
+
+Even though Python3 is not fully supported at this point, some work is being
+done to add compatibility for it. This is why you can see in multiple places
+the use of the `six` python module which is meant to provide a set of simple
+utilities that work for both generation of python (see
+[docs](https://six.readthedocs.io/)). The module is vendored in
+tools/third_party/six/six.py.
+
+When an handler is added, it should be at least syntax-compatible with Python3.
+You can check that by running:
+```
+python3 -m py_compile <path/to/handler.py>
+```
+
## Example: Dynamic HTTP headers
The following code defines a Python handler that allows the requester to
diff --git a/tests/wpt/web-platform-tests/encrypted-media/scripts/check-encryption-scheme.js b/tests/wpt/web-platform-tests/encrypted-media/scripts/check-encryption-scheme.js
index 5d629271b42..ffab4a34911 100644
--- a/tests/wpt/web-platform-tests/encrypted-media/scripts/check-encryption-scheme.js
+++ b/tests/wpt/web-platform-tests/encrypted-media/scripts/check-encryption-scheme.js
@@ -38,4 +38,9 @@ function runTest(config, qualifier)
promise_test(
() => checkEncryptionScheme('cbcs'),
testnamePrefix(qualifier, config.keysystem) + ' support for "cbcs" encryption scheme.');
+
+ promise_test(
+ () => checkEncryptionScheme('cbcs-1-9'),
+ testnamePrefix(qualifier, config.keysystem) +
+ ' support for "cbcs-1-9" encryption scheme.');
}
diff --git a/tests/wpt/web-platform-tests/eventsource/resources/cors-cookie.py b/tests/wpt/web-platform-tests/eventsource/resources/cors-cookie.py
index 7deaff498d7..c35824ff437 100644
--- a/tests/wpt/web-platform-tests/eventsource/resources/cors-cookie.py
+++ b/tests/wpt/web-platform-tests/eventsource/resources/cors-cookie.py
@@ -1,7 +1,8 @@
from datetime import datetime
+from six import ensure_str
def main(request, response):
- last_event_id = request.headers.get("Last-Event-Id", "")
+ last_event_id = ensure_str(request.headers.get("Last-Event-Id", ""))
ident = request.GET.first('ident', "test")
cookie = "COOKIE" if ident in request.cookies else "NO_COOKIE"
origin = request.GET.first('origin', request.headers["origin"])
diff --git a/tests/wpt/web-platform-tests/eventsource/resources/cors.py b/tests/wpt/web-platform-tests/eventsource/resources/cors.py
index d01596c8366..42a0a0bb584 100644
--- a/tests/wpt/web-platform-tests/eventsource/resources/cors.py
+++ b/tests/wpt/web-platform-tests/eventsource/resources/cors.py
@@ -4,7 +4,7 @@ from wptserve import pipes
def run_other(request, response, path):
#This is a terrible hack
environ = {"__file__": path}
- execfile(path, environ, environ)
+ exec(compile(open(path, "r").read(), path, 'exec'), environ, environ)
rv = environ["main"](request, response)
return rv
diff --git a/tests/wpt/web-platform-tests/eventsource/resources/last-event-id.py b/tests/wpt/web-platform-tests/eventsource/resources/last-event-id.py
index 09e4f29731a..2b74bf66a28 100644
--- a/tests/wpt/web-platform-tests/eventsource/resources/last-event-id.py
+++ b/tests/wpt/web-platform-tests/eventsource/resources/last-event-id.py
@@ -1,7 +1,9 @@
+from six import ensure_str
+
def main(request, response):
response.headers.set("Content-Type", "text/event-stream")
- last_event_id = request.headers.get("Last-Event-ID", None)
+ last_event_id = ensure_str(request.headers.get("Last-Event-ID", ""))
if last_event_id:
return "data: " + last_event_id + "\n\n"
else:
diff --git a/tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/location_reload_javascript_url.html b/tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/location_reload_javascript_url.html
new file mode 100644
index 00000000000..737cafbcd3e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/location_reload_javascript_url.html
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML>
+<html>
+ <head>
+ <title>location_reload_javascript_url</title>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ </head>
+ <body>
+ <div id="log"></div>
+
+ <iframe></iframe>
+
+ <script>
+ async_test(function(t) {
+ const URL = "/common/blank.html";
+ const URL2 = "/common/blank.html#foo";
+ const JS_URL_TEXT = "javascript generated page";
+ const JS_URL = "javascript:'<html>" + JS_URL_TEXT + "</html>'";
+
+ var iframe = document.querySelector("iframe");
+ var count = 0;
+ iframe.onload = t.step_func(function() {
+ // The URL should initially be "blank.html", and then "blank.html#foo";
+ // The textContent of the iframe's document should initially be blank,
+ // then become js generated text, and then be blank again after reload.
+ switch (count) {
+ case 0:
+ assert_equals(iframe.contentWindow.document.URL,
+ location.href.replace(location.pathname, URL),
+ "iframe url (" + count + ")");
+ assert_equals(iframe.contentDocument.body.textContent, "",
+ "text of blank page");
+ iframe.contentWindow.location = JS_URL;
+ iframe.contentWindow.location = URL2;
+ break;
+ case 1:
+ assert_equals(iframe.contentWindow.document.URL,
+ location.href.replace(location.pathname, URL2),
+ "iframe url (" + count + ")");
+ assert_equals(iframe.contentDocument.body.textContent,
+ JS_URL_TEXT, "text of js generated page");
+ iframe.contentWindow.location.reload();
+ break;
+ case 2:
+ assert_equals(iframe.contentWindow.document.URL,
+ location.href.replace(location.pathname, URL2),
+ "iframe url (" + count + ")");
+ assert_equals(iframe.contentDocument.body.textContent, "",
+ "text of blank page");
+ t.done();
+ break;
+ }
+ count++;
+ });
+ iframe.src = URL;
+ });
+ </script>
+
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/mixed-content/generic/spec_json.js b/tests/wpt/web-platform-tests/mixed-content/generic/spec_json.js
new file mode 100644
index 00000000000..2f5212e9ff7
--- /dev/null
+++ b/tests/wpt/web-platform-tests/mixed-content/generic/spec_json.js
@@ -0,0 +1 @@
+var SPEC_JSON = {"subresource_schema": {"supported_delivery_type": {"picture-tag": [], "worklet-layout": [], "worklet-paint": [], "img-tag": [], "a-tag": [], "worklet-layout-import-data": [], "worklet-audio-import-data": [], "worklet-animation": [], "websocket": [], "worklet-paint-import-data": [], "video-tag": [], "object-tag": [], "worklet-audio": [], "beacon": [], "worker-module": [], "worker-import-data": [], "script-tag": [], "worklet-animation-import-data": [], "link-css-tag": [], "xhr": [], "worker-classic": [], "link-prefetch-tag": [], "audio-tag": [], "fetch": []}}, "source_context_list_schema": {"worker-classic-data": {"subresourcePolicyDeliveries": [], "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["policy"]}, {"sourceContextType": "worker-classic-data", "policyDeliveries": []}]}, "top": {"subresourcePolicyDeliveries": [], "description": "Policy set by the top-level Document", "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["policy"]}]}, "worker-module-data": {"subresourcePolicyDeliveries": [], "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["policy"]}, {"sourceContextType": "worker-module-data", "policyDeliveries": []}]}}, "test_page_title_template": "Mixed-Content: %(title)s", "test_expansion_schema": {"delivery_value": [null, "opt-in"], "origin": ["same-https", "same-http", "cross-https", "cross-http", "same-wss", "same-ws", "cross-wss", "cross-ws"], "delivery_type": ["http-rp", "meta"], "subresource": {"blockable": ["script-tag", "link-css-tag", "xhr", "worker-classic", "worker-module", "worker-import-data", "worklet-animation", "worklet-audio", "worklet-layout", "worklet-paint", "worklet-animation-import-data", "worklet-audio-import-data", "worklet-layout-import-data", "worklet-paint-import-data", "fetch", "a-tag", "object-tag", "picture-tag", "websocket", "link-prefetch-tag", "beacon"], "optionally-blockable": ["img-tag", "audio-tag", "video-tag"]}, "expectation": ["allowed", "blocked"], "expansion": ["default", "override"], "redirection": ["no-redirect", "keep-scheme", "swap-scheme"], "source_context_list": ["top", "worker-classic-data", "worker-module-data"], "source_scheme": ["http", "https"]}, "selection_pattern": "%(source_context_list)s.%(delivery_type)s/%(delivery_value)s/%(subresource)s/%(origin)s.%(redirection)s.%(source_scheme)s", "specification": [{"test_expansion": [{"delivery_value": "opt-in", "origin": ["cross-http", "same-http"], "delivery_type": "*", "name": "opt-in-blocks", "expectation": "blocked", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": {"blockable": [], "optionally-blockable": "*"}}, {"delivery_value": null, "origin": ["cross-http", "same-http"], "delivery_type": "*", "name": "no-opt-in-allows", "expectation": "allowed", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": {"blockable": [], "optionally-blockable": "*"}}], "description": "Test behavior of optionally-blockable content", "specification_url": "http://www.w3.org/TR/mixed-content/#category-optionally-blockable", "name": "optionally-blockable", "title": "Optionally-blockable content"}, {"test_expansion": [{"delivery_value": "opt-in", "origin": ["cross-http", "same-http"], "delivery_type": "*", "name": "opt-in-blocks", "expectation": "blocked", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": {"blockable": "*", "optionally-blockable": []}}, {"delivery_value": null, "origin": ["cross-http", "same-http"], "delivery_type": "*", "name": "no-opt-in-blocks", "expectation": "blocked", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": {"blockable": "*", "optionally-blockable": []}}, {"delivery_value": "*", "origin": ["cross-ws", "same-ws"], "delivery_type": "*", "name": "ws-downgrade-blocks", "expectation": "blocked", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": {"blockable": "websocket", "optionally-blockable": []}}], "description": "Test behavior of blockable content.", "specification_url": "http://www.w3.org/TR/mixed-content/#category-blockable", "name": "blockable", "title": "Blockable content"}, {"test_expansion": [{"delivery_value": "*", "origin": ["same-https"], "delivery_type": "*", "name": "allowed", "expectation": "allowed", "expansion": "default", "redirection": ["no-redirect", "keep-scheme"], "source_context_list": "*", "source_scheme": "https", "subresource": {"blockable": "*", "optionally-blockable": "*"}}, {"delivery_value": "*", "origin": ["same-wss"], "delivery_type": "*", "name": "websocket-allowed", "expectation": "allowed", "expansion": "default", "redirection": ["no-redirect", "keep-scheme"], "source_context_list": "*", "source_scheme": "https", "subresource": {"blockable": "websocket", "optionally-blockable": []}}], "description": "Test behavior of allowed content.", "specification_url": "http://www.w3.org/TR/mixed-content/", "name": "allowed", "title": "Allowed content"}], "test_file_path_pattern": "gen/%(source_context_list)s.%(delivery_type)s/%(delivery_value)s/%(subresource)s/%(origin)s.%(redirection)s.%(source_scheme)s.html", "excluded_tests": [{"delivery_value": null, "origin": "*", "delivery_type": "http-rp", "name": "Skip-redundant-no-opt-in", "expectation": "*", "expansion": "*", "redirection": "*", "source_context_list": "*", "source_scheme": "*", "subresource": {"blockable": "*", "optionally-blockable": "*"}}, {"delivery_value": "*", "origin": "*", "delivery_type": "*", "name": "Redundant-subresources", "expectation": "*", "expansion": "*", "redirection": "*", "source_context_list": "*", "source_scheme": "*", "subresource": {"blockable": ["a-tag"], "optionally-blockable": []}}, {"delivery_value": "*", "origin": ["same-https", "same-http", "cross-https", "cross-http"], "delivery_type": "*", "name": "Skip-origins-not-applicable-to-websockets", "expectation": "*", "expansion": "*", "redirection": "*", "source_context_list": "*", "source_scheme": "*", "subresource": {"blockable": ["websocket"], "optionally-blockable": []}}, {"delivery_value": "opt-in", "origin": "*", "delivery_type": "meta", "name": "Skip-redundant-for-opt-in-method", "expectation": "*", "expansion": "*", "redirection": ["keep-scheme", "swap-scheme"], "source_context_list": "*", "source_scheme": "*", "subresource": {"blockable": "*", "optionally-blockable": "*"}}], "delivery_key": "mixedContent", "test_description_template": "Mixed-Content: Expects %(expectation)s for %(subresource)s to %(origin)s origin and %(redirection)s redirection from %(source_scheme)s context.", "source_context_schema": {"supported_delivery_type": {"iframe": ["http-rp", "meta"], "worker-module-data": [], "worker-classic-data": [], "top": ["http-rp", "meta"], "worker-classic": ["http-rp"], "iframe-blank": ["meta"], "worker-module": ["http-rp"], "srcdoc": ["meta"]}, "supported_subresource": {"iframe": "*", "worker-module-data": ["xhr", "fetch", "websocket"], "worker-classic-data": ["xhr", "fetch", "websocket"], "top": "*", "worker-classic": ["xhr", "fetch", "websocket"], "iframe-blank": "*", "worker-module": ["xhr", "fetch", "websocket"], "srcdoc": "*"}}};
diff --git a/tests/wpt/web-platform-tests/mixed-content/generic/tools/generate.py b/tests/wpt/web-platform-tests/mixed-content/generic/tools/generate.py
deleted file mode 100755
index 060bdabf91c..00000000000
--- a/tests/wpt/web-platform-tests/mixed-content/generic/tools/generate.py
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/usr/bin/env python
-
-import os
-import sys
-
-sys.path.insert(
- 0,
- os.path.join(
- os.path.dirname(os.path.abspath(__file__)), '..', '..', '..', 'common',
- 'security-features', 'tools'))
-import generate
-
-
-class MixedContentConfig(object):
- def __init__(self):
- self.selection_pattern = \
- '%(source_context_list)s.%(delivery_type)s/' + \
- '%(delivery_value)s/' + \
- '%(subresource)s/' + \
- '%(origin)s.%(redirection)s.%(source_scheme)s'
-
- self.test_file_path_pattern = 'gen/' + self.selection_pattern + '.html'
-
- self.test_description_template = 'Mixed-Content: Expects %(expectation)s for %(subresource)s to %(origin)s origin and %(redirection)s redirection from %(source_scheme)s context.'
-
- self.test_page_title_template = 'Mixed-Content: %s'
-
- self.helper_js = '/mixed-content/generic/test-case.sub.js'
-
- # For debug target only.
- self.sanity_checker_js = '/mixed-content/generic/sanity-checker.js'
- self.spec_json_js = '/mixed-content/spec_json.js'
-
- script_directory = os.path.dirname(os.path.abspath(__file__))
- self.spec_directory = os.path.abspath(
- os.path.join(script_directory, '..', '..'))
-
-
-if __name__ == '__main__':
- generate.main(MixedContentConfig())
diff --git a/tests/wpt/web-platform-tests/mixed-content/spec.src.json b/tests/wpt/web-platform-tests/mixed-content/spec.src.json
index c272bb3f642..8ece6de3ffd 100644
--- a/tests/wpt/web-platform-tests/mixed-content/spec.src.json
+++ b/tests/wpt/web-platform-tests/mixed-content/spec.src.json
@@ -1,4 +1,8 @@
{
+ "selection_pattern": "%(source_context_list)s.%(delivery_type)s/%(delivery_value)s/%(subresource)s/%(origin)s.%(redirection)s.%(source_scheme)s",
+ "test_file_path_pattern": "gen/%(source_context_list)s.%(delivery_type)s/%(delivery_value)s/%(subresource)s/%(origin)s.%(redirection)s.%(source_scheme)s.html",
+ "test_description_template": "Mixed-Content: Expects %(expectation)s for %(subresource)s to %(origin)s origin and %(redirection)s redirection from %(source_scheme)s context.",
+ "test_page_title_template": "Mixed-Content: %(title)s",
"specification": [
{
"name": "optionally-blockable",
diff --git a/tests/wpt/web-platform-tests/mixed-content/spec_json.js b/tests/wpt/web-platform-tests/mixed-content/spec_json.js
deleted file mode 100644
index 00428b1fa5e..00000000000
--- a/tests/wpt/web-platform-tests/mixed-content/spec_json.js
+++ /dev/null
@@ -1 +0,0 @@
-var SPEC_JSON = {"subresource_schema": {"supported_delivery_type": {"picture-tag": [], "worklet-layout": [], "worklet-paint": [], "img-tag": [], "a-tag": [], "worklet-layout-import-data": [], "worklet-audio-import-data": [], "worklet-animation": [], "websocket": [], "worklet-paint-import-data": [], "video-tag": [], "object-tag": [], "worklet-audio": [], "beacon": [], "worker-module": [], "worker-import-data": [], "script-tag": [], "worklet-animation-import-data": [], "link-css-tag": [], "xhr": [], "worker-classic": [], "link-prefetch-tag": [], "audio-tag": [], "fetch": []}}, "excluded_tests": [{"delivery_value": null, "origin": "*", "delivery_type": "http-rp", "name": "Skip-redundant-no-opt-in", "expectation": "*", "expansion": "*", "redirection": "*", "source_context_list": "*", "source_scheme": "*", "subresource": {"blockable": "*", "optionally-blockable": "*"}}, {"delivery_value": "*", "origin": "*", "delivery_type": "*", "name": "Redundant-subresources", "expectation": "*", "expansion": "*", "redirection": "*", "source_context_list": "*", "source_scheme": "*", "subresource": {"blockable": ["a-tag"], "optionally-blockable": []}}, {"delivery_value": "*", "origin": ["same-https", "same-http", "cross-https", "cross-http"], "delivery_type": "*", "name": "Skip-origins-not-applicable-to-websockets", "expectation": "*", "expansion": "*", "redirection": "*", "source_context_list": "*", "source_scheme": "*", "subresource": {"blockable": ["websocket"], "optionally-blockable": []}}, {"delivery_value": "opt-in", "origin": "*", "delivery_type": "meta", "name": "Skip-redundant-for-opt-in-method", "expectation": "*", "expansion": "*", "redirection": ["keep-scheme", "swap-scheme"], "source_context_list": "*", "source_scheme": "*", "subresource": {"blockable": "*", "optionally-blockable": "*"}}], "specification": [{"test_expansion": [{"delivery_value": "opt-in", "origin": ["cross-http", "same-http"], "delivery_type": "*", "name": "opt-in-blocks", "expectation": "blocked", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": {"blockable": [], "optionally-blockable": "*"}}, {"delivery_value": null, "origin": ["cross-http", "same-http"], "delivery_type": "*", "name": "no-opt-in-allows", "expectation": "allowed", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": {"blockable": [], "optionally-blockable": "*"}}], "description": "Test behavior of optionally-blockable content", "specification_url": "http://www.w3.org/TR/mixed-content/#category-optionally-blockable", "name": "optionally-blockable", "title": "Optionally-blockable content"}, {"test_expansion": [{"delivery_value": "opt-in", "origin": ["cross-http", "same-http"], "delivery_type": "*", "name": "opt-in-blocks", "expectation": "blocked", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": {"blockable": "*", "optionally-blockable": []}}, {"delivery_value": null, "origin": ["cross-http", "same-http"], "delivery_type": "*", "name": "no-opt-in-blocks", "expectation": "blocked", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": {"blockable": "*", "optionally-blockable": []}}, {"delivery_value": "*", "origin": ["cross-ws", "same-ws"], "delivery_type": "*", "name": "ws-downgrade-blocks", "expectation": "blocked", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": {"blockable": "websocket", "optionally-blockable": []}}], "description": "Test behavior of blockable content.", "specification_url": "http://www.w3.org/TR/mixed-content/#category-blockable", "name": "blockable", "title": "Blockable content"}, {"test_expansion": [{"delivery_value": "*", "origin": ["same-https"], "delivery_type": "*", "name": "allowed", "expectation": "allowed", "expansion": "default", "redirection": ["no-redirect", "keep-scheme"], "source_context_list": "*", "source_scheme": "https", "subresource": {"blockable": "*", "optionally-blockable": "*"}}, {"delivery_value": "*", "origin": ["same-wss"], "delivery_type": "*", "name": "websocket-allowed", "expectation": "allowed", "expansion": "default", "redirection": ["no-redirect", "keep-scheme"], "source_context_list": "*", "source_scheme": "https", "subresource": {"blockable": "websocket", "optionally-blockable": []}}], "description": "Test behavior of allowed content.", "specification_url": "http://www.w3.org/TR/mixed-content/", "name": "allowed", "title": "Allowed content"}], "test_expansion_schema": {"delivery_value": [null, "opt-in"], "origin": ["same-https", "same-http", "cross-https", "cross-http", "same-wss", "same-ws", "cross-wss", "cross-ws"], "delivery_type": ["http-rp", "meta"], "subresource": {"blockable": ["script-tag", "link-css-tag", "xhr", "worker-classic", "worker-module", "worker-import-data", "worklet-animation", "worklet-audio", "worklet-layout", "worklet-paint", "worklet-animation-import-data", "worklet-audio-import-data", "worklet-layout-import-data", "worklet-paint-import-data", "fetch", "a-tag", "object-tag", "picture-tag", "websocket", "link-prefetch-tag", "beacon"], "optionally-blockable": ["img-tag", "audio-tag", "video-tag"]}, "expectation": ["allowed", "blocked"], "expansion": ["default", "override"], "redirection": ["no-redirect", "keep-scheme", "swap-scheme"], "source_context_list": ["top", "worker-classic-data", "worker-module-data"], "source_scheme": ["http", "https"]}, "source_context_list_schema": {"worker-classic-data": {"subresourcePolicyDeliveries": [], "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["policy"]}, {"sourceContextType": "worker-classic-data", "policyDeliveries": []}]}, "top": {"subresourcePolicyDeliveries": [], "description": "Policy set by the top-level Document", "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["policy"]}]}, "worker-module-data": {"subresourcePolicyDeliveries": [], "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["policy"]}, {"sourceContextType": "worker-module-data", "policyDeliveries": []}]}}, "delivery_key": "mixedContent", "source_context_schema": {"supported_delivery_type": {"iframe": ["http-rp", "meta"], "worker-module-data": [], "worker-classic-data": [], "top": ["http-rp", "meta"], "worker-classic": ["http-rp"], "iframe-blank": ["meta"], "worker-module": ["http-rp"], "srcdoc": ["meta"]}, "supported_subresource": {"iframe": "*", "worker-module-data": ["xhr", "fetch", "websocket"], "worker-classic-data": ["xhr", "fetch", "websocket"], "top": "*", "worker-classic": ["xhr", "fetch", "websocket"], "iframe-blank": "*", "worker-module": ["xhr", "fetch", "websocket"], "srcdoc": "*"}}};
diff --git a/tests/wpt/web-platform-tests/payment-request/allowpaymentrequest/removing-allowpaymentrequest.https.sub.html b/tests/wpt/web-platform-tests/payment-request/allowpaymentrequest/removing-allowpaymentrequest.https.sub.html
index b0e0cbacbf2..64baebb5024 100644
--- a/tests/wpt/web-platform-tests/payment-request/allowpaymentrequest/removing-allowpaymentrequest.https.sub.html
+++ b/tests/wpt/web-platform-tests/payment-request/allowpaymentrequest/removing-allowpaymentrequest.https.sub.html
@@ -27,6 +27,9 @@ async_test((t) => {
});
window.onmessage = t.step_func((e) => {
+ // Ignore messages that are not part of the test.
+ if (e.source != iframe.contentWindow) return;
+
i++;
if (i === 1) {
// 5. This is the first message we receive, from the first load.
diff --git a/tests/wpt/web-platform-tests/payment-request/allowpaymentrequest/setting-allowpaymentrequest-timing.https.sub.html b/tests/wpt/web-platform-tests/payment-request/allowpaymentrequest/setting-allowpaymentrequest-timing.https.sub.html
index 45661de7e0d..a741296d5da 100644
--- a/tests/wpt/web-platform-tests/payment-request/allowpaymentrequest/setting-allowpaymentrequest-timing.https.sub.html
+++ b/tests/wpt/web-platform-tests/payment-request/allowpaymentrequest/setting-allowpaymentrequest-timing.https.sub.html
@@ -22,11 +22,15 @@ async_test((t) => {
iframe.contentWindow.postMessage('What is the result of new PaymentRequest(...)?', '*');
});
- window.onmessage = t.step_func_done((e) => {
+ window.onmessage = t.step_func((e) => {
+ // Ignore messages that are not part of the test.
+ if (e.source != iframe.contentWindow) return;
+
assert_equals(e.data.message, 'Exception');
assert_equals(4, e.data.details.length);
// The last entry is the error stacktrace. Ignore it in comparison.
assert_array_equals(e.data.details.slice(0, 3), [true /* ex instanceof DOMException */, DOMException.SECURITY_ERR, 'SecurityError']);
+ t.done();
});
document.body.appendChild(iframe);
diff --git a/tests/wpt/web-platform-tests/payment-request/allowpaymentrequest/setting-allowpaymentrequest.https.sub.html b/tests/wpt/web-platform-tests/payment-request/allowpaymentrequest/setting-allowpaymentrequest.https.sub.html
index 06f0c8479da..c1d53a4bc26 100644
--- a/tests/wpt/web-platform-tests/payment-request/allowpaymentrequest/setting-allowpaymentrequest.https.sub.html
+++ b/tests/wpt/web-platform-tests/payment-request/allowpaymentrequest/setting-allowpaymentrequest.https.sub.html
@@ -20,6 +20,9 @@ async_test((t) => {
});
window.onmessage = t.step_func((e) => {
+ // Ignore messages that are not part of the test.
+ if (e.source != iframe.contentWindow) return;
+
i++;
if (i === 1) {
assert_equals(e.data.message, 'Exception', 'before navigation');
diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/spec_json.js b/tests/wpt/web-platform-tests/referrer-policy/generic/spec_json.js
new file mode 100644
index 00000000000..cad5e79f1f8
--- /dev/null
+++ b/tests/wpt/web-platform-tests/referrer-policy/generic/spec_json.js
@@ -0,0 +1 @@
+var SPEC_JSON = {"subresource_schema": {"supported_delivery_type": {"img-tag": ["attr"], "sharedworker-classic": [], "xhr": [], "a-tag": ["attr", "rel-noref"], "area-tag": ["attr"], "iframe-tag": ["attr"], "worker-module": [], "script-tag": ["attr"], "fetch": [], "worker-classic": []}}, "source_context_list_schema": {"srcdoc-inherit": {"subresourcePolicyDeliveries": [], "description": "srcdoc iframe should inherit parent Document's policy", "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["policy"]}, {"sourceContextType": "srcdoc"}]}, "worker-module": {"subresourcePolicyDeliveries": [], "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["anotherPolicy"]}, {"sourceContextType": "worker-module", "policyDeliveries": ["policy"]}]}, "worker-module-data": {"subresourcePolicyDeliveries": [], "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["anotherPolicy"]}, {"sourceContextType": "worker-module-data", "policyDeliveries": ["policy"]}]}, "worker-classic-data": {"subresourcePolicyDeliveries": [], "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["anotherPolicy"]}, {"sourceContextType": "worker-classic-data", "policyDeliveries": ["policy"]}]}, "top": {"subresourcePolicyDeliveries": [], "description": "Policy set by the top-level Document", "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["policy"]}]}, "req": {"subresourcePolicyDeliveries": ["nonNullPolicy"], "description": "Subresource request's policy should override Document's policy", "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["anotherPolicy"]}]}, "worker-classic": {"subresourcePolicyDeliveries": [], "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["anotherPolicy"]}, {"sourceContextType": "worker-classic", "policyDeliveries": ["policy"]}]}, "iframe": {"subresourcePolicyDeliveries": [], "description": "external iframe's policy should override parent Document's policy", "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["anotherPolicy"]}, {"sourceContextType": "iframe", "policyDeliveries": ["policy"]}]}, "srcdoc": {"subresourcePolicyDeliveries": [], "description": "srcdoc iframe's policy should override parent Document's policy", "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["anotherPolicy"]}, {"sourceContextType": "srcdoc", "policyDeliveries": ["nonNullPolicy"]}]}}, "test_page_title_template": "Referrer-Policy: %(title)s", "test_expansion_schema": {"delivery_value": [null, "no-referrer", "no-referrer-when-downgrade", "same-origin", "origin", "origin-when-cross-origin", "strict-origin", "strict-origin-when-cross-origin", "unsafe-url"], "origin": ["same-http", "same-https", "cross-http", "cross-https"], "delivery_type": ["attr", "rel-noref", "http-rp", "meta"], "subresource": ["iframe-tag", "img-tag", "script-tag", "a-tag", "area-tag", "xhr", "worker-classic", "worker-module", "sharedworker-classic", "fetch"], "expectation": ["omitted", "origin", "stripped-referrer"], "expansion": ["default", "override"], "redirection": ["no-redirect", "keep-origin", "swap-origin"], "source_context_list": ["top", "req", "srcdoc-inherit", "srcdoc", "iframe", "worker-classic", "worker-classic-data", "worker-module", "worker-module-data"], "source_scheme": ["http", "https"]}, "selection_pattern": "%(source_context_list)s.%(delivery_type)s/%(delivery_value)s/%(subresource)s/%(origin)s.%(redirection)s.%(source_scheme)s", "specification": [{"test_expansion": [{"delivery_value": null, "origin": ["same-http", "cross-http"], "delivery_type": "*", "name": "insecure-protocol", "expectation": "stripped-referrer", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "http", "subresource": "*"}, {"delivery_value": null, "origin": ["same-https", "cross-https"], "delivery_type": "*", "name": "upgrade-protocol", "expectation": "stripped-referrer", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "http", "subresource": "*"}, {"delivery_value": null, "origin": ["same-http", "cross-http"], "delivery_type": "*", "name": "downgrade-protocol", "expectation": "omitted", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}, {"delivery_value": null, "origin": ["same-https", "cross-https"], "delivery_type": "*", "name": "secure-protocol", "expectation": "stripped-referrer", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}], "description": "Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.", "specification_url": "https://w3c.github.io/webappsec-referrer-policy/#referrer-policies", "name": "unset-referrer-policy", "title": "Referrer Policy is not explicitly defined"}, {"test_expansion": [{"delivery_value": "no-referrer", "origin": "*", "delivery_type": "*", "name": "generic", "expectation": "omitted", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "*", "subresource": "*"}], "description": "Check that sub-resource never gets the referrer URL.", "specification_url": "https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer", "name": "no-referrer", "title": "Referrer Policy is set to 'no-referrer'"}, {"test_expansion": [{"delivery_value": "no-referrer-when-downgrade", "origin": ["same-http", "cross-http"], "delivery_type": "*", "name": "insecure-protocol", "expectation": "stripped-referrer", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "http", "subresource": "*"}, {"delivery_value": "no-referrer-when-downgrade", "origin": ["same-https", "cross-https"], "delivery_type": "*", "name": "upgrade-protocol", "expectation": "stripped-referrer", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "http", "subresource": "*"}, {"delivery_value": "no-referrer-when-downgrade", "origin": ["same-http", "cross-http"], "delivery_type": "*", "name": "downgrade-protocol", "expectation": "omitted", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}, {"delivery_value": "no-referrer-when-downgrade", "origin": ["same-https", "cross-https"], "delivery_type": "*", "name": "secure-protocol", "expectation": "stripped-referrer", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}], "description": "Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.", "specification_url": "https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade", "name": "no-referrer-when-downgrade", "title": "Referrer Policy is set to 'no-referrer-when-downgrade'"}, {"test_expansion": [{"delivery_value": "origin", "origin": "*", "delivery_type": "*", "name": "generic", "expectation": "origin", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "*", "subresource": "*"}], "description": "Check that all subresources in all casses get only the origin portion of the referrer URL.", "specification_url": "https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin", "name": "origin", "title": "Referrer Policy is set to 'origin'"}, {"test_expansion": [{"delivery_value": "same-origin", "origin": "same-http", "delivery_type": "*", "name": "same-origin-insecure", "expectation": "stripped-referrer", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "http", "subresource": "*"}, {"delivery_value": "same-origin", "origin": "same-https", "delivery_type": "*", "name": "same-origin-secure-default", "expectation": "stripped-referrer", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}, {"delivery_value": "same-origin", "origin": ["same-http", "same-https"], "delivery_type": "*", "name": "same-origin-insecure", "expectation": "omitted", "expansion": "override", "redirection": "swap-origin", "source_context_list": "*", "source_scheme": "*", "subresource": "*"}, {"delivery_value": "same-origin", "origin": ["cross-http", "cross-https"], "delivery_type": "*", "name": "cross-origin", "expectation": "omitted", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "*", "subresource": "*"}], "description": "Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.", "specification_url": "https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin", "name": "same-origin", "title": "Referrer Policy is set to 'same-origin'"}, {"test_expansion": [{"delivery_value": "origin-when-cross-origin", "origin": "same-http", "delivery_type": "*", "name": "same-origin-insecure", "expectation": "stripped-referrer", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "http", "subresource": "*"}, {"delivery_value": "origin-when-cross-origin", "origin": "same-https", "delivery_type": "*", "name": "same-origin-secure-default", "expectation": "stripped-referrer", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}, {"delivery_value": "origin-when-cross-origin", "origin": "same-https", "delivery_type": "*", "name": "same-origin-upgrade", "expectation": "origin", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "http", "subresource": "*"}, {"delivery_value": "origin-when-cross-origin", "origin": "same-http", "delivery_type": "*", "name": "same-origin-downgrade", "expectation": "origin", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}, {"delivery_value": "origin-when-cross-origin", "origin": ["same-http", "same-https"], "delivery_type": "*", "name": "same-origin-insecure", "expectation": "origin", "expansion": "override", "redirection": "swap-origin", "source_context_list": "*", "source_scheme": "*", "subresource": "*"}, {"delivery_value": "origin-when-cross-origin", "origin": ["cross-http", "cross-https"], "delivery_type": "*", "name": "cross-origin", "expectation": "origin", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "*", "subresource": "*"}], "description": "Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.", "specification_url": "https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin", "name": "origin-when-cross-origin", "title": "Referrer Policy is set to 'origin-when-cross-origin'"}, {"test_expansion": [{"delivery_value": "strict-origin", "origin": ["same-http", "cross-http"], "delivery_type": "*", "name": "insecure-protocol", "expectation": "origin", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "http", "subresource": "*"}, {"delivery_value": "strict-origin", "origin": ["same-https", "cross-https"], "delivery_type": "*", "name": "upgrade-protocol", "expectation": "origin", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "http", "subresource": "*"}, {"delivery_value": "strict-origin", "origin": ["same-http", "cross-http"], "delivery_type": "*", "name": "downgrade-protocol", "expectation": "omitted", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}, {"delivery_value": "strict-origin", "origin": ["same-https", "cross-https"], "delivery_type": "*", "name": "secure-protocol", "expectation": "origin", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}], "description": "Check that non a priori insecure subresource gets only the origin portion of the referrer URL. A priori insecure subresource gets no referrer information.", "specification_url": "https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin", "name": "strict-origin", "title": "Referrer Policy is set to 'strict-origin'"}, {"test_expansion": [{"delivery_value": "strict-origin-when-cross-origin", "origin": "same-http", "delivery_type": "*", "name": "same-insecure", "expectation": "stripped-referrer", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "http", "subresource": "*"}, {"delivery_value": "strict-origin-when-cross-origin", "origin": "same-http", "delivery_type": "*", "name": "same-insecure", "expectation": "origin", "expansion": "override", "redirection": "swap-origin", "source_context_list": "*", "source_scheme": "http", "subresource": "*"}, {"delivery_value": "strict-origin-when-cross-origin", "origin": "cross-http", "delivery_type": "*", "name": "cross-insecure", "expectation": "origin", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "http", "subresource": "*"}, {"delivery_value": "strict-origin-when-cross-origin", "origin": ["same-https", "cross-https"], "delivery_type": "*", "name": "upgrade-protocol", "expectation": "origin", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "http", "subresource": "*"}, {"delivery_value": "strict-origin-when-cross-origin", "origin": ["same-http", "cross-http"], "delivery_type": "*", "name": "downgrade-protocol", "expectation": "omitted", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}, {"delivery_value": "strict-origin-when-cross-origin", "origin": "same-https", "delivery_type": "*", "name": "same-secure", "expectation": "stripped-referrer", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}, {"delivery_value": "strict-origin-when-cross-origin", "origin": "same-https", "delivery_type": "*", "name": "same-secure", "expectation": "origin", "expansion": "override", "redirection": "swap-origin", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}, {"delivery_value": "strict-origin-when-cross-origin", "origin": "cross-https", "delivery_type": "*", "name": "cross-secure", "expectation": "origin", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}], "description": "Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.", "specification_url": "https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin", "name": "strict-origin-when-cross-origin", "title": "Referrer Policy is set to 'strict-origin-when-cross-origin'"}, {"test_expansion": [{"delivery_value": "unsafe-url", "origin": "*", "delivery_type": "*", "name": "generic", "expectation": "stripped-referrer", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "*", "subresource": "*"}], "description": "Check that all sub-resources get the stripped referrer URL.", "specification_url": "https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url", "name": "unsafe-url", "title": "Referrer Policy is set to 'unsafe-url'"}], "test_file_path_pattern": "gen/%(source_context_list)s.%(delivery_type)s/%(delivery_value)s/%(subresource)s/%(origin)s.%(redirection)s.%(source_scheme)s.html", "excluded_tests": [{"delivery_value": "*", "origin": ["cross-http", "cross-https"], "delivery_type": "*", "name": "cross-origin-workers", "expectation": "*", "expansion": "*", "redirection": "*", "source_context_list": "*", "source_scheme": "*", "subresource": ["worker-classic", "worker-module", "sharedworker-classic"]}, {"delivery_value": "*", "origin": ["same-https", "cross-https"], "delivery_type": "*", "name": "upgraded-protocol-workers", "expectation": "*", "expansion": "*", "redirection": "*", "source_context_list": "*", "source_scheme": "http", "subresource": ["worker-classic", "worker-module", "sharedworker-classic"]}, {"delivery_value": "*", "origin": ["same-http", "cross-http"], "delivery_type": "*", "name": "mixed-content-insecure-subresources", "expectation": "*", "expansion": "*", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}, {"delivery_value": "*", "origin": "*", "delivery_type": "*", "name": "area-tag", "expectation": "*", "expansion": "*", "redirection": "*", "source_context_list": "*", "source_scheme": "*", "subresource": "area-tag"}, {"delivery_value": "*", "origin": "*", "delivery_type": "*", "name": "worker-requests-with-swap-origin-redirect", "expectation": "*", "expansion": "*", "redirection": "swap-origin", "source_context_list": "*", "source_scheme": "*", "subresource": ["worker-classic", "worker-module", "sharedworker-classic"]}, {"delivery_value": "*", "origin": "*", "delivery_type": "*", "name": "overhead-for-redirection", "expectation": "*", "expansion": "*", "redirection": ["keep-origin", "swap-origin"], "source_context_list": "*", "source_scheme": "*", "subresource": ["a-tag", "area-tag"]}, {"delivery_value": "*", "origin": "*", "delivery_type": "*", "name": "source-https-unsupported-by-web-platform-tests-runners", "expectation": "*", "expansion": "*", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}, {"delivery_value": [null, "no-referrer-when-downgrade", "same-origin", "origin", "origin-when-cross-origin", "strict-origin", "strict-origin-when-cross-origin", "unsafe-url"], "origin": "*", "delivery_type": "rel-noref", "name": "<link rel=noreferrer>'s delivery_value should be no-referrer", "expectation": "*", "expansion": "*", "redirection": "*", "source_context_list": "*", "source_scheme": "*", "subresource": "*"}], "delivery_key": "referrerPolicy", "test_description_template": "Referrer Policy: Expects %(expectation)s for %(subresource)s to %(origin)s origin and %(redirection)s redirection from %(source_scheme)s context.", "source_context_schema": {"supported_delivery_type": {"iframe": ["meta", "http-rp"], "worker-module-data": [], "worker-classic-data": [], "top": ["meta", "http-rp"], "worker-classic": ["http-rp"], "iframe-blank": ["meta"], "worker-module": ["http-rp"], "srcdoc": ["meta"]}, "supported_subresource": {"iframe": "*", "worker-module-data": ["xhr", "fetch"], "worker-classic-data": ["xhr", "fetch"], "top": "*", "worker-classic": ["xhr", "fetch", "worker-classic", "worker-module"], "iframe-blank": "*", "worker-module": ["xhr", "fetch", "worker-classic", "worker-module"], "srcdoc": "*"}}};
diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/tools/generate.py b/tests/wpt/web-platform-tests/referrer-policy/generic/tools/generate.py
deleted file mode 100755
index 7cace61c0f0..00000000000
--- a/tests/wpt/web-platform-tests/referrer-policy/generic/tools/generate.py
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/usr/bin/env python
-
-import os
-import sys
-
-sys.path.insert(
- 0,
- os.path.join(
- os.path.dirname(os.path.abspath(__file__)), '..', '..', '..', 'common',
- 'security-features', 'tools'))
-import generate
-
-
-class ReferrerPolicyConfig(object):
- def __init__(self):
- self.selection_pattern = \
- '%(source_context_list)s.%(delivery_type)s/' + \
- '%(delivery_value)s/' + \
- '%(subresource)s/' + \
- '%(origin)s.%(redirection)s.%(source_scheme)s'
-
- self.test_file_path_pattern = 'gen/' + self.selection_pattern + '.html'
-
- self.test_description_template = 'Referrer Policy: Expects %(expectation)s for %(subresource)s to %(origin)s origin and %(redirection)s redirection from %(source_scheme)s context.'
-
- self.test_page_title_template = 'Referrer-Policy: %s'
-
- self.helper_js = '/referrer-policy/generic/test-case.sub.js'
-
- # For debug target only.
- self.sanity_checker_js = '/referrer-policy/generic/sanity-checker.js'
- self.spec_json_js = '/referrer-policy/spec_json.js'
-
- script_directory = os.path.dirname(os.path.abspath(__file__))
- self.spec_directory = os.path.abspath(
- os.path.join(script_directory, '..', '..'))
-
-
-if __name__ == '__main__':
- generate.main(ReferrerPolicyConfig())
diff --git a/tests/wpt/web-platform-tests/referrer-policy/spec.src.json b/tests/wpt/web-platform-tests/referrer-policy/spec.src.json
index 2674a45d6db..b0e07eb1328 100644
--- a/tests/wpt/web-platform-tests/referrer-policy/spec.src.json
+++ b/tests/wpt/web-platform-tests/referrer-policy/spec.src.json
@@ -1,4 +1,8 @@
{
+ "selection_pattern": "%(source_context_list)s.%(delivery_type)s/%(delivery_value)s/%(subresource)s/%(origin)s.%(redirection)s.%(source_scheme)s",
+ "test_file_path_pattern": "gen/%(source_context_list)s.%(delivery_type)s/%(delivery_value)s/%(subresource)s/%(origin)s.%(redirection)s.%(source_scheme)s.html",
+ "test_description_template": "Referrer Policy: Expects %(expectation)s for %(subresource)s to %(origin)s origin and %(redirection)s redirection from %(source_scheme)s context.",
+ "test_page_title_template": "Referrer-Policy: %(title)s",
"specification": [
{
"name": "unset-referrer-policy",
diff --git a/tests/wpt/web-platform-tests/referrer-policy/spec_json.js b/tests/wpt/web-platform-tests/referrer-policy/spec_json.js
deleted file mode 100644
index 8a15eaee1eb..00000000000
--- a/tests/wpt/web-platform-tests/referrer-policy/spec_json.js
+++ /dev/null
@@ -1 +0,0 @@
-var SPEC_JSON = {"subresource_schema": {"supported_delivery_type": {"img-tag": ["attr"], "sharedworker-classic": [], "xhr": [], "a-tag": ["attr", "rel-noref"], "area-tag": ["attr"], "iframe-tag": ["attr"], "worker-module": [], "script-tag": ["attr"], "fetch": [], "worker-classic": []}}, "excluded_tests": [{"delivery_value": "*", "origin": ["cross-http", "cross-https"], "delivery_type": "*", "name": "cross-origin-workers", "expectation": "*", "expansion": "*", "redirection": "*", "source_context_list": "*", "source_scheme": "*", "subresource": ["worker-classic", "worker-module", "sharedworker-classic"]}, {"delivery_value": "*", "origin": ["same-https", "cross-https"], "delivery_type": "*", "name": "upgraded-protocol-workers", "expectation": "*", "expansion": "*", "redirection": "*", "source_context_list": "*", "source_scheme": "http", "subresource": ["worker-classic", "worker-module", "sharedworker-classic"]}, {"delivery_value": "*", "origin": ["same-http", "cross-http"], "delivery_type": "*", "name": "mixed-content-insecure-subresources", "expectation": "*", "expansion": "*", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}, {"delivery_value": "*", "origin": "*", "delivery_type": "*", "name": "area-tag", "expectation": "*", "expansion": "*", "redirection": "*", "source_context_list": "*", "source_scheme": "*", "subresource": "area-tag"}, {"delivery_value": "*", "origin": "*", "delivery_type": "*", "name": "worker-requests-with-swap-origin-redirect", "expectation": "*", "expansion": "*", "redirection": "swap-origin", "source_context_list": "*", "source_scheme": "*", "subresource": ["worker-classic", "worker-module", "sharedworker-classic"]}, {"delivery_value": "*", "origin": "*", "delivery_type": "*", "name": "overhead-for-redirection", "expectation": "*", "expansion": "*", "redirection": ["keep-origin", "swap-origin"], "source_context_list": "*", "source_scheme": "*", "subresource": ["a-tag", "area-tag"]}, {"delivery_value": "*", "origin": "*", "delivery_type": "*", "name": "source-https-unsupported-by-web-platform-tests-runners", "expectation": "*", "expansion": "*", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}, {"delivery_value": [null, "no-referrer-when-downgrade", "same-origin", "origin", "origin-when-cross-origin", "strict-origin", "strict-origin-when-cross-origin", "unsafe-url"], "origin": "*", "delivery_type": "rel-noref", "name": "<link rel=noreferrer>'s delivery_value should be no-referrer", "expectation": "*", "expansion": "*", "redirection": "*", "source_context_list": "*", "source_scheme": "*", "subresource": "*"}], "specification": [{"test_expansion": [{"delivery_value": null, "origin": ["same-http", "cross-http"], "delivery_type": "*", "name": "insecure-protocol", "expectation": "stripped-referrer", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "http", "subresource": "*"}, {"delivery_value": null, "origin": ["same-https", "cross-https"], "delivery_type": "*", "name": "upgrade-protocol", "expectation": "stripped-referrer", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "http", "subresource": "*"}, {"delivery_value": null, "origin": ["same-http", "cross-http"], "delivery_type": "*", "name": "downgrade-protocol", "expectation": "omitted", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}, {"delivery_value": null, "origin": ["same-https", "cross-https"], "delivery_type": "*", "name": "secure-protocol", "expectation": "stripped-referrer", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}], "description": "Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.", "specification_url": "https://w3c.github.io/webappsec-referrer-policy/#referrer-policies", "name": "unset-referrer-policy", "title": "Referrer Policy is not explicitly defined"}, {"test_expansion": [{"delivery_value": "no-referrer", "origin": "*", "delivery_type": "*", "name": "generic", "expectation": "omitted", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "*", "subresource": "*"}], "description": "Check that sub-resource never gets the referrer URL.", "specification_url": "https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer", "name": "no-referrer", "title": "Referrer Policy is set to 'no-referrer'"}, {"test_expansion": [{"delivery_value": "no-referrer-when-downgrade", "origin": ["same-http", "cross-http"], "delivery_type": "*", "name": "insecure-protocol", "expectation": "stripped-referrer", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "http", "subresource": "*"}, {"delivery_value": "no-referrer-when-downgrade", "origin": ["same-https", "cross-https"], "delivery_type": "*", "name": "upgrade-protocol", "expectation": "stripped-referrer", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "http", "subresource": "*"}, {"delivery_value": "no-referrer-when-downgrade", "origin": ["same-http", "cross-http"], "delivery_type": "*", "name": "downgrade-protocol", "expectation": "omitted", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}, {"delivery_value": "no-referrer-when-downgrade", "origin": ["same-https", "cross-https"], "delivery_type": "*", "name": "secure-protocol", "expectation": "stripped-referrer", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}], "description": "Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.", "specification_url": "https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade", "name": "no-referrer-when-downgrade", "title": "Referrer Policy is set to 'no-referrer-when-downgrade'"}, {"test_expansion": [{"delivery_value": "origin", "origin": "*", "delivery_type": "*", "name": "generic", "expectation": "origin", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "*", "subresource": "*"}], "description": "Check that all subresources in all casses get only the origin portion of the referrer URL.", "specification_url": "https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin", "name": "origin", "title": "Referrer Policy is set to 'origin'"}, {"test_expansion": [{"delivery_value": "same-origin", "origin": "same-http", "delivery_type": "*", "name": "same-origin-insecure", "expectation": "stripped-referrer", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "http", "subresource": "*"}, {"delivery_value": "same-origin", "origin": "same-https", "delivery_type": "*", "name": "same-origin-secure-default", "expectation": "stripped-referrer", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}, {"delivery_value": "same-origin", "origin": ["same-http", "same-https"], "delivery_type": "*", "name": "same-origin-insecure", "expectation": "omitted", "expansion": "override", "redirection": "swap-origin", "source_context_list": "*", "source_scheme": "*", "subresource": "*"}, {"delivery_value": "same-origin", "origin": ["cross-http", "cross-https"], "delivery_type": "*", "name": "cross-origin", "expectation": "omitted", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "*", "subresource": "*"}], "description": "Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.", "specification_url": "https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin", "name": "same-origin", "title": "Referrer Policy is set to 'same-origin'"}, {"test_expansion": [{"delivery_value": "origin-when-cross-origin", "origin": "same-http", "delivery_type": "*", "name": "same-origin-insecure", "expectation": "stripped-referrer", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "http", "subresource": "*"}, {"delivery_value": "origin-when-cross-origin", "origin": "same-https", "delivery_type": "*", "name": "same-origin-secure-default", "expectation": "stripped-referrer", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}, {"delivery_value": "origin-when-cross-origin", "origin": "same-https", "delivery_type": "*", "name": "same-origin-upgrade", "expectation": "origin", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "http", "subresource": "*"}, {"delivery_value": "origin-when-cross-origin", "origin": "same-http", "delivery_type": "*", "name": "same-origin-downgrade", "expectation": "origin", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}, {"delivery_value": "origin-when-cross-origin", "origin": ["same-http", "same-https"], "delivery_type": "*", "name": "same-origin-insecure", "expectation": "origin", "expansion": "override", "redirection": "swap-origin", "source_context_list": "*", "source_scheme": "*", "subresource": "*"}, {"delivery_value": "origin-when-cross-origin", "origin": ["cross-http", "cross-https"], "delivery_type": "*", "name": "cross-origin", "expectation": "origin", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "*", "subresource": "*"}], "description": "Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.", "specification_url": "https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin", "name": "origin-when-cross-origin", "title": "Referrer Policy is set to 'origin-when-cross-origin'"}, {"test_expansion": [{"delivery_value": "strict-origin", "origin": ["same-http", "cross-http"], "delivery_type": "*", "name": "insecure-protocol", "expectation": "origin", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "http", "subresource": "*"}, {"delivery_value": "strict-origin", "origin": ["same-https", "cross-https"], "delivery_type": "*", "name": "upgrade-protocol", "expectation": "origin", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "http", "subresource": "*"}, {"delivery_value": "strict-origin", "origin": ["same-http", "cross-http"], "delivery_type": "*", "name": "downgrade-protocol", "expectation": "omitted", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}, {"delivery_value": "strict-origin", "origin": ["same-https", "cross-https"], "delivery_type": "*", "name": "secure-protocol", "expectation": "origin", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}], "description": "Check that non a priori insecure subresource gets only the origin portion of the referrer URL. A priori insecure subresource gets no referrer information.", "specification_url": "https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin", "name": "strict-origin", "title": "Referrer Policy is set to 'strict-origin'"}, {"test_expansion": [{"delivery_value": "strict-origin-when-cross-origin", "origin": "same-http", "delivery_type": "*", "name": "same-insecure", "expectation": "stripped-referrer", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "http", "subresource": "*"}, {"delivery_value": "strict-origin-when-cross-origin", "origin": "same-http", "delivery_type": "*", "name": "same-insecure", "expectation": "origin", "expansion": "override", "redirection": "swap-origin", "source_context_list": "*", "source_scheme": "http", "subresource": "*"}, {"delivery_value": "strict-origin-when-cross-origin", "origin": "cross-http", "delivery_type": "*", "name": "cross-insecure", "expectation": "origin", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "http", "subresource": "*"}, {"delivery_value": "strict-origin-when-cross-origin", "origin": ["same-https", "cross-https"], "delivery_type": "*", "name": "upgrade-protocol", "expectation": "origin", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "http", "subresource": "*"}, {"delivery_value": "strict-origin-when-cross-origin", "origin": ["same-http", "cross-http"], "delivery_type": "*", "name": "downgrade-protocol", "expectation": "omitted", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}, {"delivery_value": "strict-origin-when-cross-origin", "origin": "same-https", "delivery_type": "*", "name": "same-secure", "expectation": "stripped-referrer", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}, {"delivery_value": "strict-origin-when-cross-origin", "origin": "same-https", "delivery_type": "*", "name": "same-secure", "expectation": "origin", "expansion": "override", "redirection": "swap-origin", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}, {"delivery_value": "strict-origin-when-cross-origin", "origin": "cross-https", "delivery_type": "*", "name": "cross-secure", "expectation": "origin", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}], "description": "Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.", "specification_url": "https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin", "name": "strict-origin-when-cross-origin", "title": "Referrer Policy is set to 'strict-origin-when-cross-origin'"}, {"test_expansion": [{"delivery_value": "unsafe-url", "origin": "*", "delivery_type": "*", "name": "generic", "expectation": "stripped-referrer", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "*", "subresource": "*"}], "description": "Check that all sub-resources get the stripped referrer URL.", "specification_url": "https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url", "name": "unsafe-url", "title": "Referrer Policy is set to 'unsafe-url'"}], "test_expansion_schema": {"delivery_value": [null, "no-referrer", "no-referrer-when-downgrade", "same-origin", "origin", "origin-when-cross-origin", "strict-origin", "strict-origin-when-cross-origin", "unsafe-url"], "origin": ["same-http", "same-https", "cross-http", "cross-https"], "delivery_type": ["attr", "rel-noref", "http-rp", "meta"], "subresource": ["iframe-tag", "img-tag", "script-tag", "a-tag", "area-tag", "xhr", "worker-classic", "worker-module", "sharedworker-classic", "fetch"], "expectation": ["omitted", "origin", "stripped-referrer"], "expansion": ["default", "override"], "redirection": ["no-redirect", "keep-origin", "swap-origin"], "source_context_list": ["top", "req", "srcdoc-inherit", "srcdoc", "iframe", "worker-classic", "worker-classic-data", "worker-module", "worker-module-data"], "source_scheme": ["http", "https"]}, "source_context_list_schema": {"srcdoc-inherit": {"subresourcePolicyDeliveries": [], "description": "srcdoc iframe should inherit parent Document's policy", "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["policy"]}, {"sourceContextType": "srcdoc"}]}, "worker-module": {"subresourcePolicyDeliveries": [], "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["anotherPolicy"]}, {"sourceContextType": "worker-module", "policyDeliveries": ["policy"]}]}, "worker-module-data": {"subresourcePolicyDeliveries": [], "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["anotherPolicy"]}, {"sourceContextType": "worker-module-data", "policyDeliveries": ["policy"]}]}, "worker-classic-data": {"subresourcePolicyDeliveries": [], "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["anotherPolicy"]}, {"sourceContextType": "worker-classic-data", "policyDeliveries": ["policy"]}]}, "top": {"subresourcePolicyDeliveries": [], "description": "Policy set by the top-level Document", "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["policy"]}]}, "req": {"subresourcePolicyDeliveries": ["nonNullPolicy"], "description": "Subresource request's policy should override Document's policy", "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["anotherPolicy"]}]}, "worker-classic": {"subresourcePolicyDeliveries": [], "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["anotherPolicy"]}, {"sourceContextType": "worker-classic", "policyDeliveries": ["policy"]}]}, "iframe": {"subresourcePolicyDeliveries": [], "description": "external iframe's policy should override parent Document's policy", "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["anotherPolicy"]}, {"sourceContextType": "iframe", "policyDeliveries": ["policy"]}]}, "srcdoc": {"subresourcePolicyDeliveries": [], "description": "srcdoc iframe's policy should override parent Document's policy", "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["anotherPolicy"]}, {"sourceContextType": "srcdoc", "policyDeliveries": ["nonNullPolicy"]}]}}, "delivery_key": "referrerPolicy", "source_context_schema": {"supported_delivery_type": {"iframe": ["meta", "http-rp"], "worker-module-data": [], "worker-classic-data": [], "top": ["meta", "http-rp"], "worker-classic": ["http-rp"], "iframe-blank": ["meta"], "worker-module": ["http-rp"], "srcdoc": ["meta"]}, "supported_subresource": {"iframe": "*", "worker-module-data": ["xhr", "fetch"], "worker-classic-data": ["xhr", "fetch"], "top": "*", "worker-classic": ["xhr", "fetch", "worker-classic", "worker-module"], "iframe-blank": "*", "worker-module": ["xhr", "fetch", "worker-classic", "worker-module"], "srcdoc": "*"}}};
diff --git a/tests/wpt/web-platform-tests/resources/chromium/webxr-test.js b/tests/wpt/web-platform-tests/resources/chromium/webxr-test.js
index b45ff20dbc4..54788b4ca3d 100644
--- a/tests/wpt/web-platform-tests/resources/chromium/webxr-test.js
+++ b/tests/wpt/web-platform-tests/resources/chromium/webxr-test.js
@@ -891,6 +891,11 @@ class MockXRInputSource {
case 'tracked-pointer':
input_desc.targetRayMode = device.mojom.XRTargetRayMode.POINTING;
break;
+ case 'screen':
+ input_desc.targetRayMode = device.mojom.XRTargetRayMode.TAPPING;
+ break;
+ default:
+ throw new Error('Unhandled target ray mode ' + this.target_ray_mode_);
}
switch (this.handedness_) {
diff --git a/tests/wpt/web-platform-tests/resources/test/conftest.py b/tests/wpt/web-platform-tests/resources/test/conftest.py
index 857f1b41bcb..a9f4203f279 100644
--- a/tests/wpt/web-platform-tests/resources/test/conftest.py
+++ b/tests/wpt/web-platform-tests/resources/test/conftest.py
@@ -2,11 +2,12 @@ import copy
import json
import os
import ssl
+import sys
+import subprocess
import html5lib
import py
import pytest
-from selenium import webdriver
from six import text_type
from six.moves import urllib
@@ -18,6 +19,9 @@ HARNESS = os.path.join(HERE, 'harness.html')
TEST_TYPES = ('functional', 'unit')
DEFAULT_VARIANTS = ["?default"]
+sys.path.insert(0, os.path.normpath(os.path.join(WPT_ROOT, "tools", "webdriver")))
+import webdriver
+
def pytest_addoption(parser):
parser.addoption("--binary", action="store", default=None, help="path to browser binary")
@@ -38,8 +42,16 @@ def pytest_collect_file(path, parent):
def pytest_configure(config):
- config.driver = webdriver.Firefox(firefox_binary=config.getoption("--binary"))
- config.add_cleanup(config.driver.quit)
+ config.proc = subprocess.Popen(["geckodriver"])
+ config.add_cleanup(config.proc.kill)
+
+ capabilities = {"alwaysMatch": {"acceptInsecureCerts": True}}
+ if config.getoption("--binary"):
+ capabilities["alwaysMatch"]["moz:firefoxOptions"] = {"binary": config.getoption("--binary")}
+
+ config.driver = webdriver.Session("localhost", 4444,
+ capabilities=capabilities)
+ config.add_cleanup(config.driver.end)
config.server = WPTServer(WPT_ROOT)
config.server.start()
@@ -149,7 +161,7 @@ class HTMLItem(pytest.Item, pytest.Collector):
driver = self.session.config.driver
server = self.session.config.server
- driver.get(server.url(HARNESS))
+ driver.url = server.url(HARNESS)
actual = driver.execute_async_script(
'runTest("%s", "foo", arguments[0])' % self.url
@@ -172,7 +184,7 @@ class HTMLItem(pytest.Item, pytest.Collector):
driver = self.session.config.driver
server = self.session.config.server
- driver.get(server.url(HARNESS))
+ driver.url = server.url(HARNESS)
test_url = self.url + variant
actual = driver.execute_async_script('runTest("%s", "foo", arguments[0])' % test_url)
diff --git a/tests/wpt/web-platform-tests/resources/test/tox.ini b/tests/wpt/web-platform-tests/resources/test/tox.ini
index d0c5186f156..a7a02e4b93b 100644
--- a/tests/wpt/web-platform-tests/resources/test/tox.ini
+++ b/tests/wpt/web-platform-tests/resources/test/tox.ini
@@ -10,7 +10,6 @@ deps =
html5lib
pytest>=2.9
pyvirtualdisplay
- selenium
six
requests
diff --git a/tests/wpt/web-platform-tests/tools/serve/serve.py b/tests/wpt/web-platform-tests/tools/serve/serve.py
index 1868b1a36e5..f33846bc24c 100644
--- a/tests/wpt/web-platform-tests/tools/serve/serve.py
+++ b/tests/wpt/web-platform-tests/tools/serve/serve.py
@@ -351,7 +351,7 @@ class RoutesBuilder(object):
if headers is None:
headers = {}
handler = handlers.StaticHandler(path, format_args, content_type, **headers)
- self.add_handler(b"GET", str(route), handler)
+ self.add_handler("GET", str(route), handler)
def add_mount_point(self, url_base, path):
url_base = "/%s/" % url_base.strip("/") if url_base != "/" else "/"
diff --git a/tests/wpt/web-platform-tests/tools/wpt/browser.py b/tests/wpt/web-platform-tests/tools/wpt/browser.py
index 3ee98d959ec..6dd2f5c4c90 100644
--- a/tests/wpt/web-platform-tests/tools/wpt/browser.py
+++ b/tests/wpt/web-platform-tests/tools/wpt/browser.py
@@ -6,14 +6,14 @@ import stat
import errno
import subprocess
import tempfile
-import urlparse
from abc import ABCMeta, abstractmethod
from datetime import datetime, timedelta
from distutils.spawn import find_executable
+from six.moves.urllib.parse import urlsplit
import requests
-from utils import call, get, untar, unzip
+from .utils import call, get, untar, unzip
uname = platform.uname()
@@ -172,7 +172,7 @@ class Firefox(Browser):
filename = filenames[0]
if not filename:
- filename = urlparse.urlsplit(resp.url).path.rsplit("/", 1)[1]
+ filename = urlsplit(resp.url).path.rsplit("/", 1)[1]
if not filename:
filename = "firefox.tar.bz2"
diff --git a/tests/wpt/web-platform-tests/tools/wpt/install.py b/tests/wpt/web-platform-tests/tools/wpt/install.py
index 24915f0c98d..3da697e5333 100644
--- a/tests/wpt/web-platform-tests/tools/wpt/install.py
+++ b/tests/wpt/web-platform-tests/tools/wpt/install.py
@@ -1,6 +1,6 @@
import argparse
-import browser
import sys
+from . import browser
latest_channels = {
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/requirements.txt b/tests/wpt/web-platform-tests/tools/wptrunner/requirements.txt
index 3cd01446e25..74a358ed10b 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/requirements.txt
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/requirements.txt
@@ -2,7 +2,8 @@ html5lib==1.0.1
mozinfo==1.1.0
mozlog==5.0
mozdebug==0.1.1
-pillow==6.2.1
+# Pillow 7 requires Python 3
+pillow==6.2.1 # pyup: <7.0
urllib3[secure]==1.25.7
requests==2.22.0
six==1.13.0
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/environment.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/environment.py
index 7dcea4aeafa..608b24dfd3a 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/environment.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/environment.py
@@ -192,7 +192,7 @@ class TestEnvironment(object):
data += fp.read()
with open(os.path.join(here, "testdriver-extra.js"), "rb") as fp:
data += fp.read()
- route_builder.add_handler(b"GET", b"/resources/testdriver.js",
+ route_builder.add_handler("GET", "/resources/testdriver.js",
StringHandler(data, "text/javascript"))
for url_base, paths in iteritems(self.test_paths):
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executormarionette.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executormarionette.py
index 01306397db7..837329fccb7 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executormarionette.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executormarionette.py
@@ -3,9 +3,10 @@ import os
import threading
import time
import traceback
-import urlparse
import uuid
+from six.moves.urllib.parse import urljoin
+
errors = None
marionette = None
pytestrunner = None
@@ -132,8 +133,7 @@ class MarionetteTestharnessProtocolPart(TestharnessProtocolPart):
# Check if we previously had a test window open, and if we did make sure it's closed
if self.runner_handle:
self._close_windows()
- url = urlparse.urljoin(self.parent.executor.server_url(url_protocol),
- "/testharness_runner.html")
+ url = urljoin(self.parent.executor.server_url(url_protocol), "/testharness_runner.html")
self.logger.debug("Loading %s" % url)
try:
self.dismiss_alert(lambda: self.marionette.navigate(url))
@@ -893,7 +893,7 @@ class InternalRefTestImplementation(RefTestImplementation):
def setup(self, screenshot="unexpected"):
data = {"screenshot": screenshot}
if self.executor.group_metadata is not None:
- data["urlCount"] = {urlparse.urljoin(self.executor.server_url(key[0]), key[1]):value
+ data["urlCount"] = {urljoin(self.executor.server_url(key[0]), key[1]):value
for key, value in self.executor.group_metadata.get("url_count", {}).iteritems()
if value > 1}
self.executor.protocol.marionette.set_context(self.executor.protocol.marionette.CONTEXT_CHROME)
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorservo.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorservo.py
index 2b8e865fa9b..8f8e120e66d 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorservo.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorservo.py
@@ -7,7 +7,7 @@ import tempfile
import threading
import traceback
import uuid
-from six import iteritems
+from six import ensure_str, iteritems
from mozprocess import ProcessHandler
@@ -260,10 +260,10 @@ class ServoRefTestExecutor(ProcessTestExecutor):
if rv != 0 or not os.path.exists(output_path):
return False, ("CRASH", None)
- with open(output_path) as f:
+ with open(output_path, "rb") as f:
# Might need to strip variable headers or something here
data = f.read()
- return True, base64.b64encode(data)
+ return True, ensure_str(base64.b64encode(data))
def do_test(self, test):
result = self.implementation.run_test(test)
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wpttest.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wpttest.py
index d650e98dfbf..bff61f3e776 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wpttest.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wpttest.py
@@ -93,7 +93,7 @@ class RunInfo(dict):
self._update_mozinfo(metadata_root)
self.update(mozinfo.info)
- from update.tree import GitTree
+ from .update.tree import GitTree
try:
# GitTree.__init__ throws if we are not in a git tree.
rev = GitTree(log_error=False).rev
diff --git a/tests/wpt/web-platform-tests/uievents/order-of-events/mouse-events/wheel-basic-manual.html b/tests/wpt/web-platform-tests/uievents/order-of-events/mouse-events/wheel-basic-manual.html
index 093951dfe49..c5a09f6cb4f 100644
--- a/tests/wpt/web-platform-tests/uievents/order-of-events/mouse-events/wheel-basic-manual.html
+++ b/tests/wpt/web-platform-tests/uievents/order-of-events/mouse-events/wheel-basic-manual.html
@@ -37,6 +37,7 @@
<script>
var wheelbox = document.getElementById("wheelbox");
var scrollbox = document.getElementById("scrollbox");
+ var test_wheel = async_test("wheel event test");
EventRecorder.configure({
mergeEventTypes: ['wheel'],
@@ -55,18 +56,20 @@
e.stopPropagation();
this.className = "green";
endTest();
- done();
+ test_wheel.done();
});
function endTest() {
EventRecorder.stop();
var results = EventRecorder.getRecords();
- // Check results:
- assert_equals(results.length, 2, "Two mousemove events");
- assert_equals(results[0].event.type, 'wheel', "First event is a wheel event");
- assert_equals(results[1].event.type, 'wheel', "Second event is a wheel event");
- assert_equals(results[0].event.target, 'div#wheelbox', "First event targetted wheelbox");
- assert_equals(results[1].event.target, 'div#scrollbox', "Second event targetted scrollbox");
+ test_wheel.step(function () {
+ // Check results:
+ assert_equals(results.length, 2, "Two mousemove events");
+ assert_equals(results[0].event.type, 'wheel', "First event is a wheel event");
+ assert_equals(results[1].event.type, 'wheel', "Second event is a wheel event");
+ assert_equals(results[0].event.target, 'div#wheelbox', "First event targetted wheelbox");
+ assert_equals(results[1].event.target, 'div#scrollbox', "Second event targetted scrollbox");
+ });
}
EventRecorder.start();
diff --git a/tests/wpt/web-platform-tests/uievents/order-of-events/mouse-events/wheel-scrolling-manual.html b/tests/wpt/web-platform-tests/uievents/order-of-events/mouse-events/wheel-scrolling-manual.html
index 5acae6d4777..cae4cf6523b 100644
--- a/tests/wpt/web-platform-tests/uievents/order-of-events/mouse-events/wheel-scrolling-manual.html
+++ b/tests/wpt/web-platform-tests/uievents/order-of-events/mouse-events/wheel-scrolling-manual.html
@@ -34,6 +34,7 @@
<script>
var wheelbox = document.getElementById("wheelbox");
+ var test_wheel_scrolling = async_test("wheel scrolling test");
EventRecorder.configure({
mergeEventTypes: ['wheel'],
@@ -46,16 +47,18 @@
e.stopPropagation();
this.className = "green";
endTest();
- done();
+ test_wheel_scrolling.done();
});
function endTest() {
EventRecorder.stop();
var results = EventRecorder.getRecords();
- // Check results:
- assert_equals(results.length, 1, "One mousemove event");
- assert_equals(results[0].event.type, 'wheel', "First event is a wheel event");
- assert_equals(results[0].event.target, 'div#wheelbox', "First event targetted wheelbox");
+ test_wheel_scrolling.step(function () {
+ // Check results:
+ assert_equals(results.length, 1, "One mousemove event");
+ assert_equals(results[0].event.type, 'wheel', "First event is a wheel event");
+ assert_equals(results[0].event.target, 'div#wheelbox', "First event targetted wheelbox");
+ });
}
EventRecorder.start();
diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/generic/spec_json.js b/tests/wpt/web-platform-tests/upgrade-insecure-requests/generic/spec_json.js
new file mode 100644
index 00000000000..89b17048e22
--- /dev/null
+++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/generic/spec_json.js
@@ -0,0 +1 @@
+var SPEC_JSON = {"subresource_schema": {"supported_delivery_type": {"worklet-layout": [], "worklet-paint": [], "worker-module": [], "sharedworker-classic": [], "worklet-paint-import-data": [], "worklet-animation-import-data": [], "fetch": [], "xhr": [], "worker-classic": [], "worklet-layout-import-data": [], "worklet-audio-import-data": [], "worklet-animation": [], "worker-import-data": [], "websocket": [], "worklet-audio": [], "iframe-tag": [], "img-tag": []}}, "source_context_list_schema": {"worker-classic-data": {"subresourcePolicyDeliveries": [], "description": "CSP set by the top-level Document is inherited to dedicated workers", "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["policy"]}, {"sourceContextType": "worker-classic-data", "policyDeliveries": []}]}, "top": {"subresourcePolicyDeliveries": [], "description": "CSP set by the top-level Document", "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["policy"]}]}, "srcdoc-inherit": {"subresourcePolicyDeliveries": [], "description": "srcdoc iframe should inherit parent Document's policy", "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["policy"]}, {"sourceContextType": "srcdoc"}]}, "iframe-blank-inherit": {"subresourcePolicyDeliveries": [], "description": "blank iframe should inherit parent Document's policy", "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["policy"]}, {"sourceContextType": "iframe-blank"}]}}, "test_page_title_template": "Upgrade-Insecure-Requests: %(title)s", "test_expansion_schema": {"delivery_value": [null, "upgrade"], "origin": ["same-https", "same-http-downgrade", "cross-https", "cross-http-downgrade", "same-wss", "same-ws-downgrade", "cross-wss", "cross-ws-downgrade"], "delivery_type": ["http-rp", "meta"], "subresource": ["iframe-tag", "img-tag", "xhr", "fetch", "websocket", "worker-classic", "worker-module", "worker-import-data", "sharedworker-classic", "worklet-animation", "worklet-audio", "worklet-layout", "worklet-paint", "worklet-animation-import-data", "worklet-audio-import-data", "worklet-layout-import-data", "worklet-paint-import-data"], "expectation": ["allowed", "blocked"], "expansion": ["default", "override"], "redirection": ["no-redirect", "downgrade"], "source_context_list": ["top", "srcdoc-inherit", "iframe-blank-inherit", "worker-classic-data"], "source_scheme": ["https"]}, "selection_pattern": "%(source_context_list)s.%(delivery_type)s/%(delivery_value)s/%(subresource)s/%(origin)s.%(redirection)s.%(source_scheme)s", "specification": [{"test_expansion": [{"delivery_value": null, "origin": "*", "delivery_type": "meta", "name": "Without upgrade-insecure-request, all requests are blocked ...", "expectation": "blocked", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}, {"delivery_value": null, "origin": ["same-https", "cross-https", "same-wss", "cross-wss"], "delivery_type": "meta", "name": "... except for the secure requests listed here", "expectation": "allowed", "expansion": "override", "redirection": "no-redirect", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}], "description": "No upgrade-insecure-request", "specification_url": "https://w3c.github.io/webappsec-upgrade-insecure-requests/", "name": "No upgrade-insecure-request", "title": "No upgrade-insecure-request"}, {"test_expansion": [{"delivery_value": "upgrade", "origin": "*", "delivery_type": "*", "name": "With upgrade-insecure-request, all insecure requests are upgraded and allowed.", "expectation": "allowed", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}], "description": "With upgrade-insecure-request", "specification_url": "https://w3c.github.io/webappsec-upgrade-insecure-requests/", "name": "With upgrade-insecure-request", "title": "With upgrade-insecure-request"}], "test_file_path_pattern": "gen/%(source_context_list)s.%(delivery_type)s/%(delivery_value)s/%(subresource)s/%(origin)s.%(redirection)s.%(source_scheme)s.html", "excluded_tests": [{"delivery_value": "*", "origin": ["same-https", "cross-https", "same-wss", "cross-wss"], "delivery_type": "*", "name": "Omit secure requests", "expectation": "allowed", "expansion": "*", "redirection": "no-redirect", "source_context_list": "*", "source_scheme": "*", "subresource": "*"}, {"delivery_value": "*", "origin": "*", "delivery_type": "http-rp", "name": "For inheriting tests skip http-rp because we already have <meta> tests", "expectation": "*", "expansion": "*", "redirection": "*", "source_context_list": ["srcdoc-inherit", "iframe-blank-inherit", "worker-classic-data"], "source_scheme": "*", "subresource": "*"}, {"delivery_value": "*", "origin": ["cross-https", "cross-http-downgrade", "cross-wss", "cross-ws-downgrade"], "delivery_type": "*", "name": "Workers are same-origin only", "expectation": "*", "expansion": "*", "redirection": "*", "source_context_list": "*", "source_scheme": "*", "subresource": ["worker-classic", "worker-module", "sharedworker-classic"]}, {"delivery_value": "*", "origin": ["same-https", "same-http-downgrade", "cross-https", "cross-http-downgrade"], "delivery_type": "*", "name": "Websockets are ws/wss-only", "expectation": "*", "expansion": "*", "redirection": "*", "source_context_list": "*", "source_scheme": "*", "subresource": "websocket"}, {"delivery_value": "*", "origin": "*", "delivery_type": "*", "name": "Websockets is no-redirect only", "expectation": "*", "expansion": "*", "redirection": ["downgrade"], "source_context_list": "*", "source_scheme": "*", "subresource": "websocket"}, {"delivery_value": "*", "origin": ["same-wss", "same-ws-downgrade", "cross-wss", "cross-ws-downgrade"], "delivery_type": "*", "name": "ws/wss are websocket-only", "expectation": "*", "expansion": "*", "redirection": "*", "source_context_list": "*", "source_scheme": "*", "subresource": ["iframe-tag", "img-tag", "xhr", "fetch", "worker-classic", "worker-module", "worker-import-data", "sharedworker-classic", "worklet-animation", "worklet-audio", "worklet-layout", "worklet-paint", "worklet-animation-import-data", "worklet-audio-import-data", "worklet-layout-import-data", "worklet-paint-import-data"]}], "delivery_key": "upgradeInsecureRequests", "test_description_template": "Upgrade-Insecure-Requests: Expects %(expectation)s for %(subresource)s to %(origin)s origin and %(redirection)s redirection from %(source_scheme)s context.", "source_context_schema": {"supported_delivery_type": {"iframe": ["http-rp", "meta"], "worker-module-data": [], "worker-classic-data": [], "top": ["http-rp", "meta"], "worker-classic": ["http-rp"], "iframe-blank": ["meta"], "worker-module": ["http-rp"], "srcdoc": ["meta"]}, "supported_subresource": {"iframe": "*", "worker-module-data": ["xhr", "fetch", "websocket"], "worker-classic-data": ["xhr", "fetch", "websocket"], "top": "*", "worker-classic": ["xhr", "fetch", "websocket"], "iframe-blank": "*", "worker-module": ["xhr", "fetch", "websocket"], "srcdoc": "*"}}};
diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/generic/tools/generate.py b/tests/wpt/web-platform-tests/upgrade-insecure-requests/generic/tools/generate.py
deleted file mode 100755
index 4c19f4c34da..00000000000
--- a/tests/wpt/web-platform-tests/upgrade-insecure-requests/generic/tools/generate.py
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/usr/bin/env python
-
-import os
-import sys
-
-sys.path.insert(
- 0,
- os.path.join(
- os.path.dirname(os.path.abspath(__file__)), '..', '..', '..', 'common',
- 'security-features', 'tools'))
-import generate
-
-
-class UpgradeInsecureRequestsConfig(object):
- def __init__(self):
- self.selection_pattern = \
- '%(source_context_list)s.%(delivery_type)s/' + \
- '%(delivery_value)s/' + \
- '%(subresource)s/' + \
- '%(origin)s.%(redirection)s.%(source_scheme)s'
-
- self.test_file_path_pattern = 'gen/' + self.selection_pattern + '.html'
-
- self.test_description_template = 'Upgrade-Insecure-Requests: Expects %(expectation)s for %(subresource)s to %(origin)s origin and %(redirection)s redirection from %(source_scheme)s context.'
-
- self.test_page_title_template = 'Upgrade-Insecure-Requests: %s'
-
- self.helper_js = '/upgrade-insecure-requests/generic/test-case.sub.js'
-
- # For debug target only.
- self.sanity_checker_js = '/upgrade-insecure-requests/generic/sanity-checker.js'
- self.spec_json_js = '/upgrade-insecure-requests/spec_json.js'
-
- script_directory = os.path.dirname(os.path.abspath(__file__))
- self.spec_directory = os.path.abspath(
- os.path.join(script_directory, '..', '..'))
-
-
-if __name__ == '__main__':
- generate.main(UpgradeInsecureRequestsConfig())
diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/spec.src.json b/tests/wpt/web-platform-tests/upgrade-insecure-requests/spec.src.json
index 6aee9a280b0..dcf63008f63 100644
--- a/tests/wpt/web-platform-tests/upgrade-insecure-requests/spec.src.json
+++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/spec.src.json
@@ -1,4 +1,8 @@
{
+ "selection_pattern": "%(source_context_list)s.%(delivery_type)s/%(delivery_value)s/%(subresource)s/%(origin)s.%(redirection)s.%(source_scheme)s",
+ "test_file_path_pattern": "gen/%(source_context_list)s.%(delivery_type)s/%(delivery_value)s/%(subresource)s/%(origin)s.%(redirection)s.%(source_scheme)s.html",
+ "test_description_template": "Upgrade-Insecure-Requests: Expects %(expectation)s for %(subresource)s to %(origin)s origin and %(redirection)s redirection from %(source_scheme)s context.",
+ "test_page_title_template": "Upgrade-Insecure-Requests: %(title)s",
"specification": [
{
"name": "No upgrade-insecure-request",
diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/spec_json.js b/tests/wpt/web-platform-tests/upgrade-insecure-requests/spec_json.js
deleted file mode 100644
index 9122ce38e31..00000000000
--- a/tests/wpt/web-platform-tests/upgrade-insecure-requests/spec_json.js
+++ /dev/null
@@ -1 +0,0 @@
-var SPEC_JSON = {"subresource_schema": {"supported_delivery_type": {"worklet-layout": [], "worklet-paint": [], "worker-module": [], "sharedworker-classic": [], "worklet-paint-import-data": [], "worklet-animation-import-data": [], "fetch": [], "xhr": [], "worker-classic": [], "worklet-layout-import-data": [], "worklet-audio-import-data": [], "worklet-animation": [], "worker-import-data": [], "websocket": [], "worklet-audio": [], "iframe-tag": [], "img-tag": []}}, "excluded_tests": [{"delivery_value": "*", "origin": ["same-https", "cross-https", "same-wss", "cross-wss"], "delivery_type": "*", "name": "Omit secure requests", "expectation": "allowed", "expansion": "*", "redirection": "no-redirect", "source_context_list": "*", "source_scheme": "*", "subresource": "*"}, {"delivery_value": "*", "origin": "*", "delivery_type": "http-rp", "name": "For inheriting tests skip http-rp because we already have <meta> tests", "expectation": "*", "expansion": "*", "redirection": "*", "source_context_list": ["srcdoc-inherit", "iframe-blank-inherit", "worker-classic-data"], "source_scheme": "*", "subresource": "*"}, {"delivery_value": "*", "origin": ["cross-https", "cross-http-downgrade", "cross-wss", "cross-ws-downgrade"], "delivery_type": "*", "name": "Workers are same-origin only", "expectation": "*", "expansion": "*", "redirection": "*", "source_context_list": "*", "source_scheme": "*", "subresource": ["worker-classic", "worker-module", "sharedworker-classic"]}, {"delivery_value": "*", "origin": ["same-https", "same-http-downgrade", "cross-https", "cross-http-downgrade"], "delivery_type": "*", "name": "Websockets are ws/wss-only", "expectation": "*", "expansion": "*", "redirection": "*", "source_context_list": "*", "source_scheme": "*", "subresource": "websocket"}, {"delivery_value": "*", "origin": "*", "delivery_type": "*", "name": "Websockets is no-redirect only", "expectation": "*", "expansion": "*", "redirection": ["downgrade"], "source_context_list": "*", "source_scheme": "*", "subresource": "websocket"}, {"delivery_value": "*", "origin": ["same-wss", "same-ws-downgrade", "cross-wss", "cross-ws-downgrade"], "delivery_type": "*", "name": "ws/wss are websocket-only", "expectation": "*", "expansion": "*", "redirection": "*", "source_context_list": "*", "source_scheme": "*", "subresource": ["iframe-tag", "img-tag", "xhr", "fetch", "worker-classic", "worker-module", "worker-import-data", "sharedworker-classic", "worklet-animation", "worklet-audio", "worklet-layout", "worklet-paint", "worklet-animation-import-data", "worklet-audio-import-data", "worklet-layout-import-data", "worklet-paint-import-data"]}], "specification": [{"test_expansion": [{"delivery_value": null, "origin": "*", "delivery_type": "meta", "name": "Without upgrade-insecure-request, all requests are blocked ...", "expectation": "blocked", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}, {"delivery_value": null, "origin": ["same-https", "cross-https", "same-wss", "cross-wss"], "delivery_type": "meta", "name": "... except for the secure requests listed here", "expectation": "allowed", "expansion": "override", "redirection": "no-redirect", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}], "description": "No upgrade-insecure-request", "specification_url": "https://w3c.github.io/webappsec-upgrade-insecure-requests/", "name": "No upgrade-insecure-request", "title": "No upgrade-insecure-request"}, {"test_expansion": [{"delivery_value": "upgrade", "origin": "*", "delivery_type": "*", "name": "With upgrade-insecure-request, all insecure requests are upgraded and allowed.", "expectation": "allowed", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}], "description": "With upgrade-insecure-request", "specification_url": "https://w3c.github.io/webappsec-upgrade-insecure-requests/", "name": "With upgrade-insecure-request", "title": "With upgrade-insecure-request"}], "test_expansion_schema": {"delivery_value": [null, "upgrade"], "origin": ["same-https", "same-http-downgrade", "cross-https", "cross-http-downgrade", "same-wss", "same-ws-downgrade", "cross-wss", "cross-ws-downgrade"], "delivery_type": ["http-rp", "meta"], "subresource": ["iframe-tag", "img-tag", "xhr", "fetch", "websocket", "worker-classic", "worker-module", "worker-import-data", "sharedworker-classic", "worklet-animation", "worklet-audio", "worklet-layout", "worklet-paint", "worklet-animation-import-data", "worklet-audio-import-data", "worklet-layout-import-data", "worklet-paint-import-data"], "expectation": ["allowed", "blocked"], "expansion": ["default", "override"], "redirection": ["no-redirect", "downgrade"], "source_context_list": ["top", "srcdoc-inherit", "iframe-blank-inherit", "worker-classic-data"], "source_scheme": ["https"]}, "source_context_list_schema": {"worker-classic-data": {"subresourcePolicyDeliveries": [], "description": "CSP set by the top-level Document is inherited to dedicated workers", "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["policy"]}, {"sourceContextType": "worker-classic-data", "policyDeliveries": []}]}, "top": {"subresourcePolicyDeliveries": [], "description": "CSP set by the top-level Document", "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["policy"]}]}, "srcdoc-inherit": {"subresourcePolicyDeliveries": [], "description": "srcdoc iframe should inherit parent Document's policy", "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["policy"]}, {"sourceContextType": "srcdoc"}]}, "iframe-blank-inherit": {"subresourcePolicyDeliveries": [], "description": "blank iframe should inherit parent Document's policy", "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["policy"]}, {"sourceContextType": "iframe-blank"}]}}, "delivery_key": "upgradeInsecureRequests", "source_context_schema": {"supported_delivery_type": {"iframe": ["http-rp", "meta"], "worker-module-data": [], "worker-classic-data": [], "top": ["http-rp", "meta"], "worker-classic": ["http-rp"], "iframe-blank": ["meta"], "worker-module": ["http-rp"], "srcdoc": ["meta"]}, "supported_subresource": {"iframe": "*", "worker-module-data": ["xhr", "fetch", "websocket"], "worker-classic-data": ["xhr", "fetch", "websocket"], "top": "*", "worker-classic": ["xhr", "fetch", "websocket"], "iframe-blank": "*", "worker-module": ["xhr", "fetch", "websocket"], "srcdoc": "*"}}};
diff --git a/tests/wpt/web-platform-tests/webrtc/RTCDTMFSender-insertDTMF.https.html b/tests/wpt/web-platform-tests/webrtc/RTCDTMFSender-insertDTMF.https.html
index 8ac144bab92..62a5f0472c1 100644
--- a/tests/wpt/web-platform-tests/webrtc/RTCDTMFSender-insertDTMF.https.html
+++ b/tests/wpt/web-platform-tests/webrtc/RTCDTMFSender-insertDTMF.https.html
@@ -119,7 +119,7 @@
const offer = await caller.createOffer();
await caller.setLocalDescription(offer);
await callee.setRemoteDescription(offer);
- const stream = await navigator.mediaDevices.getUserMedia({audio: true});
+ const stream = await getNoiseStream({audio: true});
t.add_cleanup(() => stream.getTracks().forEach(track => track.stop()));
const [track] = stream.getTracks();
callee.addTrack(track, stream);
diff --git a/tests/wpt/web-platform-tests/webrtc/RTCIceConnectionState-candidate-pair.https.html b/tests/wpt/web-platform-tests/webrtc/RTCIceConnectionState-candidate-pair.https.html
index 6c93aec9260..0752c9aaee6 100644
--- a/tests/wpt/web-platform-tests/webrtc/RTCIceConnectionState-candidate-pair.https.html
+++ b/tests/wpt/web-platform-tests/webrtc/RTCIceConnectionState-candidate-pair.https.html
@@ -14,7 +14,7 @@ promise_test(async t => {
const callee = new RTCPeerConnection();
t.add_cleanup(() => callee.close());
- const stream = await navigator.mediaDevices.getUserMedia({audio:true});
+ const stream = await getNoiseStream({audio:true});
const [track] = stream.getTracks();
caller.addTrack(track, stream);
exchangeIceCandidates(caller, callee);
diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-addTrack.https.html b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-addTrack.https.html
index 1550fc4f794..3f4f927883d 100644
--- a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-addTrack.https.html
+++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-addTrack.https.html
@@ -190,7 +190,7 @@
assert_equals(transceiver.sender.track, null);
assert_equals(transceiver.direction, 'sendrecv');
- const stream = await navigator.mediaDevices.getUserMedia({audio: true});
+ const stream = await getNoiseStream({audio: true});
t.add_cleanup(() => stream.getTracks().forEach(track => track.stop()));
const [track] = stream.getTracks();
const sender = pc.addTrack(track);
@@ -205,7 +205,7 @@
const callee = new RTCPeerConnection();
t.add_cleanup(() => callee.close());
- const stream = await navigator.mediaDevices.getUserMedia({audio: true});
+ const stream = await getNoiseStream({audio: true});
t.add_cleanup(() => stream.getTracks().forEach(track => track.stop()));
const [track] = stream.getTracks();
const transceiver = caller.addTransceiver(track);
@@ -246,7 +246,7 @@
assert_equals(transceiver.sender.track, null);
assert_equals(transceiver.direction, 'recvonly');
- const stream = await navigator.mediaDevices.getUserMedia({audio: true});
+ const stream = await getNoiseStream({audio: true});
t.add_cleanup(() => stream.getTracks().forEach(track => track.stop()));
const [track] = stream.getTracks();
const sender = pc.addTrack(track);
diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-addTransceiver.https.html b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-addTransceiver.https.html
index 6df056117d0..3640bfb31cd 100644
--- a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-addTransceiver.https.html
+++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-addTransceiver.https.html
@@ -3,6 +3,7 @@
<title>RTCPeerConnection.prototype.addTransceiver</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
+<script src="RTCPeerConnection-helper.js"></script>
<script>
'use strict';
@@ -244,7 +245,7 @@
const pc = new RTCPeerConnection();
t.add_cleanup(() => pc.close());
- const stream = await navigator.mediaDevices.getUserMedia({audio: true});
+ const stream = await getNoiseStream({audio: true});
t.add_cleanup(() => stream.getTracks().forEach(track => track.stop()));
const [track] = stream.getTracks();
const transceiver = pc.addTransceiver(track);
@@ -284,7 +285,7 @@
const pc = new RTCPeerConnection();
t.add_cleanup(() => pc.close());
- const stream = await navigator.mediaDevices.getUserMedia({audio: true});
+ const stream = await getNoiseStream({audio: true});
t.add_cleanup(() => stream.getTracks().forEach(track => track.stop()));
const [track] = stream.getTracks();
const transceiver1 = pc.addTransceiver(track);
diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-connectionState.https.html b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-connectionState.https.html
index a054a1e8ccc..9e2f3649aec 100644
--- a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-connectionState.https.html
+++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-connectionState.https.html
@@ -239,7 +239,7 @@
t.add_cleanup(() => caller.close());
const callee = new RTCPeerConnection();
t.add_cleanup(() => callee.close());
- const stream = await navigator.mediaDevices.getUserMedia({audio: true});
+ const stream = await getNoiseStream({audio: true});
t.add_cleanup(() => stream.getTracks().forEach(track => track.stop()));
const [track] = stream.getTracks();
caller.addTrack(track, stream);
@@ -256,7 +256,7 @@
t.add_cleanup(() => caller.close());
const callee = new RTCPeerConnection();
t.add_cleanup(() => callee.close());
- const stream = await navigator.mediaDevices.getUserMedia({audio: true});
+ const stream = await getNoiseStream({audio: true});
t.add_cleanup(() => stream.getTracks().forEach(track => track.stop()));
const [track] = stream.getTracks();
caller.addTrack(track, stream);
diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-iceConnectionState-disconnected.https.html b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-iceConnectionState-disconnected.https.html
index dbfc41e0c37..ff405f32851 100644
--- a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-iceConnectionState-disconnected.https.html
+++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-iceConnectionState-disconnected.https.html
@@ -13,7 +13,7 @@
const callee = new RTCPeerConnection();
t.add_cleanup(() => callee.close());
- const stream = await navigator.mediaDevices.getUserMedia({audio:true});
+ const stream = await getNoiseStream({audio:true});
t.add_cleanup(() => stream.getTracks().forEach(track => track.stop()));
const [track] = stream.getTracks();
caller.addTrack(track, stream);
diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-iceConnectionState.https.html b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-iceConnectionState.https.html
index a2b2827b849..a5bf7536ff5 100644
--- a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-iceConnectionState.https.html
+++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-iceConnectionState.https.html
@@ -223,7 +223,7 @@ async_test(t => {
t.add_cleanup(() => callee.close());
caller.addTransceiver('audio', {direction:'recvonly'});
- const stream = await navigator.mediaDevices.getUserMedia({audio:true});
+ const stream = await getNoiseStream({audio:true});
t.add_cleanup(() => stream.getTracks().forEach(track => track.stop()));
const [track] = stream.getTracks();
callee.addTrack(track, stream);
@@ -285,7 +285,7 @@ for (let bundle_policy of ['balanced', 'max-bundle', 'max-compat']) {
promise_test(async t => {
const caller = new RTCPeerConnection({bundlePolicy: bundle_policy});
t.add_cleanup(() => caller.close());
- const stream = await navigator.mediaDevices.getUserMedia(
+ const stream = await getNoiseStream(
{audio: true, video:true});
t.add_cleanup(() => stream.getTracks().forEach(track => track.stop()));
const [track1, track2] = stream.getTracks();
@@ -341,9 +341,9 @@ promise_test(async t => {
pc2.iceStates.push(pc2.iceConnectionState);
};
- const localStream = await navigator.mediaDevices.getUserMedia({audio: true, video: true});
- const localStream2 = await navigator.mediaDevices.getUserMedia({audio: true, video: true});
- const remoteStream = await navigator.mediaDevices.getUserMedia({audio: true, video: true});
+ const localStream = await getNoiseStream({audio: true, video: true});
+ const localStream2 = await getNoiseStream({audio: true, video: true});
+ const remoteStream = await getNoiseStream({audio: true, video: true});
for (const stream of [localStream, localStream2, remoteStream]) {
t.add_cleanup(() => stream.getTracks().forEach(track => track.stop()));
}
diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-onsignalingstatechanged.https.html b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-onsignalingstatechanged.https.html
index fc3182d3d59..c09285956df 100644
--- a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-onsignalingstatechanged.https.html
+++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-onsignalingstatechanged.https.html
@@ -7,7 +7,7 @@
<script>
promise_test(async t => {
- const [track] = (await navigator.mediaDevices.getUserMedia({video: true})).getTracks();
+ const [track] = (await getNoiseStream({video: true})).getTracks();
t.add_cleanup(() => track.stop());
const pc1 = new RTCPeerConnection();
t.add_cleanup(() => pc1.close());
diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-removeTrack.https.html b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-removeTrack.https.html
index f2add7f0d34..10b4cfb3a61 100644
--- a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-removeTrack.https.html
+++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-removeTrack.https.html
@@ -36,7 +36,7 @@
*/
promise_test(async t => {
const pc = new RTCPeerConnection();
- const stream = await navigator.mediaDevices.getUserMedia({audio: true});
+ const stream = await getNoiseStream({audio: true});
t.add_cleanup(() => stream.getTracks().forEach(track => track.stop()));
const [track] = stream.getTracks();
const transceiver = pc.addTransceiver(track);
@@ -62,7 +62,7 @@
promise_test(async t => {
const pc = new RTCPeerConnection();
t.add_cleanup(() => pc.close());
- const stream = await navigator.mediaDevices.getUserMedia({audio: true});
+ const stream = await getNoiseStream({audio: true});
t.add_cleanup(() => stream.getTracks().forEach(track => track.stop()));
const [track] = stream.getTracks();
const transceiver = pc.addTransceiver(track);
@@ -94,7 +94,7 @@
promise_test(async t => {
const pc = new RTCPeerConnection();
t.add_cleanup(() => pc.close());
- const stream = await navigator.mediaDevices.getUserMedia({audio: true});
+ const stream = await getNoiseStream({audio: true});
t.add_cleanup(() => stream.getTracks().forEach(track => track.stop()));
const [track] = stream.getTracks();
const transceiver = pc.addTransceiver(track);
@@ -126,7 +126,7 @@
promise_test(async t => {
const pc = new RTCPeerConnection();
t.add_cleanup(() => pc.close());
- const stream = await navigator.mediaDevices.getUserMedia({audio: true});
+ const stream = await getNoiseStream({audio: true});
t.add_cleanup(() => stream.getTracks().forEach(track => track.stop()));
const [track] = stream.getTracks();
const transceiver = pc.addTransceiver(track);
@@ -167,7 +167,7 @@
t.add_cleanup(() => caller.close());
const callee = new RTCPeerConnection();
t.add_cleanup(() => callee.close());
- const stream = await navigator.mediaDevices.getUserMedia({audio: true});
+ const stream = await getNoiseStream({audio: true});
t.add_cleanup(() => stream.getTracks().forEach(track => track.stop()));
const [track] = stream.getTracks();
const transceiver = caller.addTransceiver(track);
@@ -202,7 +202,7 @@
promise_test(async t => {
const pc = new RTCPeerConnection();
t.add_cleanup(() => pc.close());
- const stream = await navigator.mediaDevices.getUserMedia({audio: true});
+ const stream = await getNoiseStream({audio: true});
t.add_cleanup(() => stream.getTracks().forEach(track => track.stop()));
const [track] = stream.getTracks();
const transceiver = pc.addTransceiver(track, { direction: 'sendonly' });
@@ -236,7 +236,7 @@
t.add_cleanup(() => caller.close());
const callee = new RTCPeerConnection();
t.add_cleanup(() => callee.close());
- const stream = await navigator.mediaDevices.getUserMedia({audio: true});
+ const stream = await getNoiseStream({audio: true});
t.add_cleanup(() => stream.getTracks().forEach(track => track.stop()));
const [track] = stream.getTracks();
const transceiver = caller.addTransceiver(track, { direction: 'recvonly' });
@@ -270,7 +270,7 @@
promise_test(async t => {
const pc = new RTCPeerConnection();
t.add_cleanup(() => pc.close());
- const stream = await navigator.mediaDevices.getUserMedia({audio: true});
+ const stream = await getNoiseStream({audio: true});
t.add_cleanup(() => stream.getTracks().forEach(track => track.stop()));
const [track] = stream.getTracks();
const transceiver = pc.addTransceiver(track, { direction: 'inactive' });
@@ -295,7 +295,7 @@
promise_test(async t => {
const pc = new RTCPeerConnection();
t.add_cleanup(() => pc.close());
- const stream = await navigator.mediaDevices.getUserMedia({audio: true});
+ const stream = await getNoiseStream({audio: true});
t.add_cleanup(() => stream.getTracks().forEach(track => track.stop()));
const [track] = stream.getTracks();
const sender = pc.addTrack(track, stream);
diff --git a/tests/wpt/web-platform-tests/webrtc/RTCRtpReceiver-getContributingSources.https.html b/tests/wpt/web-platform-tests/webrtc/RTCRtpReceiver-getContributingSources.https.html
index aa59f1b910a..7245d477cc8 100644
--- a/tests/wpt/web-platform-tests/webrtc/RTCRtpReceiver-getContributingSources.https.html
+++ b/tests/wpt/web-platform-tests/webrtc/RTCRtpReceiver-getContributingSources.https.html
@@ -13,7 +13,7 @@ async function connectAndExpectNoCsrcs(t, kind) {
const pc2 = new RTCPeerConnection();
t.add_cleanup(() => pc2.close());
- const stream = await navigator.mediaDevices.getUserMedia({[kind]:true});
+ const stream = await getNoiseStream({[kind]:true});
const [track] = stream.getTracks();
t.add_cleanup(() => track.stop());
pc1.addTrack(track, stream);
diff --git a/tests/wpt/web-platform-tests/webrtc/RTCRtpReceiver-getSynchronizationSources.https.html b/tests/wpt/web-platform-tests/webrtc/RTCRtpReceiver-getSynchronizationSources.https.html
index a78ede0d908..8436a44ebcd 100644
--- a/tests/wpt/web-platform-tests/webrtc/RTCRtpReceiver-getSynchronizationSources.https.html
+++ b/tests/wpt/web-platform-tests/webrtc/RTCRtpReceiver-getSynchronizationSources.https.html
@@ -15,7 +15,7 @@ async function initiateSingleTrackCallAndReturnReceiver(t, kind) {
const pc2 = new RTCPeerConnection();
t.add_cleanup(() => pc2.close());
- const stream = await navigator.mediaDevices.getUserMedia({[kind]:true});
+ const stream = await getNoiseStream({[kind]:true});
const [track] = stream.getTracks();
t.add_cleanup(() => track.stop());
pc1.addTrack(track, stream);
diff --git a/tests/wpt/web-platform-tests/webrtc/RTCRtpSender-transport.https.html b/tests/wpt/web-platform-tests/webrtc/RTCRtpSender-transport.https.html
index 8c0552dd68a..cd419ebc186 100644
--- a/tests/wpt/web-platform-tests/webrtc/RTCRtpSender-transport.https.html
+++ b/tests/wpt/web-platform-tests/webrtc/RTCRtpSender-transport.https.html
@@ -13,7 +13,7 @@
promise_test(async t => {
const caller = new RTCPeerConnection();
t.add_cleanup(() => caller.close());
- const stream = await navigator.mediaDevices.getUserMedia({audio: true});
+ const stream = await getNoiseStream({audio: true});
t.add_cleanup(() => stream.getTracks().forEach(track => track.stop()));
const [track] = stream.getTracks();
const sender = caller.addTrack(track);
@@ -24,7 +24,7 @@
promise_test(async t => {
const caller = new RTCPeerConnection();
t.add_cleanup(() => caller.close());
- const stream = await navigator.mediaDevices.getUserMedia({audio: true});
+ const stream = await getNoiseStream({audio: true});
t.add_cleanup(() => stream.getTracks().forEach(track => track.stop()));
const [track] = stream.getTracks();
const sender = caller.addTrack(track);
@@ -45,7 +45,7 @@
promise_test(async t => {
const caller = new RTCPeerConnection({bundlePolicy: bundle_policy});
t.add_cleanup(() => caller.close());
- const stream = await navigator.mediaDevices.getUserMedia(
+ const stream = await getNoiseStream(
{audio: true, video:true});
t.add_cleanup(() => stream.getTracks().forEach(track => track.stop()));
const [track1, track2] = stream.getTracks();
@@ -91,7 +91,7 @@
promise_test(async t => {
const caller = new RTCPeerConnection({bundlePolicy: bundle_policy});
t.add_cleanup(() => caller.close());
- const stream = await navigator.mediaDevices.getUserMedia(
+ const stream = await getNoiseStream(
{audio: true, video:true});
t.add_cleanup(() => stream.getTracks().forEach(track => track.stop()));
const [track1, track2] = stream.getTracks();
diff --git a/tests/wpt/web-platform-tests/webrtc/RTCRtpTransceiver.https.html b/tests/wpt/web-platform-tests/webrtc/RTCRtpTransceiver.https.html
index 67571895175..36708d11ec8 100644
--- a/tests/wpt/web-platform-tests/webrtc/RTCRtpTransceiver.https.html
+++ b/tests/wpt/web-platform-tests/webrtc/RTCRtpTransceiver.https.html
@@ -448,7 +448,7 @@
t.add_cleanup(() => pc1.close());
t.add_cleanup(() => pc2.close());
- const stream = await navigator.mediaDevices.getUserMedia({audio: true});
+ const stream = await getNoiseStream({audio: true});
t.add_cleanup(() => stopTracks(stream));
const track = stream.getAudioTracks()[0];
pc1.addTrack(track, stream);
diff --git a/tests/wpt/web-platform-tests/webxr/ar-module/xrDevice_isSessionSupported_immersive-ar.https.html b/tests/wpt/web-platform-tests/webxr/ar-module/xrDevice_isSessionSupported_immersive-ar.https.html
new file mode 100644
index 00000000000..2cd36a17f62
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webxr/ar-module/xrDevice_isSessionSupported_immersive-ar.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<body>
+ <script src=/resources/testharness.js></script>
+ <script src=/resources/testharnessreport.js></script>
+ <script src="../resources/webxr_util.js"></script>
+ <script src="../resources/webxr_test_constants.js"></script>
+ <script>
+ xr_promise_test(
+ "isSessionSupported resolves to true for immersive-ar on a supported device",
+ (t) => {
+ return navigator.xr.test.simulateDeviceConnection(IMMERSIVE_AR_DEVICE)
+ .then( (controller) => {
+ return navigator.xr.isSessionSupported('immersive-ar').then((supported) => {
+ t.step(() => {
+ assert_true(supported);
+ });
+ });
+ });
+ });
+
+ xr_promise_test(
+ "isSessionSupported resolves to false for immersive-ar on an unsupported device",
+ (t) => {
+ return navigator.xr.test.simulateDeviceConnection(TRACKED_IMMERSIVE_DEVICE)
+ .then( (controller) => {
+ return navigator.xr.isSessionSupported('immersive-ar').then((supported) => {
+ t.step(() => {
+ assert_false(supported);
+ });
+ });
+ });
+ });
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/webxr/ar-module/xrDevice_requestSession_immersive-ar.https.html b/tests/wpt/web-platform-tests/webxr/ar-module/xrDevice_requestSession_immersive-ar.https.html
new file mode 100644
index 00000000000..c3fdeb34db0
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webxr/ar-module/xrDevice_requestSession_immersive-ar.https.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+<body>
+ <script src=/resources/testharness.js></script>
+ <script src=/resources/testharnessreport.js></script>
+ <script src="../resources/webxr_util.js"></script>
+ <script src="../resources/webxr_test_constants.js"></script>
+ <canvas></canvas>
+ <script>
+ xr_session_promise_test(
+ "Tests requestSession accepts immersive-ar mode",
+ (session) => {
+ assert_not_equals(session, null);
+ }, IMMERSIVE_AR_DEVICE, 'immersive-ar', {});
+
+ xr_promise_test(
+ "Tests requestSession rejects immersive-ar mode when unsupported",
+ (t) => {
+ return navigator.xr.test.simulateDeviceConnection(TRACKED_IMMERSIVE_DEVICE)
+ .then((controller) => new Promise((resolve) => {
+ navigator.xr.test.simulateUserActivation(() => {
+ resolve(promise_rejects(
+ t, "NotSupportedError",
+ navigator.xr.requestSession('immersive-ar', {})));
+ });
+ }));
+ });
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/webxr/ar-module/xrSession_environmentBlendMode.https.html b/tests/wpt/web-platform-tests/webxr/ar-module/xrSession_environmentBlendMode.https.html
new file mode 100644
index 00000000000..da2ddc28d8d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webxr/ar-module/xrSession_environmentBlendMode.https.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<body>
+ <script src=/resources/testharness.js></script>
+ <script src=/resources/testharnessreport.js></script>
+ <script src="../resources/webxr_util.js"></script>
+ <script src="../resources/webxr_test_constants.js"></script>
+ <canvas></canvas>
+ <script>
+ xr_session_promise_test(
+ "Tests environmentBlendMode for an AR device",
+ (session) => {
+ assert_not_equals(session.environmentBlendMode, "opaque");
+ assert_in_array(session.environmentBlendMode, ["alpha-blend", "additive"]);
+ }, IMMERSIVE_AR_DEVICE, 'immersive-ar', {});
+
+
+ xr_session_promise_test(
+ "Tests environmentBlendMode for a VR device",
+ (session) => {
+ assert_not_equals(session.environmentBlendMode, "alpha-blend");
+ assert_in_array(session.environmentBlendMode, ["opaque", "additive"]);
+ }, TRACKED_IMMERSIVE_DEVICE, 'immersive-vr', {});
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/webxr/resources/webxr_test_constants.js b/tests/wpt/web-platform-tests/webxr/resources/webxr_test_constants.js
index 3d9bfa2082b..553a8127fcf 100644
--- a/tests/wpt/web-platform-tests/webxr/resources/webxr_test_constants.js
+++ b/tests/wpt/web-platform-tests/webxr/resources/webxr_test_constants.js
@@ -136,6 +136,14 @@ const TRACKED_IMMERSIVE_DEVICE = {
supportedFeatures: ALL_FEATURES
};
+const IMMERSIVE_AR_DEVICE = {
+ supportsImmersive: true,
+ supportedModes: [ "inline", "immersive-ar"],
+ views: VALID_VIEWS,
+ viewerOrigin: IDENTITY_TRANSFORM,
+ supportedFeatures: ALL_FEATURES
+};
+
const VALID_NON_IMMERSIVE_DEVICE = {
supportsImmersive: false,
supportedModes: ["inline"],
@@ -157,3 +165,10 @@ const RIGHT_CONTROLLER = {
pointerOrigin: VALID_POINTER_TRANSFORM,
profiles: []
};
+
+const SCREEN_CONTROLLER = {
+ handedness: "none",
+ targetRayMode: "screen",
+ pointerOrigin: VALID_POINTER_TRANSFORM,
+ profiles: []
+};
diff --git a/tests/wpt/web-platform-tests/wpt.py b/tests/wpt/web-platform-tests/wpt.py
index c65e1ed2c6c..affba7343ea 100644
--- a/tests/wpt/web-platform-tests/wpt.py
+++ b/tests/wpt/web-platform-tests/wpt.py
@@ -1,3 +1,3 @@
# This file exists to allow `python wpt <command>` to work on Windows:
# https://github.com/web-platform-tests/wpt/pull/6907
-execfile("wpt")
+exec(compile(open("wpt", "r").read(), "wpt", 'exec'))