diff options
author | WPT Sync Bot <josh+wptsync@joshmatthews.net> | 2020-05-13 08:18:25 +0000 |
---|---|---|
committer | WPT Sync Bot <josh+wptsync@joshmatthews.net> | 2020-05-13 11:06:53 +0000 |
commit | ab5c81c0bbdefd798c58923cf726e866a3c9c185 (patch) | |
tree | 929d7af51f62bef9354e5e26b07f0126f6f8c684 | |
parent | bdfa6b0751f23c105182bbfe9929c8997c2d7073 (diff) | |
download | servo-ab5c81c0bbdefd798c58923cf726e866a3c9c185.tar.gz servo-ab5c81c0bbdefd798c58923cf726e866a3c9c185.zip |
Update web-platform-tests to revision 85ffed21f7a96f6d67a5a0110459d67f50cff624
240 files changed, 2991 insertions, 918 deletions
diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-002.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-002.html.ini deleted file mode 100644 index f64b45fea6b..00000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-002.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[hit-test-floats-002.html] - [Hit test float] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-004.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-004.html.ini new file mode 100644 index 00000000000..4bfb0c2053a --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-004.html.ini @@ -0,0 +1,4 @@ +[hit-test-floats-004.html] + [Miss float below something else] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-005.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-005.html.ini new file mode 100644 index 00000000000..baa9f1a7541 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-005.html.ini @@ -0,0 +1,4 @@ +[hit-test-floats-005.html] + [Miss clipped float] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/css/compositing/mix-blend-mode/mix-blend-mode-animation.html.ini b/tests/wpt/metadata-layout-2020/css/compositing/mix-blend-mode/mix-blend-mode-animation.html.ini deleted file mode 100644 index a647125277a..00000000000 --- a/tests/wpt/metadata-layout-2020/css/compositing/mix-blend-mode/mix-blend-mode-animation.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[mix-blend-mode-animation.html] - expected: TIMEOUT diff --git a/tests/wpt/metadata-layout-2020/css/css-images/image-resolution/image-resolution-001.html.ini b/tests/wpt/metadata-layout-2020/css/css-images/image-resolution/image-resolution-001.html.ini new file mode 100644 index 00000000000..874c28a9338 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-images/image-resolution/image-resolution-001.html.ini @@ -0,0 +1,2 @@ +[image-resolution-001.html] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-images/image-resolution/image-resolution-002.html.ini b/tests/wpt/metadata-layout-2020/css/css-images/image-resolution/image-resolution-002.html.ini new file mode 100644 index 00000000000..5768f2b9259 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-images/image-resolution/image-resolution-002.html.ini @@ -0,0 +1,2 @@ +[image-resolution-002.html] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-images/image-resolution/image-resolution-003.html.ini b/tests/wpt/metadata-layout-2020/css/css-images/image-resolution/image-resolution-003.html.ini new file mode 100644 index 00000000000..5e047f1f0ec --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-images/image-resolution/image-resolution-003.html.ini @@ -0,0 +1,2 @@ +[image-resolution-003.html] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-images/image-resolution/image-resolution-004.html.ini b/tests/wpt/metadata-layout-2020/css/css-images/image-resolution/image-resolution-004.html.ini new file mode 100644 index 00000000000..971198db35b --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-images/image-resolution/image-resolution-004.html.ini @@ -0,0 +1,2 @@ +[image-resolution-004.html] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-images/image-resolution/image-resolution-005.html.ini b/tests/wpt/metadata-layout-2020/css/css-images/image-resolution/image-resolution-005.html.ini new file mode 100644 index 00000000000..fe09e8a56df --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-images/image-resolution/image-resolution-005.html.ini @@ -0,0 +1,2 @@ +[image-resolution-005.html] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-images/image-resolution/image-resolution-006.html.ini b/tests/wpt/metadata-layout-2020/css/css-images/image-resolution/image-resolution-006.html.ini new file mode 100644 index 00000000000..88c411d4246 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-images/image-resolution/image-resolution-006.html.ini @@ -0,0 +1,2 @@ +[image-resolution-006.html] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-images/image-resolution/image-resolution-007.html.ini b/tests/wpt/metadata-layout-2020/css/css-images/image-resolution/image-resolution-007.html.ini new file mode 100644 index 00000000000..faf7899f3b5 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-images/image-resolution/image-resolution-007.html.ini @@ -0,0 +1,2 @@ +[image-resolution-007.html] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-images/image-resolution/image-resolution-008.html.ini b/tests/wpt/metadata-layout-2020/css/css-images/image-resolution/image-resolution-008.html.ini new file mode 100644 index 00000000000..f918390c553 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-images/image-resolution/image-resolution-008.html.ini @@ -0,0 +1,2 @@ +[image-resolution-008.html] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-images/image-resolution/image-resolution-009.html.ini b/tests/wpt/metadata-layout-2020/css/css-images/image-resolution/image-resolution-009.html.ini new file mode 100644 index 00000000000..db0026a5889 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-images/image-resolution/image-resolution-009.html.ini @@ -0,0 +1,2 @@ +[image-resolution-009.html] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-images/image-resolution/image-resolution-010.html.ini b/tests/wpt/metadata-layout-2020/css/css-images/image-resolution/image-resolution-010.html.ini new file mode 100644 index 00000000000..0f4c441222f --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-images/image-resolution/image-resolution-010.html.ini @@ -0,0 +1,2 @@ +[image-resolution-010.html] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini index d871d11ef54..628b1fab770 100644 --- a/tests/wpt/metadata-layout-2020/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini +++ b/tests/wpt/metadata-layout-2020/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini @@ -2,18 +2,3 @@ [listeners are called when <iframe> is resized] expected: FAIL - [listeners are called correct number of times] - expected: FAIL - - [removing listener from one MQL doesn't remove it from all MQLs] - expected: FAIL - - [listeners are called in order they were added] - expected: FAIL - - [listeners are called in order their MQLs were created] - expected: FAIL - - [listener that was added twice is called only once] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-001.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-001.html.ini new file mode 100644 index 00000000000..e38782d8c85 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-001.html.ini @@ -0,0 +1,4 @@ +[elementFromPoint-001.html] + [CSSOM View - 5 - extensions to the Document interface] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPosition.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPosition.html.ini index 23c61ede1a1..c131078eace 100644 --- a/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPosition.html.ini +++ b/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPosition.html.ini @@ -17,6 +17,3 @@ [test the top of layer] expected: FAIL - [test some point of the element: top left corner] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini b/tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini index 7fdbb3a1fa2..a5195409b91 100644 --- a/tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini +++ b/tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini @@ -312,24 +312,15 @@ [Response: combined response Content-Type: text/html;" \\" text/plain ";charset=GBK] expected: NOTRUN - [<iframe>: separate response Content-Type: text/html;x=" text/plain] - expected: FAIL - [<iframe>: combined response Content-Type: text/html;" text/plain] expected: FAIL - [<iframe>: combined response Content-Type: */* text/html] - expected: FAIL - [<iframe>: separate response Content-Type: text/html;" text/plain] expected: FAIL - [<iframe>: separate response Content-Type: text/html */*] - expected: FAIL - [<iframe>: separate response Content-Type: text/plain */*] expected: FAIL - [<iframe>: combined response Content-Type: text/html;" \\" text/plain] + [<iframe>: separate response Content-Type: text/html */*;charset=gbk] expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/fetch/content-type/script.window.js.ini b/tests/wpt/metadata-layout-2020/fetch/content-type/script.window.js.ini index 646a46c0cbb..a5b9b3752be 100644 --- a/tests/wpt/metadata-layout-2020/fetch/content-type/script.window.js.ini +++ b/tests/wpt/metadata-layout-2020/fetch/content-type/script.window.js.ini @@ -53,12 +53,6 @@ [combined text/javascript ] expected: FAIL - [separate text/javascript x/x] - expected: FAIL - - [separate text/javascript;charset=windows-1252 error text/javascript] - expected: FAIL - - [separate text/javascript error] + [separate text/javascript;charset=windows-1252 text/javascript] expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/fetch/nosniff/parsing-nosniff.window.js.ini b/tests/wpt/metadata-layout-2020/fetch/nosniff/parsing-nosniff.window.js.ini index 28f4c9616f6..1d1d4af041d 100644 --- a/tests/wpt/metadata-layout-2020/fetch/nosniff/parsing-nosniff.window.js.ini +++ b/tests/wpt/metadata-layout-2020/fetch/nosniff/parsing-nosniff.window.js.ini @@ -8,6 +8,9 @@ [X-Content-Type-Options%3A%20nosniff%0C] expected: FAIL - [X-Content-Type-Options%3A%0D%0AX-Content-Type-Options%3A%20nosniff] + [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%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!] expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini b/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini index 385376c7321..75d75b4cda2 100644 --- a/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini +++ b/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini @@ -1,4 +1,4 @@ -[traverse_the_history_4.html] +[traverse_the_history_2.html] [Multiple history traversals, last would be aborted] expected: FAIL diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini b/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini index 385376c7321..dc2e45516de 100644 --- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini +++ b/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini @@ -1,4 +1,4 @@ -[traverse_the_history_4.html] +[traverse_the_history_5.html] [Multiple history traversals, last would be aborted] expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini index 2769c8aadf1..42ebcc9d57e 100644 --- a/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini +++ b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini @@ -1,2 +1,5 @@ [iframe_sandbox_popups_escaping-1.html] - expected: CRASH + expected: TIMEOUT + [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-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini index ab43ed7acf4..295031c1812 100644 --- a/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini +++ b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini @@ -1,5 +1,5 @@ [iframe_sandbox_popups_escaping-3.html] - expected: CRASH + expected: TIMEOUT [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-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini index 9eb581fcf1f..0407f0cc2b7 100644 --- a/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini +++ b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini @@ -1,5 +1,5 @@ [iframe_sandbox_popups_nonescaping-2.html] - expected: CRASH + expected: TIMEOUT [Check that popups from a sandboxed iframe do not escape the sandbox] expected: NOTRUN diff --git a/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini index f4f994c5d6f..0fbc49ea1c1 100644 --- a/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini +++ b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini @@ -1,5 +1,5 @@ [iframe_sandbox_popups_nonescaping-3.html] - expected: TIMEOUT + expected: CRASH [Check that popups from a sandboxed iframe do not escape the sandbox] expected: NOTRUN diff --git a/tests/wpt/metadata-layout-2020/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini b/tests/wpt/metadata-layout-2020/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini index 450c88bd32b..dbec6f2c2ff 100644 --- a/tests/wpt/metadata-layout-2020/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini +++ b/tests/wpt/metadata-layout-2020/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini @@ -3,6 +3,3 @@ [The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document] expected: TIMEOUT - [The entry settings object while executing the compiled callback via Web IDL's invoke must be that of the node document] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html.ini b/tests/wpt/metadata-layout-2020/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html.ini index a1effd5f801..5ddb9bfeff6 100644 --- a/tests/wpt/metadata-layout-2020/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html.ini +++ b/tests/wpt/metadata-layout-2020/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html.ini @@ -1,9 +1,10 @@ [promise-job-entry.html] + expected: TIMEOUT [Fulfillment handler on fulfilled promise] expected: FAIL [Rejection handler on pending-then-rejected promise] - expected: FAIL + expected: TIMEOUT [Sanity check: this all works as expected with no promises involved] expected: FAIL @@ -15,5 +16,5 @@ expected: FAIL [Fulfillment handler on pending-then-fulfilled promise] - expected: FAIL + expected: TIMEOUT diff --git a/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-audioparam-interface/k-rate-audioworklet-connections.https.html.ini b/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-audioparam-interface/k-rate-audioworklet-connections.https.html.ini new file mode 100644 index 00000000000..82583c932a2 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-audioparam-interface/k-rate-audioworklet-connections.https.html.ini @@ -0,0 +1,7 @@ +[k-rate-audioworklet-connections.https.html] + [Executing "Create Test Worklet"] + expected: FAIL + + [Executing "AudioWorklet k-rate AudioParam"] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/webmessaging/without-ports/017.html.ini b/tests/wpt/metadata-layout-2020/webmessaging/without-ports/017.html.ini deleted file mode 100644 index 064cf47545b..00000000000 --- a/tests/wpt/metadata-layout-2020/webmessaging/without-ports/017.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[017.html] - expected: TIMEOUT - [origin of the script that invoked the method, about:blank] - expected: TIMEOUT - diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index bf0c9acfeac..7fb55d4460c 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -263,6 +263,15 @@ ] ] }, + "css-scroll-anchoring": { + "table-collapsed-borders-crash.html": [ + "aa699317e2734fece3d662ad102fdd2772680e25", + [ + null, + {} + ] + ] + }, "css-shapes": { "shape-outside": { "supported-shapes": { @@ -360,6 +369,15 @@ ] } }, + "css-ui": { + "outline-with-001-crash.html": [ + "d46ba8080c3ce4fddc55698e598707384ba810b1", + [ + null, + {} + ] + ] + }, "css-writing-modes": { "bidi-inline-fragment-crash.html": [ "5d3796566b9c68abdc0defb016c1675d1ea8c9d0", @@ -139534,34 +139552,8 @@ ] }, "math-script-level-and-math-style": { - "math-script-level-003.tentative.html": [ - "f5bf9982e27f0fde970761d0506eff7f5b6ec741", - [ - null, - [ - [ - "/css/css-fonts/math-script-level-and-math-style/math-script-level-003.tentative-ref.html", - "==" - ] - ], - {} - ] - ], - "math-script-level-005.tentative.html": [ - "34860d7a5c2734d08984ddd061520320aeaa46e1", - [ - null, - [ - [ - "/css/css-fonts/math-script-level-and-math-style/math-script-level-005.tentative-ref.html", - "==" - ] - ], - {} - ] - ], "math-script-level-auto-and-math-style-001.tentative.html": [ - "ad187b5dc254e672a66eedb2ae219ddf953156a6", + "51d90d131c64f7248a8d92d2ec93b0df7c7619a2", [ null, [ @@ -139574,7 +139566,7 @@ ] ], "math-script-level-auto-and-math-style-002.tentative.html": [ - "c111f2c38d5d0f5c614f125bde292c73727f754a", + "c56fc20c9c5133405996073e49a21b539d26a02a", [ null, [ @@ -139587,7 +139579,7 @@ ] ], "math-script-level-auto-and-math-style-003.tentative.html": [ - "4282481761207d8a947ddb8f462a9a2cd555ede8", + "a7b22d921bf244589442458f089e932147832b7a", [ null, [ @@ -139600,7 +139592,7 @@ ] ], "math-script-level-auto-and-math-style-004.tentative.html": [ - "150d4285e9802beabe7b677c96465ba261633b1c", + "9eca5716d8dc8452d7b6f3d9232a68d37ffbc2ec", [ null, [ @@ -139613,7 +139605,7 @@ ] ], "math-script-level-auto-and-math-style-005.tentative.html": [ - "718a564070d9b5c91023b1c3c054f6380527cbde", + "fd6d2936a9b2e4ce153525a6ba46fbec397fe174", [ null, [ @@ -139626,7 +139618,7 @@ ] ], "math-script-level-font-size-clamping-001.tentative.html": [ - "e25ee56c3e334d83158149528193fb7ee734df81", + "8570954641d81dfd02db05fde19a2d0e474ac376", [ null, [ @@ -146943,6 +146935,151 @@ ] ] }, + "image-resolution": { + "image-resolution-001.html": [ + "ad1ca8ba8e54258d9061ffb120a2460279832064", + [ + null, + [ + [ + "/css/css-images/reference/100x100-blue.html", + "==" + ] + ], + {} + ] + ], + "image-resolution-002.html": [ + "334ec840aa6ca82fc2e01975c3aecdf9b82a16ef", + [ + null, + [ + [ + "/css/css-images/reference/100x100-blue.html", + "==" + ] + ], + {} + ] + ], + "image-resolution-003.html": [ + "c7a5cd5836620ee723b06a49b1c8f8d9dfc425af", + [ + null, + [ + [ + "/css/css-images/reference/100x100-blue.html", + "==" + ] + ], + {} + ] + ], + "image-resolution-004.html": [ + "dd6a1b997b6d1b547a5650d7ee9031170f7bb6fe", + [ + null, + [ + [ + "/css/css-images/image-resolution/reference/100x100-blue-blur4px.html", + "==" + ] + ], + {} + ] + ], + "image-resolution-005.html": [ + "0496ec5955c5ceb34cb2295177e06a5d8a7ecaf7", + [ + null, + [ + [ + "/css/css-images/image-resolution/reference/100x100-blue-blur4px.html", + "==" + ] + ], + {} + ] + ], + "image-resolution-006.html": [ + "0ffbbd6331ffe6ec94acbf20efc2406d239f57be", + [ + null, + [ + [ + "/css/css-images/image-resolution/reference/100x100-blue-blur4px.html", + "==" + ] + ], + {} + ] + ], + "image-resolution-007.html": [ + "f47777ff9e30f46414382e363a2996083e37a754", + [ + null, + [ + [ + "/css/css-images/reference/100x100-blue.html", + "==" + ] + ], + {} + ] + ], + "image-resolution-008.html": [ + "9ec62d38ae7eb1358c64ee7c8be25cb3182bbe91", + [ + null, + [ + [ + "/css/css-images/reference/100x100-blue.html", + "==" + ] + ], + {} + ] + ], + "image-resolution-009.html": [ + "fcd4970517126827a1899cd83dd982dee306659b", + [ + null, + [ + [ + "/css/css-images/reference/100x100-blue.html", + "==" + ] + ], + {} + ] + ], + "image-resolution-010.html": [ + "a512d5c4b00ebdc7aae63e122813a71db639f48e", + [ + null, + [ + [ + "/css/css-images/image-resolution/reference/100x100-blue-blur4px.html", + "==" + ] + ], + {} + ] + ], + "image-resolution-011.html": [ + "b7a1724be1546f08307c5512c384e5e7dfb3084c", + [ + null, + [ + [ + "/css/css-images/image-resolution/reference/100x100-blue-blur4px.html", + "==" + ] + ], + {} + ] + ] + }, "image-set": { "image-set-rendering.html": [ "44ce35414f33b895930c738b95c6ced6afa7177a", @@ -242346,7 +242483,7 @@ }, "support": { ".azure-pipelines.yml": [ - "0bf63f7a374f69063654169e0b74169fce8dc5fd", + "264e5d076d15df90e657ec3fe921dd089a9a6ccf", [] ], ".codecov.yml": [ @@ -289530,14 +289667,6 @@ ] }, "math-script-level-and-math-style": { - "math-script-level-003.tentative-ref.html": [ - "5fd8d7fed9a52b9e7b9ea3bbd885b1348899e7bf", - [] - ], - "math-script-level-005.tentative-ref.html": [ - "f0538695a9f5eb7d276134667b5e285508c7a7ac", - [] - ], "math-script-level-auto-and-math-style-001.tentative-ref.html": [ "8540de41942ffa37f8457dcee3e198bb9b06b208", [] @@ -297155,6 +297284,28 @@ ] } }, + "image-resolution": { + "reference": { + "100x100-blue-blur4px.html": [ + "f7b541ceec963556e39c84adb7e197bbc8f9c73f", + [] + ] + }, + "support": { + "swatch-blue-192dpi.png": [ + "2e81d91d08dd396adfed1c803c50ddf844f1554b", + [] + ], + "swatch-blue-48dpi.png": [ + "6c3dbbd410381ce863dc25a4a67bdeda3d363642", + [] + ], + "swatch-blue-48x192dpi.png": [ + "ee02902174a7ef06f0ade0799b7568b2fa740381", + [] + ] + } + }, "image-set": { "image-set-rendering-ref.html": [ "0f6a372b4ac34fedf695d2dfd9f08aa3546ce748", @@ -316002,7 +316153,7 @@ [] ], "server-features.md": [ - "4feb898fa96a0fd55df97235c4dd254e4be532a2", + "980a27d3d02f01b04ad9ff164b2da61eef8478d9", [] ], "server-pipes.md": [ @@ -329793,6 +329944,10 @@ "common.js": [ "c72ed7f19c4544a203be1d8e6b72a8d3214b1ec7", [] + ], + "submit.jpg": [ + "8909de24309e77c606b0f2a1795f69378a36a151", + [] ] } } @@ -333099,7 +333254,7 @@ [] ], "web-animations.idl": [ - "006b27b2820f81e89a0088b996acf61fb634f325", + "64265c3bf3fc32cd4071d6d8386a00578f67f49f", [] ], "web-bluetooth.idl": [ @@ -333372,7 +333527,7 @@ ] }, "lint.ignore": [ - "49f88ddc7b339434e071522958fcc2a6aec5d237", + "8cfef1eded28757dc13edda1bd30c002fa6dd80d", [] ], "loading": { @@ -335204,7 +335359,7 @@ ], "resources": { "orientation-event-helpers.js": [ - "84bfc5115f38b6999a3d0fb234ce7b0a3e7608b3", + "307c52f00032d913bda5ac40e5bc8b39c9a72f98", [] ] } @@ -338633,7 +338788,7 @@ ] }, "testdriver-actions.js": [ - "d3dc00b4d0f002670258e56d59d33061f4fc5775", + "870a2e8e26678085f80c030d436dd13686fb9b0b", [] ], "testdriver-vendor.js": [ @@ -343302,7 +343457,7 @@ [] ], "item.py": [ - "728027589416624a22f497a4d539b289106a1b6e", + "6601f9c719e040219e45bc7d0dce8c4a77a2734c", [] ], "log.py": [ @@ -343314,7 +343469,7 @@ [] ], "sourcefile.py": [ - "d0794a2851ebf5a30ad92b3f41c80a3e5a2f6dbb", + "f36ce1ab3304d7ae7b7ae1da9c25e0d7c1a3846f", [] ], "testpaths.py": [ @@ -343339,7 +343494,7 @@ [] ], "test_sourcefile.py": [ - "feae1fc3fd1c53f5c761f6292a91ad2de3836470", + "a8fbc27071408da061e7e166026f0baa0cb518e1", [] ], "test_utils.py": [ @@ -343381,14 +343536,40 @@ [] ], "quic": { + "README.md": [ + "5a64b701cfb85900c219463624e6afa299a3813d", + [] + ], "__init__.py": [ "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391", [] ], + "certs": { + "README.md": [ + "216cf13fffc1bba87d610e22cf60e11043f53918", + [] + ], + "cert.key": [ + "993cdfa543728b6369b05eefe20811cd6662b717", + [] + ], + "cert.pem": [ + "7e70f1b082acb3053213bc7ee74f5e367c89ff27", + [] + ], + "config.json": [ + "72a6d0529fb9449c4bfb0c93546a7962a5abd22c", + [] + ] + }, "commands.json": [ "044322eed3baf467c6d809fc26ac958598942311", [] ], + "quic_transport_server.py": [ + "10d81743693b431acba1eaa082e03f73124e050a", + [] + ], "requirements.txt": [ "165260c78f7ac8579bd911bcf9cce63645c80e45", [] @@ -343399,7 +343580,7 @@ ] }, "requirements_flake8.txt": [ - "2a4c7e5d7b27439f49c2c7de57a585830858b004", + "3be95a40de7847a8328d0401a88353c62fe05a4d", [] ], "requirements_mypy.txt": [ @@ -348967,7 +349148,7 @@ [] ], "environment.py": [ - "cbbee8213266bf2f914a4066437dbfa63c774701", + "f76836ea66b59bb16f2d3792451bcf28ecb2fb44", [] ], "executors": { @@ -348980,7 +349161,7 @@ [] ], "base.py": [ - "5d6c283737e6a768279f69503094345c0f942880", + "c75a8ef320f2d149206c9ab82ce55bb754ddbb68", [] ], "executorchrome.py": [ @@ -349000,7 +349181,7 @@ [] ], "executormarionette.py": [ - "3f0b92f23b3e7797918cf171566f3b4b8acbbcb0", + "535923fdb5e9140f8b2c593557a50398f6532b47", [] ], "executoropera.py": [ @@ -349012,19 +349193,19 @@ [] ], "executorselenium.py": [ - "45692a0488bdf6ea096cc5b75448a002e1dd6c38", + "96312f3f9f9542fede609e6f99ef93127f122d1a", [] ], "executorservo.py": [ - "4816c3df06e87f8e85301918c341bbff97817777", + "f83f0115e0068114bb62a804b3055cb510814b15", [] ], "executorservodriver.py": [ - "2e47a22a9c92b4caada29db358c08104793d2770", + "0680c4ed2299035146c2b1e478f4b3fa1c301101", [] ], "executorwebdriver.py": [ - "2a0e9c7136dc147fec9a690509d6c05813ead5f0", + "c5f2965ec18586131bc20d394f56b78827c102ec", [] ], "executorwebkit.py": [ @@ -349163,11 +349344,11 @@ [] ], "testloader.py": [ - "78967371537bed79e5a660f04c05b79decb9778b", + "cc9d1e539ac57c3dd5de355a66a59d2490c28351", [] ], "testrunner.py": [ - "f0d830787a46ad143f1e33c7783f5ff6dd1ff830", + "49a3525e883d15a059022a54911eecf531d836ff", [] ], "tests": { @@ -349265,7 +349446,7 @@ [] ], "wptcommandline.py": [ - "93bd886aac1e2574ab239ec615a2d866a0510ae4", + "96227bb46905e168d691e350946dbfba68098271", [] ], "wptlogging.py": [ @@ -349335,11 +349516,11 @@ } }, "wptrunner.py": [ - "7c3adde72538463c2d9981812fb4f6fb4d53eb6b", + "ce15c5fbbf0bdd3d1227612a4dac9f9e9c4c3f7c", [] ], "wpttest.py": [ - "7c58610a7c522a3319cf6c20c1eebe15046637f9", + "27d7fbbbd7f41fd89261299986a18d5a4fdbb3ef", [] ] }, @@ -349686,7 +349867,7 @@ [] ], "openssl.py": [ - "aea1c7380b179ced1366b6617057578b35d9e14b", + "64f6d5fb2db27958f33dd36b57b7c174df0bd7e9", [] ], "pregenerated.py": [ @@ -349738,31 +349919,27 @@ "d0743949b6a122d8bd0adf7b1ed0181f0c51429d", [] ], - "default-policy-report-only.tentative.https.html.headers": [ + "default-policy-report-only.tentative.html.headers": [ "4c1ff15e167a9581839c64532078440689ca741c", [] ], - "default-policy.tentative.https.html.headers": [ + "default-policy.tentative.html.headers": [ "604e765da46d85fe8ab85d3097fe7c2cbe00a930", [] ], - "empty-default-policy-report-only.tentative.https.html.headers": [ + "empty-default-policy-report-only.tentative.html.headers": [ "4c1ff15e167a9581839c64532078440689ca741c", [] ], - "empty-default-policy.tentative.https.html.headers": [ + "empty-default-policy.tentative.html.headers": [ "604e765da46d85fe8ab85d3097fe7c2cbe00a930", [] ], - "no-require-trusted-types-for-report-only.tentative.https.html.headers": [ + "no-require-trusted-types-for-report-only.tentative.html.headers": [ "aa00fcc15a30ef1f8968be44abc1a9e934a31979", [] ], - "nonsecure-require-trusted-types-for.tentative.html.headers": [ - "af6596b29a8080e5cd8d688d0d6933caf49a2090", - [] - ], - "require-trusted-types-for-report-only.tentative.https.html.headers": [ + "require-trusted-types-for-report-only.tentative.html.headers": [ "c6412f8d472fcfd6022b0ae485f52b3d3dedd820", [] ], @@ -349804,31 +349981,31 @@ [] ] }, - "trusted-types-duplicate-names-list-report-only.tentative.https.html.headers": [ + "trusted-types-duplicate-names-list-report-only.tentative.html.headers": [ "b6608515aa85a08dbb56531c46c097e179c76200", [] ], - "trusted-types-eval-reporting-no-unsafe-eval.tentative.https.html.headers": [ + "trusted-types-eval-reporting-no-unsafe-eval.tentative.html.headers": [ "e4147bd2e372e4498f9a6ca138f9f29f4750561f", [] ], - "trusted-types-eval-reporting-report-only.tentative.https.html.headers": [ + "trusted-types-eval-reporting-report-only.tentative.html.headers": [ "b5e94c400bb00aef7a9231c05500375f418c1065", [] ], - "trusted-types-eval-reporting.tentative.https.html.headers": [ + "trusted-types-eval-reporting.tentative.html.headers": [ "3f55bba7d1b8d0965d3f9f29c7db301806f7c1a0", [] ], - "trusted-types-report-only.tentative.https.html.headers": [ + "trusted-types-report-only.tentative.html.headers": [ "857a8b31e86bc395e95913ee521d4fc73109c74c", [] ], - "trusted-types-reporting-check-report.https.html.sub.headers": [ + "trusted-types-reporting-check-report.html.sub.headers": [ "5830239f5ca4c45ff97f8fa9f53daba82e0e9685", [] ], - "trusted-types-reporting.tentative.https.html.headers": [ + "trusted-types-reporting.tentative.html.headers": [ "fa8aceab74b0f6e937da3999d471f6afaac4c24e", [] ] @@ -351905,7 +352082,7 @@ [] ], "RTCPeerConnection-helper.js": [ - "25d126f9a9badddac4169cc5884a9e3a91b66082", + "29145c8b927dd0df3ec35b40c49d8ded2afaa559", [] ], "RTCRtpCapabilities-helper.js": [ @@ -352337,6 +352514,20 @@ ] } }, + "webtransport": { + "quic": { + "handlers": { + "README.md": [ + "22073e783a209733097b7749e11019486a237d17", + [] + ], + "client-indication.quic.py": [ + "da0701cc04b17b461344879a62631d65326c167b", + [] + ] + } + } + }, "webusb": { "META.yml": [ "546094855e50f17ef6d92f4bec412af644f155ad", @@ -376764,7 +376955,7 @@ ] ], "cookieListItem_attributes.tentative.https.any.js": [ - "5d46b2d119c6662473eaa950fb6922f4091ed832", + "344277382ddfe9e72d60bd441b2fb6d9f6f7f7de", [ "cookie-store/cookieListItem_attributes.tentative.https.any.html", { @@ -376985,39 +377176,6 @@ } ] ], - "cookieStore_delete_insecure.tentative.https.any.js": [ - "aec0e28615c8cf43a87ebd5bdbfb394f9df080df", - [ - "cookie-store/cookieStore_delete_insecure.tentative.https.any.html", - { - "script_metadata": [ - [ - "title", - "Cookie Store API: cookieStore.delete() with insecure cookies" - ], - [ - "global", - "window,serviceworker" - ] - ] - } - ], - [ - "cookie-store/cookieStore_delete_insecure.tentative.https.any.serviceworker.html", - { - "script_metadata": [ - [ - "title", - "Cookie Store API: cookieStore.delete() with insecure cookies" - ], - [ - "global", - "window,serviceworker" - ] - ] - } - ] - ], "cookieStore_event_arguments.tentative.https.window.js": [ "bcb698eeb0d6ce760033ba628120ebf7772a1084", [ @@ -383613,22 +383771,15 @@ ] ], "math-script-level-and-math-style": { - "math-script-level-001.tentative.html": [ - "6a353a635b82d89fb6a933aad2d7554059aa3da2", - [ - null, - {} - ] - ], "math-script-level-002.tentative.html": [ - "0abce02e72d3687023a232d7398cd014aa0633f7", + "1272f9559857f0b171fb4dfbebc5dff94504996f", [ null, {} ] ], "math-script-level-004.tentative.html": [ - "cb82472a0c0af76af8174eaea43e1ab3e6346fd9", + "a938bd4d01194ad90d2ed76bbf849c6b8ffebb4c", [ null, {} @@ -390388,6 +390539,13 @@ {} ] ], + "fragment-scrolling-anchors.html": [ + "74b633be987ac6a2dd63ebab3ddb427836f78b7a", + [ + null, + {} + ] + ], "heuristic-with-offset-update-from-scroll-event-listener.html": [ "b3964dfcc71e9928c640a4e696e79352be90b40c", [ @@ -390402,6 +390560,13 @@ {} ] ], + "history-restore-anchors.html": [ + "24dfcf72ec334627b2308821037f20ab5a700d68", + [ + null, + {} + ] + ], "image-001.html": [ "475c9170b846f60bd5143fa43a4f10680bae1ed7", [ @@ -419298,6 +419463,41 @@ {} ] ], + "en-windows-1252.tentative.html": [ + "ac8cbe83fe201e7c538d17434fdfbab9456e6bff", + [ + null, + {} + ] + ], + "es-maria-windows-1252.html": [ + "be7a7400c693c32a9b69f27caab6f412d2dde7e7", + [ + null, + {} + ] + ], + "es-nuestra-senora-windows-1252.tentative.html": [ + "5f151395821c0072cb202432dccb145377ab3897", + [ + null, + {} + ] + ], + "es-number-one-windows-1252.tentative.html": [ + "dba025e25e81fd69f5281c0f64868fcfacc5ca1c", + [ + null, + {} + ] + ], + "es-ordinal-windows-1252.html": [ + "322621240e228617d5d864f2e010b3f85d7d22d4", + [ + null, + {} + ] + ], "fa-windows-1256-late.tentative.html": [ "5398445c0ee03c091ed427aec99335b4721dd3ed", [ @@ -419368,6 +419568,27 @@ {} ] ], + "it-number-one-windows-1252.tentative.html": [ + "5f5363e7a4d3ccabcb563e6b4e0d366ca5bb2e10", + [ + null, + {} + ] + ], + "it-ordinal-windows-1252.html": [ + "e75998646c0483201ec91efd63bead3da832c8ce", + [ + null, + {} + ] + ], + "it-roman-ordinal-windows-1252.html": [ + "131f9322ab82ff84142074d14624d1f3fbba20cf", + [ + null, + {} + ] + ], "it-windows-1252-late.tentative.html": [ "5729d20ad3c84ae602239184ce2c5c3346e3290f", [ @@ -419466,6 +419687,20 @@ {} ] ], + "nbsp-even-windows-1252.tentative.html": [ + "2450591d3d24d123f058937d9a9728d726fab10e", + [ + null, + {} + ] + ], + "nbsp-odd-windows-1252.tentative.html": [ + "2ebc33745c0bcf080fff83700d4f330fcc1a3cd8", + [ + null, + {} + ] + ], "pl-ISO-8859-2-late.tentative.html": [ "e5db00b005637078130753bc05aa11bca2887be8", [ @@ -446205,7 +446440,7 @@ ] ], "coop-sandbox.https.html": [ - "5fd11643d5720f54e0b5112e96a9cfea5cafdf9d", + "6f10945cfafb5c2c4c00d0f29fe12c4ddaacd228", [ null, {} @@ -447049,6 +447284,13 @@ {} ] ], + "mapped-attribute-adopt-001.html": [ + "66ff3d64f13cdffe4413ee19534604af020203df", + [ + null, + {} + ] + ], "the-lang-attribute-001.html": [ "c2966f362060cd0025fa79cd4a5dbea540079656", [ @@ -456151,6 +456393,15 @@ {} ] ], + "dialog-form-submission.html": [ + "3ed9dad92341ec4c023385e50bc6087a236e42d1", + [ + null, + { + "testdriver": true + } + ] + ], "dialog-open.html": [ "4719f63b853ded4577d09066eb7ef2cedf7cd934", [ @@ -463264,7 +463515,7 @@ ] ], "navigator_user_agent.https.html": [ - "a8ed461b2e7bac8aa21b07d9fbc7a6268e952026", + "302f702c65f1a8781b97598983200fd816d42ad2", [ null, {} @@ -466090,6 +466341,13 @@ "timeout": "long" } ] + ], + "operator-dictionary-combining.html": [ + "21befc92f01673ca7f3d4d2c007e9973d0f142e7", + [ + null, + {} + ] ] }, "radicals": { @@ -466272,7 +466530,7 @@ ] ], "attribute-mapping-002.html": [ - "329578dc95a5cc6548ec70d0d0ef80e229950149", + "3ac942f81782fc867582243a2c42980653a6d775", [ null, {} @@ -466371,6 +466629,13 @@ ] ] }, + "scriptlevel-001.html": [ + "11ad68d818829e2fe63510560b6d56ff39d833a8", + [ + null, + {} + ] + ], "width-height-001.html": [ "3947a938664882354648d78d7e32a021e2bd25c5", [ @@ -486085,6 +486350,13 @@ ] }, "resize-observer": { + "change-layout-in-error.html": [ + "9083fb48f94efe2a4d402fda2e452d72f94b1e17", + [ + null, + {} + ] + ], "eventloop.html": [ "3a9e453faf2eaef798daaa1171a426ea281009f5", [ @@ -497458,6 +497730,13 @@ {} ] ], + "attribute-value-unaffected-by-animation.html": [ + "55ebb0a3c9a019f921bf585bc83a0b3a1ff3422a", + [ + null, + {} + ] + ], "attributeTypes.html": [ "7a9ad43dd98e00f7e2af4957365441a29aedf8e6", [ @@ -500080,77 +500359,77 @@ ] }, "trusted-types": { - "DOMParser-parseFromString-regression.tentative.https.html": [ + "DOMParser-parseFromString-regression.tentative.html": [ "941d1750b4a3d4fd0c53a48c62689f9665e64dc3", [ null, {} ] ], - "DOMParser-parseFromString.tentative.https.html": [ + "DOMParser-parseFromString.tentative.html": [ "2dfc37686bca15431c216a50d29f9f9eed2782e0", [ null, {} ] ], - "DOMWindowTimers-setTimeout-setInterval.tentative.https.html": [ + "DOMWindowTimers-setTimeout-setInterval.tentative.html": [ "2ad47555a92dd09f3d47e378be86e826c270d544", [ null, {} ] ], - "Document-write.tentative.https.html": [ + "Document-write.tentative.html": [ "87e9e724699efc3f0edde3afade4cf53ec2c9c3e", [ null, {} ] ], - "Element-insertAdjacentHTML.tentative.https.html": [ + "Element-insertAdjacentHTML.tentative.html": [ "6a9329b3fbf2fdfb4f00ce2acde7c38d6843d92f", [ null, {} ] ], - "Element-insertAdjacentText.tentative.https.html": [ + "Element-insertAdjacentText.tentative.html": [ "f6221362c17d6231e0921d866b1cdc642fea9d39", [ null, {} ] ], - "Element-outerHTML.tentative.https.html": [ + "Element-outerHTML.tentative.html": [ "c8daddfe9955196bf0b69410263cb7c01e473e5e", [ null, {} ] ], - "Element-setAttribute.tentative.https.html": [ + "Element-setAttribute.tentative.html": [ "cd6617915bdd16343ff2499e09991fba50b444bc", [ null, {} ] ], - "Element-setAttributeNS.tentative.https.html": [ + "Element-setAttributeNS.tentative.html": [ "67e8236febd77ed3b544126d8c5f9dd37cc513ab", [ null, {} ] ], - "GlobalEventHandlers-onclick.tentative.https.html": [ + "GlobalEventHandlers-onclick.tentative.html": [ "0fdde778cc8863600ecdcc57a6d6281b52a777d4", [ null, {} ] ], - "HTMLElement-generic.tentative.https.html": [ + "HTMLElement-generic.tentative.html": [ "3ec6cfa60da6d86e6be2e3ce68ae227441e6c5bb", [ null, @@ -500164,126 +500443,126 @@ {} ] ], - "HTMLScriptElement-internal-slot.tentative.https.html": [ + "HTMLScriptElement-internal-slot.tentative.html": [ "4f523bb4e4eec2c048d44b1beeab2a94b9e7bd31", [ null, {} ] ], - "Node-multiple-arguments.tentative.https.html": [ + "Node-multiple-arguments.tentative.html": [ "e3e4a2635e9820c762ca0c10ccd54e244e7bb499", [ null, {} ] ], - "Range-createContextualFragment.tentative.https.html": [ + "Range-createContextualFragment.tentative.html": [ "3a880a53778acb165fd5d957eeaca22685baf2b5", [ null, {} ] ], - "TrustedType-AttributeNodes.tentative.https.html": [ + "TrustedType-AttributeNodes.tentative.html": [ "6b0066570043cf320a9b3a58c30d6afa88cc1ec6", [ null, {} ] ], - "TrustedTypePolicy-CSP-no-name.tentative.https.html": [ + "TrustedTypePolicy-CSP-no-name.tentative.html": [ "b1c7f51ddb3a14603cf6f11ea437484f09366c74", [ null, {} ] ], - "TrustedTypePolicy-CSP-wildcard.tentative.https.html": [ + "TrustedTypePolicy-CSP-wildcard.tentative.html": [ "cdc683dad3b6d3028166f23ade82a8b8cd30d001", [ null, {} ] ], - "TrustedTypePolicy-createXXX.tentative.https.html": [ + "TrustedTypePolicy-createXXX.tentative.html": [ "112d1ae636aaa8f0ffafd68bd73aff11208874fb", [ null, {} ] ], - "TrustedTypePolicyFactory-constants.tentative.https.html": [ + "TrustedTypePolicyFactory-constants.tentative.html": [ "551084ca4b6e001ce49213a3d12491a4aedaf8f4", [ null, {} ] ], - "TrustedTypePolicyFactory-createPolicy-createXYZTests.tentative.https.html": [ + "TrustedTypePolicyFactory-createPolicy-createXYZTests.tentative.html": [ "746d89fa3f8c3f21cb64d6fb348de15ef9b1f3e2", [ null, {} ] ], - "TrustedTypePolicyFactory-createPolicy-cspTests-noNamesGiven.tentative.https.html": [ + "TrustedTypePolicyFactory-createPolicy-cspTests-noNamesGiven.tentative.html": [ "15728b9888f3cb0c7d9f509c86949f8942a66a22", [ null, {} ] ], - "TrustedTypePolicyFactory-createPolicy-cspTests-wildcard.tentative.https.html": [ + "TrustedTypePolicyFactory-createPolicy-cspTests-wildcard.tentative.html": [ "9200708545c0420f8882a85fcfbfa8b4d464f6bf", [ null, {} ] ], - "TrustedTypePolicyFactory-createPolicy-cspTests.tentative.https.html": [ + "TrustedTypePolicyFactory-createPolicy-cspTests.tentative.html": [ "3a56546151e4e8fcef6bfecafa42cd50dd01ebcc", [ null, {} ] ], - "TrustedTypePolicyFactory-createPolicy-nameTests.tentative.https.html": [ + "TrustedTypePolicyFactory-createPolicy-nameTests.tentative.html": [ "9fdafb2ccf04bf2808e3399d64c83a131c8648d2", [ null, {} ] ], - "TrustedTypePolicyFactory-createPolicy-unenforced.tentative.https.html": [ + "TrustedTypePolicyFactory-createPolicy-unenforced.tentative.html": [ "293444820216e17adb8c4f02a1615d7dfbfe2e6e", [ null, {} ] ], - "TrustedTypePolicyFactory-defaultPolicy.tentative.https.html": [ + "TrustedTypePolicyFactory-defaultPolicy.tentative.html": [ "7ac09d8bb96c0ef163590db1552012651648b68b", [ null, {} ] ], - "TrustedTypePolicyFactory-getPropertyType.tentative.https.html": [ + "TrustedTypePolicyFactory-getPropertyType.tentative.html": [ "861dd8bb7c6db20e59700f1d5a96af262b1d79bb", [ null, {} ] ], - "TrustedTypePolicyFactory-isXXX.tentative.https.html": [ + "TrustedTypePolicyFactory-isXXX.tentative.html": [ "a7df477d00e26b65e72624edb9dd0fe4bb9ee90a", [ null, {} ] ], - "TrustedTypePolicyFactory-metadata.tentative.https.html": [ + "TrustedTypePolicyFactory-metadata.tentative.html": [ "a5fe7864b12df24d4ca31df66eea7b471aa80f94", [ null, @@ -500292,185 +500571,185 @@ } ] ], - "Window-TrustedTypes.tentative.https.html": [ + "Window-TrustedTypes.tentative.html": [ "718c763afafd12bfa498eb8827fb1b12b509c51d", [ null, {} ] ], - "WorkerGlobalScope-importScripts.https.html": [ + "WorkerGlobalScope-importScripts.html": [ "9853b1bc44845155ef889b7b5ee93c877844e019", [ null, {} ] ], - "block-Node-multiple-arguments.tentative.https.html": [ + "block-Node-multiple-arguments.tentative.html": [ "e87c8fca238d4dfaa4e5ca4b70ef73290aa167a7", [ null, {} ] ], - "block-string-assignment-to-DOMParser-parseFromString.tentative.https.html": [ + "block-string-assignment-to-DOMParser-parseFromString.tentative.html": [ "dd912e6b8dea596141630d7b9d18ab6bbe8c9925", [ null, {} ] ], - "block-string-assignment-to-DOMWindowTimers-setTimeout-setInterval.tentative.https.html": [ + "block-string-assignment-to-DOMWindowTimers-setTimeout-setInterval.tentative.html": [ "f36ae94ea10ce95d7087ec22ef4a25f157f7e6a8", [ null, {} ] ], - "block-string-assignment-to-Document-write.tentative.https.html": [ + "block-string-assignment-to-Document-write.tentative.html": [ "974203c1133a43afd87069b41b29ab1e5460a36d", [ null, {} ] ], - "block-string-assignment-to-Element-insertAdjacentHTML.tentative.https.html": [ + "block-string-assignment-to-Element-insertAdjacentHTML.tentative.html": [ "228887d0423d3144afd684ace223bc16a7124f9f", [ null, {} ] ], - "block-string-assignment-to-Element-outerHTML.tentative.https.html": [ + "block-string-assignment-to-Element-outerHTML.tentative.html": [ "9b6cf72cb4017c86e0d0862f967c9b26cea0c149", [ null, {} ] ], - "block-string-assignment-to-Element-setAttribute.tentative.https.html": [ + "block-string-assignment-to-Element-setAttribute.tentative.html": [ "1d39a804f39c0891bc59c0d08f14fd22ee278de1", [ null, {} ] ], - "block-string-assignment-to-Element-setAttributeNS.tentative.https.html": [ + "block-string-assignment-to-Element-setAttributeNS.tentative.html": [ "346e077a666507d0a5eba4bed6893c8c16adad6a", [ null, {} ] ], - "block-string-assignment-to-HTMLElement-generic.tentative.https.html": [ + "block-string-assignment-to-HTMLElement-generic.tentative.html": [ "9e780c1ed23dccb92ea10eaa83613422a9e59a77", [ null, {} ] ], - "block-string-assignment-to-Range-createContextualFragment.tentative.https.html": [ + "block-string-assignment-to-Range-createContextualFragment.tentative.html": [ "79111204934e689d2ce56fbb010cc3b261537c6b", [ null, {} ] ], - "block-text-node-insertion-into-script-element.tentative.https.html": [ + "block-text-node-insertion-into-script-element.tentative.html": [ "819753652a975247415d85cb77b65ba9a358bfa5", [ null, {} ] ], - "csp-block-eval.tentative.https.html": [ + "csp-block-eval.tentative.html": [ "e3911bf9e6a9340a35906d9ec70f71f6b8152951", [ null, {} ] ], - "default-policy-callback-arguments.tentative.https.html": [ + "default-policy-callback-arguments.tentative.html": [ "5944b0e92d67117a8140430dc96028cc3d8ab8ce", [ null, {} ] ], - "default-policy-report-only.tentative.https.html": [ + "default-policy-report-only.tentative.html": [ "1cff751a80194bfaef6095617a89a423b76e70b2", [ null, {} ] ], - "default-policy.tentative.https.html": [ + "default-policy.tentative.html": [ "debde85cdac9d7bb1bcb19b56f7063fea0a53241", [ null, {} ] ], - "empty-default-policy-report-only.tentative.https.html": [ + "empty-default-policy-report-only.tentative.html": [ "1ba9c5ec18e5da33725aaa9499977930563c4ba9", [ null, {} ] ], - "empty-default-policy.tentative.https.html": [ + "empty-default-policy.tentative.html": [ "d31b48ecd5a86670b7c6ea3c4d993cd3f11946df", [ null, {} ] ], - "eval-csp-no-tt.tentative.https.html": [ + "eval-csp-no-tt.tentative.html": [ "e8ed57708ef158d36cff2c0d0883910c84bb75e8", [ null, {} ] ], - "eval-csp-tt-default-policy.tentative.https.html": [ + "eval-csp-tt-default-policy.tentative.html": [ "106a024f2c1a8f4e2b2e99d2f15a81457179d807", [ null, {} ] ], - "eval-csp-tt-no-default-policy.tentative.https.html": [ + "eval-csp-tt-no-default-policy.tentative.html": [ "2f1e2a281b8859c0bda41f78818da4b48a2b46b5", [ null, {} ] ], - "eval-no-csp-no-tt-default-policy.tentative.https.html": [ + "eval-no-csp-no-tt-default-policy.tentative.html": [ "84c224eac28f6b26d4c0a15d7390185a576df716", [ null, {} ] ], - "eval-no-csp-no-tt.tentative.https.html": [ + "eval-no-csp-no-tt.tentative.html": [ "45086a1d6abdec58df8f3d5de5421bab0a2162a5", [ null, {} ] ], - "eval-with-permissive-csp.tentative.https.html": [ + "eval-with-permissive-csp.tentative.html": [ "abc698a46d31569cd105776b1c933d71c8bebf78", [ null, {} ] ], - "idlharness.tentative.https.window.js": [ + "idlharness.tentative.window.js": [ "5a854a12b78026a3318dad70ffa0d6a690e39f55", [ - "trusted-types/idlharness.tentative.https.window.html", + "trusted-types/idlharness.tentative.window.html", { "script_metadata": [ [ @@ -500485,112 +500764,105 @@ } ] ], - "no-require-trusted-types-for-report-only.tentative.https.html": [ + "no-require-trusted-types-for-report-only.tentative.html": [ "651bf0a7199beab43e4f00d3c72462ffda1905f2", [ null, {} ] ], - "no-require-trusted-types-for.tentative.https.html": [ + "no-require-trusted-types-for.tentative.html": [ "651bf0a7199beab43e4f00d3c72462ffda1905f2", [ null, {} ] ], - "nonsecure-require-trusted-types-for.tentative.html": [ - "46dae7a966142f4946767ac8ea8784c81f97ce15", - [ - null, - {} - ] - ], - "require-trusted-types-for-report-only.tentative.https.html": [ + "require-trusted-types-for-report-only.tentative.html": [ "25b4440ef4117010bb7da7c8f3ad87f01d3bf55f", [ null, {} ] ], - "require-trusted-types-for.tentative.https.html": [ + "require-trusted-types-for.tentative.html": [ "2a3820a89b8ad36c324139bf75fab8d72d7087a4", [ null, {} ] ], - "trusted-types-createHTMLDocument.tentative.https.html": [ + "trusted-types-createHTMLDocument.tentative.html": [ "e4af2eb59029a11aaa5490023fbb942063cd3722", [ null, {} ] ], - "trusted-types-duplicate-names-list-report-only.tentative.https.html": [ + "trusted-types-duplicate-names-list-report-only.tentative.html": [ "46ca2edb6fb57b354b3a80f327dbfbe6760f21c6", [ null, {} ] ], - "trusted-types-duplicate-names-list.tentative.https.html": [ + "trusted-types-duplicate-names-list.tentative.html": [ "afb2f5f7c4b7f6ddfe8da004750017e6c7f01f9a", [ null, {} ] ], - "trusted-types-duplicate-names.tentative.https.html": [ + "trusted-types-duplicate-names.tentative.html": [ "decce5356467f9f4e6a8886c6b6eff7194bf2385", [ null, {} ] ], - "trusted-types-eval-reporting-no-unsafe-eval.tentative.https.html": [ + "trusted-types-eval-reporting-no-unsafe-eval.tentative.html": [ "081f9becbd09e7875ca3786842b9d2495df7e9ba", [ null, {} ] ], - "trusted-types-eval-reporting-report-only.tentative.https.html": [ + "trusted-types-eval-reporting-report-only.tentative.html": [ "3fd1c9ffa8d115a939348a149121103d7b97c2ae", [ null, {} ] ], - "trusted-types-eval-reporting.tentative.https.html": [ + "trusted-types-eval-reporting.tentative.html": [ "9621aaba9749a9522703f87bfd23466545f14a70", [ null, {} ] ], - "trusted-types-navigation.tentative.https.html": [ + "trusted-types-navigation.tentative.html": [ "4e784611dd64ecf2f9995403b1d4e5a19f8b4548", [ null, {} ] ], - "trusted-types-report-only.tentative.https.html": [ + "trusted-types-report-only.tentative.html": [ "fcb77841163d9a09774497d2b8588f85c2a42b06", [ null, {} ] ], - "trusted-types-reporting-check-report.https.html": [ + "trusted-types-reporting-check-report.html": [ "fc98f5cbc586e4238dbf1c8dc20b74105693bec4", [ null, {} ] ], - "trusted-types-reporting.tentative.https.html": [ + "trusted-types-reporting.tentative.html": [ "5003fc7fad5fab912e678c6fe0ec60e7935d0613", [ null, @@ -500599,14 +500871,14 @@ } ] ], - "trusted-types-svg-script.tentative.https.html": [ + "trusted-types-svg-script.tentative.html": [ "330efc0c0ac8cc316019367c298e14fdc0439af6", [ null, {} ] ], - "tt-block-eval.tentative.https.html": [ + "tt-block-eval.tentative.html": [ "13178bd44bf17f06c6d6d46433dcad273367a364", [ null, @@ -503679,7 +503951,7 @@ }, "visual-viewport": { "idlharness.window.js": [ - "f0b5aeb173a567dd1160caf262a57e6ecf8328b4", + "8a41f8d6b87e4b383bc38e86369ea9ab42b11037", [ "visual-viewport/idlharness.window.html", { @@ -503691,8 +503963,13 @@ [ "script", "/resources/idlharness.js" + ], + [ + "timeout", + "long" ] - ] + ], + "timeout": "long" } ] ], @@ -508744,6 +509021,13 @@ {} ] ], + "k-rate-audioworklet-connections.https.html": [ + "4d2eb40d5520fd49310ab2dc16934890fdc858a2", + [ + null, + {} + ] + ], "k-rate-audioworklet.https.html": [ "e891da6da2b02924aac74b9e850677dc080b57b0", [ @@ -511624,6 +511908,15 @@ } ] ], + "RTCPeerConnection-videoDetectorTest.html": [ + "c9d0f24b12b3354808795cdf293ec3ecec0914b2", + [ + null, + { + "timeout": "long" + } + ] + ], "RTCPeerConnectionIceEvent-constructor.html": [ "447002dca1fa35816fdd24c74dd761c1d48cf028", [ @@ -516524,6 +516817,45 @@ ] ] }, + "webtransport": { + "quic": { + "client-indication.any.js": [ + "15baa5f8542cb2d1a1c73f03dca24dcd09cfc5f6", + [ + "webtransport/quic/client-indication.any.html", + { + "quic": true, + "script_metadata": [ + [ + "quic", + "true" + ], + [ + "script", + "/common/get-host-info.sub.js" + ] + ] + } + ], + [ + "webtransport/quic/client-indication.any.worker.html", + { + "quic": true, + "script_metadata": [ + [ + "quic", + "true" + ], + [ + "script", + "/common/get-host-info.sub.js" + ] + ] + } + ] + ] + } + }, "webusb": { "idlharness.https.any.js": [ "04cbf708267b0687cffc50e5138622c951b0cd9f", diff --git a/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-002.html.ini b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-002.html.ini deleted file mode 100644 index f64b45fea6b..00000000000 --- a/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-002.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[hit-test-floats-002.html] - [Hit test float] - expected: FAIL - diff --git a/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-004.html.ini b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-004.html.ini new file mode 100644 index 00000000000..4bfb0c2053a --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-004.html.ini @@ -0,0 +1,4 @@ +[hit-test-floats-004.html] + [Miss float below something else] + expected: FAIL + diff --git a/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-005.html.ini b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-005.html.ini new file mode 100644 index 00000000000..baa9f1a7541 --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-005.html.ini @@ -0,0 +1,4 @@ +[hit-test-floats-005.html] + [Miss clipped float] + expected: FAIL + diff --git a/tests/wpt/metadata/css/compositing/mix-blend-mode/mix-blend-mode-animation.html.ini b/tests/wpt/metadata/css/compositing/mix-blend-mode/mix-blend-mode-animation.html.ini deleted file mode 100644 index a647125277a..00000000000 --- a/tests/wpt/metadata/css/compositing/mix-blend-mode/mix-blend-mode-animation.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[mix-blend-mode-animation.html] - expected: TIMEOUT diff --git a/tests/wpt/metadata/css/css-fonts/math-script-level-and-math-style/math-script-level-001.tentative.html.ini b/tests/wpt/metadata/css/css-fonts/math-script-level-and-math-style/math-script-level-001.tentative.html.ini deleted file mode 100644 index 0226a9e459d..00000000000 --- a/tests/wpt/metadata/css/css-fonts/math-script-level-and-math-style/math-script-level-001.tentative.html.ini +++ /dev/null @@ -1,16 +0,0 @@ -[math-script-level-001.tentative.html] - [Initial value of math-script-level] - expected: FAIL - - [Specified math-script-level: auto] - expected: FAIL - - [Inherited values of math-script-level] - expected: FAIL - - [Specified math-script-level: add(<integer>)] - expected: FAIL - - [Specified math-script-level: <integer>] - expected: FAIL - diff --git a/tests/wpt/metadata/css/css-images/image-resolution/image-resolution-001.html.ini b/tests/wpt/metadata/css/css-images/image-resolution/image-resolution-001.html.ini new file mode 100644 index 00000000000..874c28a9338 --- /dev/null +++ b/tests/wpt/metadata/css/css-images/image-resolution/image-resolution-001.html.ini @@ -0,0 +1,2 @@ +[image-resolution-001.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-images/image-resolution/image-resolution-002.html.ini b/tests/wpt/metadata/css/css-images/image-resolution/image-resolution-002.html.ini new file mode 100644 index 00000000000..5768f2b9259 --- /dev/null +++ b/tests/wpt/metadata/css/css-images/image-resolution/image-resolution-002.html.ini @@ -0,0 +1,2 @@ +[image-resolution-002.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-images/image-resolution/image-resolution-003.html.ini b/tests/wpt/metadata/css/css-images/image-resolution/image-resolution-003.html.ini new file mode 100644 index 00000000000..5e047f1f0ec --- /dev/null +++ b/tests/wpt/metadata/css/css-images/image-resolution/image-resolution-003.html.ini @@ -0,0 +1,2 @@ +[image-resolution-003.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-images/image-resolution/image-resolution-004.html.ini b/tests/wpt/metadata/css/css-images/image-resolution/image-resolution-004.html.ini new file mode 100644 index 00000000000..971198db35b --- /dev/null +++ b/tests/wpt/metadata/css/css-images/image-resolution/image-resolution-004.html.ini @@ -0,0 +1,2 @@ +[image-resolution-004.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-images/image-resolution/image-resolution-005.html.ini b/tests/wpt/metadata/css/css-images/image-resolution/image-resolution-005.html.ini new file mode 100644 index 00000000000..fe09e8a56df --- /dev/null +++ b/tests/wpt/metadata/css/css-images/image-resolution/image-resolution-005.html.ini @@ -0,0 +1,2 @@ +[image-resolution-005.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-images/image-resolution/image-resolution-006.html.ini b/tests/wpt/metadata/css/css-images/image-resolution/image-resolution-006.html.ini new file mode 100644 index 00000000000..88c411d4246 --- /dev/null +++ b/tests/wpt/metadata/css/css-images/image-resolution/image-resolution-006.html.ini @@ -0,0 +1,2 @@ +[image-resolution-006.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-images/image-resolution/image-resolution-007.html.ini b/tests/wpt/metadata/css/css-images/image-resolution/image-resolution-007.html.ini new file mode 100644 index 00000000000..faf7899f3b5 --- /dev/null +++ b/tests/wpt/metadata/css/css-images/image-resolution/image-resolution-007.html.ini @@ -0,0 +1,2 @@ +[image-resolution-007.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-images/image-resolution/image-resolution-008.html.ini b/tests/wpt/metadata/css/css-images/image-resolution/image-resolution-008.html.ini new file mode 100644 index 00000000000..f918390c553 --- /dev/null +++ b/tests/wpt/metadata/css/css-images/image-resolution/image-resolution-008.html.ini @@ -0,0 +1,2 @@ +[image-resolution-008.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-images/image-resolution/image-resolution-009.html.ini b/tests/wpt/metadata/css/css-images/image-resolution/image-resolution-009.html.ini new file mode 100644 index 00000000000..db0026a5889 --- /dev/null +++ b/tests/wpt/metadata/css/css-images/image-resolution/image-resolution-009.html.ini @@ -0,0 +1,2 @@ +[image-resolution-009.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-images/image-resolution/image-resolution-010.html.ini b/tests/wpt/metadata/css/css-images/image-resolution/image-resolution-010.html.ini new file mode 100644 index 00000000000..0f4c441222f --- /dev/null +++ b/tests/wpt/metadata/css/css-images/image-resolution/image-resolution-010.html.ini @@ -0,0 +1,2 @@ +[image-resolution-010.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-transforms/transform-scale-hittest.html.ini b/tests/wpt/metadata/css/css-transforms/transform-scale-hittest.html.ini index 4a1e8110f6f..f8e7e539aae 100644 --- a/tests/wpt/metadata/css/css-transforms/transform-scale-hittest.html.ini +++ b/tests/wpt/metadata/css/css-transforms/transform-scale-hittest.html.ini @@ -2,3 +2,6 @@ [Hit test intersecting scaled box] expected: FAIL + [Hit test within unscaled box] + expected: FAIL + diff --git a/tests/wpt/metadata/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini b/tests/wpt/metadata/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini index c884dc82eab..628b1fab770 100644 --- a/tests/wpt/metadata/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini +++ b/tests/wpt/metadata/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini @@ -2,6 +2,3 @@ [listeners are called when <iframe> is resized] expected: FAIL - [listeners are called correct number of times] - expected: FAIL - diff --git a/tests/wpt/metadata/css/cssom-view/elementFromPoint-001.html.ini b/tests/wpt/metadata/css/cssom-view/elementFromPoint-001.html.ini new file mode 100644 index 00000000000..e38782d8c85 --- /dev/null +++ b/tests/wpt/metadata/css/cssom-view/elementFromPoint-001.html.ini @@ -0,0 +1,4 @@ +[elementFromPoint-001.html] + [CSSOM View - 5 - extensions to the Document interface] + expected: FAIL + diff --git a/tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini b/tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini index 5733d536fd3..85e94926cb3 100644 --- a/tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini +++ b/tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini @@ -21,6 +21,3 @@ [test the top of layer] expected: FAIL - [test some point of the element: top left corner] - 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 205fe66890e..338b03e7fcf 100644 --- a/tests/wpt/metadata/fetch/content-type/response.window.js.ini +++ b/tests/wpt/metadata/fetch/content-type/response.window.js.ini @@ -312,24 +312,15 @@ [fetch(): separate response Content-Type: text/plain ] expected: NOTRUN - [<iframe>: separate response Content-Type: text/html;x=" text/plain] - expected: FAIL - [<iframe>: combined response Content-Type: text/html;" text/plain] expected: FAIL - [<iframe>: combined response Content-Type: */* text/html] - expected: FAIL - [<iframe>: separate response Content-Type: text/html;" text/plain] expected: FAIL - [<iframe>: separate response Content-Type: text/html */*] - expected: FAIL - [<iframe>: separate response Content-Type: text/plain */*] expected: FAIL - [<iframe>: combined response Content-Type: text/html;" \\" text/plain] + [<iframe>: separate response Content-Type: text/html */*;charset=gbk] 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 646a46c0cbb..a5b9b3752be 100644 --- a/tests/wpt/metadata/fetch/content-type/script.window.js.ini +++ b/tests/wpt/metadata/fetch/content-type/script.window.js.ini @@ -53,12 +53,6 @@ [combined text/javascript ] expected: FAIL - [separate text/javascript x/x] - expected: FAIL - - [separate text/javascript;charset=windows-1252 error text/javascript] - expected: FAIL - - [separate text/javascript error] + [separate text/javascript;charset=windows-1252 text/javascript] 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 28f4c9616f6..1d1d4af041d 100644 --- a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini +++ b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini @@ -8,6 +8,9 @@ [X-Content-Type-Options%3A%20nosniff%0C] expected: FAIL - [X-Content-Type-Options%3A%0D%0AX-Content-Type-Options%3A%20nosniff] + [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%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!] expected: FAIL diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini new file mode 100644 index 00000000000..75d75b4cda2 --- /dev/null +++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini @@ -0,0 +1,4 @@ +[traverse_the_history_2.html] + [Multiple history traversals, last would be aborted] + expected: FAIL + diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini new file mode 100644 index 00000000000..dc2e45516de --- /dev/null +++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini @@ -0,0 +1,4 @@ +[traverse_the_history_5.html] + [Multiple history traversals, last would be aborted] + expected: FAIL + diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini index 2a166bb97b7..fc37df7e3fa 100644 --- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini @@ -1,6 +1,6 @@ [iframe_sandbox_popups_escaping-1.html] type: testharness - expected: CRASH + expected: TIMEOUT [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_escaping-3.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini index b3bd9f4c289..5f60c78e73c 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: CRASH + expected: TIMEOUT [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-2.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini index 45d8be1c898..d43f38b40cd 100644 --- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini @@ -1,6 +1,6 @@ [iframe_sandbox_popups_nonescaping-2.html] type: testharness - expected: CRASH + expected: TIMEOUT [Check that popups from a sandboxed iframe do not escape the sandbox] expected: NOTRUN 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 e440b1e38c6..71edac2c5ed 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,6 +1,6 @@ [iframe_sandbox_popups_nonescaping-3.html] type: testharness - expected: TIMEOUT + expected: CRASH [Check that popups from a sandboxed iframe do not escape the sandbox] expected: NOTRUN diff --git a/tests/wpt/metadata/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini b/tests/wpt/metadata/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini index 01f7b72cbe7..0cef5158fae 100644 --- a/tests/wpt/metadata/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini +++ b/tests/wpt/metadata/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini @@ -4,6 +4,3 @@ [The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document] expected: TIMEOUT - [The entry settings object while executing the compiled callback via Web IDL's invoke must be that of the node document] - expected: FAIL - diff --git a/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html.ini b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html.ini index a1effd5f801..5ddb9bfeff6 100644 --- a/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html.ini +++ b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html.ini @@ -1,9 +1,10 @@ [promise-job-entry.html] + expected: TIMEOUT [Fulfillment handler on fulfilled promise] expected: FAIL [Rejection handler on pending-then-rejected promise] - expected: FAIL + expected: TIMEOUT [Sanity check: this all works as expected with no promises involved] expected: FAIL @@ -15,5 +16,5 @@ expected: FAIL [Fulfillment handler on pending-then-fulfilled promise] - expected: FAIL + expected: TIMEOUT diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/k-rate-audioworklet-connections.https.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/k-rate-audioworklet-connections.https.html.ini new file mode 100644 index 00000000000..82583c932a2 --- /dev/null +++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/k-rate-audioworklet-connections.https.html.ini @@ -0,0 +1,7 @@ +[k-rate-audioworklet-connections.https.html] + [Executing "Create Test Worklet"] + expected: FAIL + + [Executing "AudioWorklet k-rate AudioParam"] + expected: FAIL + diff --git a/tests/wpt/metadata/webmessaging/without-ports/017.html.ini b/tests/wpt/metadata/webmessaging/without-ports/017.html.ini deleted file mode 100644 index 064cf47545b..00000000000 --- a/tests/wpt/metadata/webmessaging/without-ports/017.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[017.html] - expected: TIMEOUT - [origin of the script that invoked the method, about:blank] - expected: TIMEOUT - diff --git a/tests/wpt/web-platform-tests/.azure-pipelines.yml b/tests/wpt/web-platform-tests/.azure-pipelines.yml index 0bf63f7a374..264e5d076d1 100644 --- a/tests/wpt/web-platform-tests/.azure-pipelines.yml +++ b/tests/wpt/web-platform-tests/.azure-pipelines.yml @@ -81,7 +81,7 @@ jobs: name: test_jobs displayName: 'Run ./wpt test-jobs' -- job: infrastructure_macOS +- job: infrastructure_mac displayName: 'infrastructure/ tests: macOS' dependsOn: decision condition: dependencies.decision.outputs['test_jobs.wptrunner_infrastructure'] @@ -114,7 +114,7 @@ jobs: artifactName: 'infrastructure' condition: always() -- job: tools_unittest_macOS +- job: tools_unittest_mac displayName: 'tools/ unittests: macOS' dependsOn: decision condition: dependencies.decision.outputs['test_jobs.tools_unittest'] @@ -132,8 +132,8 @@ jobs: directory: tools/ toxenv: py27 -- job: tools_unittest_macOS_py3 - displayName: 'tools/ unittests: macOS (Python 3.6)' +- job: tools_unittest_mac_py36 + displayName: 'tools/ unittests: macOS + Python 3.6' dependsOn: decision condition: dependencies.decision.outputs['test_jobs.tools_unittest'] pool: @@ -148,8 +148,8 @@ jobs: directory: tools/ toxenv: py36 -- job: tools_unittest_macOS_py38 - displayName: 'tools/ unittests: macOS (Python 3.8)' +- job: tools_unittest_mac_py38 + displayName: 'tools/ unittests: macOS + Python 3.8' dependsOn: decision condition: dependencies.decision.outputs['test_jobs.tools_unittest'] pool: @@ -164,7 +164,7 @@ jobs: directory: tools/ toxenv: py38 -- job: wptrunner_unittest_macOS +- job: wptrunner_unittest_mac displayName: 'tools/wptrunner/ unittests: macOS' dependsOn: decision condition: dependencies.decision.outputs['test_jobs.wptrunner_unittest'] @@ -182,8 +182,8 @@ jobs: directory: tools/wptrunner/ toxenv: py27 -- job: wptrunner_unittest_macOS_py3 - displayName: 'tools/wptrunner/ unittests: macOS (Python 3.6)' +- job: wptrunner_unittest_mac_py36 + displayName: 'tools/wptrunner/ unittests: macOS + Python 3.6' dependsOn: decision condition: dependencies.decision.outputs['test_jobs.wptrunner_unittest'] pool: @@ -198,8 +198,8 @@ jobs: directory: tools/wptrunner/ toxenv: py36 -- job: wptrunner_unittest_macOS_py38 - displayName: 'tools/wptrunner/ unittests: macOS (Python 3.8)' +- job: wptrunner_unittest_mac_py38 + displayName: 'tools/wptrunner/ unittests: macOS + Python 3.8' dependsOn: decision condition: dependencies.decision.outputs['test_jobs.wptrunner_unittest'] pool: @@ -214,7 +214,7 @@ jobs: directory: tools/wptrunner/ toxenv: py38 -- job: wpt_integration_macOS +- job: wpt_integration_mac displayName: 'tools/wpt/ tests: macOS' dependsOn: decision condition: dependencies.decision.outputs['test_jobs.wpt_integration'] @@ -236,8 +236,8 @@ jobs: directory: tools/wpt/ toxenv: py27 -- job: wpt_integration_macOS_py3 - displayName: 'tools/wpt/ tests: macOS (Python 3.6)' +- job: wpt_integration_mac_py36 + displayName: 'tools/wpt/ tests: macOS + Python 3.6' dependsOn: decision condition: dependencies.decision.outputs['test_jobs.wpt_integration'] pool: @@ -247,10 +247,6 @@ jobs: - task: UsePythonVersion@0 inputs: versionSpec: '3.6.x' - # Python 2.7 still needed to update manifest. - - task: UsePythonVersion@0 - inputs: - versionSpec: '2.7.x' - template: tools/ci/azure/install_chrome.yml - template: tools/ci/azure/install_firefox.yml - template: tools/ci/azure/update_hosts.yml @@ -260,8 +256,8 @@ jobs: directory: tools/wpt/ toxenv: py36 -- job: wpt_integration_macOS_py38 - displayName: 'tools/wpt/ tests: macOS (Python 3.8)' +- job: wpt_integratio_mac_py38 + displayName: 'tools/wpt/ tests: macOS + Python 3.8' dependsOn: decision condition: dependencies.decision.outputs['test_jobs.wpt_integration'] pool: @@ -271,10 +267,6 @@ jobs: - task: UsePythonVersion@0 inputs: versionSpec: '3.8.x' - # Python 2.7 still needed to update manifest. - - task: UsePythonVersion@0 - inputs: - versionSpec: '2.7.x' - template: tools/ci/azure/install_chrome.yml - template: tools/ci/azure/install_firefox.yml - template: tools/ci/azure/update_hosts.yml @@ -302,8 +294,8 @@ jobs: directory: tools/ toxenv: py27 -- job: tools_unittest_win_py3 - displayName: 'tools/ unittests: Windows (Python 3.6)' +- job: tools_unittest_win_py36 + displayName: 'tools/ unittests: Windows + Python 3.6' dependsOn: decision condition: dependencies.decision.outputs['test_jobs.tools_unittest'] pool: @@ -322,7 +314,7 @@ jobs: toxenv: py36 - job: tools_unittest_win_py38 - displayName: 'tools/ unittests: Windows (Python 3.8)' + displayName: 'tools/ unittests: Windows + Python 3.8' dependsOn: decision condition: dependencies.decision.outputs['test_jobs.tools_unittest'] pool: @@ -356,8 +348,8 @@ jobs: directory: tools/wptrunner/ toxenv: py27 -- job: wptrunner_unittest_win_py3 - displayName: 'tools/wptrunner/ unittests: Windows (Python 3.6)' +- job: wptrunner_unittest_win_py36 + displayName: 'tools/wptrunner/ unittests: Windows + Python 3.6' dependsOn: decision condition: dependencies.decision.outputs['test_jobs.wptrunner_unittest'] pool: @@ -374,7 +366,7 @@ jobs: toxenv: py36 - job: wptrunner_unittest_win_py38 - displayName: 'tools/wptrunner/ unittests: Windows (Python 3.8)' + displayName: 'tools/wptrunner/ unittests: Windows + Python 3.8' dependsOn: decision condition: dependencies.decision.outputs['test_jobs.wptrunner_unittest'] pool: @@ -414,8 +406,8 @@ jobs: directory: tools/wpt/ toxenv: py27 -- job: wpt_integration_win_py3 - displayName: 'tools/wpt/ tests: Windows (Python 3.6)' +- job: wpt_integration_win_py36 + displayName: 'tools/wpt/ tests: Windows + Python 3.6' dependsOn: decision condition: dependencies.decision.outputs['test_jobs.wpt_integration'] pool: @@ -425,12 +417,6 @@ jobs: - task: UsePythonVersion@0 inputs: versionSpec: '3.6.x' - addToPath: false - # Python 2.7 still needed to update manifest. - - task: UsePythonVersion@0 - inputs: - versionSpec: '2.7.x' - addToPath: true # currently just using the outdated Chrome/Firefox on the VM rather than # figuring out how to install Chrome Dev channel on Windows # - template: tools/ci/azure/install_chrome.yml @@ -443,7 +429,7 @@ jobs: toxenv: py36 - job: wpt_integration_win_py38 - displayName: 'tools/wpt/ tests: Windows (Python 3.8)' + displayName: 'tools/wpt/ tests: Windows + Python 3.8' dependsOn: decision condition: dependencies.decision.outputs['test_jobs.wpt_integration'] pool: @@ -453,12 +439,6 @@ jobs: - task: UsePythonVersion@0 inputs: versionSpec: '3.8.x' - addToPath: false - # Python 2.7 still needed to update manifest. - - task: UsePythonVersion@0 - inputs: - versionSpec: '2.7.x' - addToPath: true # currently just using the outdated Chrome/Firefox on the VM rather than # figuring out how to install Chrome Dev channel on Windows # - template: tools/ci/azure/install_chrome.yml diff --git a/tests/wpt/web-platform-tests/cookie-store/cookieListItem_attributes.tentative.https.any.js b/tests/wpt/web-platform-tests/cookie-store/cookieListItem_attributes.tentative.https.any.js index 5d46b2d119c..344277382dd 100644 --- a/tests/wpt/web-platform-tests/cookie-store/cookieListItem_attributes.tentative.https.any.js +++ b/tests/wpt/web-platform-tests/cookie-store/cookieListItem_attributes.tentative.https.any.js @@ -191,24 +191,6 @@ promise_test(async testCase => { assert_array_equals(Object.keys(cookie).sort(), kCookieListItemKeys); }, 'CookieListItem - cookieStore.set adds / to path if it does not end with /'); -promise_test(async testCase => { - await cookieStore.delete('cookie-name'); - - await cookieStore.set('cookie-name', 'cookie-value', { secure: false }); - testCase.add_cleanup(async () => { - await cookieStore.delete('cookie-name'); - }); - const cookie = await cookieStore.get('cookie-name'); - assert_equals(cookie.name, 'cookie-name'); - assert_equals(cookie.value, 'cookie-value'); - assert_equals(cookie.domain, null); - assert_equals(cookie.path, '/'); - assert_equals(cookie.expires, null); - assert_equals(cookie.secure, false); - assert_equals(cookie.sameSite, 'strict'); - assert_array_equals(Object.keys(cookie).sort(), kCookieListItemKeys); -}, 'CookieListItem - cookieStore.set with secure set to false'); - ['strict', 'lax', 'none'].forEach(sameSiteValue => { promise_test(async testCase => { await cookieStore.delete('cookie-name'); diff --git a/tests/wpt/web-platform-tests/cookie-store/cookieStore_delete_insecure.tentative.https.any.js b/tests/wpt/web-platform-tests/cookie-store/cookieStore_delete_insecure.tentative.https.any.js deleted file mode 100644 index aec0e28615c..00000000000 --- a/tests/wpt/web-platform-tests/cookie-store/cookieStore_delete_insecure.tentative.https.any.js +++ /dev/null @@ -1,22 +0,0 @@ -// META: title=Cookie Store API: cookieStore.delete() with insecure cookies -// META: global=window,serviceworker - -'use strict'; - -promise_test(async t => { - await cookieStore.set('cookie-name', 'cookie-value', { secure: false }); - t.add_cleanup(async () => { await cookieStore.delete('cookie-name'); }); - - await cookieStore.delete('cookie-name'); - const cookie = await cookieStore.get('cookie-name'); - assert_equals(cookie, null); -}, 'cookieStore.delete(name) can delete an insecure cookie'); - -promise_test(async t => { - await cookieStore.set('cookie-name', 'cookie-value', { secure: false }); - t.add_cleanup(async () => { await cookieStore.delete('cookie-name'); }); - - await cookieStore.delete({ name: 'cookie-name' }); - const cookie = await cookieStore.get('cookie-name'); - assert_equals(cookie, null); -}, 'cookieStore.delete(options) can delete an insecure cookie'); diff --git a/tests/wpt/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-script-level-001.tentative.html b/tests/wpt/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-script-level-001.tentative.html deleted file mode 100644 index 6a353a635b8..00000000000 --- a/tests/wpt/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-script-level-001.tentative.html +++ /dev/null @@ -1,65 +0,0 @@ -<!DOCTYPE html> -<html> - <head> - <title>math-script-level</title> - <meta charset="utf-8"> - <link rel="help" href="https://github.com/w3c/csswg-drafts/issues/3746"> - <link rel="help" href="https://mathml-refresh.github.io/mathml-core/#the-math-script-level-property"> - <meta name="assert" content="Check the resolved value of math-script-level"> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script> - function mathScriptLevel(id) { - return window.getComputedStyle(document.getElementById(id)). - getPropertyValue("math-script-level"); - } - setup({ explicit_done: true }); - window.addEventListener("load", function() { - test(function() { - assert_equals(mathScriptLevel("initial"), "0"); - assert_equals(mathScriptLevel("initialFrom11"), "0"); - }, "Initial value of math-script-level"); - test(function() { - assert_equals(mathScriptLevel("inherited11"), "11"); - assert_equals(mathScriptLevel("inherited-7"), "-7"); - }, "Inherited values of math-script-level"); - test(function() { - assert_equals(mathScriptLevel("inherited9specifiedAutoInline"), "10"); - assert_equals(mathScriptLevel("inherited9specifiedAutoDisplay"), "9"); - }, "Specified math-script-level: auto"); - test(function() { - assert_equals(mathScriptLevel("specified11"), "11"); - assert_equals(mathScriptLevel("specified-7"), "-7"); - }, "Specified math-script-level: <integer>"); - test(function() { - assert_equals(mathScriptLevel("specifiedAdd10From5"), "15"); - assert_equals(mathScriptLevel("specifiedAdd-15From5"), "-10"); - }, "Specified math-script-level: add(<integer>)"); - done(); - }); - </script> - </head> - <body> - <div id="log"></div> - <div id="initial"></div> - <div id="specified11" style="math-script-level: 11"> - <div id="initialFrom11" style="math-script-level: initial"></div> - <div id="inherited11"></div> - </div> - <div id="specified-7" style="math-script-level: -7"> - <div id="inherited-7"></div> - </div> - <div style="math-script-level: 9"> - <div style="math-style: inline"> - <div id="inherited9specifiedAutoInline" style="math-script-level: auto" ></div> - </div> - <div style="math-style: display"> - <div id="inherited9specifiedAutoDisplay" style="math-script-level: auto" ></div> - </div> - </div> - <div style="math-script-level: 5"> - <div id="specifiedAdd10From5" style="math-script-level: add(10)"></div> - <div id="specifiedAdd-15From5" style="math-script-level: add(-15)"></div> - </div> - </body> -</html> diff --git a/tests/wpt/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-script-level-002.tentative.html b/tests/wpt/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-script-level-002.tentative.html index 0abce02e72d..1272f955985 100644 --- a/tests/wpt/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-script-level-002.tentative.html +++ b/tests/wpt/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-script-level-002.tentative.html @@ -5,7 +5,8 @@ <meta charset="utf-8"> <link rel="help" href="https://github.com/w3c/csswg-drafts/issues/3746"> <link rel="help" href="https://mathml-refresh.github.io/mathml-core/#the-math-script-level-property"> - <meta name="assert" content="Verify effect of math-script-level auto | add(<integer>) | <integer>, starting from different values of math-script-level."> + <link rel="help" href="https://www.w3.org/TR/cssom-1/#serialize-a-css-component-value"> + <meta name="assert" content="Verify effect of font-size: scriptlevel(auto) | scriptlevel(add(<integer>)) | scriptlevel(<integer>), starting from different values of math-script-level."> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <link rel="stylesheet" type="text/css" href="/fonts/ahem.css" /> @@ -17,6 +18,7 @@ } </style> <script> + var epsilon = .1; function fontSize(id) { return parseFloat((/(.+)px/).exec(getComputedStyle(document.getElementById(id)).getPropertyValue("font-size"))[1]); } @@ -25,11 +27,12 @@ document.fonts.ready.then(function() { test(function() { assert_equals(fontSize("autoDisplay"), 200); - assert_equals(fontSize("autoInline"), 355); + assert_equals(fontSize("autoInline"), 500 * .71); }, "auto"); test(function() { - assert_equals(fontSize("autoDisplayFrom7"), 200); - assert_equals(fontSize("autoInlineFrom7"), 355); + var initialSize = 2000 * Math.pow(.71, 7); + assert_approx_equals(fontSize("autoDisplayFrom7"), initialSize, epsilon); + assert_approx_equals(fontSize("autoInlineFrom7"), initialSize * .71, epsilon); }, "auto ; starting from level 7"); test(function() { assert_equals(fontSize("add0"), 200); @@ -78,111 +81,111 @@ <div class="container"> <div> <div style="font-size: 200px; math-style: display"> - <div id="autoDisplay" style="math-script-level: auto"></div> + <div id="autoDisplay" style="font-size: scriptlevel(auto)"></div> </div> <div style="font-size: 500px; math-style: inline"> - <div id="autoInline" style="math-script-level: auto"></div> + <div id="autoInline" style="font-size: scriptlevel(auto)"></div> </div> </div> - <div> - <div style="font-size: 200px; math-style: display; math-script-level: 7"> - <div id="autoDisplayFrom7" style="math-script-level: auto"></div> + <div style="font-size: 2000px;"> + <div style="math-style: display; font-size: scriptlevel(7)"> + <div id="autoDisplayFrom7" style="font-size: scriptlevel(auto)"></div> </div> - <div style="font-size: 500px; math-style: inline; math-script-level: 7"> - <div id="autoInlineFrom7" style="math-script-level: auto"></div> + <div style="math-style: inline; font-size: scriptlevel(7)"> + <div id="autoInlineFrom7" style="font-size: scriptlevel(auto)"></div> </div> </div> <div> <div style="font-size: 200px"> - <div id="add0" style="math-script-level: add(0)"></div> + <div id="add0" style="font-size: scriptlevel(add(0))"></div> </div> <div style="font-size: 71px"> - <div id="add-1" style="math-script-level: add(-1)"></div> + <div id="add-1" style="font-size: scriptlevel(add(-1))"></div> </div> <div style="font-size: 500px"> - <div id="add1" style="math-script-level: add(1)"></div> + <div id="add1" style="font-size: scriptlevel(add(1))"></div> </div> <div style="font-size: 200px"> - <div id="add-2" style="math-script-level: add(-2)"></div> + <div id="add-2" style="font-size: scriptlevel(add(-2))"></div> </div> <div style="font-size: 1000px"> - <div id="add2" style="math-script-level: add(2)"></div> + <div id="add2" style="font-size: scriptlevel(add(2))"></div> </div> <div style="font-size: 30px"> - <div id="add-9" style="math-script-level: add(-9)"></div> + <div id="add-9" style="font-size: scriptlevel(add(-9))"></div> </div> <div style="font-size: 2000px"> - <div id="add9" style="math-script-level: add(9)"></div> + <div id="add9" style="font-size: scriptlevel(add(9))"></div> </div> </div> - <div> - <div style="font-size: 200px; math-script-level: 3;"> - <div id="add0from3" style="math-script-level: add(0)"></div> + <div style="font-size: scriptlevel(3);"> + <div style="font-size: 200px;"> + <div id="add0from3" style="font-size: scriptlevel(add(0))"></div> </div> - <div style="font-size: 71px; math-script-level: 3;"> - <div id="add-1from3" style="math-script-level: add(-1)"></div> + <div style="font-size: 71px;"> + <div id="add-1from3" style="font-size: scriptlevel(add(-1))"></div> </div> - <div style="font-size: 500px; math-script-level: 3;"> - <div id="add1from3" style="math-script-level: add(1)"></div> + <div style="font-size: 500px;"> + <div id="add1from3" style="font-size: scriptlevel(add(1))"></div> </div> - <div style="font-size: 200px; math-script-level: 3;"> - <div id="add-2from3" style="math-script-level: add(-2)"></div> + <div style="font-size: 200px;"> + <div id="add-2from3" style="font-size: scriptlevel(add(-2))"></div> </div> - <div style="font-size: 1000px; math-script-level: 3;"> - <div id="add2from3" style="math-script-level: add(2)"></div> + <div style="font-size: 1000px;"> + <div id="add2from3" style="font-size: scriptlevel(add(2))"></div> </div> - <div style="font-size: 30px; math-script-level: 3;"> - <div id="add-9from3" style="math-script-level: add(-9)"></div> + <div style="font-size: 30px;"> + <div id="add-9from3" style="font-size: scriptlevel(add(-9))"></div> </div> - <div style="font-size: 2000px; math-script-level: 3;"> - <div id="add9from3" style="math-script-level: add(9)"></div> + <div style="font-size: 2000px;"> + <div id="add9from3" style="font-size: scriptlevel(add(9))"></div> </div> </div> <div> <div style="font-size: 200px"> - <div id="set0" style="math-script-level: 0"></div> + <div id="set0" style="font-size: scriptlevel(0)"></div> </div> <div style="font-size: 71px"> - <div id="set-1" style="math-script-level: -1"></div> + <div id="set-1" style="font-size: scriptlevel(-1)"></div> </div> <div style="font-size: 500px"> - <div id="set1" style="math-script-level: 1"></div> + <div id="set1" style="font-size: scriptlevel(1)"></div> </div> <div style="font-size: 200px"> - <div id="set-2" style="math-script-level: -2"></div> + <div id="set-2" style="font-size: scriptlevel(-2)"></div> </div> <div style="font-size: 1000px"> - <div id="set2" style="math-script-level: 2"></div> + <div id="set2" style="font-size: scriptlevel(2)"></div> </div> <div style="font-size: 30px"> - <div id="set-9" style="math-script-level: -9"></div> + <div id="set-9" style="font-size: scriptlevel(-9)"></div> </div> <div style="font-size: 2000px"> - <div id="set9" style="math-script-level: 9"></div> + <div id="set9" style="font-size: scriptlevel(9)"></div> </div> </div> </div> - <div> - <div style="font-size: 200px; math-script-level: 50"> - <div id="set50" style="math-script-level: 50"></div> + <div style="font-size: scriptlevel(50)"> + <div style="font-size: 200px;"> + <div id="set50" style="font-size: scriptlevel(50)"></div> </div> - <div style="font-size: 71px; math-script-level: 50"> - <div id="set49" style="math-script-level: 49"></div> + <div style="font-size: 71px;"> + <div id="set49" style="font-size: scriptlevel(49)"></div> </div> - <div style="font-size: 500px; math-script-level: 50"> - <div id="set51" style="math-script-level: 51"></div> + <div style="font-size: 500px;"> + <div id="set51" style="font-size: scriptlevel(51)"></div> </div> - <div style="font-size: 200px; math-script-level: 50"> - <div id="set48" style="math-script-level: 48"></div> + <div style="font-size: 200px;"> + <div id="set48" style="font-size: scriptlevel(48)"></div> </div> - <div style="font-size: 1000px; math-script-level: 50"> - <div id="set52" style="math-script-level: 52"></div> + <div style="font-size: 1000px;"> + <div id="set52" style="font-size: scriptlevel(52)"></div> </div> - <div style="font-size: 30px; math-script-level: 50"> - <div id="set41" style="math-script-level: 41"></div> + <div style="font-size: 30px;"> + <div id="set41" style="font-size: scriptlevel(41)"></div> </div> - <div style="font-size: 2000px; math-script-level: 50"> - <div id="set59" style="math-script-level: 59"></div> + <div style="font-size: 2000px;"> + <div id="set59" style="font-size: scriptlevel(59)"></div> </div> </div> </div> diff --git a/tests/wpt/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-script-level-003.tentative-ref.html b/tests/wpt/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-script-level-003.tentative-ref.html deleted file mode 100644 index 5fd8d7fed9a..00000000000 --- a/tests/wpt/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-script-level-003.tentative-ref.html +++ /dev/null @@ -1,25 +0,0 @@ -<!DOCTYPE html> -<html> - <head> - <title>math-script-level</title> - <meta charset="utf-8"> - <link rel="stylesheet" type="text/css" href="/fonts/ahem.css" /> - <style> - .container { - /* Ahem font does not have a MATH table so the font-size scale factor - is always 0.71^{computed - inherited math script level} */ - font: 100px/1 Ahem; - } - </style> - </head> - <body> - <p>Test passes if you see two squares of side 100px.</p> - <div class="container"> - <div>X</div> - </div> - <br/> - <div class="container"> - <div>X</div> - </div> - </body> -</html> diff --git a/tests/wpt/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-script-level-003.tentative.html b/tests/wpt/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-script-level-003.tentative.html deleted file mode 100644 index f5bf9982e27..00000000000 --- a/tests/wpt/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-script-level-003.tentative.html +++ /dev/null @@ -1,29 +0,0 @@ -<!DOCTYPE html> -<html> - <head> - <title>math-script-level</title> - <meta charset="utf-8"> - <link rel="help" href="https://github.com/w3c/csswg-drafts/issues/3746"> - <link rel="help" href="https://mathml-refresh.github.io/mathml-core/#the-math-script-level-property"> - <meta name="assert" content="If font-size is specified or if the specified value of math-script-level is initial then math-script-level does not affect the computed value of font-size."> - <link rel="match" href="math-script-level-003.tentative-ref.html"> - <link rel="stylesheet" type="text/css" href="/fonts/ahem.css" /> - <style> - .container { - /* Ahem font does not have a MATH table so the font-size scale factor - is always 0.71^{computed - inherited math script level} */ - font: 100px/1 Ahem; - } - </style> - </head> - <body> - <p>Test passes if you see two squares of side 100px.</p> - <div class="container" style="math-script-level: 3;"> - <div style="math-script-level: 9; font-size: 100px;">X</div> - </div> - <br/> - <div class="container" style="math-script-level: 3;"> - <div style="math-script-level: initial;">X</div> - </div> - </body> -</html> diff --git a/tests/wpt/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-script-level-004.tentative.html b/tests/wpt/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-script-level-004.tentative.html index cb82472a0c0..a938bd4d011 100644 --- a/tests/wpt/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-script-level-004.tentative.html +++ b/tests/wpt/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-script-level-004.tentative.html @@ -37,13 +37,13 @@ } .big { font-size: 3000px; } .small { font-size: 150px; } - .level-3 { math-script-level: -3; } - .level-1 { math-script-level: -1; } - .level0 { math-script-level: 0; } - .level1 { math-script-level: 1; } - .level2 { math-script-level: 2; } - .level3 { math-script-level: 3; } - .level5 { math-script-level: 5; } + .level-3 { font-size: scriptlevel(-3); } + .level-1 { font-size: scriptlevel(-1); } + .level0 { font-size: scriptlevel(0); } + .level1 { font-size: scriptlevel(1); } + .level2 { font-size: scriptlevel(2); } + .level3 { font-size: scriptlevel(3); } + .level5 { font-size: scriptlevel(5); } </style> <script> const big = 3000; @@ -53,10 +53,6 @@ // Delay the check to workaround WebKit's bug https://webkit.org/b/174030. requestAnimationFrame(() => { document.fonts.ready.then(runTests); }); }); - function mathScriptLevel(element) { - return window.getComputedStyle(element). - getPropertyValue("math-script-level"); - } function fontSize(element) { return parseFloat((/(.+)px/).exec(getComputedStyle(element). getPropertyValue("font-size"))[1]); @@ -66,7 +62,6 @@ for (var level in sizes) { var divs = container.getElementsByClassName(`level${level}`); for (var i = 0; i < divs.length; i++) { - assert_equals(mathScriptLevel(divs[i]), level); assert_approx_equals(fontSize(divs[i]), sizes[level], 1, `Wrong font-size (id=${id} ; level=${level} ; i=${i})`); } } @@ -166,28 +161,30 @@ <body> <div id="log"></div> - <div class="level-3 big" id="scale80-40-scaledown"> - <div class="level5"><!-- -3 to 5 --></div> - <div class="level3"><!-- -3 to 3 --></div> - <div class="level2"><!-- -3 to 2 --></div> - <div class="level1"><!-- -3 to 1 --></div> - <div class="level0"><!-- -3 to 0 --></div> - <div class="level-1"><!-- -3 to -1 --> - <div class="level5"><!-- -1 to 5 --></div> - <div class="level3"><!-- -1 to 3 --></div> - <div class="level2"><!-- -1 to 2 --></div> - <div class="level1"><!-- -1 to 1 --></div> - <div class="level0"><!-- -1 to 0 --> - <div class="level5"><!-- 0 to 5 --></div> - <div class="level3"><!-- 0 to 3 --></div> - <div class="level2"><!-- 0 to 2 --></div> - <div class="level1"><!-- 0 to 1 --> - <div class="level5"><!-- 1 to 5 --></div> - <div class="level3"><!-- 1 to 3 --></div> - <div class="level2"><!-- 1 to 2 --> - <div class="level5"><!-- 2 to 5 --></div> - <div class="level3"><!-- 2 to 3 --> - <div class="level5"><!-- 3 to 5 --></div> + <div class="level-3" id="scale80-40-scaledown"> + <div class="big"> + <div class="level5"><!-- -3 to 5 --></div> + <div class="level3"><!-- -3 to 3 --></div> + <div class="level2"><!-- -3 to 2 --></div> + <div class="level1"><!-- -3 to 1 --></div> + <div class="level0"><!-- -3 to 0 --></div> + <div class="level-1"><!-- -3 to -1 --> + <div class="level5"><!-- -1 to 5 --></div> + <div class="level3"><!-- -1 to 3 --></div> + <div class="level2"><!-- -1 to 2 --></div> + <div class="level1"><!-- -1 to 1 --></div> + <div class="level0"><!-- -1 to 0 --> + <div class="level5"><!-- 0 to 5 --></div> + <div class="level3"><!-- 0 to 3 --></div> + <div class="level2"><!-- 0 to 2 --></div> + <div class="level1"><!-- 0 to 1 --> + <div class="level5"><!-- 1 to 5 --></div> + <div class="level3"><!-- 1 to 3 --></div> + <div class="level2"><!-- 1 to 2 --> + <div class="level5"><!-- 2 to 5 --></div> + <div class="level3"><!-- 2 to 3 --> + <div class="level5"><!-- 3 to 5 --></div> + </div> </div> </div> </div> @@ -195,28 +192,30 @@ </div> </div> - <div class="level5 small" id="scale80-40-scaleup"> - <div class="level-3"><!-- 5 to -3 --></div> - <div class="level-1"><!-- 5 to -1 --></div> - <div class="level0"><!-- 5 to 0 --></div> - <div class="level1"><!-- 5 to 1 --></div> - <div class="level2"><!-- 5 to 2 --></div> - <div class="level3"><!-- 5 to 3 --> - <div class="level-3"><!-- 3 to -3 --></div> - <div class="level-1"><!-- 3 to -1 --></div> - <div class="level0"><!-- 3 to 0 --></div> - <div class="level1"><!-- 3 to 1 --></div> - <div class="level2"><!-- 3 to 2 --> - <div class="level-3"><!-- 2 to -3 --></div> - <div class="level-1"><!-- 2 to -1 --></div> - <div class="level0"><!-- 2 to 0 --></div> - <div class="level1"><!-- 2 to 1 --> - <div class="level-3"><!-- 1 to -3 --></div> - <div class="level-1"><!-- 1 to -1 --></div> - <div class="level0"><!-- 1 to 0 --> - <div class="level-3"><!-- 0 to -3 --></div> - <div class="level-1"><!-- 0 to -1 --> - <div class="level-3"><!-- -1 to -3 --></div> + <div class="level5" id="scale80-40-scaleup"> + <div class="small"> + <div class="level-3"><!-- 5 to -3 --></div> + <div class="level-1"><!-- 5 to -1 --></div> + <div class="level0"><!-- 5 to 0 --></div> + <div class="level1"><!-- 5 to 1 --></div> + <div class="level2"><!-- 5 to 2 --></div> + <div class="level3"><!-- 5 to 3 --> + <div class="level-3"><!-- 3 to -3 --></div> + <div class="level-1"><!-- 3 to -1 --></div> + <div class="level0"><!-- 3 to 0 --></div> + <div class="level1"><!-- 3 to 1 --></div> + <div class="level2"><!-- 3 to 2 --> + <div class="level-3"><!-- 2 to -3 --></div> + <div class="level-1"><!-- 2 to -1 --></div> + <div class="level0"><!-- 2 to 0 --></div> + <div class="level1"><!-- 2 to 1 --> + <div class="level-3"><!-- 1 to -3 --></div> + <div class="level-1"><!-- 1 to -1 --></div> + <div class="level0"><!-- 1 to 0 --> + <div class="level-3"><!-- 0 to -3 --></div> + <div class="level-1"><!-- 0 to -1 --> + <div class="level-3"><!-- -1 to -3 --></div> + </div> </div> </div> </div> @@ -224,28 +223,30 @@ </div> </div> - <div class="level-3 big" id="scale0-40-scaledown"> - <div class="level5"><!-- -3 to 5 --></div> - <div class="level3"><!-- -3 to 3 --></div> - <div class="level2"><!-- -3 to 2 --></div> - <div class="level1"><!-- -3 to 1 --></div> - <div class="level0"><!-- -3 to 0 --></div> - <div class="level-1"><!-- -3 to -1 --> - <div class="level5"><!-- -1 to 5 --></div> - <div class="level3"><!-- -1 to 3 --></div> - <div class="level2"><!-- -1 to 2 --></div> - <div class="level1"><!-- -1 to 1 --></div> - <div class="level0"><!-- -1 to 0 --> - <div class="level5"><!-- 0 to 5 --></div> - <div class="level3"><!-- 0 to 3 --></div> - <div class="level2"><!-- 0 to 2 --></div> - <div class="level1"><!-- 0 to 1 --> - <div class="level5"><!-- 1 to 5 --></div> - <div class="level3"><!-- 1 to 3 --></div> - <div class="level2"><!-- 1 to 2 --> - <div class="level5"><!-- 2 to 5 --></div> - <div class="level3"><!-- 2 to 3 --> - <div class="level5"><!-- 3 to 5 --></div> + <div class="level-3" id="scale0-40-scaledown"> + <div class="big"> + <div class="level5"><!-- -3 to 5 --></div> + <div class="level3"><!-- -3 to 3 --></div> + <div class="level2"><!-- -3 to 2 --></div> + <div class="level1"><!-- -3 to 1 --></div> + <div class="level0"><!-- -3 to 0 --></div> + <div class="level-1"><!-- -3 to -1 --> + <div class="level5"><!-- -1 to 5 --></div> + <div class="level3"><!-- -1 to 3 --></div> + <div class="level2"><!-- -1 to 2 --></div> + <div class="level1"><!-- -1 to 1 --></div> + <div class="level0"><!-- -1 to 0 --> + <div class="level5"><!-- 0 to 5 --></div> + <div class="level3"><!-- 0 to 3 --></div> + <div class="level2"><!-- 0 to 2 --></div> + <div class="level1"><!-- 0 to 1 --> + <div class="level5"><!-- 1 to 5 --></div> + <div class="level3"><!-- 1 to 3 --></div> + <div class="level2"><!-- 1 to 2 --> + <div class="level5"><!-- 2 to 5 --></div> + <div class="level3"><!-- 2 to 3 --> + <div class="level5"><!-- 3 to 5 --></div> + </div> </div> </div> </div> @@ -253,28 +254,30 @@ </div> </div> - <div class="level5 small" id="scale0-40-scaleup"> - <div class="level-3"><!-- 5 to -3 --></div> - <div class="level-1"><!-- 5 to -1 --></div> - <div class="level0"><!-- 5 to 0 --></div> - <div class="level1"><!-- 5 to 1 --></div> - <div class="level2"><!-- 5 to 2 --></div> - <div class="level3"><!-- 5 to 3 --> - <div class="level-3"><!-- 3 to -3 --></div> - <div class="level-1"><!-- 3 to -1 --></div> - <div class="level0"><!-- 3 to 0 --></div> - <div class="level1"><!-- 3 to 1 --></div> - <div class="level2"><!-- 3 to 2 --> - <div class="level-3"><!-- 2 to -3 --></div> - <div class="level-1"><!-- 2 to -1 --></div> - <div class="level0"><!-- 2 to 0 --></div> - <div class="level1"><!-- 2 to 1 --> - <div class="level-3"><!-- 1 to -3 --></div> - <div class="level-1"><!-- 1 to -1 --></div> - <div class="level0"><!-- 1 to 0 --> - <div class="level-3"><!-- 0 to -3 --></div> - <div class="level-1"><!-- 0 to -1 --> - <div class="level-3"><!-- -1 to -3 --></div> + <div class="level5" id="scale0-40-scaleup"> + <div class="small"> + <div class="level-3"><!-- 5 to -3 --></div> + <div class="level-1"><!-- 5 to -1 --></div> + <div class="level0"><!-- 5 to 0 --></div> + <div class="level1"><!-- 5 to 1 --></div> + <div class="level2"><!-- 5 to 2 --></div> + <div class="level3"><!-- 5 to 3 --> + <div class="level-3"><!-- 3 to -3 --></div> + <div class="level-1"><!-- 3 to -1 --></div> + <div class="level0"><!-- 3 to 0 --></div> + <div class="level1"><!-- 3 to 1 --></div> + <div class="level2"><!-- 3 to 2 --> + <div class="level-3"><!-- 2 to -3 --></div> + <div class="level-1"><!-- 2 to -1 --></div> + <div class="level0"><!-- 2 to 0 --></div> + <div class="level1"><!-- 2 to 1 --> + <div class="level-3"><!-- 1 to -3 --></div> + <div class="level-1"><!-- 1 to -1 --></div> + <div class="level0"><!-- 1 to 0 --> + <div class="level-3"><!-- 0 to -3 --></div> + <div class="level-1"><!-- 0 to -1 --> + <div class="level-3"><!-- -1 to -3 --></div> + </div> </div> </div> </div> @@ -282,28 +285,30 @@ </div> </div> - <div class="level-3 big" id="scale80-0-scaledown"> - <div class="level5"><!-- -3 to 5 --></div> - <div class="level3"><!-- -3 to 3 --></div> - <div class="level2"><!-- -3 to 2 --></div> - <div class="level1"><!-- -3 to 1 --></div> - <div class="level0"><!-- -3 to 0 --></div> - <div class="level-1"><!-- -3 to -1 --> - <div class="level5"><!-- -1 to 5 --></div> - <div class="level3"><!-- -1 to 3 --></div> - <div class="level2"><!-- -1 to 2 --></div> - <div class="level1"><!-- -1 to 1 --></div> - <div class="level0"><!-- -1 to 0 --> - <div class="level5"><!-- 0 to 5 --></div> - <div class="level3"><!-- 0 to 3 --></div> - <div class="level2"><!-- 0 to 2 --></div> - <div class="level1"><!-- 0 to 1 --> - <div class="level5"><!-- 1 to 5 --></div> - <div class="level3"><!-- 1 to 3 --></div> - <div class="level2"><!-- 1 to 2 --> - <div class="level5"><!-- 2 to 5 --></div> - <div class="level3"><!-- 2 to 3 --> - <div class="level5"><!-- 3 to 5 --></div> + <div class="level-3" id="scale80-0-scaledown"> + <div class="big"> + <div class="level5"><!-- -3 to 5 --></div> + <div class="level3"><!-- -3 to 3 --></div> + <div class="level2"><!-- -3 to 2 --></div> + <div class="level1"><!-- -3 to 1 --></div> + <div class="level0"><!-- -3 to 0 --></div> + <div class="level-1"><!-- -3 to -1 --> + <div class="level5"><!-- -1 to 5 --></div> + <div class="level3"><!-- -1 to 3 --></div> + <div class="level2"><!-- -1 to 2 --></div> + <div class="level1"><!-- -1 to 1 --></div> + <div class="level0"><!-- -1 to 0 --> + <div class="level5"><!-- 0 to 5 --></div> + <div class="level3"><!-- 0 to 3 --></div> + <div class="level2"><!-- 0 to 2 --></div> + <div class="level1"><!-- 0 to 1 --> + <div class="level5"><!-- 1 to 5 --></div> + <div class="level3"><!-- 1 to 3 --></div> + <div class="level2"><!-- 1 to 2 --> + <div class="level5"><!-- 2 to 5 --></div> + <div class="level3"><!-- 2 to 3 --> + <div class="level5"><!-- 3 to 5 --></div> + </div> </div> </div> </div> @@ -311,28 +316,30 @@ </div> </div> - <div class="level5 small" id="scale80-0-scaleup"> - <div class="level-3"><!-- 5 to -3 --></div> - <div class="level-1"><!-- 5 to -1 --></div> - <div class="level0"><!-- 5 to 0 --></div> - <div class="level1"><!-- 5 to 1 --></div> - <div class="level2"><!-- 5 to 2 --></div> - <div class="level3"><!-- 5 to 3 --> - <div class="level-3"><!-- 3 to -3 --></div> - <div class="level-1"><!-- 3 to -1 --></div> - <div class="level0"><!-- 3 to 0 --></div> - <div class="level1"><!-- 3 to 1 --></div> - <div class="level2"><!-- 3 to 2 --> - <div class="level-3"><!-- 2 to -3 --></div> - <div class="level-1"><!-- 2 to -1 --></div> - <div class="level0"><!-- 2 to 0 --></div> - <div class="level1"><!-- 2 to 1 --> - <div class="level-3"><!-- 1 to -3 --></div> - <div class="level-1"><!-- 1 to -1 --></div> - <div class="level0"><!-- 1 to 0 --> - <div class="level-3"><!-- 0 to -3 --></div> - <div class="level-1"><!-- 0 to -1 --> - <div class="level-3"><!-- -1 to -3 --></div> + <div class="level5" id="scale80-0-scaleup"> + <div class="small"> + <div class="level-3"><!-- 5 to -3 --></div> + <div class="level-1"><!-- 5 to -1 --></div> + <div class="level0"><!-- 5 to 0 --></div> + <div class="level1"><!-- 5 to 1 --></div> + <div class="level2"><!-- 5 to 2 --></div> + <div class="level3"><!-- 5 to 3 --> + <div class="level-3"><!-- 3 to -3 --></div> + <div class="level-1"><!-- 3 to -1 --></div> + <div class="level0"><!-- 3 to 0 --></div> + <div class="level1"><!-- 3 to 1 --></div> + <div class="level2"><!-- 3 to 2 --> + <div class="level-3"><!-- 2 to -3 --></div> + <div class="level-1"><!-- 2 to -1 --></div> + <div class="level0"><!-- 2 to 0 --></div> + <div class="level1"><!-- 2 to 1 --> + <div class="level-3"><!-- 1 to -3 --></div> + <div class="level-1"><!-- 1 to -1 --></div> + <div class="level0"><!-- 1 to 0 --> + <div class="level-3"><!-- 0 to -3 --></div> + <div class="level-1"><!-- 0 to -1 --> + <div class="level-3"><!-- -1 to -3 --></div> + </div> </div> </div> </div> @@ -340,28 +347,30 @@ </div> </div> - <div class="level-3 big" id="default-scaledown"> - <div class="level5"><!-- -3 to 5 --></div> - <div class="level3"><!-- -3 to 3 --></div> - <div class="level2"><!-- -3 to 2 --></div> - <div class="level1"><!-- -3 to 1 --></div> - <div class="level0"><!-- -3 to 0 --></div> - <div class="level-1"><!-- -3 to -1 --> - <div class="level5"><!-- -1 to 5 --></div> - <div class="level3"><!-- -1 to 3 --></div> - <div class="level2"><!-- -1 to 2 --></div> - <div class="level1"><!-- -1 to 1 --></div> - <div class="level0"><!-- -1 to 0 --> - <div class="level5"><!-- 0 to 5 --></div> - <div class="level3"><!-- 0 to 3 --></div> - <div class="level2"><!-- 0 to 2 --></div> - <div class="level1"><!-- 0 to 1 --> - <div class="level5"><!-- 1 to 5 --></div> - <div class="level3"><!-- 1 to 3 --></div> - <div class="level2"><!-- 1 to 2 --> - <div class="level5"><!-- 2 to 5 --></div> - <div class="level3"><!-- 2 to 3 --> - <div class="level5"><!-- 3 to 5 --></div> + <div class="level-3" id="default-scaledown"> + <div class="big"> + <div class="level5"><!-- -3 to 5 --></div> + <div class="level3"><!-- -3 to 3 --></div> + <div class="level2"><!-- -3 to 2 --></div> + <div class="level1"><!-- -3 to 1 --></div> + <div class="level0"><!-- -3 to 0 --></div> + <div class="level-1"><!-- -3 to -1 --> + <div class="level5"><!-- -1 to 5 --></div> + <div class="level3"><!-- -1 to 3 --></div> + <div class="level2"><!-- -1 to 2 --></div> + <div class="level1"><!-- -1 to 1 --></div> + <div class="level0"><!-- -1 to 0 --> + <div class="level5"><!-- 0 to 5 --></div> + <div class="level3"><!-- 0 to 3 --></div> + <div class="level2"><!-- 0 to 2 --></div> + <div class="level1"><!-- 0 to 1 --> + <div class="level5"><!-- 1 to 5 --></div> + <div class="level3"><!-- 1 to 3 --></div> + <div class="level2"><!-- 1 to 2 --> + <div class="level5"><!-- 2 to 5 --></div> + <div class="level3"><!-- 2 to 3 --> + <div class="level5"><!-- 3 to 5 --></div> + </div> </div> </div> </div> @@ -369,28 +378,30 @@ </div> </div> - <div class="level5 small" id="default-scaleup"> - <div class="level-3"><!-- 5 to -3 --></div> - <div class="level-1"><!-- 5 to -1 --></div> - <div class="level0"><!-- 5 to 0 --></div> - <div class="level1"><!-- 5 to 1 --></div> - <div class="level2"><!-- 5 to 2 --></div> - <div class="level3"><!-- 5 to 3 --> - <div class="level-3"><!-- 3 to -3 --></div> - <div class="level-1"><!-- 3 to -1 --></div> - <div class="level0"><!-- 3 to 0 --></div> - <div class="level1"><!-- 3 to 1 --></div> - <div class="level2"><!-- 3 to 2 --> - <div class="level-3"><!-- 2 to -3 --></div> - <div class="level-1"><!-- 2 to -1 --></div> - <div class="level0"><!-- 2 to 0 --></div> - <div class="level1"><!-- 2 to 1 --> - <div class="level-3"><!-- 1 to -3 --></div> - <div class="level-1"><!-- 1 to -1 --></div> - <div class="level0"><!-- 1 to 0 --> - <div class="level-3"><!-- 0 to -3 --></div> - <div class="level-1"><!-- 0 to -1 --> - <div class="level-3"><!-- -1 to -3 --></div> + <div class="level5" id="default-scaleup"> + <div class="small"> + <div class="level-3"><!-- 5 to -3 --></div> + <div class="level-1"><!-- 5 to -1 --></div> + <div class="level0"><!-- 5 to 0 --></div> + <div class="level1"><!-- 5 to 1 --></div> + <div class="level2"><!-- 5 to 2 --></div> + <div class="level3"><!-- 5 to 3 --> + <div class="level-3"><!-- 3 to -3 --></div> + <div class="level-1"><!-- 3 to -1 --></div> + <div class="level0"><!-- 3 to 0 --></div> + <div class="level1"><!-- 3 to 1 --></div> + <div class="level2"><!-- 3 to 2 --> + <div class="level-3"><!-- 2 to -3 --></div> + <div class="level-1"><!-- 2 to -1 --></div> + <div class="level0"><!-- 2 to 0 --></div> + <div class="level1"><!-- 2 to 1 --> + <div class="level-3"><!-- 1 to -3 --></div> + <div class="level-1"><!-- 1 to -1 --></div> + <div class="level0"><!-- 1 to 0 --> + <div class="level-3"><!-- 0 to -3 --></div> + <div class="level-1"><!-- 0 to -1 --> + <div class="level-3"><!-- -1 to -3 --></div> + </div> </div> </div> </div> diff --git a/tests/wpt/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-script-level-005.tentative-ref.html b/tests/wpt/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-script-level-005.tentative-ref.html deleted file mode 100644 index f0538695a9f..00000000000 --- a/tests/wpt/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-script-level-005.tentative-ref.html +++ /dev/null @@ -1,19 +0,0 @@ -<!DOCTYPE html> -<html> - <head> - <title>math-script-level</title> - <meta charset="utf-8"> - </head> - </head> - <body> - <p>Test passes if you see two lines of monospace text rendered with the same font-size:</p> - <div style="font-size: xx-large; font-family: serif"> - <div style="font-family: monospace;"> - <div>level 0</div> - </div> - <div style="font-family: monospace;"> - <div>level 1</div> - </div> - </div> - </body> -</html> diff --git a/tests/wpt/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-script-level-005.tentative.html b/tests/wpt/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-script-level-005.tentative.html deleted file mode 100644 index 34860d7a5c2..00000000000 --- a/tests/wpt/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-script-level-005.tentative.html +++ /dev/null @@ -1,24 +0,0 @@ -<!DOCTYPE html> -<html> - <head> - <title>math-script-level</title> - <meta charset="utf-8"> - <link rel="help" href="https://github.com/w3c/csswg-drafts/issues/3746"> - <link rel="help" href="https://github.com/w3c/csswg-drafts/issues/3906"> - <link rel="help" href="https://mathml-refresh.github.io/mathml-core/#the-math-script-level-property"> - <meta name="assert" content="If the computed font-size is changed because of font-family change, math-script-level does not affect the computed value of font-size."> - <link rel="match" href="math-script-level-005.tentative-ref.html"> - </head> - </head> - <body> - <p>Test passes if you see two lines of monospace text rendered with the same font-size:</p> - <div style="font-size: xx-large; font-family: serif"> - <div style="font-family: monospace;"> - <div>level 0</div> - </div> - <div style="math-script-level: 1; font-family: monospace;"> - <div>level 1</div> - </div> - </div> - </body> -</html> diff --git a/tests/wpt/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-script-level-auto-and-math-style-001.tentative.html b/tests/wpt/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-script-level-auto-and-math-style-001.tentative.html index ad187b5dc25..51d90d131c6 100644 --- a/tests/wpt/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-script-level-auto-and-math-style-001.tentative.html +++ b/tests/wpt/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-script-level-auto-and-math-style-001.tentative.html @@ -6,7 +6,7 @@ <link rel="help" href="https://github.com/w3c/csswg-drafts/issues/3746"> <link rel="help" href="https://mathml-refresh.github.io/mathml-core/#the-math-script-level-property"> <link rel="help" href="https://mathml-refresh.github.io/mathml-core/#the-math-style-property"> - <meta name="assert" content="If math-script-level is 'auto' and the inherited value of math-style is 'display' then the computed value of math-script-level is the inherited value."> + <meta name="assert" content="If font-size is scriptlevel('auto') and the inherited value of math-style is 'display' then the internal scriptlevel is the one of its parent."> <link rel="match" href="math-script-level-auto-and-math-style-001.tentative-ref.html"> <link rel="stylesheet" type="text/css" href="/fonts/ahem.css" /> <style> @@ -20,7 +20,7 @@ <body> <p>Test passes if you see a square of side 100 × 0.71^(0 − 0) = 100px.</p> <div class="container" style="math-style: display;"> - <div style="math-script-level: auto">X</div> + <div style="font-size: scriptlevel(auto)">X</div> </div> </body> </html> diff --git a/tests/wpt/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-script-level-auto-and-math-style-002.tentative.html b/tests/wpt/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-script-level-auto-and-math-style-002.tentative.html index c111f2c38d5..c56fc20c9c5 100644 --- a/tests/wpt/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-script-level-auto-and-math-style-002.tentative.html +++ b/tests/wpt/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-script-level-auto-and-math-style-002.tentative.html @@ -6,7 +6,7 @@ <link rel="help" href="https://github.com/w3c/csswg-drafts/issues/3746"> <link rel="help" href="https://mathml-refresh.github.io/mathml-core/#the-math-script-level-property"> <link rel="help" href="https://mathml-refresh.github.io/mathml-core/#the-math-style-property"> - <meta name="assert" content="If math-script-level is 'auto' and the inherited value of math-style is 'inline' then the computed value of math-script-level is the inherited value plus one."> + <meta name="assert" content="If font-size is scriptlevel('auto') and the inherited value of math-style is 'inline' then the internal scriptlevel is the one of its parent."> <link rel="match" href="math-script-level-auto-and-math-style-002.tentative-ref.html"> <link rel="stylesheet" type="text/css" href="/fonts/ahem.css" /> <style> @@ -20,7 +20,7 @@ <body> <p>Test passes if you see a square of side 500 × 0.71^(1 − 0) = 355px.</p> <div class="container" style="math-style: inline;"> - <div style="math-script-level: auto">X</div> + <div style="font-size: scriptlevel(auto)">X</div> </div> </body> </html> diff --git a/tests/wpt/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-script-level-auto-and-math-style-003.tentative.html b/tests/wpt/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-script-level-auto-and-math-style-003.tentative.html index 42824817612..a7b22d921bf 100644 --- a/tests/wpt/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-script-level-auto-and-math-style-003.tentative.html +++ b/tests/wpt/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-script-level-auto-and-math-style-003.tentative.html @@ -20,7 +20,7 @@ <body> <p>Test passes if you see a square of side 500 × 0.71^(1 − 0) = 355px.</p> <div class="container"> - <div style="math-script-level: auto">X</div> + <div style="font-size: scriptlevel(auto)">X</div> </div> </body> </html> diff --git a/tests/wpt/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-script-level-auto-and-math-style-004.tentative.html b/tests/wpt/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-script-level-auto-and-math-style-004.tentative.html index 150d4285e98..9eca5716d8d 100644 --- a/tests/wpt/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-script-level-auto-and-math-style-004.tentative.html +++ b/tests/wpt/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-script-level-auto-and-math-style-004.tentative.html @@ -22,7 +22,7 @@ <div class="container"> <div style="math-style: display"> <div style="math-style: initial"> - <div style="math-script-level: auto">X</div> + <div style="font-size: scriptlevel(auto)">X</div> </div> </div> </div> diff --git a/tests/wpt/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-script-level-auto-and-math-style-005.tentative.html b/tests/wpt/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-script-level-auto-and-math-style-005.tentative.html index 718a564070d..fd6d2936a9b 100644 --- a/tests/wpt/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-script-level-auto-and-math-style-005.tentative.html +++ b/tests/wpt/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-script-level-auto-and-math-style-005.tentative.html @@ -23,7 +23,7 @@ <div style="math-style: display;"> <div> <div> - <div style="math-script-level: auto">X</div> + <div style="font-size: scriptlevel(auto)">X</div> </div> </div> </div> diff --git a/tests/wpt/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-script-level-font-size-clamping-001.tentative.html b/tests/wpt/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-script-level-font-size-clamping-001.tentative.html index e25ee56c3e3..8570954641d 100644 --- a/tests/wpt/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-script-level-font-size-clamping-001.tentative.html +++ b/tests/wpt/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-script-level-font-size-clamping-001.tentative.html @@ -19,8 +19,8 @@ <body> <p>Test passes if you see a square of side 12px.</p> <div class="container"><!-- Initial size is 12px. --> - <div style="math-script-level: add(8);"><!-- Size is 12*.71^8 = 0.7749042374949131 < 1px. --> - <div style="math-script-level: add(-8);">X</div><!-- back to 12px. --> + <div style="font-size: scriptlevel(add(8));"><!-- Size is 12*.71^8 = 0.7749042374949131 < 1px. --> + <div style="font-size: scriptlevel(add(-8));">X</div><!-- back to 12px. --> </div> </div> </body> diff --git a/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-001.html b/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-001.html new file mode 100644 index 00000000000..ad1ca8ba8e5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-001.html @@ -0,0 +1,18 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>CSS Images Module Level 4: image-resolution set manually</title> +<link rel="author" title="Mike Bremford" href="http://bfo.com/"> +<link rel="help" href="https://drafts.csswg.org/css-images-4/#propdef-image-resolution"> +<link rel="match" href="../reference/100x100-blue.html"> +<style> +img { + image-resolution: 14.4dpi; +} +</style> +</head> +<body> + <img src="../support/swatch-blue.png" /> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-002.html b/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-002.html new file mode 100644 index 00000000000..334ec840aa6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-002.html @@ -0,0 +1,18 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>CSS Images Module Level 4: image-resolution scaling up from image</title> +<link rel="author" title="Mike Bremford" href="http://bfo.com/"> +<link rel="help" href="https://drafts.csswg.org/css-images-4/#propdef-image-resolution"> +<link rel="match" href="../reference/100x100-blue.html"> +<style> +img { + image-resolution: from-image; +} +</style> +</head> +<body> + <img src="support/swatch-blue-48dpi.png" /> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-003.html b/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-003.html new file mode 100644 index 00000000000..c7a5cd58366 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-003.html @@ -0,0 +1,18 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>CSS Images Module Level 4: image-resolution scaling down from image</title> +<link rel="author" title="Mike Bremford" href="http://bfo.com/"> +<link rel="help" href="https://drafts.csswg.org/css-images-4/#propdef-image-resolution"> +<link rel="match" href="../reference/100x100-blue.html"> +<style> +img { + image-resolution: from-image; +} +</style> +</head> +<body> + <img src="support/swatch-blue-192dpi.png" /> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-004.html b/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-004.html new file mode 100644 index 00000000000..dd6a1b997b6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-004.html @@ -0,0 +1,19 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>CSS Images Module Level 4: units in filters are not affected by manual image-resolution</title> +<link rel="author" title="Mike Bremford" href="http://bfo.com/"> +<link rel="help" href="https://drafts.csswg.org/css-images-4/#propdef-image-resolution"> +<link rel="match" href="reference/100x100-blue-blur4px.html"> +<style> +img { + image-resolution: 14.4dpi; + filter: blur(4px); +} +</style> +</head> +<body> + <img src="../support/swatch-blue.png" /> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-005.html b/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-005.html new file mode 100644 index 00000000000..0496ec5955c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-005.html @@ -0,0 +1,19 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>CSS Images Module Level 4: units in filters are not affected by image-resolution</title> +<link rel="author" title="Mike Bremford" href="http://bfo.com/"> +<link rel="help" href="https://drafts.csswg.org/css-images-4/#propdef-image-resolution"> +<link rel="match" href="reference/100x100-blue-blur4px.html"> +<style> +img { + image-resolution: from-image; + filter: blur(4px); +} +</style> +</head> +<body> + <img src="support/swatch-blue-48dpi.png" /> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-006.html b/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-006.html new file mode 100644 index 00000000000..0ffbbd6331f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-006.html @@ -0,0 +1,19 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>CSS Images Module Level 4: units in filters are not affected by image-resolution</title> +<link rel="author" title="Mike Bremford" href="http://bfo.com/"> +<link rel="help" href="https://drafts.csswg.org/css-images-4/#propdef-image-resolution"> +<link rel="match" href="reference/100x100-blue-blur4px.html"> +<style> +img { + image-resolution: from-image; + filter: blur(4px); +} +</style> +</head> +<body> + <img src="support/swatch-blue-192dpi.png" /> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-007.html b/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-007.html new file mode 100644 index 00000000000..f47777ff9e3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-007.html @@ -0,0 +1,18 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>CSS Images Module Level 4: image-resolution scaling from image with animorphic aspect ratio</title> +<link rel="author" title="Mike Bremford" href="http://bfo.com/"> +<link rel="help" href="https://drafts.csswg.org/css-images-4/#propdef-image-resolution"> +<link rel="match" href="../reference/100x100-blue.html"> +<style> +img { + image-resolution: from-image; +} +</style> +</head> +<body> + <img src="support/swatch-blue-48x192dpi.png" /> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-008.html b/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-008.html new file mode 100644 index 00000000000..9ec62d38ae7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-008.html @@ -0,0 +1,21 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>CSS Images Module Level 4: image-resolution set manually applies to background images</title> +<link rel="author" title="Mike Bremford" href="http://bfo.com/"> +<link rel="help" href="https://drafts.csswg.org/css-images-4/#propdef-image-resolution"> +<link rel="match" href="../reference/100x100-blue.html"> +<style> +div { + width: 100px; + height: 100px; + image-resolution: 14.4dpi; + background: url("../support/swatch-blue.png") top left no-repeat; +} +</style> +</head> +<body> + <div></div> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-009.html b/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-009.html new file mode 100644 index 00000000000..fcd49705171 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-009.html @@ -0,0 +1,21 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>CSS Images Module Level 4: image-resolution from images applies to background images</title> +<link rel="author" title="Mike Bremford" href="http://bfo.com/"> +<link rel="help" href="https://drafts.csswg.org/css-images-4/#propdef-image-resolution"> +<link rel="match" href="../reference/100x100-blue.html"> +<style> +div { + width: 100px; + height: 100px; + image-resolution: from-image; + background: url("support/swatch-blue-48dpi.png") top left no-repeat; +} +</style> +</head> +<body> + <div></div> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-010.html b/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-010.html new file mode 100644 index 00000000000..a512d5c4b00 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-010.html @@ -0,0 +1,22 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>CSS Images Module Level 4: image-resolution set manually applies to background images and filters are unaffected</title> +<link rel="author" title="Mike Bremford" href="http://bfo.com/"> +<link rel="help" href="https://drafts.csswg.org/css-images-4/#propdef-image-resolution"> +<link rel="match" href="reference/100x100-blue-blur4px.html"> +<style> +div { + width: 100px; + height: 100px; + image-resolution: 14.4dpi; + background: url("../support/swatch-blue.png") top left no-repeat; + filter: blur(4px); +} +</style> +</head> +<body> + <div></div> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-011.html b/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-011.html new file mode 100644 index 00000000000..b7a1724be15 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/image-resolution/image-resolution-011.html @@ -0,0 +1,22 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>CSS Images Module Level 4: image-resolution set manually applies to background images and filters are unaffected</title> +<link rel="author" title="Mike Bremford" href="http://bfo.com/"> +<link rel="help" href="https://drafts.csswg.org/css-images-4/#propdef-image-resolution"> +<link rel="match" href="reference/100x100-blue-blur4px.html"> +<style> +div { + width: 100px; + height: 100px; + /* Not exactly an image-resolution test, but confirming that background-size is applied before filter */ + background: url("../support/swatch-blue.png") top left / 100px 100px no-repeat; + filter: blur(4px); +} +</style> +</head> +<body> + <div></div> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-images/image-resolution/reference/100x100-blue-blur4px.html b/tests/wpt/web-platform-tests/css/css-images/image-resolution/reference/100x100-blue-blur4px.html new file mode 100644 index 00000000000..f7b541ceec9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/image-resolution/reference/100x100-blue-blur4px.html @@ -0,0 +1,2 @@ +<!doctype html> +<div style="width: 100px;height: 100px;background-color: blue;filter:blur(4px)"></div> diff --git a/tests/wpt/web-platform-tests/css/css-images/image-resolution/support/swatch-blue-192dpi.png b/tests/wpt/web-platform-tests/css/css-images/image-resolution/support/swatch-blue-192dpi.png Binary files differnew file mode 100644 index 00000000000..2e81d91d08d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/image-resolution/support/swatch-blue-192dpi.png diff --git a/tests/wpt/web-platform-tests/css/css-images/image-resolution/support/swatch-blue-48dpi.png b/tests/wpt/web-platform-tests/css/css-images/image-resolution/support/swatch-blue-48dpi.png Binary files differnew file mode 100644 index 00000000000..6c3dbbd4103 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/image-resolution/support/swatch-blue-48dpi.png diff --git a/tests/wpt/web-platform-tests/css/css-images/image-resolution/support/swatch-blue-48x192dpi.png b/tests/wpt/web-platform-tests/css/css-images/image-resolution/support/swatch-blue-48x192dpi.png Binary files differnew file mode 100644 index 00000000000..ee02902174a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/image-resolution/support/swatch-blue-48x192dpi.png diff --git a/tests/wpt/web-platform-tests/css/css-scroll-anchoring/fragment-scrolling-anchors.html b/tests/wpt/web-platform-tests/css/css-scroll-anchoring/fragment-scrolling-anchors.html new file mode 100644 index 00000000000..74b633be987 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-scroll-anchoring/fragment-scrolling-anchors.html @@ -0,0 +1,54 @@ +<link rel="help" href="https://drafts.csswg.org/css-scroll-anchoring/"> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<style> + body { + margin: 0px; + height: 2000px; + width: 2000px; + } + + #first { + height: 1000px; + background-color: #FFA5D2; + } + + #anchor { + position: absolute; + background-color: #84BE6A; + height: 600px; + width: 100%; + } + + #fragment { + position: relative; + background-color: orange; + height: 200px; + width: 200px; + margin: 10px; + } +</style> + +<div id="first"></div> +<div id="changer"></div> +<div id="anchor"> + <div id="fragment" name="fragment"></div> +</div> + +<script> + test(function(t) { + // Note that this test passes even without scroll anchoring because of + // fragment anchoring. + window.location.hash = 'fragment'; + // Height of first + fragment margin-top. + assert_equals(window.scrollY, 1010); + + // Change height of content above fragment. + var ch = document.getElementById('changer'); + ch.style.height = 100; + + // Height of first + height changer + fragment margin-top. + assert_equals(window.scrollY, 1110); + }, 'Verify scroll anchoring interaction with fragment scrolls'); +</script> diff --git a/tests/wpt/web-platform-tests/css/css-scroll-anchoring/history-restore-anchors.html b/tests/wpt/web-platform-tests/css/css-scroll-anchoring/history-restore-anchors.html new file mode 100644 index 00000000000..24dfcf72ec3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-scroll-anchoring/history-restore-anchors.html @@ -0,0 +1,50 @@ +<link rel="help" href="https://drafts.csswg.org/css-scroll-anchoring/"> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<style> + body { + margin: 0px; + height: 2000px; + width: 2000px; + } + + #first { + height: 1000px; + background-color: #FFA5D2; + } + + #anchor { + position: absolute; + background-color: #84BE6A; + height: 600px; + width: 100%; + } +</style> + +<div id="first"></div> +<div id="changer"></div> +<div id="anchor"></div> + +<script> + // Navigation steps: + // 1- page gets loaded and anchor element gets scrolled into view. + // 2- loaded page refreshed. + async_test(function(t) { + if (window.name == 'second/load') { + assert_equals(window.scrollY, 1000); + // Change height of content above anchor. + var ch = document.getElementById('changer'); + ch.style.height = 100; + // Height of first + height changer. + assert_equals(window.scrollY, 1100) + t.done(); + } else { + var anchor = document.getElementById('anchor'); + anchor.scrollIntoView(); + assert_equals(window.scrollY, 1000); + window.name = "second/load"; + window.location.reload(); + } + }, 'Verify scroll anchoring interaction with history restoration'); +</script> diff --git a/tests/wpt/web-platform-tests/css/css-scroll-anchoring/table-collapsed-borders-crash.html b/tests/wpt/web-platform-tests/css/css-scroll-anchoring/table-collapsed-borders-crash.html new file mode 100644 index 00000000000..aa699317e27 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-scroll-anchoring/table-collapsed-borders-crash.html @@ -0,0 +1,25 @@ +<!doctype html> +<html class="test-wait"> +<link rel="help" href="https://drafts.csswg.org/css-scroll-anchoring/"> +<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=746570"> +<meta name="assert" content="No crash when a table with dirty internal layout is the scroll anchor."/> +<style> +body { + height:200vh; +} +table { + height: 200px; + width: 200px; + background-color: lime; + border-collapse: collapse; /* triggers problematic border calculation */ +} +</style> + +<table id=table1></table> + +<script> + window.scrollBy(0, 10); + table1.innerHTML = "<tr><td style='background-color:lightblue'></td></tr>"; + document.documentElement.classList.remove('test-wait'); +</script> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-ui/outline-with-001-crash.html b/tests/wpt/web-platform-tests/css/css-ui/outline-with-001-crash.html new file mode 100644 index 00000000000..d46ba8080c3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/outline-with-001-crash.html @@ -0,0 +1,5 @@ +<!DOCTYPE html> +<title>CSS Basic User Interface Test: outline-width very big value</title> +<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com"> +<link rel="help" href="https://drafts.csswg.org/css-ui/#outline-width"> +<div style="outline: solid black 100000000000000000px;"></div> diff --git a/tests/wpt/web-platform-tests/docs/writing-tests/server-features.md b/tests/wpt/web-platform-tests/docs/writing-tests/server-features.md index 4feb898fa96..980a27d3d02 100644 --- a/tests/wpt/web-platform-tests/docs/writing-tests/server-features.md +++ b/tests/wpt/web-platform-tests/docs/writing-tests/server-features.md @@ -18,10 +18,12 @@ To make writing such tests possible, we are using a number of server-side components designed to make it easy to manipulate the precise details of the response: -* *wptserve*, a custom Python HTTP server. +* *wptserve*, a custom Python HTTP server * *pywebsocket*, an existing websockets server +* *tools/quic*, a custom Python 3 QUIC server using `aioquic` + wptserve is a Python-based web server. By default it serves static files in the test suite. For more sophisticated requirements, several mechanisms are available to take control of the response. These are @@ -116,7 +118,8 @@ The server also provides the ability to write [Python data and can manipulate the content and timing of the response. Responses are also influenced by [the `pipe` query string parameter](server-pipes). -### Writing tests for HTTP/2.0 + +### Tests Requiring HTTP/2.0 The server now has a prototype HTTP/2.0 server which gives you access to some of the HTTP/2.0 specific functionality. Currently, the server is off @@ -126,4 +129,27 @@ API are documented in [Writing H2 Tests](h2tests). > <b>Important:</b> The HTTP/2.0 server requires you to have Python 2.7.10+ and OpenSSL 1.0.2+. This is because HTTP/2.0 is negotiated using the -[TLS ALPN](https://tools.ietf.org/html/rfc7301) extension, which is only supported in [OpenSSL 1.0.2](https://www.openssl.org/news/openssl-1.0.2-notes.html) and up. +[TLS ALPN](https://tools.ietf.org/html/rfc7301) extension, which is only +supported in +[OpenSSL 1.0.2](https://www.openssl.org/news/openssl-1.0.2-notes.html) and up. + + +### Tests Requiring QUIC + +We do not support loading a test over QUIC yet, but a test can establish a QUIC +connection to the test server (e.g. for WebTransport, similar to WebSocket). +Since the QUIC server is not yet enabled by default, tests must explicitly +declare that they need access to the QUIC server: + +* For HTML tests (including testharness.js and reference tests), add the + following element: +```html +<meta name="quic" content="true"> +``` +* For JavaScript tests (auto-generated tests), add the following comment: +```js +// META: quic=true +``` + +The QUIC server is not yet enabled by default, so QUIC tests will be skipped +unless `--enable-quic` is specified to `./wpt run`. diff --git a/tests/wpt/web-platform-tests/encoding-detection/en-windows-1252.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/en-windows-1252.tentative.html new file mode 100644 index 00000000000..ac8cbe83fe2 --- /dev/null +++ b/tests/wpt/web-platform-tests/encoding-detection/en-windows-1252.tentative.html @@ -0,0 +1,14 @@ +<!doctype html> +<title>en windows-1252</title> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<p>Ive made an encoding test.</p> +<script> +setup({explicit_done:true}); +onload = function() { + test(function() { + assert_equals(document.characterSet, "windows-1252", 'Expected windows-1252'); + }, "Check detection result"); + done(); +}; +</script> diff --git a/tests/wpt/web-platform-tests/encoding-detection/es-maria-windows-1252.html b/tests/wpt/web-platform-tests/encoding-detection/es-maria-windows-1252.html new file mode 100644 index 00000000000..be7a7400c69 --- /dev/null +++ b/tests/wpt/web-platform-tests/encoding-detection/es-maria-windows-1252.html @@ -0,0 +1,14 @@ +<!doctype html> +<title>es windows-1252</title> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<p>M</p> +<script> +setup({explicit_done:true}); +onload = function() { + test(function() { + assert_equals(document.characterSet, "windows-1252", 'Expected windows-1252'); + }, "Check detection result"); + done(); +}; +</script> diff --git a/tests/wpt/web-platform-tests/encoding-detection/es-nuestra-senora-windows-1252.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/es-nuestra-senora-windows-1252.tentative.html new file mode 100644 index 00000000000..5f151395821 --- /dev/null +++ b/tests/wpt/web-platform-tests/encoding-detection/es-nuestra-senora-windows-1252.tentative.html @@ -0,0 +1,14 @@ +<!doctype html> +<title>es windows-1252</title> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<p>N S</p> +<script> +setup({explicit_done:true}); +onload = function() { + test(function() { + assert_equals(document.characterSet, "windows-1252", 'Expected windows-1252'); + }, "Check detection result"); + done(); +}; +</script> diff --git a/tests/wpt/web-platform-tests/encoding-detection/es-number-one-windows-1252.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/es-number-one-windows-1252.tentative.html new file mode 100644 index 00000000000..dba025e25e8 --- /dev/null +++ b/tests/wpt/web-platform-tests/encoding-detection/es-number-one-windows-1252.tentative.html @@ -0,0 +1,14 @@ +<!doctype html> +<title>es windows-1252</title> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<p>n.1</p> +<script> +setup({explicit_done:true}); +onload = function() { + test(function() { + assert_equals(document.characterSet, "windows-1252", 'Expected windows-1252'); + }, "Check detection result"); + done(); +}; +</script> diff --git a/tests/wpt/web-platform-tests/encoding-detection/es-ordinal-windows-1252.html b/tests/wpt/web-platform-tests/encoding-detection/es-ordinal-windows-1252.html new file mode 100644 index 00000000000..322621240e2 --- /dev/null +++ b/tests/wpt/web-platform-tests/encoding-detection/es-ordinal-windows-1252.html @@ -0,0 +1,14 @@ +<!doctype html> +<title>es windows-1252</title> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<p>42.</p> +<script> +setup({explicit_done:true}); +onload = function() { + test(function() { + assert_equals(document.characterSet, "windows-1252", 'Expected windows-1252'); + }, "Check detection result"); + done(); +}; +</script> diff --git a/tests/wpt/web-platform-tests/encoding-detection/it-number-one-windows-1252.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/it-number-one-windows-1252.tentative.html new file mode 100644 index 00000000000..5f5363e7a4d --- /dev/null +++ b/tests/wpt/web-platform-tests/encoding-detection/it-number-one-windows-1252.tentative.html @@ -0,0 +1,14 @@ +<!doctype html> +<title>fi windows-1252</title> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<p>N1</p> +<script> +setup({explicit_done:true}); +onload = function() { + test(function() { + assert_equals(document.characterSet, "windows-1252", 'Expected windows-1252'); + }, "Check detection result"); + done(); +}; +</script> diff --git a/tests/wpt/web-platform-tests/encoding-detection/it-ordinal-windows-1252.html b/tests/wpt/web-platform-tests/encoding-detection/it-ordinal-windows-1252.html new file mode 100644 index 00000000000..e75998646c0 --- /dev/null +++ b/tests/wpt/web-platform-tests/encoding-detection/it-ordinal-windows-1252.html @@ -0,0 +1,14 @@ +<!doctype html> +<title>it windows-1252</title> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<p>42</p> +<script> +setup({explicit_done:true}); +onload = function() { + test(function() { + assert_equals(document.characterSet, "windows-1252", 'Expected windows-1252'); + }, "Check detection result"); + done(); +}; +</script> diff --git a/tests/wpt/web-platform-tests/encoding-detection/it-roman-ordinal-windows-1252.html b/tests/wpt/web-platform-tests/encoding-detection/it-roman-ordinal-windows-1252.html new file mode 100644 index 00000000000..131f9322ab8 --- /dev/null +++ b/tests/wpt/web-platform-tests/encoding-detection/it-roman-ordinal-windows-1252.html @@ -0,0 +1,14 @@ +<!doctype html> +<title>it windows-1252</title> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<p>III</p> +<script> +setup({explicit_done:true}); +onload = function() { + test(function() { + assert_equals(document.characterSet, "windows-1252", 'Expected windows-1252'); + }, "Check detection result"); + done(); +}; +</script> diff --git a/tests/wpt/web-platform-tests/encoding-detection/nbsp-even-windows-1252.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/nbsp-even-windows-1252.tentative.html new file mode 100644 index 00000000000..2450591d3d2 --- /dev/null +++ b/tests/wpt/web-platform-tests/encoding-detection/nbsp-even-windows-1252.tentative.html @@ -0,0 +1,14 @@ +<!doctype html> +<title>nbsp even windows-1252</title> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<p>No-break spaces</p> +<script> +setup({explicit_done:true}); +onload = function() { + test(function() { + assert_equals(document.characterSet, "windows-1252", 'Expected windows-1252'); + }, "Check detection result"); + done(); +}; +</script> diff --git a/tests/wpt/web-platform-tests/encoding-detection/nbsp-odd-windows-1252.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/nbsp-odd-windows-1252.tentative.html new file mode 100644 index 00000000000..2ebc33745c0 --- /dev/null +++ b/tests/wpt/web-platform-tests/encoding-detection/nbsp-odd-windows-1252.tentative.html @@ -0,0 +1,14 @@ +<!doctype html> +<title>nbsp odd windows-1252</title> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<p>No-break spaces</p> +<script> +setup({explicit_done:true}); +onload = function() { + test(function() { + assert_equals(document.characterSet, "windows-1252", 'Expected windows-1252'); + }, "Check detection result"); + done(); +}; +</script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coop-sandbox.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coop-sandbox.https.html index 5fd11643d57..6f10945cfaf 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coop-sandbox.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coop-sandbox.https.html @@ -26,4 +26,20 @@ })); }, `<iframe sandbox="${sandboxValue}"> ${document.title}`); }); + +async_test(t => { + const frame = document.createElement("iframe"); + const channel = new BroadcastChannel(token()); + frame.sandbox = "allow-scripts allow-same-origin"; + frame.name = `iframe-${channel.name}`; + frame.src = `resources/coop-coep.py?coop=same-origin&coep=&channel=${channel.name}`; + channel.onmessage = t.step_func( event => { + const payload = event.data; + assert_equals(payload.name, frame.name, "name"); + t.done(); + }); + t.step_timeout(t.unreached_func("Timed out while waiting for iframe's message"), 1500); + t.add_cleanup(() => frame.remove()); + document.body.append(frame); +}, `Iframe with sandbox and COOP must load.`); </script> diff --git a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/mapped-attribute-adopt-001.html b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/mapped-attribute-adopt-001.html new file mode 100644 index 00000000000..66ff3d64f13 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/mapped-attribute-adopt-001.html @@ -0,0 +1,23 @@ +<!doctype html> +<title>Adoption doesn't mess with mapped attributes</title> +<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io"> +<link rel="author" title="Mozilla" href="https://mozilla.org"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1636516"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<div hidden="unlikely">Should be hidden</div> +<script> +test(function() { + var tmpl = document.createElement("template"); + var fragment = tmpl.content; + var newEl = document.createElement("div"); + newEl.setAttribute("hidden", "unlikely"); + fragment.append(newEl); + document.adoptNode(newEl); + assert_equals( + getComputedStyle(document.querySelector("div")).display, + "none", + "hidden attribute should have an effect" + ); +}, "Adoption of an unrelated node shouldn't prevent mapped attributes from applying"); +</script> diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-form-submission.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-form-submission.html new file mode 100644 index 00000000000..3ed9dad9234 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-form-submission.html @@ -0,0 +1,82 @@ +<!DOCTYPE html> +<meta charset=urf-8> +<title>Test dialog form submission</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-actions.js"></script> +<script src="/resources/testdriver-vendor.js"></script> + +<body> +<dialog id="favDialog"> + <form method="dialog"> + <button id="confirmBtn" value="default">Confirm</button> + <input id="confirmImgBtn" src="./resources/submit.jpg" width="41" + height="41" type="image" alt="Hello"> + </form> + <form method="post"> + <input id="confirmImgBtn2" src="./resources/submit.jpg" width="41" + formmethod="dialog" height="41" type="image" alt="Hello"> + </form> +</dialog> +<script> +promise_test(async () => { + const dialog = document.querySelector('dialog'); + dialog.showModal(); + + const button = document.querySelector('button'); + button.click(); + + assert_false(dialog.open, "dialog should be closed now"); + assert_equals(dialog.returnValue, "default", "Return the default value"); +}, 'click the form submission button should close the dialog'); + +promise_test(async () => { + const dialog = document.querySelector('dialog'); + dialog.showModal(); + + const button = document.querySelector('button'); + button.value = "sushi"; + button.click(); + + assert_false(dialog.open, "dialog should be closed now"); + assert_equals(dialog.returnValue, "sushi", "Return the updated value"); +}, 'form submission should return correct value'); + +promise_test(async () => { + const dialog = document.querySelector('dialog'); + dialog.showModal(); + + const button = document.querySelector('button'); + button.removeAttribute("value"); + button.click(); + assert_false(dialog.open, "dialog should be closed now"); + assert_false(dialog.returnValue === undefined, "returnValue should not be set"); +}, "no returnValue when there's no result."); + +promise_test(async () => { + const dialog = document.querySelector('dialog'); + dialog.showModal(); + + const button = document.querySelector('input'); + let expectedReturnValue = ""; + button.addEventListener('click', function(event) { + expectedReturnValue = event.offsetX + "," + event.offsetY; + }); + await test_driver.click(button); + + assert_false(dialog.open, "dialog should be closed now"); + assert_not_equals(dialog.returnValue, "", "returnValue shouldn't be empty string"); + assert_equals(dialog.returnValue, expectedReturnValue, "returnValue should be the offsets of the click"); +}, "input image button should return the coordianates"); + +promise_test(async () => { + const dialog = document.querySelector('dialog'); + dialog.showModal(); + const button = document.getElementById('confirmImgBtn2'); + await test_driver.click(button); + assert_false(dialog.open, "dialog should be closed now"); +}, "formmethod attribute should use dialog form submission"); + +</script> +</body> diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/resources/submit.jpg b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/resources/submit.jpg Binary files differnew file mode 100644 index 00000000000..8909de24309 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/resources/submit.jpg diff --git a/tests/wpt/web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/navigator_user_agent.https.html b/tests/wpt/web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/navigator_user_agent.https.html index a8ed461b2e7..302f702c65f 100644 --- a/tests/wpt/web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/navigator_user_agent.https.html +++ b/tests/wpt/web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/navigator_user_agent.https.html @@ -16,17 +16,19 @@ assert_equals(typeof brandVersionPair.version, "string", "version should be a string"); } assert_equals(typeof uaData.mobile, "boolean", "mobile should be a boolean"); - const highEntropyData = await uaData.getHighEntropyValues(["platform", "platformVersion", "architecture", "model"]); + const highEntropyData = await uaData.getHighEntropyValues(["platform", "platformVersion", "architecture", "model", "uaFullVersion"]); assert_equals(typeof highEntropyData["platform"], "string", "Platform brand should be a string"); assert_equals(typeof highEntropyData["platformVersion"], "string", "Platform version should be a string"); assert_equals(typeof highEntropyData["architecture"], "string", "Architecture should be a string"); assert_equals(typeof highEntropyData["model"], "string", "Model should be a string"); + assert_equals(typeof highEntropyData["uaFullVersion"], "string", "UAFullVersion should be a string"); const highEntropyData2 = await uaData.getHighEntropyValues([]); - assert_equals(highEntropyData2["platform"], "", "Platform brand should be an empty string"); - assert_equals(highEntropyData2["platformVersion"], "", "Platform version should be an empty string"); - assert_equals(highEntropyData2["architecture"], "", "Architecture should be an empty string"); - assert_equals(highEntropyData2["model"], "", "Model should be an empty string"); - let finalPromise = uaData.getHighEntropyValues([]).then(() => { + assert_false("platform" in highEntropyData2, "Platform brand should be an empty string"); + assert_false("platformVersion" in highEntropyData2, "Platform version should be an empty string"); + assert_false("architecture" in highEntropyData2, "Architecture should be an empty string"); + assert_false("model" in highEntropyData2, "Model should be an empty string"); + assert_false("uaFullVersion" in highEntropyData2, "UAFullVersion should be an empty string"); + let finalPromise = uaData.getHighEntropyValues([]).then(() => { assert_true(didMicrotaskRun, "getHighEntropyValues queued on a task"); }); await Promise.resolve().then(function() { diff --git a/tests/wpt/web-platform-tests/interfaces/web-animations.idl b/tests/wpt/web-platform-tests/interfaces/web-animations.idl index 006b27b2820..64265c3bf3f 100644 --- a/tests/wpt/web-platform-tests/interfaces/web-animations.idl +++ b/tests/wpt/web-platform-tests/interfaces/web-animations.idl @@ -139,6 +139,7 @@ interface mixin Animatable { dictionary KeyframeAnimationOptions : KeyframeEffectOptions { DOMString id = ""; + AnimationTimeline? timeline; }; dictionary GetAnimationsOptions { diff --git a/tests/wpt/web-platform-tests/lint.ignore b/tests/wpt/web-platform-tests/lint.ignore index 49f88ddc7b3..8cfef1eded2 100644 --- a/tests/wpt/web-platform-tests/lint.ignore +++ b/tests/wpt/web-platform-tests/lint.ignore @@ -201,8 +201,8 @@ SET TIMEOUT: service-workers/service-worker/resources/resource-timing-worker.js SET TIMEOUT: shadow-dom/Document-prototype-currentScript.html SET TIMEOUT: shadow-dom/scroll-to-the-fragment-in-shadow-tree.html SET TIMEOUT: shadow-dom/slotchange-event.html -SET TIMEOUT: trusted-types/block-string-assignment-to-DOMWindowTimers-setTimeout-setInterval.tentative.https.html -SET TIMEOUT: trusted-types/DOMWindowTimers-setTimeout-setInterval.tentative.https.html +SET TIMEOUT: trusted-types/block-string-assignment-to-DOMWindowTimers-setTimeout-setInterval.tentative.html +SET TIMEOUT: trusted-types/DOMWindowTimers-setTimeout-setInterval.tentative.html SET TIMEOUT: user-timing/* SET TIMEOUT: web-animations/timing-model/animations/* SET TIMEOUT: webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/mediaElementAudioSourceToScriptProcessorTest.html diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-combining.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-combining.html new file mode 100644 index 00000000000..21befc92f01 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-combining.html @@ -0,0 +1,108 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>Operator dictionary (combining char)</title> +<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" /> +<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#operator-fence-separator-or-accent-mo"> +<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#dictionary-based-attributes"> +<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#operator-dictionary"> +<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#layout-of-mrow"> +<link rel="stylesheet" href="./support/operator-dictionary-tests.css"/> +<meta name="assert" content="Verify special handling of 2-char operator with a combining character"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/mathml/support/feature-detection.js"></script> +<style> + mo { + color: blue; + } + mn { + background: black; + } +</style> +<script> + setup({ explicit_done: true }); + window.addEventListener("load", runTests); + + function spaceBetween(element, i, j) { + return element.children[j].getBoundingClientRect().left - + element.children[i].getBoundingClientRect().right; + } + function runTests() { + var epsilon = 1; + var emToPx = 25; + + ["equal", "vertical_bar"].forEach(id => { + var div = document.getElementById(id); + var ref = div.getElementsByClassName("reference")[0]; + var totalSpaceRef = spaceBetween(ref, 0, 2); + var lspaceRef = spaceBetween(ref, 0, 1); + var rspaceRef = spaceBetween(ref, 1, 2); + Array.from(div.getElementsByClassName("combining")).forEach(element => { + test(function() { + assert_true(MathMLFeatureDetection.has_operator_spacing()); + var totalSpace = spaceBetween(element, 0, 2); + var lspace = spaceBetween(element, 0, 1); + var rspace = spaceBetween(element, 1, 2); + assert_approx_equals(totalSpace, totalSpaceRef, epsilon); + assert_approx_equals(rspace, rspaceRef, epsilon); + assert_approx_equals(lspace, lspaceRef, epsilon); + }, `Spacing around ${element.children[1].textContent}`); + }); + }); + + done(); + } +</script> +</head> +<body> + <div id="log"></div> + <div id="equal"> + <p> + <math class="reference"> + <mn> </mn> + <mo>=</mo> + <mn> </mn> + </math> + </p> + <p> + <math class="combining"> + <mn> </mn> + <mo>≠</mo> + <mn> </mn> + </math> + </p> + <p> + <math class="combining"> + <mn> </mn> + <mo>=⃒</mo> + <mn> </mn> + </math> + </p> + </div> + <div id="vertical_bar"> + <p> + <math class="reference"> + <mn> </mn> + <mo stretchy="false">|</mo> + <mn> </mn> + </math> + </p> + <p> + <math class="combining"> + <mn> </mn> + <mo stretchy="false">|̸</mo> + <mn> </mn> + </math> + </p> + <p> + <math class="combining"> + <mn> </mn> + <mo stretchy="false">|⃒</mo> + <mn> </mn> + </math> + </p> + </div> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/attribute-mapping-002.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/attribute-mapping-002.html index 329578dc95a..3ac942f8178 100644 --- a/tests/wpt/web-platform-tests/mathml/relations/css-styling/attribute-mapping-002.html +++ b/tests/wpt/web-platform-tests/mathml/relations/css-styling/attribute-mapping-002.html @@ -6,12 +6,23 @@ <link rel="help" href="https://mathml-refresh.github.io/mathml-core/#the-mathvariant-attribute"> <link rel="help" href="https://mathml-refresh.github.io/mathml-core/#the-displaystyle-and-scriptlevel-attributes"> <meta name="assert" content="Verify that mathvariant, scriptlevel, displaystyle are mapped to CSS"> +<link rel="stylesheet" href="/fonts/ahem.css"> +<style> + #container { + /* Ahem font does not have a MATH table so the font-size scale factor + is always 0.71^{computed - inherited math script level} */ + font: 100px/1 Ahem; + } +</style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/mathml/support/mathml-fragments.js"></script> <script> setup({ explicit_done: true }); window.addEventListener("load", runTests); + function fontSize(style) { + return parseFloat((/(.+)px/).exec(style.getPropertyValue("font-size"))[1]); + } function runTests() { var container = document.getElementById("container"); for (tag in MathMLFragments) { @@ -32,10 +43,30 @@ }, `mathvariant on the ${tag} element is mapped to CSS text-transform`) test(function() { - assert_equals(style.getPropertyValue("math-script-level"), "0", "no attribute"); - element.setAttribute("scriptlevel", "10"); - assert_equals(style.getPropertyValue("math-script-level"), "10", "attribute specified"); - }, `scriptlevel on the ${tag} element is mapped to CSS math-script-level`); + var epsilon = .1 + var fontSizeAtScriptLevelZero = fontSize(window.getComputedStyle(container)); + var inheritedSize = fontSize(window.getComputedStyle(element.parentNode)); + + // none and mprescripts appear as scripts + assert_approx_equals(fontSize(style), tag === "none" || tag === "mprescripts" ? inheritedSize * .71 : inheritedSize, epsilon, "no attribute"); + + var absoluteScriptlevel = 2; + element.setAttribute("scriptlevel", absoluteScriptlevel); + assert_approx_equals(fontSize(style), fontSizeAtScriptLevelZero * Math.pow(.71, absoluteScriptlevel), epsilon, "attribute specified (<U>)"); + + var positiveScriptlevelDelta = 1; + element.setAttribute("scriptlevel", `+${positiveScriptlevelDelta}`); + assert_approx_equals(fontSize(style), inheritedSize * Math.pow(.71, positiveScriptlevelDelta), epsilon, "attribute specified (+<U>)"); + + var negativeScriptlevelDelta = -3; + element.setAttribute("scriptlevel", negativeScriptlevelDelta); + assert_approx_equals(fontSize(style), inheritedSize * Math.pow(.71, negativeScriptlevelDelta), epsilon, "attribute specified (-<U>)"); + + element.setAttribute("scriptlevel", absoluteScriptlevel); + element.setAttribute("mathsize", "42px"); + assert_approx_equals(fontSize(style), 42, epsilon, "mathsize wins over scriptlevel"); + + }, `scriptlevel on the ${tag} element is mapped to font-size: scriptlevel(...)`); test(function() { assert_equals(style.getPropertyValue("math-style"), "inline", "no attribute"); diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/scriptlevel-001.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/scriptlevel-001.html new file mode 100644 index 00000000000..11ad68d8188 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/relations/css-styling/scriptlevel-001.html @@ -0,0 +1,219 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>Automatic scriptlevel</title> +<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#the-mathvariant-attribute"> +<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#the-displaystyle-and-scriptlevel-attributes"> +<link rel="stylesheet" href="/fonts/ahem.css"> +<meta name="assert" content="Verify automatic scriptlevel changes"> +<style> + #container, math { + /* Ahem font does not have a MATH table so the font-size scale factor + is always 0.71^{computed - inherited math script level} */ + font: 100px/1 Ahem; + } +</style> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/mathml/support/mathml-fragments.js"></script> +<script> + setup({ explicit_done: true }); + window.addEventListener("load", runTests); + function fontSize(element) { + return parseFloat((/(.+)px/).exec(window.getComputedStyle(element).getPropertyValue("font-size"))[1]); + } + function runTests() { + var container = document.getElementById("container"); + var epsilon = .1 + var fontSizeAtScriptLevelZero = fontSize(container); + + test(function() { + var element = document.getElementById("mfrac_displaystyle"); + assert_approx_equals(fontSize(element.children[0]), fontSizeAtScriptLevelZero, epsilon, "numerator"); + assert_approx_equals(fontSize(element.children[1]), fontSizeAtScriptLevelZero, epsilon, "denominator"); + }, "automatic scriptlevel on mfrac (displaystyle=true)"); + + test(function() { + var element = document.getElementById("mfrac_notdisplaystyle"); + assert_approx_equals(fontSize(element.children[0]), fontSizeAtScriptLevelZero * .71, epsilon, "numerator"); + assert_approx_equals(fontSize(element.children[1]), fontSizeAtScriptLevelZero * .71, epsilon, "denominator"); + }, "automatic scriptlevel on mfrac (displaystyle=false)"); + + test(function() { + var element = document.getElementsByTagName("mroot")[0]; + assert_approx_equals(fontSize(element.children[0]), fontSizeAtScriptLevelZero, epsilon, "base"); + assert_approx_equals(fontSize(element.children[1]), fontSizeAtScriptLevelZero * .71 * .71, epsilon, "index"); + }, "automatic scriptlevel on mroot"); + + ["msub", "msup", "msubsup", "munder", "mover", "munderover", "mmultiscripts"].forEach(tag => { + test(function() { + var element = document.getElementsByTagName(tag)[0]; + for (var i = 0; i < element.children.length; i++) + assert_approx_equals(fontSize(element.children[i]), i > 0 ? fontSizeAtScriptLevelZero * .71 : fontSizeAtScriptLevelZero, epsilon, `child ${i}`); + }, `automatic scriptlevel on ${tag}`); + }); + + test(function() { + var element = document.querySelector("munder[accentunder='true']"); + assert_approx_equals(fontSize(element.children[0]), fontSizeAtScriptLevelZero, epsilon, "base"); + assert_approx_equals(fontSize(element.children[1]), fontSizeAtScriptLevelZero, epsilon, "under"); + }, `automatic scriptlevel on munder (accentunder=true)`); + + test(function() { + var element = document.querySelector("mover[accent='true']"); + assert_approx_equals(fontSize(element.children[0]), fontSizeAtScriptLevelZero, epsilon, "base"); + assert_approx_equals(fontSize(element.children[1]), fontSizeAtScriptLevelZero, epsilon, "over"); + }, `automatic scriptlevel on mover (accent=true)`); + + test(function() { + var element = document.querySelector("munderover[accentunder='true']"); + assert_approx_equals(fontSize(element.children[0]), fontSizeAtScriptLevelZero, epsilon, "base"); + assert_approx_equals(fontSize(element.children[1]), fontSizeAtScriptLevelZero, epsilon, "under"); + assert_approx_equals(fontSize(element.children[2]), fontSizeAtScriptLevelZero * .71, epsilon, "over"); + }, `automatic scriptlevel on munderover (accentunder=true)`); + + test(function() { + var element = document.querySelector("munderover[accent='true']"); + assert_approx_equals(fontSize(element.children[0]), fontSizeAtScriptLevelZero, epsilon, "base"); + assert_approx_equals(fontSize(element.children[1]), fontSizeAtScriptLevelZero * .71, epsilon, "under"); + assert_approx_equals(fontSize(element.children[2]), fontSizeAtScriptLevelZero, epsilon, "over"); + }, `automatic scriptlevel on munderover (accent=true)`); + + test(function() { + var element = document.getElementById("munderover-dynamic-case-insensitive") + assert_approx_equals(fontSize(element.children[0]), fontSizeAtScriptLevelZero, epsilon, "base"); + assert_approx_equals(fontSize(element.children[1]), fontSizeAtScriptLevelZero * .71, epsilon, "under"); + assert_approx_equals(fontSize(element.children[2]), fontSizeAtScriptLevelZero, epsilon, "over"); + + element.removeAttribute("accent"); + element.setAttribute("accentunder", "TrUe"); + assert_approx_equals(fontSize(element.children[0]), fontSizeAtScriptLevelZero, epsilon, "base"); + assert_approx_equals(fontSize(element.children[1]), fontSizeAtScriptLevelZero, epsilon, "under"); + assert_approx_equals(fontSize(element.children[2]), fontSizeAtScriptLevelZero * .71, epsilon, "over"); + }, "checking dynamic/case-insensitive accent/accentunder"); + + done(); + } +</script> +</head> +<body> + <div id="log"></div> + <div id="container"> + <p> + <math displaystyle="true"> + <mfrac id="mfrac_displaystyle"> + <mn>0</mn> + <mn>1</mn> + </mfrac> + </math> + + <math displaystyle="false"> + <mfrac id="mfrac_notdisplaystyle"> + <mn>0</mn> + <mn>1</mn> + </mfrac> + </math> + </p> + <p> + <math> + <mroot> + <mn>0</mn> + <mn>1</mn> + </mroot> + </math> + </p> + <p> + <math> + <msub> + <mn>0</mn> + <mn>1</mn> + </msub> + </math> + <math> + <msup> + <mn>0</mn> + <mn>1</mn> + </msup> + </math> + <math> + <msubsup> + <mn>0</mn> + <mn>1</mn> + <mn>2</mn> + </msubsup> + </math> + <math> + <munder> + <mn>0</mn> + <mn>1</mn> + </munder> + </math> + <math> + <mover> + <mn>0</mn> + <mn>1</mn> + </mover> + </math> + <math> + <munderover> + <mn>0</mn> + <mn>1</mn> + <mn>2</mn> + </munderover> + </math> + <math> + <mmultiscripts> + <mn>0</mn> + <mn>1</mn> + <mn>2</mn> + <mn>3</mn> + <mn>4</mn> + <mprescripts/> + <mn>6</mn> + <mn>7</mn> + <mn>8</mn> + <mn>9</mn> + </mmultiscripts> + </math> + </p> + <p> + <math> + <munder accentunder="true"> + <mn>0</mn> + <mn>1</mn> + </munder> + </math> + <math> + <mover accent="true"> + <mn>0</mn> + <mn>1</mn> + </mover> + </math> + <math> + <munderover accent="true"> + <mn>0</mn> + <mn>1</mn> + <mn>2</mn> + </munderover> + </math> + <math> + <munderover accentunder="true"> + <mn>0</mn> + <mn>1</mn> + <mn>2</mn> + </munderover> + </math> + </p> + <p> + <math> + <munderover id="munderover-dynamic-case-insensitive" accent="TrUe"> + <mn>0</mn> + <mn>1</mn> + <mn>2</mn> + </munderover> + </math> + </p> + </div> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/orientation-event/resources/orientation-event-helpers.js b/tests/wpt/web-platform-tests/orientation-event/resources/orientation-event-helpers.js index 84bfc5115f3..307c52f0003 100644 --- a/tests/wpt/web-platform-tests/orientation-event/resources/orientation-event-helpers.js +++ b/tests/wpt/web-platform-tests/orientation-event/resources/orientation-event-helpers.js @@ -181,10 +181,14 @@ function getExpectedMotionEvent(expectedMotionData) { } function waitForEvent(expected_event) { - return new Promise(resolve => { + return new Promise((resolve, reject) => { window.addEventListener(expected_event.type, (event) => { - assertEventEquals(event, expected_event); - resolve(); + try { + assertEventEquals(event, expected_event); + resolve(); + } catch (e) { + reject(e); + } }, { once: true }); }); } diff --git a/tests/wpt/web-platform-tests/resize-observer/change-layout-in-error.html b/tests/wpt/web-platform-tests/resize-observer/change-layout-in-error.html new file mode 100644 index 00000000000..9083fb48f94 --- /dev/null +++ b/tests/wpt/web-platform-tests/resize-observer/change-layout-in-error.html @@ -0,0 +1,33 @@ +<!doctype HTML> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<style> + div { + width: 100px; + height: 100px; + } +</style> +<div id="observeme"></div> + +<script> +setup({allow_uncaught_exception: true}); + +async_test(a => { + let t = document.querySelector("#observeme"); + let i = 0; + window.onerror = function (err) { + t.style.height = "112px"; + i++; + requestAnimationFrame(a.step_func_done(() => { + assert_equals(i, 1); + }), 0); + }; + + new ResizeObserver(function() { + t.style.height = "111px"; + }).observe(observeme); + observeme.style.height = "110px"; + +}, "Changing layout in window error handler should not result in lifecyle loop when resize observer loop limit is reached."); +</script> diff --git a/tests/wpt/web-platform-tests/resources/testdriver-actions.js b/tests/wpt/web-platform-tests/resources/testdriver-actions.js index d3dc00b4d0f..870a2e8e266 100644 --- a/tests/wpt/web-platform-tests/resources/testdriver-actions.js +++ b/tests/wpt/web-platform-tests/resources/testdriver-actions.js @@ -130,9 +130,9 @@ /** * Add a new pointer input source with the given name * - * @param {String} type - Name of the key source + * @param {String} type - Name of the pointer source * @param {String} pointerType - Type of pointing device - * @param {Bool} set - Set source as the default key source + * @param {Bool} set - Set source as the default pointer source * @returns {Actions} */ addPointer: function(name, pointerType="mouse", set=true) { diff --git a/tests/wpt/web-platform-tests/svg/animations/attribute-value-unaffected-by-animation.html b/tests/wpt/web-platform-tests/svg/animations/attribute-value-unaffected-by-animation.html new file mode 100644 index 00000000000..55ebb0a3c9a --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/animations/attribute-value-unaffected-by-animation.html @@ -0,0 +1,34 @@ +<!doctype html> +<title>An animation of an attribute does not change the DOM attribute value</title> +<link rel="help" href="https://www.w3.org/TR/2001/REC-smil-animation-20010904/#BasicAnim"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<style> + .animated { + fill: blue; + } +</style> +<svg> + <rect class="base"> + <set attributeName="class" to="animated"/> + </rect> + <rect> + <set attributeName="class" to="animated"/> + </rect> +</svg> +<script> + async_test(t => { + onload = t.step_func(() => { + requestAnimationFrame(t.step_func_done(() => { + let rects = document.getElementsByTagName('rect'); + assert_true(rects[0].hasAttribute('class')); + assert_equals(rects[0].getAttribute('class'), 'base'); + assert_equals(getComputedStyle(rects[0]).getPropertyValue('fill'), 'rgb(0, 0, 255)'); + + assert_false(rects[1].hasAttribute('class')); + assert_equals(rects[1].getAttribute('class'), null); + assert_equals(getComputedStyle(rects[0]).getPropertyValue('fill'), 'rgb(0, 0, 255)'); + })); + }); + }); +</script> diff --git a/tests/wpt/web-platform-tests/tools/manifest/item.py b/tests/wpt/web-platform-tests/tools/manifest/item.py index 72802758941..6601f9c719e 100644 --- a/tests/wpt/web-platform-tests/tools/manifest/item.py +++ b/tests/wpt/web-platform-tests/tools/manifest/item.py @@ -191,6 +191,11 @@ class TestharnessTest(URLManifestItem): return self._extras.get("jsshell") @property + def quic(self): + # type: () -> Optional[bool] + return self._extras.get("quic") + + @property def script_metadata(self): # type: () -> Optional[Text] return self._extras.get("script_metadata") @@ -204,6 +209,8 @@ class TestharnessTest(URLManifestItem): rv[-1]["testdriver"] = self.testdriver if self.jsshell: rv[-1]["jsshell"] = True + if self.quic is not None: + rv[-1]["quic"] = self.quic if self.script_metadata: rv[-1]["script_metadata"] = [(k.decode('utf8'), v.decode('utf8')) for (k,v) in self.script_metadata] return rv diff --git a/tests/wpt/web-platform-tests/tools/manifest/sourcefile.py b/tests/wpt/web-platform-tests/tools/manifest/sourcefile.py index d0794a2851e..f36ce1ab330 100644 --- a/tests/wpt/web-platform-tests/tools/manifest/sourcefile.py +++ b/tests/wpt/web-platform-tests/tools/manifest/sourcefile.py @@ -675,6 +675,36 @@ class SourceFile(object): return bool(self.testdriver_nodes) @cached_property + def quic_nodes(self): + # type: () -> List[ElementTree.Element] + """List of ElementTree Elements corresponding to nodes in a test that + specify whether it needs QUIC server.""" + assert self.root is not None + return self.root.findall(".//{http://www.w3.org/1999/xhtml}meta[@name='quic']") + + @cached_property + def quic(self): + # type: () -> Optional[bool] + """Boolean indicating whether a test requires QUIC server + + Determined by <meta> elements (`quic_nodes()`) and "// META" comments + (`script_metadata()`). + """ + if self.script_metadata: + if any(m == (b"quic", b"true") for m in self.script_metadata): + return True + + if self.root is None: + return None + + if self.quic_nodes: + quic_str = self.quic_nodes[0].attrib.get("content", "false") # type: Text + if quic_str.lower() == "true": + return True + + return None + + @cached_property def reftest_nodes(self): # type: () -> List[ElementTree.Element] """List of ElementTree Elements corresponding to nodes representing a @@ -850,6 +880,7 @@ class SourceFile(object): global_variant_url(self.rel_url, suffix) + variant, timeout=self.timeout, jsshell=jsshell, + quic=self.quic, script_metadata=self.script_metadata ) for (suffix, jsshell) in sorted(global_suffixes(globals)) @@ -866,6 +897,7 @@ class SourceFile(object): self.url_base, test_url + variant, timeout=self.timeout, + quic=self.quic, script_metadata=self.script_metadata ) for variant in self.test_variants @@ -881,6 +913,7 @@ class SourceFile(object): self.url_base, test_url + variant, timeout=self.timeout, + quic=self.quic, script_metadata=self.script_metadata ) for variant in self.test_variants @@ -917,6 +950,7 @@ class SourceFile(object): self.url_base, url, timeout=self.timeout, + quic=self.quic, testdriver=testdriver, script_metadata=self.script_metadata )) @@ -930,6 +964,7 @@ class SourceFile(object): self.rel_url, references=self.references, timeout=self.timeout, + quic=self.quic, viewport_size=self.viewport_size, dpi=self.dpi, fuzzy=self.fuzzy diff --git a/tests/wpt/web-platform-tests/tools/manifest/tests/test_sourcefile.py b/tests/wpt/web-platform-tests/tools/manifest/tests/test_sourcefile.py index feae1fc3fd1..a8fbc270714 100644 --- a/tests/wpt/web-platform-tests/tools/manifest/tests/test_sourcefile.py +++ b/tests/wpt/web-platform-tests/tools/manifest/tests/test_sourcefile.py @@ -6,6 +6,7 @@ from six import BytesIO from ...lint.lint import check_global_metadata from ..sourcefile import SourceFile, read_script_metadata, js_meta_re, python_meta_re + def create(filename, contents=b""): assert isinstance(contents, bytes) return SourceFile("/", filename, "/", contents=contents) @@ -144,6 +145,8 @@ def test_worker(): for item, url in zip(items, expected_urls): assert item.url == url assert item.timeout is None + assert item.quic is None + def test_window(): s = create("html/test.window.js") @@ -168,6 +171,7 @@ def test_window(): for item, url in zip(items, expected_urls): assert item.url == url assert item.timeout is None + assert item.quic is None def test_worker_long_timeout(): @@ -233,6 +237,7 @@ test()""" for item, url in zip(items, expected_urls): assert item.url == url assert item.timeout is None + assert item.quic is None def test_window_with_variants(): @@ -263,6 +268,7 @@ test()""" for item, url in zip(items, expected_urls): assert item.url == url assert item.timeout is None + assert item.quic is None def test_python_long_timeout(): @@ -307,6 +313,7 @@ def test_multi_global(): for item, url in zip(items, expected_urls): assert item.url == url assert item.timeout is None + assert item.quic is None def test_multi_global_long_timeout(): @@ -366,6 +373,7 @@ test()""" % input assert item.url == url assert item.jsshell is False assert item.timeout is None + assert item.quic is None def test_multi_global_with_jsshell_globals(): @@ -396,6 +404,7 @@ test()""" assert item.url == url assert item.jsshell == jsshell assert item.timeout is None + assert item.quic is None def test_multi_global_with_variants(): @@ -434,6 +443,7 @@ test()""" for item, url in zip(items, expected_urls): assert item.url == url assert item.timeout is None + assert item.quic is None @pytest.mark.parametrize("input,expected", [ @@ -643,6 +653,35 @@ def test_relative_testdriver(ext): @pytest.mark.parametrize("ext", ["htm", "html"]) +def test_quic_html(ext): + filename = "html/test." + ext + + content = b'<meta name="quic" content="true">' + s = create(filename, content) + assert s.quic + + content = b'<meta name="quic" content="false">' + s = create(filename, content) + assert s.quic is None + + +def test_quic_js(): + filename = "html/test.any.js" + + content = b"// META: quic=true" + s = create(filename, content) + _, items = s.manifest_items() + for item in items: + assert item.quic + + content = b"// META: quic=false" + s = create(filename, content) + _, items = s.manifest_items() + for item in items: + assert item.quic is None + + +@pytest.mark.parametrize("ext", ["htm", "html"]) def test_reftest(ext): content = b"<link rel=match href=ref.html>" diff --git a/tests/wpt/web-platform-tests/tools/quic/README.md b/tests/wpt/web-platform-tests/tools/quic/README.md new file mode 100644 index 00000000000..5a64b701cfb --- /dev/null +++ b/tests/wpt/web-platform-tests/tools/quic/README.md @@ -0,0 +1,30 @@ +This directory contains +[QUIC](https://tools.ietf.org/html/draft-ietf-quic-transport) related tools. + +# QuicTransport +[quic_transport_server.py](./quic_transport_server.py) implements a simple +[QuicTransport](https://tools.ietf.org/html/draft-vvv-webtransport-quic) server +for testing. It uses [aioquic](https://github.com/aiortc/aioquic/), and test +authors can implement custom handlers by putting python scripts in +[wpt/webtransport/quic/handlers/](../../webtransport/quic/handlers/). + +## Custom Handlers +The QuicTransportServer calls functions defined in each handler script. + + - handle_client_indication is called during the client indication process. + This function is called with three arguments: + + - connection: aioquic.asyncio.QuicConnectionProtocol + - origin: str The origin of the initiator. + - query: Dict[str, str] The dictionary of query parameters of the URL of the + connection. + + A handler can abort the client indication process either by raising an + exception or closing the connection. + + - handle_event is called when a QuicEvent arrives. + - connection: aioquic.asyncio.QuicConnectionProtocol + - event: aioquic.quic.events.QuicEvent + + This function is not called until the client indication process finishes + successfully. diff --git a/tests/wpt/web-platform-tests/tools/quic/certs/README.md b/tests/wpt/web-platform-tests/tools/quic/certs/README.md new file mode 100644 index 00000000000..216cf13fffc --- /dev/null +++ b/tests/wpt/web-platform-tests/tools/quic/certs/README.md @@ -0,0 +1,12 @@ +To generate cert.key and cert.pem: + + 1. Remove web-platform.test.key and web-platform.test.pem in ../../certs. + 1. From the root, run + `./wpt serve --config tools/quic/certs/config.json` and terminate it + after it has started up. + 1. Move tools/certs/web-platform.test.key to tools/quic/certs/cert.key. + 1. Move tools/certs/web-platform.test.pem to tools/quic/certs/cert.pem. + 1. Recover the original web-platform.test.key and web-platform.test.pem in + ../../certs. + +See also: ../../certs/README.md
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/tools/quic/certs/cert.key b/tests/wpt/web-platform-tests/tools/quic/certs/cert.key new file mode 100644 index 00000000000..993cdfa5437 --- /dev/null +++ b/tests/wpt/web-platform-tests/tools/quic/certs/cert.key @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEwAIBADANBgkqhkiG9w0BAQEFAASCBKowggSmAgEAAoIBAQDbyPuiBGpxhavF +3j7pI6g+A0gC4BTLTqMObKSTkQWsjq1GOd2LA1lwTPLObwrvhIUFzbwoIbOwoPMe +MkjssFCHG3FMj56cKiAQ2DFI6dK5PjGUVNSRxk/F4Hh2Zx9DTENl/Eb/cRT2yuu+ +W9HCu/BWfbWwlwwN5vxyneCoh5cBB/jd1KTORguYpuatHb85AD5BRhYLXwHF7yVH +NVxHeuGlK31yuYCHNKvBHDgZF5Tp8FqKXnVU+PlKXCSU5602c2U5xHIFvKTyiZlM +cYXNSUp0lcNw/iTSVtsPE4k1stu6qkWdT7H/uU+GUB+aLqO+svA/s9GGX8HZgt+r +vSFE8lIJAgMBAAECggEBAJA96D9djIoygxhaEompmCoStzkD3UHMuyClVqFuRP4J +qVh0c5xfN1yHc7bdk5y8KR00966S574c81G3CLslv8Pb09C+VQcCcob7i+ThaCWg +1qMVxWhicUpZVlXGufLN41HUbrgIfAy4Al2tHw4hj8sDt7FMgGHDXZzPVnjke8r1 +O9YiJl1Qx4L7vMWruGa9QWjFgHnG+uhaKjsL2v7JQOGy5t8aboVyb7h8rGg/mC+e +HIYOucV1aEMgYVaAnhGsKMHkx5A1xWpXBSruG+GRBx/kXWZ+kCNckLXuVdrhq4HI +AdbxIzqQTPMXpO3RAujyrxkHabENMPA/FGH4szmdLoECgYEA9z8pe7/vSlWgfhsF +z5QnwWHyFjruhgD/2sa4LB/cmwTQdGw8E5TNHDbCgmS499DZUXIZuBOTekdEVDQa +ng8VyL3o7Dms+5iPi5cqscp1KkjLEMyPpqs4JTuixRpjmMfycdxVTpXhcuqnJpTL +QC9pR5N/zZcAMDlBv0Fzc8T78XkCgYEA45DueWGHVf2u4uMYyWxyZhaNDagl13yx +/oSSUTzoLvSpGQxKkv+fxSNqL3nu5Ia6uD4Gu5NubP4Hr/VeSKRfmkT1luvFcVfC +kn8r8bssZq855AVJxXa5K1auWjCuFHj0pYf56sfhkPxpY0RQEgkvuE3iosQ12gFX +vw147FtQURECgYEA85RpVP45S31iOPp8Vg16wRyyeE4ksSYI6kr+JJJbLummSBxd +b1kYXSRhqj56r8I0ZvXG+r9men/9hAs08eSgrHzUHO2RSuj4+ie6Kx/vH/JJBErT +dvqVvLCs4gvmdRz+8EeGT35/dkxQ0kSinKBY0ugwb6XEzL2L1VUw3awCHdkCgYEA +qtQIgOv6uU2ndEDAQax8MDCrkF3yklHUGFkSsZNERMN7EQeOD81+9XFBbARflgOh +tV8ylKr3ETCdOrS6I1PpRJiRt8qjvBMCSBDZPyygBzFxBsAFggs+s87tMV0rwMiP +9pcdv+ZuaPVic5c7eF6XCQbGpCMgvdeWNCB77woZP9ECgYEAlobkPGDYCy/RaViU +Fbq5Go6w0pMVnLzYbn4Gh1AJPeQKISqXtJZ7tqpdW+i7qzkLw74ELaYCBR2ZElrj +EVe5aROx6TFN9RnjkFnyv9LeyYL+YPc8AIwVUCeSPikSGLFpJfa/jwDmWh3vHmmA +NRUP40wbtBi42C2udrTxUWsHxqc= +-----END PRIVATE KEY----- diff --git a/tests/wpt/web-platform-tests/tools/quic/certs/cert.pem b/tests/wpt/web-platform-tests/tools/quic/certs/cert.pem new file mode 100644 index 00000000000..7e70f1b082a --- /dev/null +++ b/tests/wpt/web-platform-tests/tools/quic/certs/cert.pem @@ -0,0 +1,240 @@ +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 919492 (0xe07c4) + Signature Algorithm: sha256WithRSAEncryption + Issuer: CN=web-platform-tests + Validity + Not Before: Apr 20 11:20:56 2020 GMT + Not After : Apr 18 11:20:56 2030 GMT + Subject: CN=web-platform.test + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + RSA Public-Key: (2048 bit) + Modulus: + 00:db:c8:fb:a2:04:6a:71:85:ab:c5:de:3e:e9:23: + a8:3e:03:48:02:e0:14:cb:4e:a3:0e:6c:a4:93:91: + 05:ac:8e:ad:46:39:dd:8b:03:59:70:4c:f2:ce:6f: + 0a:ef:84:85:05:cd:bc:28:21:b3:b0:a0:f3:1e:32: + 48:ec:b0:50:87:1b:71:4c:8f:9e:9c:2a:20:10:d8: + 31:48:e9:d2:b9:3e:31:94:54:d4:91:c6:4f:c5:e0: + 78:76:67:1f:43:4c:43:65:fc:46:ff:71:14:f6:ca: + eb:be:5b:d1:c2:bb:f0:56:7d:b5:b0:97:0c:0d:e6: + fc:72:9d:e0:a8:87:97:01:07:f8:dd:d4:a4:ce:46: + 0b:98:a6:e6:ad:1d:bf:39:00:3e:41:46:16:0b:5f: + 01:c5:ef:25:47:35:5c:47:7a:e1:a5:2b:7d:72:b9: + 80:87:34:ab:c1:1c:38:19:17:94:e9:f0:5a:8a:5e: + 75:54:f8:f9:4a:5c:24:94:e7:ad:36:73:65:39:c4: + 72:05:bc:a4:f2:89:99:4c:71:85:cd:49:4a:74:95: + c3:70:fe:24:d2:56:db:0f:13:89:35:b2:db:ba:aa: + 45:9d:4f:b1:ff:b9:4f:86:50:1f:9a:2e:a3:be:b2: + f0:3f:b3:d1:86:5f:c1:d9:82:df:ab:bd:21:44:f2: + 52:09 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: + CA:FALSE + X509v3 Subject Key Identifier: + 79:96:E1:96:F3:7C:41:2B:3B:9F:1B:0D:D6:A9:B8:B7:4F:E6:61:5C + X509v3 Authority Key Identifier: + keyid:F6:B9:DA:16:07:05:BB:6F:C9:63:30:C6:67:40:CB:03:D3:1E:90:EC + + X509v3 Key Usage: + Digital Signature, Non Repudiation, Key Encipherment + X509v3 Extended Key Usage: + TLS Web Server Authentication + X509v3 Subject Alternative Name: + DNS:web-platform.test, DNS:op8.web-platform.test, DNS:op7.web-platform.test, DNS:op9.web-platform.test, DNS:op4.web-platform.test, DNS:not-web-platform.test, DNS:op6.web-platform.test, DNS:op3.web-platform.test, DNS:op2.web-platform.test, DNS:op1.web-platform.test, DNS:www.web-platform.test, DNS:op5.web-platform.test, DNS:op88.web-platform.test, DNS:op98.web-platform.test, DNS:op85.web-platform.test, DNS:op89.web-platform.test, DNS:op66.web-platform.test, DNS:op72.web-platform.test, DNS:op24.web-platform.test, DNS:op41.web-platform.test, DNS:op79.web-platform.test, DNS:op91.web-platform.test, DNS:op59.web-platform.test, DNS:op39.web-platform.test, DNS:op60.web-platform.test, DNS:op58.web-platform.test, DNS:op28.web-platform.test, DNS:www1.web-platform.test, DNS:op14.web-platform.test, DNS:op69.web-platform.test, DNS:op40.web-platform.test, DNS:op74.web-platform.test, DNS:op31.web-platform.test, DNS:op18.web-platform.test, DNS:op73.web-platform.test, DNS:op77.web-platform.test, DNS:op12.web-platform.test, DNS:op54.web-platform.test, DNS:op63.web-platform.test, DNS:op71.web-platform.test, DNS:op95.web-platform.test, DNS:op16.web-platform.test, DNS:op36.web-platform.test, DNS:op27.web-platform.test, DNS:op29.web-platform.test, DNS:op94.web-platform.test, DNS:op44.web-platform.test, DNS:op33.web-platform.test, DNS:op84.web-platform.test, DNS:op32.web-platform.test, DNS:op61.web-platform.test, DNS:op70.web-platform.test, DNS:www2.web-platform.test, DNS:op43.web-platform.test, DNS:op78.web-platform.test, DNS:op26.web-platform.test, DNS:op76.web-platform.test, DNS:op52.web-platform.test, DNS:op99.web-platform.test, DNS:op86.web-platform.test, DNS:op46.web-platform.test, DNS:op17.web-platform.test, DNS:op90.web-platform.test, DNS:op93.web-platform.test, DNS:op10.web-platform.test, DNS:op55.web-platform.test, DNS:op47.web-platform.test, DNS:op51.web-platform.test, DNS:op45.web-platform.test, DNS:op80.web-platform.test, DNS:op68.web-platform.test, DNS:op49.web-platform.test, DNS:op57.web-platform.test, DNS:op35.web-platform.test, DNS:op67.web-platform.test, DNS:op92.web-platform.test, DNS:op15.web-platform.test, DNS:op13.web-platform.test, DNS:op75.web-platform.test, DNS:op64.web-platform.test, DNS:op97.web-platform.test, DNS:op37.web-platform.test, DNS:op56.web-platform.test, DNS:op62.web-platform.test, DNS:op82.web-platform.test, DNS:op25.web-platform.test, DNS:op11.web-platform.test, DNS:op50.web-platform.test, DNS:op38.web-platform.test, DNS:op83.web-platform.test, DNS:op81.web-platform.test, DNS:op20.web-platform.test, DNS:op21.web-platform.test, DNS:op23.web-platform.test, DNS:op42.web-platform.test, DNS:op22.web-platform.test, DNS:op65.web-platform.test, DNS:op96.web-platform.test, DNS:op87.web-platform.test, DNS:op19.web-platform.test, DNS:op53.web-platform.test, DNS:op30.web-platform.test, DNS:op48.web-platform.test, DNS:op34.web-platform.test, DNS:op6.not-web-platform.test, DNS:op3.not-web-platform.test, DNS:op2.not-web-platform.test, DNS:op5.not-web-platform.test, DNS:www.not-web-platform.test, DNS:www.www.web-platform.test, DNS:op7.not-web-platform.test, DNS:op4.not-web-platform.test, DNS:op8.not-web-platform.test, DNS:op9.not-web-platform.test, DNS:op1.not-web-platform.test, DNS:op36.not-web-platform.test, DNS:op53.not-web-platform.test, DNS:op50.not-web-platform.test, DNS:op24.not-web-platform.test, DNS:op31.not-web-platform.test, DNS:op95.not-web-platform.test, DNS:op83.not-web-platform.test, DNS:www2.not-web-platform.test, DNS:op73.not-web-platform.test, DNS:op19.not-web-platform.test, DNS:op21.not-web-platform.test, DNS:op81.not-web-platform.test, DNS:op70.not-web-platform.test, DNS:op78.not-web-platform.test, DNS:op40.not-web-platform.test, DNS:op25.not-web-platform.test, DNS:op65.not-web-platform.test, DNS:www.www2.web-platform.test, DNS:op80.not-web-platform.test, DNS:op52.not-web-platform.test, DNS:op68.not-web-platform.test, DNS:op45.not-web-platform.test, DNS:op71.not-web-platform.test, DNS:op72.not-web-platform.test, DNS:op90.not-web-platform.test, DNS:op89.not-web-platform.test, DNS:op49.not-web-platform.test, DNS:op77.not-web-platform.test, DNS:op79.not-web-platform.test, DNS:op82.not-web-platform.test, DNS:www.www1.web-platform.test, DNS:op12.not-web-platform.test, DNS:op39.not-web-platform.test, DNS:op44.not-web-platform.test, DNS:www1.not-web-platform.test, DNS:op58.not-web-platform.test, DNS:op14.not-web-platform.test, DNS:op30.not-web-platform.test, DNS:op62.not-web-platform.test, DNS:op61.not-web-platform.test, DNS:op92.not-web-platform.test, DNS:op29.not-web-platform.test, DNS:op98.not-web-platform.test, DNS:op64.not-web-platform.test, DNS:op26.not-web-platform.test, DNS:op22.not-web-platform.test, DNS:op94.not-web-platform.test, DNS:op38.not-web-platform.test, DNS:op33.not-web-platform.test, DNS:op23.not-web-platform.test, DNS:op57.not-web-platform.test, DNS:op54.not-web-platform.test, DNS:op85.not-web-platform.test, DNS:op46.not-web-platform.test, DNS:op97.not-web-platform.test, DNS:op32.not-web-platform.test, DNS:op60.not-web-platform.test, DNS:op96.not-web-platform.test, DNS:op51.not-web-platform.test, DNS:op41.not-web-platform.test, DNS:op35.not-web-platform.test, DNS:op99.not-web-platform.test, DNS:op42.not-web-platform.test, DNS:op67.not-web-platform.test, DNS:op37.not-web-platform.test, DNS:op48.not-web-platform.test, DNS:op55.not-web-platform.test, DNS:op56.not-web-platform.test, DNS:op84.not-web-platform.test, DNS:op34.not-web-platform.test, DNS:op69.not-web-platform.test, DNS:op11.not-web-platform.test, DNS:op93.not-web-platform.test, DNS:www1.www.web-platform.test, DNS:op86.not-web-platform.test, DNS:op13.not-web-platform.test, DNS:op20.not-web-platform.test, DNS:op76.not-web-platform.test, DNS:op27.not-web-platform.test, DNS:op17.not-web-platform.test, DNS:op75.not-web-platform.test, DNS:op15.not-web-platform.test, DNS:op47.not-web-platform.test, DNS:op18.not-web-platform.test, DNS:op63.not-web-platform.test, DNS:op28.not-web-platform.test, DNS:op43.not-web-platform.test, DNS:op66.not-web-platform.test, DNS:www2.www.web-platform.test, DNS:op91.not-web-platform.test, DNS:op74.not-web-platform.test, DNS:op59.not-web-platform.test, DNS:op88.not-web-platform.test, DNS:op87.not-web-platform.test, DNS:op10.not-web-platform.test, DNS:op16.not-web-platform.test, DNS:www1.www2.web-platform.test, DNS:www2.www2.web-platform.test, DNS:www2.www1.web-platform.test, DNS:www1.www1.web-platform.test, DNS:www.www.not-web-platform.test, DNS:xn--lve-6lad.web-platform.test, DNS:www1.www.not-web-platform.test, DNS:www.www2.not-web-platform.test, DNS:www2.www.not-web-platform.test, DNS:www.www1.not-web-platform.test, DNS:www2.www2.not-web-platform.test, DNS:www2.www1.not-web-platform.test, DNS:www1.www1.not-web-platform.test, DNS:www1.www2.not-web-platform.test, DNS:xn--lve-6lad.www.web-platform.test, DNS:xn--lve-6lad.not-web-platform.test, DNS:www.xn--lve-6lad.web-platform.test, DNS:www2.xn--lve-6lad.web-platform.test, DNS:xn--lve-6lad.www2.web-platform.test, DNS:xn--lve-6lad.www1.web-platform.test, DNS:www1.xn--lve-6lad.web-platform.test, DNS:xn--lve-6lad.www.not-web-platform.test, DNS:www.xn--lve-6lad.not-web-platform.test, DNS:xn--lve-6lad.www1.not-web-platform.test, DNS:www2.xn--lve-6lad.not-web-platform.test, DNS:www1.xn--lve-6lad.not-web-platform.test, DNS:xn--lve-6lad.www2.not-web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.web-platform.test, DNS:xn--lve-6lad.xn--lve-6lad.web-platform.test, DNS:www.xn--n8j6ds53lwwkrqhv28a.web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.not-web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.www.web-platform.test, DNS:www1.xn--n8j6ds53lwwkrqhv28a.web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.www2.web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.www1.web-platform.test, DNS:www2.xn--n8j6ds53lwwkrqhv28a.web-platform.test, DNS:xn--lve-6lad.xn--lve-6lad.not-web-platform.test, DNS:www.xn--n8j6ds53lwwkrqhv28a.not-web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.www.not-web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.www2.not-web-platform.test, DNS:www1.xn--n8j6ds53lwwkrqhv28a.not-web-platform.test, DNS:www2.xn--n8j6ds53lwwkrqhv28a.not-web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.www1.not-web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.xn--lve-6lad.web-platform.test, DNS:xn--lve-6lad.xn--n8j6ds53lwwkrqhv28a.web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.xn--lve-6lad.not-web-platform.test, DNS:xn--lve-6lad.xn--n8j6ds53lwwkrqhv28a.not-web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.xn--n8j6ds53lwwkrqhv28a.web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.xn--n8j6ds53lwwkrqhv28a.not-web-platform.test + Signature Algorithm: sha256WithRSAEncryption + 0b:8b:55:6a:b4:65:a8:2a:3b:c0:62:0e:85:d5:dc:99:9f:3f: + d0:b7:ff:cb:b6:68:e5:ae:d3:a2:4e:c8:d4:aa:34:95:e4:9e: + 4b:e4:74:e4:c4:ec:11:31:67:e5:a6:da:85:6b:0f:d7:64:b7: + e7:eb:fe:09:b6:88:e1:74:1d:0c:15:a3:2e:01:03:fc:67:9c: + 7c:ba:e6:fb:52:1d:58:cd:68:a3:55:8c:9b:57:bb:89:32:10: + 41:71:99:a3:1a:dc:25:2d:d0:b9:1a:af:e6:76:40:d7:f5:23: + a9:d8:59:45:8a:ab:53:53:87:cc:14:b3:87:de:1d:01:99:7a: + 4f:72:47:69:9c:98:73:94:79:90:25:70:02:ec:75:b2:77:11: + 28:97:cd:43:3d:d5:68:38:73:71:fd:a9:0b:a2:ed:2d:1c:6e: + e1:05:d4:30:a6:64:04:10:ca:e8:e6:e0:7a:a9:f4:26:94:6b: + a4:28:aa:0c:eb:3e:e0:ef:d2:be:0b:70:e4:dd:4c:fc:a2:87: + 0c:24:83:72:e2:e4:6f:25:a8:ee:c5:12:89:d9:dd:8f:82:14: + c3:d6:06:ae:1d:bb:7b:3c:fc:9b:27:56:50:b4:28:44:60:80: + 17:87:1c:b1:ce:6d:77:b4:d1:2b:32:e8:d0:ba:06:6f:4d:04: + ff:60:fe:e3 +-----BEGIN CERTIFICATE----- +MIIgvDCCH6SgAwIBAgIDDgfEMA0GCSqGSIb3DQEBCwUAMB0xGzAZBgNVBAMMEndl +Yi1wbGF0Zm9ybS10ZXN0czAeFw0yMDA0MjAxMTIwNTZaFw0zMDA0MTgxMTIwNTZa +MBwxGjAYBgNVBAMMEXdlYi1wbGF0Zm9ybS50ZXN0MIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEA28j7ogRqcYWrxd4+6SOoPgNIAuAUy06jDmykk5EFrI6t +RjndiwNZcEzyzm8K74SFBc28KCGzsKDzHjJI7LBQhxtxTI+enCogENgxSOnSuT4x +lFTUkcZPxeB4dmcfQ0xDZfxG/3EU9srrvlvRwrvwVn21sJcMDeb8cp3gqIeXAQf4 +3dSkzkYLmKbmrR2/OQA+QUYWC18Bxe8lRzVcR3rhpSt9crmAhzSrwRw4GReU6fBa +il51VPj5SlwklOetNnNlOcRyBbyk8omZTHGFzUlKdJXDcP4k0lbbDxOJNbLbuqpF +nU+x/7lPhlAfmi6jvrLwP7PRhl/B2YLfq70hRPJSCQIDAQABo4IeBDCCHgAwCQYD +VR0TBAIwADAdBgNVHQ4EFgQUeZbhlvN8QSs7nxsN1qm4t0/mYVwwHwYDVR0jBBgw +FoAU9rnaFgcFu2/JYzDGZ0DLA9MekOwwCwYDVR0PBAQDAgXgMBMGA1UdJQQMMAoG +CCsGAQUFBwMBMIIdjwYDVR0RBIIdhjCCHYKCEXdlYi1wbGF0Zm9ybS50ZXN0ghVv +cDgud2ViLXBsYXRmb3JtLnRlc3SCFW9wNy53ZWItcGxhdGZvcm0udGVzdIIVb3A5 +LndlYi1wbGF0Zm9ybS50ZXN0ghVvcDQud2ViLXBsYXRmb3JtLnRlc3SCFW5vdC13 +ZWItcGxhdGZvcm0udGVzdIIVb3A2LndlYi1wbGF0Zm9ybS50ZXN0ghVvcDMud2Vi +LXBsYXRmb3JtLnRlc3SCFW9wMi53ZWItcGxhdGZvcm0udGVzdIIVb3AxLndlYi1w +bGF0Zm9ybS50ZXN0ghV3d3cud2ViLXBsYXRmb3JtLnRlc3SCFW9wNS53ZWItcGxh +dGZvcm0udGVzdIIWb3A4OC53ZWItcGxhdGZvcm0udGVzdIIWb3A5OC53ZWItcGxh +dGZvcm0udGVzdIIWb3A4NS53ZWItcGxhdGZvcm0udGVzdIIWb3A4OS53ZWItcGxh +dGZvcm0udGVzdIIWb3A2Ni53ZWItcGxhdGZvcm0udGVzdIIWb3A3Mi53ZWItcGxh +dGZvcm0udGVzdIIWb3AyNC53ZWItcGxhdGZvcm0udGVzdIIWb3A0MS53ZWItcGxh +dGZvcm0udGVzdIIWb3A3OS53ZWItcGxhdGZvcm0udGVzdIIWb3A5MS53ZWItcGxh +dGZvcm0udGVzdIIWb3A1OS53ZWItcGxhdGZvcm0udGVzdIIWb3AzOS53ZWItcGxh +dGZvcm0udGVzdIIWb3A2MC53ZWItcGxhdGZvcm0udGVzdIIWb3A1OC53ZWItcGxh +dGZvcm0udGVzdIIWb3AyOC53ZWItcGxhdGZvcm0udGVzdIIWd3d3MS53ZWItcGxh +dGZvcm0udGVzdIIWb3AxNC53ZWItcGxhdGZvcm0udGVzdIIWb3A2OS53ZWItcGxh +dGZvcm0udGVzdIIWb3A0MC53ZWItcGxhdGZvcm0udGVzdIIWb3A3NC53ZWItcGxh +dGZvcm0udGVzdIIWb3AzMS53ZWItcGxhdGZvcm0udGVzdIIWb3AxOC53ZWItcGxh +dGZvcm0udGVzdIIWb3A3My53ZWItcGxhdGZvcm0udGVzdIIWb3A3Ny53ZWItcGxh +dGZvcm0udGVzdIIWb3AxMi53ZWItcGxhdGZvcm0udGVzdIIWb3A1NC53ZWItcGxh +dGZvcm0udGVzdIIWb3A2My53ZWItcGxhdGZvcm0udGVzdIIWb3A3MS53ZWItcGxh +dGZvcm0udGVzdIIWb3A5NS53ZWItcGxhdGZvcm0udGVzdIIWb3AxNi53ZWItcGxh +dGZvcm0udGVzdIIWb3AzNi53ZWItcGxhdGZvcm0udGVzdIIWb3AyNy53ZWItcGxh +dGZvcm0udGVzdIIWb3AyOS53ZWItcGxhdGZvcm0udGVzdIIWb3A5NC53ZWItcGxh +dGZvcm0udGVzdIIWb3A0NC53ZWItcGxhdGZvcm0udGVzdIIWb3AzMy53ZWItcGxh +dGZvcm0udGVzdIIWb3A4NC53ZWItcGxhdGZvcm0udGVzdIIWb3AzMi53ZWItcGxh +dGZvcm0udGVzdIIWb3A2MS53ZWItcGxhdGZvcm0udGVzdIIWb3A3MC53ZWItcGxh +dGZvcm0udGVzdIIWd3d3Mi53ZWItcGxhdGZvcm0udGVzdIIWb3A0My53ZWItcGxh +dGZvcm0udGVzdIIWb3A3OC53ZWItcGxhdGZvcm0udGVzdIIWb3AyNi53ZWItcGxh +dGZvcm0udGVzdIIWb3A3Ni53ZWItcGxhdGZvcm0udGVzdIIWb3A1Mi53ZWItcGxh +dGZvcm0udGVzdIIWb3A5OS53ZWItcGxhdGZvcm0udGVzdIIWb3A4Ni53ZWItcGxh +dGZvcm0udGVzdIIWb3A0Ni53ZWItcGxhdGZvcm0udGVzdIIWb3AxNy53ZWItcGxh +dGZvcm0udGVzdIIWb3A5MC53ZWItcGxhdGZvcm0udGVzdIIWb3A5My53ZWItcGxh +dGZvcm0udGVzdIIWb3AxMC53ZWItcGxhdGZvcm0udGVzdIIWb3A1NS53ZWItcGxh +dGZvcm0udGVzdIIWb3A0Ny53ZWItcGxhdGZvcm0udGVzdIIWb3A1MS53ZWItcGxh +dGZvcm0udGVzdIIWb3A0NS53ZWItcGxhdGZvcm0udGVzdIIWb3A4MC53ZWItcGxh +dGZvcm0udGVzdIIWb3A2OC53ZWItcGxhdGZvcm0udGVzdIIWb3A0OS53ZWItcGxh +dGZvcm0udGVzdIIWb3A1Ny53ZWItcGxhdGZvcm0udGVzdIIWb3AzNS53ZWItcGxh +dGZvcm0udGVzdIIWb3A2Ny53ZWItcGxhdGZvcm0udGVzdIIWb3A5Mi53ZWItcGxh +dGZvcm0udGVzdIIWb3AxNS53ZWItcGxhdGZvcm0udGVzdIIWb3AxMy53ZWItcGxh +dGZvcm0udGVzdIIWb3A3NS53ZWItcGxhdGZvcm0udGVzdIIWb3A2NC53ZWItcGxh +dGZvcm0udGVzdIIWb3A5Ny53ZWItcGxhdGZvcm0udGVzdIIWb3AzNy53ZWItcGxh +dGZvcm0udGVzdIIWb3A1Ni53ZWItcGxhdGZvcm0udGVzdIIWb3A2Mi53ZWItcGxh +dGZvcm0udGVzdIIWb3A4Mi53ZWItcGxhdGZvcm0udGVzdIIWb3AyNS53ZWItcGxh +dGZvcm0udGVzdIIWb3AxMS53ZWItcGxhdGZvcm0udGVzdIIWb3A1MC53ZWItcGxh +dGZvcm0udGVzdIIWb3AzOC53ZWItcGxhdGZvcm0udGVzdIIWb3A4My53ZWItcGxh +dGZvcm0udGVzdIIWb3A4MS53ZWItcGxhdGZvcm0udGVzdIIWb3AyMC53ZWItcGxh +dGZvcm0udGVzdIIWb3AyMS53ZWItcGxhdGZvcm0udGVzdIIWb3AyMy53ZWItcGxh +dGZvcm0udGVzdIIWb3A0Mi53ZWItcGxhdGZvcm0udGVzdIIWb3AyMi53ZWItcGxh +dGZvcm0udGVzdIIWb3A2NS53ZWItcGxhdGZvcm0udGVzdIIWb3A5Ni53ZWItcGxh +dGZvcm0udGVzdIIWb3A4Ny53ZWItcGxhdGZvcm0udGVzdIIWb3AxOS53ZWItcGxh +dGZvcm0udGVzdIIWb3A1My53ZWItcGxhdGZvcm0udGVzdIIWb3AzMC53ZWItcGxh +dGZvcm0udGVzdIIWb3A0OC53ZWItcGxhdGZvcm0udGVzdIIWb3AzNC53ZWItcGxh +dGZvcm0udGVzdIIZb3A2Lm5vdC13ZWItcGxhdGZvcm0udGVzdIIZb3AzLm5vdC13 +ZWItcGxhdGZvcm0udGVzdIIZb3AyLm5vdC13ZWItcGxhdGZvcm0udGVzdIIZb3A1 +Lm5vdC13ZWItcGxhdGZvcm0udGVzdIIZd3d3Lm5vdC13ZWItcGxhdGZvcm0udGVz +dIIZd3d3Lnd3dy53ZWItcGxhdGZvcm0udGVzdIIZb3A3Lm5vdC13ZWItcGxhdGZv +cm0udGVzdIIZb3A0Lm5vdC13ZWItcGxhdGZvcm0udGVzdIIZb3A4Lm5vdC13ZWIt +cGxhdGZvcm0udGVzdIIZb3A5Lm5vdC13ZWItcGxhdGZvcm0udGVzdIIZb3AxLm5v +dC13ZWItcGxhdGZvcm0udGVzdIIab3AzNi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SC +Gm9wNTMubm90LXdlYi1wbGF0Zm9ybS50ZXN0ghpvcDUwLm5vdC13ZWItcGxhdGZv +cm0udGVzdIIab3AyNC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCGm9wMzEubm90LXdl +Yi1wbGF0Zm9ybS50ZXN0ghpvcDk1Lm5vdC13ZWItcGxhdGZvcm0udGVzdIIab3A4 +My5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCGnd3dzIubm90LXdlYi1wbGF0Zm9ybS50 +ZXN0ghpvcDczLm5vdC13ZWItcGxhdGZvcm0udGVzdIIab3AxOS5ub3Qtd2ViLXBs +YXRmb3JtLnRlc3SCGm9wMjEubm90LXdlYi1wbGF0Zm9ybS50ZXN0ghpvcDgxLm5v +dC13ZWItcGxhdGZvcm0udGVzdIIab3A3MC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SC +Gm9wNzgubm90LXdlYi1wbGF0Zm9ybS50ZXN0ghpvcDQwLm5vdC13ZWItcGxhdGZv +cm0udGVzdIIab3AyNS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCGm9wNjUubm90LXdl +Yi1wbGF0Zm9ybS50ZXN0ghp3d3cud3d3Mi53ZWItcGxhdGZvcm0udGVzdIIab3A4 +MC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCGm9wNTIubm90LXdlYi1wbGF0Zm9ybS50 +ZXN0ghpvcDY4Lm5vdC13ZWItcGxhdGZvcm0udGVzdIIab3A0NS5ub3Qtd2ViLXBs +YXRmb3JtLnRlc3SCGm9wNzEubm90LXdlYi1wbGF0Zm9ybS50ZXN0ghpvcDcyLm5v +dC13ZWItcGxhdGZvcm0udGVzdIIab3A5MC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SC +Gm9wODkubm90LXdlYi1wbGF0Zm9ybS50ZXN0ghpvcDQ5Lm5vdC13ZWItcGxhdGZv +cm0udGVzdIIab3A3Ny5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCGm9wNzkubm90LXdl +Yi1wbGF0Zm9ybS50ZXN0ghpvcDgyLm5vdC13ZWItcGxhdGZvcm0udGVzdIIad3d3 +Lnd3dzEud2ViLXBsYXRmb3JtLnRlc3SCGm9wMTIubm90LXdlYi1wbGF0Zm9ybS50 +ZXN0ghpvcDM5Lm5vdC13ZWItcGxhdGZvcm0udGVzdIIab3A0NC5ub3Qtd2ViLXBs +YXRmb3JtLnRlc3SCGnd3dzEubm90LXdlYi1wbGF0Zm9ybS50ZXN0ghpvcDU4Lm5v +dC13ZWItcGxhdGZvcm0udGVzdIIab3AxNC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SC +Gm9wMzAubm90LXdlYi1wbGF0Zm9ybS50ZXN0ghpvcDYyLm5vdC13ZWItcGxhdGZv +cm0udGVzdIIab3A2MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCGm9wOTIubm90LXdl +Yi1wbGF0Zm9ybS50ZXN0ghpvcDI5Lm5vdC13ZWItcGxhdGZvcm0udGVzdIIab3A5 +OC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCGm9wNjQubm90LXdlYi1wbGF0Zm9ybS50 +ZXN0ghpvcDI2Lm5vdC13ZWItcGxhdGZvcm0udGVzdIIab3AyMi5ub3Qtd2ViLXBs +YXRmb3JtLnRlc3SCGm9wOTQubm90LXdlYi1wbGF0Zm9ybS50ZXN0ghpvcDM4Lm5v +dC13ZWItcGxhdGZvcm0udGVzdIIab3AzMy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SC +Gm9wMjMubm90LXdlYi1wbGF0Zm9ybS50ZXN0ghpvcDU3Lm5vdC13ZWItcGxhdGZv +cm0udGVzdIIab3A1NC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCGm9wODUubm90LXdl +Yi1wbGF0Zm9ybS50ZXN0ghpvcDQ2Lm5vdC13ZWItcGxhdGZvcm0udGVzdIIab3A5 +Ny5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCGm9wMzIubm90LXdlYi1wbGF0Zm9ybS50 +ZXN0ghpvcDYwLm5vdC13ZWItcGxhdGZvcm0udGVzdIIab3A5Ni5ub3Qtd2ViLXBs +YXRmb3JtLnRlc3SCGm9wNTEubm90LXdlYi1wbGF0Zm9ybS50ZXN0ghpvcDQxLm5v +dC13ZWItcGxhdGZvcm0udGVzdIIab3AzNS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SC +Gm9wOTkubm90LXdlYi1wbGF0Zm9ybS50ZXN0ghpvcDQyLm5vdC13ZWItcGxhdGZv +cm0udGVzdIIab3A2Ny5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCGm9wMzcubm90LXdl +Yi1wbGF0Zm9ybS50ZXN0ghpvcDQ4Lm5vdC13ZWItcGxhdGZvcm0udGVzdIIab3A1 +NS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCGm9wNTYubm90LXdlYi1wbGF0Zm9ybS50 +ZXN0ghpvcDg0Lm5vdC13ZWItcGxhdGZvcm0udGVzdIIab3AzNC5ub3Qtd2ViLXBs +YXRmb3JtLnRlc3SCGm9wNjkubm90LXdlYi1wbGF0Zm9ybS50ZXN0ghpvcDExLm5v +dC13ZWItcGxhdGZvcm0udGVzdIIab3A5My5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SC +Gnd3dzEud3d3LndlYi1wbGF0Zm9ybS50ZXN0ghpvcDg2Lm5vdC13ZWItcGxhdGZv +cm0udGVzdIIab3AxMy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCGm9wMjAubm90LXdl +Yi1wbGF0Zm9ybS50ZXN0ghpvcDc2Lm5vdC13ZWItcGxhdGZvcm0udGVzdIIab3Ay +Ny5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCGm9wMTcubm90LXdlYi1wbGF0Zm9ybS50 +ZXN0ghpvcDc1Lm5vdC13ZWItcGxhdGZvcm0udGVzdIIab3AxNS5ub3Qtd2ViLXBs +YXRmb3JtLnRlc3SCGm9wNDcubm90LXdlYi1wbGF0Zm9ybS50ZXN0ghpvcDE4Lm5v +dC13ZWItcGxhdGZvcm0udGVzdIIab3A2My5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SC +Gm9wMjgubm90LXdlYi1wbGF0Zm9ybS50ZXN0ghpvcDQzLm5vdC13ZWItcGxhdGZv +cm0udGVzdIIab3A2Ni5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCGnd3dzIud3d3Lndl +Yi1wbGF0Zm9ybS50ZXN0ghpvcDkxLm5vdC13ZWItcGxhdGZvcm0udGVzdIIab3A3 +NC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCGm9wNTkubm90LXdlYi1wbGF0Zm9ybS50 +ZXN0ghpvcDg4Lm5vdC13ZWItcGxhdGZvcm0udGVzdIIab3A4Ny5ub3Qtd2ViLXBs +YXRmb3JtLnRlc3SCGm9wMTAubm90LXdlYi1wbGF0Zm9ybS50ZXN0ghpvcDE2Lm5v +dC13ZWItcGxhdGZvcm0udGVzdIIbd3d3MS53d3cyLndlYi1wbGF0Zm9ybS50ZXN0 +ght3d3cyLnd3dzIud2ViLXBsYXRmb3JtLnRlc3SCG3d3dzIud3d3MS53ZWItcGxh +dGZvcm0udGVzdIIbd3d3MS53d3cxLndlYi1wbGF0Zm9ybS50ZXN0gh13d3cud3d3 +Lm5vdC13ZWItcGxhdGZvcm0udGVzdIIeeG4tLWx2ZS02bGFkLndlYi1wbGF0Zm9y +bS50ZXN0gh53d3cxLnd3dy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCHnd3dy53d3cy +Lm5vdC13ZWItcGxhdGZvcm0udGVzdIIed3d3Mi53d3cubm90LXdlYi1wbGF0Zm9y +bS50ZXN0gh53d3cud3d3MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCH3d3dzIud3d3 +Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCH3d3dzIud3d3MS5ub3Qtd2ViLXBsYXRm +b3JtLnRlc3SCH3d3dzEud3d3MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCH3d3dzEu +d3d3Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCInhuLS1sdmUtNmxhZC53d3cud2Vi +LXBsYXRmb3JtLnRlc3SCInhuLS1sdmUtNmxhZC5ub3Qtd2ViLXBsYXRmb3JtLnRl +c3SCInd3dy54bi0tbHZlLTZsYWQud2ViLXBsYXRmb3JtLnRlc3SCI3d3dzIueG4t +LWx2ZS02bGFkLndlYi1wbGF0Zm9ybS50ZXN0giN4bi0tbHZlLTZsYWQud3d3Mi53 +ZWItcGxhdGZvcm0udGVzdIIjeG4tLWx2ZS02bGFkLnd3dzEud2ViLXBsYXRmb3Jt +LnRlc3SCI3d3dzEueG4tLWx2ZS02bGFkLndlYi1wbGF0Zm9ybS50ZXN0giZ4bi0t +bHZlLTZsYWQud3d3Lm5vdC13ZWItcGxhdGZvcm0udGVzdIImd3d3LnhuLS1sdmUt +NmxhZC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCJ3huLS1sdmUtNmxhZC53d3cxLm5v +dC13ZWItcGxhdGZvcm0udGVzdIInd3d3Mi54bi0tbHZlLTZsYWQubm90LXdlYi1w +bGF0Zm9ybS50ZXN0gid3d3cxLnhuLS1sdmUtNmxhZC5ub3Qtd2ViLXBsYXRmb3Jt +LnRlc3SCJ3huLS1sdmUtNmxhZC53d3cyLm5vdC13ZWItcGxhdGZvcm0udGVzdIIp +eG4tLW44ajZkczUzbHd3a3JxaHYyOGEud2ViLXBsYXRmb3JtLnRlc3SCK3huLS1s +dmUtNmxhZC54bi0tbHZlLTZsYWQud2ViLXBsYXRmb3JtLnRlc3SCLXd3dy54bi0t +bjhqNmRzNTNsd3drcnFodjI4YS53ZWItcGxhdGZvcm0udGVzdIIteG4tLW44ajZk +czUzbHd3a3JxaHYyOGEubm90LXdlYi1wbGF0Zm9ybS50ZXN0gi14bi0tbjhqNmRz +NTNsd3drcnFodjI4YS53d3cud2ViLXBsYXRmb3JtLnRlc3SCLnd3dzEueG4tLW44 +ajZkczUzbHd3a3JxaHYyOGEud2ViLXBsYXRmb3JtLnRlc3SCLnhuLS1uOGo2ZHM1 +M2x3d2tycWh2MjhhLnd3dzIud2ViLXBsYXRmb3JtLnRlc3SCLnhuLS1uOGo2ZHM1 +M2x3d2tycWh2MjhhLnd3dzEud2ViLXBsYXRmb3JtLnRlc3SCLnd3dzIueG4tLW44 +ajZkczUzbHd3a3JxaHYyOGEud2ViLXBsYXRmb3JtLnRlc3SCL3huLS1sdmUtNmxh +ZC54bi0tbHZlLTZsYWQubm90LXdlYi1wbGF0Zm9ybS50ZXN0gjF3d3cueG4tLW44 +ajZkczUzbHd3a3JxaHYyOGEubm90LXdlYi1wbGF0Zm9ybS50ZXN0gjF4bi0tbjhq +NmRzNTNsd3drcnFodjI4YS53d3cubm90LXdlYi1wbGF0Zm9ybS50ZXN0gjJ4bi0t +bjhqNmRzNTNsd3drcnFodjI4YS53d3cyLm5vdC13ZWItcGxhdGZvcm0udGVzdIIy +d3d3MS54bi0tbjhqNmRzNTNsd3drcnFodjI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRl +c3SCMnd3dzIueG4tLW44ajZkczUzbHd3a3JxaHYyOGEubm90LXdlYi1wbGF0Zm9y +bS50ZXN0gjJ4bi0tbjhqNmRzNTNsd3drcnFodjI4YS53d3cxLm5vdC13ZWItcGxh +dGZvcm0udGVzdII2eG4tLW44ajZkczUzbHd3a3JxaHYyOGEueG4tLWx2ZS02bGFk +LndlYi1wbGF0Zm9ybS50ZXN0gjZ4bi0tbHZlLTZsYWQueG4tLW44ajZkczUzbHd3 +a3JxaHYyOGEud2ViLXBsYXRmb3JtLnRlc3SCOnhuLS1uOGo2ZHM1M2x3d2tycWh2 +MjhhLnhuLS1sdmUtNmxhZC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCOnhuLS1sdmUt +NmxhZC54bi0tbjhqNmRzNTNsd3drcnFodjI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRl +c3SCQXhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLnhuLS1uOGo2ZHM1M2x3d2tycWh2 +MjhhLndlYi1wbGF0Zm9ybS50ZXN0gkV4bi0tbjhqNmRzNTNsd3drcnFodjI4YS54 +bi0tbjhqNmRzNTNsd3drcnFodjI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QwDQYJ +KoZIhvcNAQELBQADggEBAAuLVWq0ZagqO8BiDoXV3JmfP9C3/8u2aOWu06JOyNSq +NJXknkvkdOTE7BExZ+Wm2oVrD9dkt+fr/gm2iOF0HQwVoy4BA/xnnHy65vtSHVjN +aKNVjJtXu4kyEEFxmaMa3CUt0Lkar+Z2QNf1I6nYWUWKq1NTh8wUs4feHQGZek9y +R2mcmHOUeZAlcALsdbJ3ESiXzUM91Wg4c3H9qQui7S0cbuEF1DCmZAQQyujm4Hqp +9CaUa6QoqgzrPuDv0r4LcOTdTPyihwwkg3Li5G8lqO7FEonZ3Y+CFMPWBq4du3s8 +/JsnVlC0KERggBeHHLHObXe00Ssy6NC6Bm9NBP9g/uM= +-----END CERTIFICATE----- diff --git a/tests/wpt/web-platform-tests/tools/quic/certs/config.json b/tests/wpt/web-platform-tests/tools/quic/certs/config.json new file mode 100644 index 00000000000..72a6d0529fb --- /dev/null +++ b/tests/wpt/web-platform-tests/tools/quic/certs/config.json @@ -0,0 +1,17 @@ +{ + "ports": { + "http": [], + "https": ["auto"], + "ws": [], + "wss": [] + }, + "check_subdomains": false, + "ssl": { + "type": "openssl", + "openssl": { + "duration": 3650, + "force_regenerate": false, + "base_path": "tools/certs" + } + } +} diff --git a/tests/wpt/web-platform-tests/tools/quic/quic_transport_server.py b/tests/wpt/web-platform-tests/tools/quic/quic_transport_server.py new file mode 100644 index 00000000000..10d81743693 --- /dev/null +++ b/tests/wpt/web-platform-tests/tools/quic/quic_transport_server.py @@ -0,0 +1,244 @@ +#!/usr/bin/env python3 +import argparse +import asyncio +import io +import logging +import os +import re +import struct +import urllib.parse +from typing import Dict, Optional + +from aioquic.asyncio import QuicConnectionProtocol, serve +from aioquic.quic.configuration import QuicConfiguration +from aioquic.quic.connection import END_STATES +from aioquic.quic.events import StreamDataReceived, QuicEvent +from aioquic.tls import SessionTicket + +SERVER_NAME = 'aioquic-transport' + +handlers_path = None + + +class EventHandler: + def __init__(self, connection: QuicConnectionProtocol, global_dict: Dict): + self.connection = connection + self.global_dict = global_dict + + def handle_client_indication( + self, + origin: str, + query: Dict[str, str]) -> None: + name = 'handle_client_indication' + if name in self.global_dict: + self.global_dict[name](self.connection, origin, query) + + def handle_event(self, event: QuicEvent) -> None: + name = 'handle_event' + if name in self.global_dict: + self.global_dict[name](self.connection, event) + + +class QuicTransportProtocol(QuicConnectionProtocol): + def __init__(self, *args, **kwargs) -> None: + super().__init__(*args, **kwargs) + self.streams = dict() + self.pending_events = [] + self.client_indication_finished = False + self.client_indication_data = b'' + self.handler = None + + def quic_event_received(self, event: QuicEvent) -> None: + prefix = '!!' + logging.log(logging.INFO, 'QUIC event: %s' % type(event)) + try: + if (not self.client_indication_finished and + isinstance(event, StreamDataReceived) and + event.stream_id == 2): + # client indication process + self.client_indication_data += event.data + if event.end_stream: + prefix = 'Client inditation error: ' + self.process_client_indication() + if self.is_closing_or_closed(): + return + prefix = 'Event handling Error: ' + for e in self.pending_events: + self.handler.handle_event(e) + self.pending_events.clear() + elif not self.client_indication_finished: + self.pending_events.append(event) + elif self.handler is not None: + prefix = 'Event handling Error: ' + self.handler.handle_event(event) + except Exception as e: + self.handler = None + logging.log(logging.WARN, prefix + str(e)) + self.close() + + def parse_client_indication(self, bs): + while True: + key_b = bs.read(2) + if len(key_b) == 0: + return + length_b = bs.read(2) + if len(key_b) != 2: + raise Exception('failed to get "Key" field') + if len(length_b) != 2: + raise Exception('failed to get "Length" field') + key = struct.unpack('!H', key_b)[0] + length = struct.unpack('!H', length_b)[0] + value = bs.read(length) + if len(value) != length: + raise Exception('truncated "Value" field') + yield (key, value) + + def process_client_indication(self) -> None: + origin = None + origin_string = None + path = None + path_string = None + KEY_ORIGIN = 0 + KEY_PATH = 1 + for (key, value) in self.parse_client_indication( + io.BytesIO(self.client_indication_data)): + if key == KEY_ORIGIN: + origin_string = value.decode() + origin = urllib.parse.urlparse(origin_string) + elif key == KEY_PATH: + path_string = value.decode() + path = urllib.parse.urlparse(path_string) + else: + # We must ignore unrecognized fields. + pass + logging.log(logging.INFO, + 'origin = %s, path = %s' % (origin_string, path_string)) + if origin is None: + raise Exception('No origin is given') + if path is None: + raise Exception('No path is given') + if origin.scheme != 'https' and origin.scheme != 'http': + raise Exception('Invalid origin: %s' % origin_string) + if origin.netloc == '': + raise Exception('Invalid origin: %s' % origin_string) + + # To make the situation simple we accept only simple path strings. + m = re.compile('^/([a-zA-Z0-9\._\-]+)$').match(path.path) + if m is None: + raise Exception('Invalid path: %s' % path_string) + + handler_name = m.group(1) + query = dict(urllib.parse.parse_qsl(path.query)) + self.handler = self.create_event_handler(handler_name) + self.handler.handle_client_indication(origin_string, query) + if self.is_closing_or_closed(): + return + self.client_indication_finished = True + logging.log(logging.INFO, 'Client indication finished') + + def create_event_handler(self, handler_name: str) -> None: + global_dict = {} + with open(handlers_path + '/' + handler_name) as f: + exec(f.read(), global_dict) + return EventHandler(self, global_dict) + + def is_closing_or_closed(self) -> bool: + if self._quic._close_pending: + return True + if self._quic._state in END_STATES: + return True + return False + + +class SessionTicketStore: + ''' + Simple in-memory store for session tickets. + ''' + + def __init__(self) -> None: + self.tickets: Dict[bytes, SessionTicket] = {} + + def add(self, ticket: SessionTicket) -> None: + self.tickets[ticket.ticket] = ticket + + def pop(self, label: bytes) -> Optional[SessionTicket]: + return self.tickets.pop(label, None) + + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description='QUIC server') + parser.add_argument( + '-c', + '--certificate', + type=str, + required=True, + help='load the TLS certificate from the specified file', + ) + parser.add_argument( + '--host', + type=str, + default='::', + help='listen on the specified address (defaults to ::)', + ) + parser.add_argument( + '--port', + type=int, + default=4433, + help='listen on the specified port (defaults to 4433)', + ) + parser.add_argument( + '-k', + '--private-key', + type=str, + required=True, + help='load the TLS private key from the specified file', + ) + parser.add_argument( + '--handlers-path', + type=str, + required=True, + help='the directory path of QuicTransport event handlers', + ) + parser.add_argument( + '-v', + '--verbose', + action='store_true', + help='increase logging verbosity' + ) + args = parser.parse_args() + + logging.basicConfig( + format='%(asctime)s %(levelname)s %(name)s %(message)s', + level=logging.DEBUG if args.verbose else logging.INFO, + ) + + configuration = QuicConfiguration( + alpn_protocols=['wq-vvv-01'] + ['siduck'], + is_client=False, + max_datagram_frame_size=65536, + ) + + handlers_path = os.path.abspath(os.path.expanduser(args.handlers_path)) + logging.log(logging.INFO, 'port = %s' % args.port) + logging.log(logging.INFO, 'handlers path = %s' % handlers_path) + + # load SSL certificate and key + configuration.load_cert_chain(args.certificate, args.private_key) + + ticket_store = SessionTicketStore() + + loop = asyncio.get_event_loop() + loop.run_until_complete( + serve( + args.host, + args.port, + configuration=configuration, + create_protocol=QuicTransportProtocol, + session_ticket_fetcher=ticket_store.pop, + session_ticket_handler=ticket_store.add, + ) + ) + try: + loop.run_forever() + except KeyboardInterrupt: + pass diff --git a/tests/wpt/web-platform-tests/tools/requirements_flake8.txt b/tests/wpt/web-platform-tests/tools/requirements_flake8.txt index 2a4c7e5d7b2..3be95a40de7 100644 --- a/tests/wpt/web-platform-tests/tools/requirements_flake8.txt +++ b/tests/wpt/web-platform-tests/tools/requirements_flake8.txt @@ -1,4 +1,4 @@ -flake8==3.7.9 -pycodestyle==2.5.0 +flake8==3.8.1 +pycodestyle==2.6.0 pyflakes==2.2.0 pep8-naming==0.10.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 cbbee821326..f76836ea66b 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/environment.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/environment.py @@ -53,7 +53,9 @@ class TestEnvironmentError(Exception): class TestEnvironment(object): """Context manager that owns the test environment i.e. the http and websockets servers""" - def __init__(self, test_paths, testharness_timeout_multipler, pause_after_test, debug_info, options, ssl_config, env_extras): + def __init__(self, test_paths, testharness_timeout_multipler, + pause_after_test, debug_info, options, ssl_config, env_extras, + enable_quic=False): self.test_paths = test_paths self.server = None self.config_ctx = None @@ -69,6 +71,7 @@ class TestEnvironment(object): self.env_extras = env_extras self.env_extras_cms = None self.ssl_config = ssl_config + self.enable_quic = enable_quic def __enter__(self): self.config_ctx = self.build_config() @@ -130,6 +133,8 @@ class TestEnvironment(object): "wss": [8889], "h2": [9000], } + if self.enable_quic: + config.ports["quic"] = [10000] if os.path.exists(override_path): with open(override_path) as f: diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/base.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/base.py index 5d6c283737e..c75a8ef320f 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/base.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/base.py @@ -216,8 +216,9 @@ class TestExecutor(object): extra_timeout = 5 # seconds - def __init__(self, browser, server_config, timeout_multiplier=1, + def __init__(self, logger, browser, server_config, timeout_multiplier=1, debug_info=None, **kwargs): + self.logger = logger self.runner = None self.browser = browser self.server_config = server_config @@ -227,12 +228,6 @@ class TestExecutor(object): "prefs": {}} self.protocol = None # This must be set in subclasses - @property - def logger(self): - """StructuredLogger for this executor""" - if self.runner is not None: - return self.runner.logger - def setup(self, runner): """Run steps needed before tests can be started e.g. connecting to browser instance @@ -318,9 +313,9 @@ class TestharnessExecutor(TestExecutor): class RefTestExecutor(TestExecutor): convert_result = reftest_result_converter - def __init__(self, browser, server_config, timeout_multiplier=1, screenshot_cache=None, + def __init__(self, logger, browser, server_config, timeout_multiplier=1, screenshot_cache=None, debug_info=None, **kwargs): - TestExecutor.__init__(self, browser, server_config, + TestExecutor.__init__(self, logger, browser, server_config, timeout_multiplier=timeout_multiplier, debug_info=debug_info) @@ -504,11 +499,11 @@ class WdspecExecutor(TestExecutor): convert_result = pytest_result_converter protocol_cls = None - def __init__(self, browser, server_config, webdriver_binary, + def __init__(self, logger, browser, server_config, webdriver_binary, webdriver_args, timeout_multiplier=1, capabilities=None, debug_info=None, **kwargs): self.do_delayed_imports() - TestExecutor.__init__(self, browser, server_config, + TestExecutor.__init__(self, logger, browser, server_config, timeout_multiplier=timeout_multiplier, debug_info=debug_info) self.webdriver_binary = webdriver_binary 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 3f0b92f23b3..535923fdb5e 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 @@ -669,11 +669,11 @@ class ExecuteAsyncScriptRun(TimedRunner): class MarionetteTestharnessExecutor(TestharnessExecutor): supports_testdriver = True - def __init__(self, browser, server_config, timeout_multiplier=1, + def __init__(self, logger, browser, server_config, timeout_multiplier=1, close_after_done=True, debug_info=None, capabilities=None, debug=False, ccov=False, **kwargs): """Marionette-based executor for testharness.js tests""" - TestharnessExecutor.__init__(self, browser, server_config, + TestharnessExecutor.__init__(self, logger, browser, server_config, timeout_multiplier=timeout_multiplier, debug_info=debug_info) self.protocol = MarionetteProtocol(self, @@ -765,13 +765,14 @@ class MarionetteTestharnessExecutor(TestharnessExecutor): class MarionetteRefTestExecutor(RefTestExecutor): - def __init__(self, browser, server_config, timeout_multiplier=1, + def __init__(self, logger, browser, server_config, timeout_multiplier=1, screenshot_cache=None, close_after_done=True, debug_info=None, reftest_internal=False, reftest_screenshot="unexpected", ccov=False, group_metadata=None, capabilities=None, debug=False, **kwargs): """Marionette-based executor for reftests""" RefTestExecutor.__init__(self, + logger, browser, server_config, screenshot_cache=screenshot_cache, @@ -949,11 +950,11 @@ class MarionetteWdspecExecutor(WdspecExecutor): class MarionetteCrashtestExecutor(CrashtestExecutor): - def __init__(self, browser, server_config, timeout_multiplier=1, + def __init__(self, logger, browser, server_config, timeout_multiplier=1, debug_info=None, capabilities=None, debug=False, ccov=False, **kwargs): """Marionette-based executor for testharness.js tests""" - CrashtestExecutor.__init__(self, browser, server_config, + CrashtestExecutor.__init__(self, logger, browser, server_config, timeout_multiplier=timeout_multiplier, debug_info=debug_info) self.protocol = MarionetteProtocol(self, diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorselenium.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorselenium.py index 45692a0488b..96312f3f9f9 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorselenium.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorselenium.py @@ -271,11 +271,11 @@ class SeleniumRun(TimedRunner): class SeleniumTestharnessExecutor(TestharnessExecutor): supports_testdriver = True - def __init__(self, browser, server_config, timeout_multiplier=1, + def __init__(self, logger, browser, server_config, timeout_multiplier=1, close_after_done=True, capabilities=None, debug_info=None, supports_eager_pageload=True, **kwargs): """Selenium-based executor for testharness.js tests""" - TestharnessExecutor.__init__(self, browser, server_config, + TestharnessExecutor.__init__(self, logger, browser, server_config, timeout_multiplier=timeout_multiplier, debug_info=debug_info) self.protocol = SeleniumProtocol(self, browser, capabilities) @@ -356,11 +356,12 @@ if (location.href === "about:blank") { class SeleniumRefTestExecutor(RefTestExecutor): - def __init__(self, browser, server_config, timeout_multiplier=1, + def __init__(self, logger, browser, server_config, timeout_multiplier=1, screenshot_cache=None, close_after_done=True, debug_info=None, capabilities=None, **kwargs): """Selenium WebDriver-based executor for reftests""" RefTestExecutor.__init__(self, + logger, browser, server_config, screenshot_cache=screenshot_cache, 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 4816c3df06e..f83f0115e00 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 @@ -65,9 +65,9 @@ def build_servo_command(test, test_url_func, browser, binary, pause_after_test, class ServoTestharnessExecutor(ProcessTestExecutor): convert_result = testharness_result_converter - def __init__(self, browser, server_config, timeout_multiplier=1, debug_info=None, + def __init__(self, logger, browser, server_config, timeout_multiplier=1, debug_info=None, pause_after_test=False, **kwargs): - ProcessTestExecutor.__init__(self, browser, server_config, + ProcessTestExecutor.__init__(self, logger, browser, server_config, timeout_multiplier=timeout_multiplier, debug_info=debug_info) self.pause_after_test = pause_after_test @@ -182,10 +182,11 @@ class TempFilename(object): class ServoRefTestExecutor(ProcessTestExecutor): convert_result = reftest_result_converter - def __init__(self, browser, server_config, binary=None, timeout_multiplier=1, + def __init__(self, logger, browser, server_config, binary=None, timeout_multiplier=1, screenshot_cache=None, debug_info=None, pause_after_test=False, **kwargs): ProcessTestExecutor.__init__(self, + logger, browser, server_config, timeout_multiplier=timeout_multiplier, @@ -308,10 +309,11 @@ class ServoTimedRunner(TimedRunner): class ServoCrashtestExecutor(ProcessTestExecutor): convert_result = crashtest_result_converter - def __init__(self, browser, server_config, binary=None, timeout_multiplier=1, + def __init__(self, logger, browser, server_config, binary=None, timeout_multiplier=1, screenshot_cache=None, debug_info=None, pause_after_test=False, **kwargs): ProcessTestExecutor.__init__(self, + logger, browser, server_config, timeout_multiplier=timeout_multiplier, diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorservodriver.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorservodriver.py index 2e47a22a9c9..0680c4ed229 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorservodriver.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorservodriver.py @@ -155,10 +155,10 @@ class ServoWebDriverRun(TimedRunner): class ServoWebDriverTestharnessExecutor(TestharnessExecutor): supports_testdriver = True - def __init__(self, browser, server_config, timeout_multiplier=1, + def __init__(self, logger, browser, server_config, timeout_multiplier=1, close_after_done=True, capabilities=None, debug_info=None, **kwargs): - TestharnessExecutor.__init__(self, browser, server_config, timeout_multiplier=1, + TestharnessExecutor.__init__(self, logger, browser, server_config, timeout_multiplier=1, debug_info=None) self.protocol = ServoWebDriverProtocol(self, browser, capabilities=capabilities) with open(os.path.join(here, "testharness_servodriver.js")) as f: @@ -221,11 +221,12 @@ class TimeoutError(Exception): class ServoWebDriverRefTestExecutor(RefTestExecutor): - def __init__(self, browser, server_config, timeout_multiplier=1, + def __init__(self, logger, browser, server_config, timeout_multiplier=1, screenshot_cache=None, capabilities=None, debug_info=None, **kwargs): """Selenium WebDriver-based executor for reftests""" RefTestExecutor.__init__(self, + logger, browser, server_config, screenshot_cache=screenshot_cache, diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py index 2a0e9c7136d..c5f2965ec18 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py @@ -350,11 +350,11 @@ class WebDriverRun(TimedRunner): class WebDriverTestharnessExecutor(TestharnessExecutor): supports_testdriver = True - def __init__(self, browser, server_config, timeout_multiplier=1, + def __init__(self, logger, browser, server_config, timeout_multiplier=1, close_after_done=True, capabilities=None, debug_info=None, supports_eager_pageload=True, **kwargs): """WebDriver-based executor for testharness.js tests""" - TestharnessExecutor.__init__(self, browser, server_config, + TestharnessExecutor.__init__(self, logger, browser, server_config, timeout_multiplier=timeout_multiplier, debug_info=debug_info) self.protocol = WebDriverProtocol(self, browser, capabilities) @@ -449,11 +449,12 @@ if (location.href === "about:blank") { class WebDriverRefTestExecutor(RefTestExecutor): - def __init__(self, browser, server_config, timeout_multiplier=1, + def __init__(self, logger, browser, server_config, timeout_multiplier=1, screenshot_cache=None, close_after_done=True, debug_info=None, capabilities=None, **kwargs): """WebDriver-based executor for reftests""" RefTestExecutor.__init__(self, + logger, browser, server_config, screenshot_cache=screenshot_cache, @@ -517,11 +518,12 @@ class WebDriverRefTestExecutor(RefTestExecutor): class WebDriverCrashtestExecutor(CrashtestExecutor): - def __init__(self, browser, server_config, timeout_multiplier=1, + def __init__(self, logger, browser, server_config, timeout_multiplier=1, screenshot_cache=None, close_after_done=True, debug_info=None, capabilities=None, **kwargs): """WebDriver-based executor for reftests""" CrashtestExecutor.__init__(self, + logger, browser, server_config, screenshot_cache=screenshot_cache, diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testloader.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testloader.py index 78967371537..cc9d1e539ac 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testloader.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testloader.py @@ -168,6 +168,7 @@ class TestLoader(object): total_chunks=1, chunk_number=1, include_https=True, + include_quic=False, skip_timeout=False, skip_implementation_status=None, chunker_kwargs=None): @@ -181,6 +182,7 @@ class TestLoader(object): self.tests = None self.disabled_tests = None self.include_https = include_https + self.include_quic = include_quic self.skip_timeout = skip_timeout self.skip_implementation_status = skip_implementation_status @@ -267,6 +269,8 @@ class TestLoader(object): enabled = not test.disabled() if not self.include_https and test.environment["protocol"] == "https": enabled = False + if not self.include_quic and test.environment["quic"]: + enabled = False if self.skip_timeout and test.expected() == "TIMEOUT": enabled = False if self.skip_implementation_status and test.implementation_status() in self.skip_implementation_status: diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testrunner.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testrunner.py index f0d830787a4..49a3525e883 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testrunner.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testrunner.py @@ -158,7 +158,7 @@ def start_runner(runner_command_queue, runner_result_queue, with capture.CaptureIO(logger, capture_stdio): try: browser = executor_browser_cls(**executor_browser_kwargs) - executor = executor_cls(browser, **executor_kwargs) + executor = executor_cls(logger, browser, **executor_kwargs) with TestRunner(logger, runner_command_queue, runner_result_queue, executor) as runner: try: runner.run() diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptcommandline.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptcommandline.py index 93bd886aac1..96227bb4690 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptcommandline.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptcommandline.py @@ -141,6 +141,10 @@ scheme host and port.""") action="append", choices=["not-implementing", "backlog", "implementing"], help="Skip tests that have the given implementation status") + # TODO: Remove this when QUIC is enabled by default. + test_selection_group.add_argument("--enable-quic", action="store_true", default=False, + help="Enable tests that require QUIC server (default: false)") + test_selection_group.add_argument("--tag", action="append", dest="tags", help="Labels applied to tests to include in the run. " "Labels starting dir: are equivalent to top-level directories.") diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py index 7c3adde7253..ce15c5fbbf0 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py @@ -78,6 +78,7 @@ def get_loader(test_paths, product, debug=None, run_info_extras=None, chunker_kw total_chunks=kwargs["total_chunks"], chunk_number=kwargs["this_chunk"], include_https=ssl_enabled, + include_quic=kwargs["enable_quic"], skip_timeout=kwargs["skip_timeout"], skip_implementation_status=kwargs["skip_implementation_status"], chunker_kwargs=chunker_kwargs) @@ -211,7 +212,8 @@ def run_tests(config, test_paths, product, **kwargs): kwargs["debug_info"], product.env_options, ssl_config, - env_extras) as test_environment: + env_extras, + kwargs["enable_quic"]) as test_environment: recording.set(["startup", "ensure_environment"]) try: test_environment.ensure_started() 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 7c58610a7c5..27d7fbbbd7f 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wpttest.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wpttest.py @@ -124,7 +124,6 @@ class RunInfo(dict): self["headless"] = extras.get("headless", False) self["webrender"] = enable_webrender - def _update_mozinfo(self, metadata_root): """Add extra build information from a mozinfo.json file in a parent directory""" @@ -159,14 +158,14 @@ class Test(object): long_timeout = 60 # seconds def __init__(self, tests_root, url, inherit_metadata, test_metadata, - timeout=None, path=None, protocol="http"): + timeout=None, path=None, protocol="http", quic=False): self.tests_root = tests_root self.url = url self._inherit_metadata = inherit_metadata self._test_metadata = test_metadata self.timeout = timeout if timeout is not None else self.default_timeout self.path = path - self.environment = {"protocol": protocol, "prefs": self.prefs} + self.environment = {"protocol": protocol, "prefs": self.prefs, "quic": quic} def __eq__(self, other): if not isinstance(other, Test): @@ -396,9 +395,9 @@ class TestharnessTest(Test): def __init__(self, tests_root, url, inherit_metadata, test_metadata, timeout=None, path=None, protocol="http", testdriver=False, - jsshell=False, scripts=None): + jsshell=False, scripts=None, quic=False): Test.__init__(self, tests_root, url, inherit_metadata, test_metadata, timeout, - path, protocol) + path, protocol, quic) self.testdriver = testdriver self.jsshell = jsshell @@ -409,6 +408,7 @@ class TestharnessTest(Test): timeout = cls.long_timeout if manifest_item.timeout == "long" else cls.default_timeout testdriver = manifest_item.testdriver if hasattr(manifest_item, "testdriver") else False jsshell = manifest_item.jsshell if hasattr(manifest_item, "jsshell") else False + quic = manifest_item.quic if hasattr(manifest_item, "quic") else False script_metadata = manifest_item.script_metadata or [] scripts = [v for (k, v) in script_metadata if k == b"script"] return cls(manifest_file.tests_root, @@ -420,8 +420,8 @@ class TestharnessTest(Test): protocol=server_protocol(manifest_item), testdriver=testdriver, jsshell=jsshell, - scripts=scripts - ) + scripts=scripts, + quic=quic) @property def id(self): @@ -452,9 +452,9 @@ class ReftestTest(Test): test_type = "reftest" def __init__(self, tests_root, url, inherit_metadata, test_metadata, references, - timeout=None, path=None, viewport_size=None, dpi=None, fuzzy=None, protocol="http"): + timeout=None, path=None, viewport_size=None, dpi=None, fuzzy=None, protocol="http", quic=False): Test.__init__(self, tests_root, url, inherit_metadata, test_metadata, timeout, - path, protocol) + path, protocol, quic) for _, ref_type in references: if ref_type not in ("==", "!="): @@ -473,6 +473,7 @@ class ReftestTest(Test): test_metadata): timeout = cls.long_timeout if manifest_test.timeout == "long" else cls.default_timeout + quic = manifest_test.quic if hasattr(manifest_test, "quic") else False url = manifest_test.url @@ -486,7 +487,8 @@ class ReftestTest(Test): viewport_size=manifest_test.viewport_size, dpi=manifest_test.dpi, protocol=server_protocol(manifest_test), - fuzzy=manifest_test.fuzzy) + fuzzy=manifest_test.fuzzy, + quic=quic) refs_by_type = defaultdict(list) diff --git a/tests/wpt/web-platform-tests/tools/wptserve/wptserve/sslutils/openssl.py b/tests/wpt/web-platform-tests/tools/wptserve/wptserve/sslutils/openssl.py index aea1c7380b1..64f6d5fb2db 100644 --- a/tests/wpt/web-platform-tests/tools/wptserve/wptserve/sslutils/openssl.py +++ b/tests/wpt/web-platform-tests/tools/wptserve/wptserve/sslutils/openssl.py @@ -402,6 +402,8 @@ class OpenSSLEnvironment(object): def _generate_host_cert(self, hosts): host = hosts[0] + if not self.force_regenerate: + self._load_ca_cert() if self._ca_key_path is None: self._generate_ca(hosts) ca_key_path = self._ca_key_path diff --git a/tests/wpt/web-platform-tests/trusted-types/DOMParser-parseFromString-regression.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/DOMParser-parseFromString-regression.tentative.html index 941d1750b4a..941d1750b4a 100644 --- a/tests/wpt/web-platform-tests/trusted-types/DOMParser-parseFromString-regression.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/DOMParser-parseFromString-regression.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/DOMParser-parseFromString.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/DOMParser-parseFromString.tentative.html index 2dfc37686bc..2dfc37686bc 100644 --- a/tests/wpt/web-platform-tests/trusted-types/DOMParser-parseFromString.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/DOMParser-parseFromString.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/DOMWindowTimers-setTimeout-setInterval.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/DOMWindowTimers-setTimeout-setInterval.tentative.html index 2ad47555a92..2ad47555a92 100644 --- a/tests/wpt/web-platform-tests/trusted-types/DOMWindowTimers-setTimeout-setInterval.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/DOMWindowTimers-setTimeout-setInterval.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/Document-write.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/Document-write.tentative.html index 87e9e724699..87e9e724699 100644 --- a/tests/wpt/web-platform-tests/trusted-types/Document-write.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/Document-write.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/Element-insertAdjacentHTML.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/Element-insertAdjacentHTML.tentative.html index 6a9329b3fbf..6a9329b3fbf 100644 --- a/tests/wpt/web-platform-tests/trusted-types/Element-insertAdjacentHTML.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/Element-insertAdjacentHTML.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/Element-insertAdjacentText.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/Element-insertAdjacentText.tentative.html index f6221362c17..f6221362c17 100644 --- a/tests/wpt/web-platform-tests/trusted-types/Element-insertAdjacentText.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/Element-insertAdjacentText.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/Element-outerHTML.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/Element-outerHTML.tentative.html index c8daddfe995..c8daddfe995 100644 --- a/tests/wpt/web-platform-tests/trusted-types/Element-outerHTML.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/Element-outerHTML.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/Element-setAttribute.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/Element-setAttribute.tentative.html index cd6617915bd..cd6617915bd 100644 --- a/tests/wpt/web-platform-tests/trusted-types/Element-setAttribute.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/Element-setAttribute.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/Element-setAttributeNS.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/Element-setAttributeNS.tentative.html index 67e8236febd..67e8236febd 100644 --- a/tests/wpt/web-platform-tests/trusted-types/Element-setAttributeNS.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/Element-setAttributeNS.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/GlobalEventHandlers-onclick.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/GlobalEventHandlers-onclick.tentative.html index 0fdde778cc8..0fdde778cc8 100644 --- a/tests/wpt/web-platform-tests/trusted-types/GlobalEventHandlers-onclick.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/GlobalEventHandlers-onclick.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/HTMLElement-generic.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/HTMLElement-generic.tentative.html index 3ec6cfa60da..3ec6cfa60da 100644 --- a/tests/wpt/web-platform-tests/trusted-types/HTMLElement-generic.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/HTMLElement-generic.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/HTMLScriptElement-internal-slot.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/HTMLScriptElement-internal-slot.tentative.html index 4f523bb4e4e..4f523bb4e4e 100644 --- a/tests/wpt/web-platform-tests/trusted-types/HTMLScriptElement-internal-slot.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/HTMLScriptElement-internal-slot.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/Node-multiple-arguments.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/Node-multiple-arguments.tentative.html index e3e4a2635e9..e3e4a2635e9 100644 --- a/tests/wpt/web-platform-tests/trusted-types/Node-multiple-arguments.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/Node-multiple-arguments.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/Range-createContextualFragment.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/Range-createContextualFragment.tentative.html index 3a880a53778..3a880a53778 100644 --- a/tests/wpt/web-platform-tests/trusted-types/Range-createContextualFragment.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/Range-createContextualFragment.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/TrustedType-AttributeNodes.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/TrustedType-AttributeNodes.tentative.html index 6b006657004..6b006657004 100644 --- a/tests/wpt/web-platform-tests/trusted-types/TrustedType-AttributeNodes.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/TrustedType-AttributeNodes.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicy-CSP-no-name.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicy-CSP-no-name.tentative.html index b1c7f51ddb3..b1c7f51ddb3 100644 --- a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicy-CSP-no-name.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicy-CSP-no-name.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicy-CSP-wildcard.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicy-CSP-wildcard.tentative.html index cdc683dad3b..cdc683dad3b 100644 --- a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicy-CSP-wildcard.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicy-CSP-wildcard.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicy-createXXX.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicy-createXXX.tentative.html index 112d1ae636a..112d1ae636a 100644 --- a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicy-createXXX.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicy-createXXX.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-constants.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-constants.tentative.html index 551084ca4b6..551084ca4b6 100644 --- a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-constants.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-constants.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-createPolicy-createXYZTests.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-createPolicy-createXYZTests.tentative.html index 746d89fa3f8..746d89fa3f8 100644 --- a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-createPolicy-createXYZTests.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-createPolicy-createXYZTests.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-createPolicy-cspTests-noNamesGiven.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-createPolicy-cspTests-noNamesGiven.tentative.html index 15728b9888f..15728b9888f 100644 --- a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-createPolicy-cspTests-noNamesGiven.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-createPolicy-cspTests-noNamesGiven.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-createPolicy-cspTests-wildcard.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-createPolicy-cspTests-wildcard.tentative.html index 9200708545c..9200708545c 100644 --- a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-createPolicy-cspTests-wildcard.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-createPolicy-cspTests-wildcard.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-createPolicy-cspTests.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-createPolicy-cspTests.tentative.html index 3a56546151e..3a56546151e 100644 --- a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-createPolicy-cspTests.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-createPolicy-cspTests.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-createPolicy-nameTests.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-createPolicy-nameTests.tentative.html index 9fdafb2ccf0..9fdafb2ccf0 100644 --- a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-createPolicy-nameTests.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-createPolicy-nameTests.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-createPolicy-unenforced.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-createPolicy-unenforced.tentative.html index 29344482021..29344482021 100644 --- a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-createPolicy-unenforced.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-createPolicy-unenforced.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-defaultPolicy.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-defaultPolicy.tentative.html index 7ac09d8bb96..7ac09d8bb96 100644 --- a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-defaultPolicy.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-defaultPolicy.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-getPropertyType.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-getPropertyType.tentative.html index 861dd8bb7c6..861dd8bb7c6 100644 --- a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-getPropertyType.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-getPropertyType.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-isXXX.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-isXXX.tentative.html index a7df477d00e..a7df477d00e 100644 --- a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-isXXX.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-isXXX.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-metadata.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-metadata.tentative.html index a5fe7864b12..a5fe7864b12 100644 --- a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-metadata.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-metadata.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/Window-TrustedTypes.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/Window-TrustedTypes.tentative.html index 718c763afaf..718c763afaf 100644 --- a/tests/wpt/web-platform-tests/trusted-types/Window-TrustedTypes.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/Window-TrustedTypes.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/WorkerGlobalScope-importScripts.https.html b/tests/wpt/web-platform-tests/trusted-types/WorkerGlobalScope-importScripts.html index 9853b1bc448..9853b1bc448 100644 --- a/tests/wpt/web-platform-tests/trusted-types/WorkerGlobalScope-importScripts.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/WorkerGlobalScope-importScripts.html diff --git a/tests/wpt/web-platform-tests/trusted-types/block-Node-multiple-arguments.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/block-Node-multiple-arguments.tentative.html index e87c8fca238..e87c8fca238 100644 --- a/tests/wpt/web-platform-tests/trusted-types/block-Node-multiple-arguments.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/block-Node-multiple-arguments.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-DOMParser-parseFromString.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-DOMParser-parseFromString.tentative.html index dd912e6b8de..dd912e6b8de 100644 --- a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-DOMParser-parseFromString.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-DOMParser-parseFromString.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-DOMWindowTimers-setTimeout-setInterval.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-DOMWindowTimers-setTimeout-setInterval.tentative.html index f36ae94ea10..f36ae94ea10 100644 --- a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-DOMWindowTimers-setTimeout-setInterval.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-DOMWindowTimers-setTimeout-setInterval.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Document-write.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Document-write.tentative.html index 974203c1133..974203c1133 100644 --- a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Document-write.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Document-write.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-insertAdjacentHTML.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-insertAdjacentHTML.tentative.html index 228887d0423..228887d0423 100644 --- a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-insertAdjacentHTML.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-insertAdjacentHTML.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-outerHTML.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-outerHTML.tentative.html index 9b6cf72cb40..9b6cf72cb40 100644 --- a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-outerHTML.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-outerHTML.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-setAttribute.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-setAttribute.tentative.html index 1d39a804f39..1d39a804f39 100644 --- a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-setAttribute.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-setAttribute.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-setAttributeNS.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-setAttributeNS.tentative.html index 346e077a666..346e077a666 100644 --- a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-setAttributeNS.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-setAttributeNS.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-HTMLElement-generic.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-HTMLElement-generic.tentative.html index 9e780c1ed23..9e780c1ed23 100644 --- a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-HTMLElement-generic.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-HTMLElement-generic.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Range-createContextualFragment.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Range-createContextualFragment.tentative.html index 79111204934..79111204934 100644 --- a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Range-createContextualFragment.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Range-createContextualFragment.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/block-text-node-insertion-into-script-element.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/block-text-node-insertion-into-script-element.tentative.html index 819753652a9..819753652a9 100644 --- a/tests/wpt/web-platform-tests/trusted-types/block-text-node-insertion-into-script-element.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/block-text-node-insertion-into-script-element.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/csp-block-eval.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/csp-block-eval.tentative.html index e3911bf9e6a..e3911bf9e6a 100644 --- a/tests/wpt/web-platform-tests/trusted-types/csp-block-eval.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/csp-block-eval.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/default-policy-callback-arguments.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/default-policy-callback-arguments.tentative.html index 5944b0e92d6..5944b0e92d6 100644 --- a/tests/wpt/web-platform-tests/trusted-types/default-policy-callback-arguments.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/default-policy-callback-arguments.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/default-policy-report-only.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/default-policy-report-only.tentative.html index 1cff751a801..1cff751a801 100644 --- a/tests/wpt/web-platform-tests/trusted-types/default-policy-report-only.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/default-policy-report-only.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/default-policy-report-only.tentative.https.html.headers b/tests/wpt/web-platform-tests/trusted-types/default-policy-report-only.tentative.html.headers index 4c1ff15e167..4c1ff15e167 100644 --- a/tests/wpt/web-platform-tests/trusted-types/default-policy-report-only.tentative.https.html.headers +++ b/tests/wpt/web-platform-tests/trusted-types/default-policy-report-only.tentative.html.headers diff --git a/tests/wpt/web-platform-tests/trusted-types/default-policy.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/default-policy.tentative.html index debde85cdac..debde85cdac 100644 --- a/tests/wpt/web-platform-tests/trusted-types/default-policy.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/default-policy.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/default-policy.tentative.https.html.headers b/tests/wpt/web-platform-tests/trusted-types/default-policy.tentative.html.headers index 604e765da46..604e765da46 100644 --- a/tests/wpt/web-platform-tests/trusted-types/default-policy.tentative.https.html.headers +++ b/tests/wpt/web-platform-tests/trusted-types/default-policy.tentative.html.headers diff --git a/tests/wpt/web-platform-tests/trusted-types/empty-default-policy-report-only.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/empty-default-policy-report-only.tentative.html index 1ba9c5ec18e..1ba9c5ec18e 100644 --- a/tests/wpt/web-platform-tests/trusted-types/empty-default-policy-report-only.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/empty-default-policy-report-only.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/empty-default-policy-report-only.tentative.https.html.headers b/tests/wpt/web-platform-tests/trusted-types/empty-default-policy-report-only.tentative.html.headers index 4c1ff15e167..4c1ff15e167 100644 --- a/tests/wpt/web-platform-tests/trusted-types/empty-default-policy-report-only.tentative.https.html.headers +++ b/tests/wpt/web-platform-tests/trusted-types/empty-default-policy-report-only.tentative.html.headers diff --git a/tests/wpt/web-platform-tests/trusted-types/empty-default-policy.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/empty-default-policy.tentative.html index d31b48ecd5a..d31b48ecd5a 100644 --- a/tests/wpt/web-platform-tests/trusted-types/empty-default-policy.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/empty-default-policy.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/empty-default-policy.tentative.https.html.headers b/tests/wpt/web-platform-tests/trusted-types/empty-default-policy.tentative.html.headers index 604e765da46..604e765da46 100644 --- a/tests/wpt/web-platform-tests/trusted-types/empty-default-policy.tentative.https.html.headers +++ b/tests/wpt/web-platform-tests/trusted-types/empty-default-policy.tentative.html.headers diff --git a/tests/wpt/web-platform-tests/trusted-types/eval-csp-no-tt.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/eval-csp-no-tt.tentative.html index e8ed57708ef..e8ed57708ef 100644 --- a/tests/wpt/web-platform-tests/trusted-types/eval-csp-no-tt.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/eval-csp-no-tt.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/eval-csp-tt-default-policy.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/eval-csp-tt-default-policy.tentative.html index 106a024f2c1..106a024f2c1 100644 --- a/tests/wpt/web-platform-tests/trusted-types/eval-csp-tt-default-policy.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/eval-csp-tt-default-policy.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/eval-csp-tt-no-default-policy.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/eval-csp-tt-no-default-policy.tentative.html index 2f1e2a281b8..2f1e2a281b8 100644 --- a/tests/wpt/web-platform-tests/trusted-types/eval-csp-tt-no-default-policy.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/eval-csp-tt-no-default-policy.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/eval-no-csp-no-tt-default-policy.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/eval-no-csp-no-tt-default-policy.tentative.html index 84c224eac28..84c224eac28 100644 --- a/tests/wpt/web-platform-tests/trusted-types/eval-no-csp-no-tt-default-policy.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/eval-no-csp-no-tt-default-policy.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/eval-no-csp-no-tt.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/eval-no-csp-no-tt.tentative.html index 45086a1d6ab..45086a1d6ab 100644 --- a/tests/wpt/web-platform-tests/trusted-types/eval-no-csp-no-tt.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/eval-no-csp-no-tt.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/eval-with-permissive-csp.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/eval-with-permissive-csp.tentative.html index abc698a46d3..abc698a46d3 100644 --- a/tests/wpt/web-platform-tests/trusted-types/eval-with-permissive-csp.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/eval-with-permissive-csp.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/idlharness.tentative.https.window.js b/tests/wpt/web-platform-tests/trusted-types/idlharness.tentative.window.js index 5a854a12b78..5a854a12b78 100644 --- a/tests/wpt/web-platform-tests/trusted-types/idlharness.tentative.https.window.js +++ b/tests/wpt/web-platform-tests/trusted-types/idlharness.tentative.window.js diff --git a/tests/wpt/web-platform-tests/trusted-types/no-require-trusted-types-for-report-only.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/no-require-trusted-types-for-report-only.tentative.html index 651bf0a7199..651bf0a7199 100644 --- a/tests/wpt/web-platform-tests/trusted-types/no-require-trusted-types-for-report-only.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/no-require-trusted-types-for-report-only.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/no-require-trusted-types-for-report-only.tentative.https.html.headers b/tests/wpt/web-platform-tests/trusted-types/no-require-trusted-types-for-report-only.tentative.html.headers index aa00fcc15a3..aa00fcc15a3 100644 --- a/tests/wpt/web-platform-tests/trusted-types/no-require-trusted-types-for-report-only.tentative.https.html.headers +++ b/tests/wpt/web-platform-tests/trusted-types/no-require-trusted-types-for-report-only.tentative.html.headers diff --git a/tests/wpt/web-platform-tests/trusted-types/no-require-trusted-types-for.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/no-require-trusted-types-for.tentative.html index 651bf0a7199..651bf0a7199 100644 --- a/tests/wpt/web-platform-tests/trusted-types/no-require-trusted-types-for.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/no-require-trusted-types-for.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/nonsecure-require-trusted-types-for.tentative.html b/tests/wpt/web-platform-tests/trusted-types/nonsecure-require-trusted-types-for.tentative.html deleted file mode 100644 index 46dae7a9661..00000000000 --- a/tests/wpt/web-platform-tests/trusted-types/nonsecure-require-trusted-types-for.tentative.html +++ /dev/null @@ -1,24 +0,0 @@ -<!DOCTYPE html> -<head> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <meta http-equiv="Content-Security-Policy" content="require-trusted-types-for 'script'"> -</head> -<body> -<script> - const testCases = [ - ["script", "src"], - ["div", "innerHTML"], - ["script", "text"], - ]; - - testCases.forEach(c => { - const name = `${c[0]}.${c[1]} `; - test(t => { - s = document.createElement(c[0]); - s[c[1]] = "https://example.com/"; - assert_equals("https://example.com/", s[c[1]].toString()); - }, name + "without trusted types is not blocked by require-trusted-types-for on non-secure pages"); - }); -</script> -</body> diff --git a/tests/wpt/web-platform-tests/trusted-types/nonsecure-require-trusted-types-for.tentative.html.headers b/tests/wpt/web-platform-tests/trusted-types/nonsecure-require-trusted-types-for.tentative.html.headers deleted file mode 100644 index af6596b29a8..00000000000 --- a/tests/wpt/web-platform-tests/trusted-types/nonsecure-require-trusted-types-for.tentative.html.headers +++ /dev/null @@ -1 +0,0 @@ -Content-Security-Policy: require-trusted-types-for 'script' diff --git a/tests/wpt/web-platform-tests/trusted-types/require-trusted-types-for-report-only.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/require-trusted-types-for-report-only.tentative.html index 25b4440ef41..25b4440ef41 100644 --- a/tests/wpt/web-platform-tests/trusted-types/require-trusted-types-for-report-only.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/require-trusted-types-for-report-only.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/require-trusted-types-for-report-only.tentative.https.html.headers b/tests/wpt/web-platform-tests/trusted-types/require-trusted-types-for-report-only.tentative.html.headers index c6412f8d472..c6412f8d472 100644 --- a/tests/wpt/web-platform-tests/trusted-types/require-trusted-types-for-report-only.tentative.https.html.headers +++ b/tests/wpt/web-platform-tests/trusted-types/require-trusted-types-for-report-only.tentative.html.headers diff --git a/tests/wpt/web-platform-tests/trusted-types/require-trusted-types-for.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/require-trusted-types-for.tentative.html index 2a3820a89b8..2a3820a89b8 100644 --- a/tests/wpt/web-platform-tests/trusted-types/require-trusted-types-for.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/require-trusted-types-for.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/trusted-types-createHTMLDocument.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/trusted-types-createHTMLDocument.tentative.html index e4af2eb5902..e4af2eb5902 100644 --- a/tests/wpt/web-platform-tests/trusted-types/trusted-types-createHTMLDocument.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/trusted-types-createHTMLDocument.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/trusted-types-duplicate-names-list-report-only.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/trusted-types-duplicate-names-list-report-only.tentative.html index 46ca2edb6fb..46ca2edb6fb 100644 --- a/tests/wpt/web-platform-tests/trusted-types/trusted-types-duplicate-names-list-report-only.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/trusted-types-duplicate-names-list-report-only.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/trusted-types-duplicate-names-list-report-only.tentative.https.html.headers b/tests/wpt/web-platform-tests/trusted-types/trusted-types-duplicate-names-list-report-only.tentative.html.headers index b6608515aa8..b6608515aa8 100644 --- a/tests/wpt/web-platform-tests/trusted-types/trusted-types-duplicate-names-list-report-only.tentative.https.html.headers +++ b/tests/wpt/web-platform-tests/trusted-types/trusted-types-duplicate-names-list-report-only.tentative.html.headers diff --git a/tests/wpt/web-platform-tests/trusted-types/trusted-types-duplicate-names-list.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/trusted-types-duplicate-names-list.tentative.html index afb2f5f7c4b..afb2f5f7c4b 100644 --- a/tests/wpt/web-platform-tests/trusted-types/trusted-types-duplicate-names-list.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/trusted-types-duplicate-names-list.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/trusted-types-duplicate-names.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/trusted-types-duplicate-names.tentative.html index decce535646..decce535646 100644 --- a/tests/wpt/web-platform-tests/trusted-types/trusted-types-duplicate-names.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/trusted-types-duplicate-names.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting-no-unsafe-eval.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting-no-unsafe-eval.tentative.html index 081f9becbd0..081f9becbd0 100644 --- a/tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting-no-unsafe-eval.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting-no-unsafe-eval.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting-no-unsafe-eval.tentative.https.html.headers b/tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting-no-unsafe-eval.tentative.html.headers index e4147bd2e37..e4147bd2e37 100644 --- a/tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting-no-unsafe-eval.tentative.https.html.headers +++ b/tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting-no-unsafe-eval.tentative.html.headers diff --git a/tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting-report-only.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting-report-only.tentative.html index 3fd1c9ffa8d..3fd1c9ffa8d 100644 --- a/tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting-report-only.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting-report-only.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting-report-only.tentative.https.html.headers b/tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting-report-only.tentative.html.headers index b5e94c400bb..b5e94c400bb 100644 --- a/tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting-report-only.tentative.https.html.headers +++ b/tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting-report-only.tentative.html.headers diff --git a/tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting.tentative.html index 9621aaba974..9621aaba974 100644 --- a/tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting.tentative.https.html.headers b/tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting.tentative.html.headers index 3f55bba7d1b..3f55bba7d1b 100644 --- a/tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting.tentative.https.html.headers +++ b/tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting.tentative.html.headers diff --git a/tests/wpt/web-platform-tests/trusted-types/trusted-types-navigation.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/trusted-types-navigation.tentative.html index 4e784611dd6..4e784611dd6 100644 --- a/tests/wpt/web-platform-tests/trusted-types/trusted-types-navigation.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/trusted-types-navigation.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/trusted-types-report-only.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/trusted-types-report-only.tentative.html index fcb77841163..fcb77841163 100644 --- a/tests/wpt/web-platform-tests/trusted-types/trusted-types-report-only.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/trusted-types-report-only.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/trusted-types-report-only.tentative.https.html.headers b/tests/wpt/web-platform-tests/trusted-types/trusted-types-report-only.tentative.html.headers index 857a8b31e86..857a8b31e86 100644 --- a/tests/wpt/web-platform-tests/trusted-types/trusted-types-report-only.tentative.https.html.headers +++ b/tests/wpt/web-platform-tests/trusted-types/trusted-types-report-only.tentative.html.headers diff --git a/tests/wpt/web-platform-tests/trusted-types/trusted-types-reporting-check-report.https.html b/tests/wpt/web-platform-tests/trusted-types/trusted-types-reporting-check-report.html index fc98f5cbc58..fc98f5cbc58 100644 --- a/tests/wpt/web-platform-tests/trusted-types/trusted-types-reporting-check-report.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/trusted-types-reporting-check-report.html diff --git a/tests/wpt/web-platform-tests/trusted-types/trusted-types-reporting-check-report.https.html.sub.headers b/tests/wpt/web-platform-tests/trusted-types/trusted-types-reporting-check-report.html.sub.headers index 5830239f5ca..5830239f5ca 100644 --- a/tests/wpt/web-platform-tests/trusted-types/trusted-types-reporting-check-report.https.html.sub.headers +++ b/tests/wpt/web-platform-tests/trusted-types/trusted-types-reporting-check-report.html.sub.headers diff --git a/tests/wpt/web-platform-tests/trusted-types/trusted-types-reporting.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/trusted-types-reporting.tentative.html index 5003fc7fad5..5003fc7fad5 100644 --- a/tests/wpt/web-platform-tests/trusted-types/trusted-types-reporting.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/trusted-types-reporting.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/trusted-types-reporting.tentative.https.html.headers b/tests/wpt/web-platform-tests/trusted-types/trusted-types-reporting.tentative.html.headers index fa8aceab74b..fa8aceab74b 100644 --- a/tests/wpt/web-platform-tests/trusted-types/trusted-types-reporting.tentative.https.html.headers +++ b/tests/wpt/web-platform-tests/trusted-types/trusted-types-reporting.tentative.html.headers diff --git a/tests/wpt/web-platform-tests/trusted-types/trusted-types-svg-script.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/trusted-types-svg-script.tentative.html index 330efc0c0ac..330efc0c0ac 100644 --- a/tests/wpt/web-platform-tests/trusted-types/trusted-types-svg-script.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/trusted-types-svg-script.tentative.html diff --git a/tests/wpt/web-platform-tests/trusted-types/tt-block-eval.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/tt-block-eval.tentative.html index 13178bd44bf..13178bd44bf 100644 --- a/tests/wpt/web-platform-tests/trusted-types/tt-block-eval.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/tt-block-eval.tentative.html diff --git a/tests/wpt/web-platform-tests/visual-viewport/idlharness.window.js b/tests/wpt/web-platform-tests/visual-viewport/idlharness.window.js index f0b5aeb173a..8a41f8d6b87 100644 --- a/tests/wpt/web-platform-tests/visual-viewport/idlharness.window.js +++ b/tests/wpt/web-platform-tests/visual-viewport/idlharness.window.js @@ -1,5 +1,6 @@ // META: script=/resources/WebIDLParser.js // META: script=/resources/idlharness.js +// META: timeout=long 'use strict'; diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/k-rate-audioworklet-connections.https.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/k-rate-audioworklet-connections.https.html new file mode 100644 index 00000000000..4d2eb40d552 --- /dev/null +++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/k-rate-audioworklet-connections.https.html @@ -0,0 +1,77 @@ +<!doctype html> +<html> + <head> + <title>Test k-rate AudioParams with inputs for AudioWorkletNode</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/webaudio/resources/audit-util.js"></script> + <script src="/webaudio/resources/audit.js"></script> + </head> + + <body> + <script> + const audit = Audit.createTaskRunner(); + + // Use the worklet gain node to test k-rate parameters. + const filePath = + '../the-audioworklet-interface/processors/gain-processor.js'; + + // Context for testing + let context; + + audit.define('Create Test Worklet', (task, should) => { + // Arbitrary sample rate and duration. + const sampleRate = 8000; + + // Only new a few render quanta to verify things are working. + const testDuration = 4 * 128 / sampleRate; + + context = new OfflineAudioContext({ + numberOfChannels: 3, + sampleRate: sampleRate, + length: testDuration * sampleRate + }); + + should( + context.audioWorklet.addModule(filePath), + 'Construction of AudioWorklet') + .beResolved() + .then(() => task.done()); + }); + + audit.define('AudioWorklet k-rate AudioParam', async (task, should) => { + let src = new ConstantSourceNode(context); + let kRateNode = new AudioWorkletNode(context, 'gain'); + src.connect(kRateNode).connect(context.destination); + + let kRateParam = kRateNode.parameters.get('gain'); + kRateParam.automationRate = 'k-rate'; + kRateParam.value = 0; + + let mod = new ConstantSourceNode(context); + mod.offset.setValueAtTime(0, 0); + mod.offset.linearRampToValueAtTime( + 10, context.length / context.sampleRate); + mod.connect(kRateParam); + + mod.start(); + src.start(); + + const audioBuffer = await context.startRendering(); + let output = audioBuffer.getChannelData(0); + + // Verify that the output isn't constantly zero. + should(output, 'output').notBeConstantValueOf(0); + // Verify that the output from the worklet is step-wise + // constant. + for (let k = 0; k < output.length; k += 128) { + should(output.slice(k, k + 128), ` k-rate output [${k}: ${k + 127}]`) + .beConstantValueOf(output[k]); + } + task.done(); + }); + + audit.run(); + </script> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-helper.js b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-helper.js index 25d126f9a9b..29145c8b927 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-helper.js +++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-helper.js @@ -594,7 +594,8 @@ const trackFactories = { ctx.fillStyle = `rgb(${count%255}, ${count*count%255}, ${count%255})`; count += 1; ctx.fillRect(0, 0, width, height); - // If signal is set, add a constant-color box to the video frame. + // If signal is set, add a constant-color box to the video frame + // at coordinates 10 to 30 in both X and Y direction. if (signal !== null) { ctx.fillStyle = `rgb(${signal}, ${signal}, ${signal})`; ctx.fillRect(10, 10, 20, 20); @@ -623,7 +624,9 @@ function getVideoSignal(v) { context.drawImage(v, 0, 0, v.videoWidth, v.videoHeight); // Extract pixel value at position 20, 20 let pixel = context.getImageData(20, 20, 1, 1); - return (pixel.data[0] + pixel.data[1] + pixel.data[2]) / 3; + // Use luma reconstruction to get back original value according to + // ITU-R rec BT.709 + return (pixel.data[0] * 0.21 + pixel.data[1] * 0.72 + pixel.data[2] * 0.07); } function detectSignal(t, v, value) { @@ -633,6 +636,8 @@ function detectSignal(t, v, value) { if (signal !== null && signal < value + 1 && signal > value - 1) { resolve(); } else { + // We would like to wait for each new frame instead here, + // but there seems to be no such callback. t.step_timeout(check, 100); } } diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-videoDetectorTest.html b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-videoDetectorTest.html new file mode 100644 index 00000000000..c9d0f24b12b --- /dev/null +++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-videoDetectorTest.html @@ -0,0 +1,84 @@ +<!doctype html> +<meta charset=utf-8> +<meta name="timeout" content="long"> +<title>RTCPeerConnection Video detector test</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="RTCPeerConnection-helper.js"></script> +<script> +'use strict'; + +// This test verifies that the helper function "detectSignal" from +// RTCPeerConnectionHelper, which is used to detect changes in a video +// signal, performs properly for a range of "signal" values. + +// If it fails, it indicates that the video codec used in this particular +// browser at this time doesn't reproduce the luma signal reliably enough +// for this particular application, which may lead to other tests that +// use the "detectSignal" helper failing without an obvious cause. + +// The most likely failure is timeout - which will happen if the +// luma value detected doesn't settle within the margin of error before +// the test times out. + +async function signalSettlementTime(t, v, sender, signal, backgroundTrack) { + const detectionStream = await getNoiseStream({video: {signal: signal}}); + const [detectionTrack] = detectionStream.getTracks(); + await sender.replaceTrack(detectionTrack); + const framesBefore = v.getVideoPlaybackQuality().totalVideoFrames; + await detectSignal(t, v, signal); + const framesAfter = v.getVideoPlaybackQuality().totalVideoFrames; + await sender.replaceTrack(backgroundTrack); + await detectSignal(t, v, 100); + detectionStream.getTracks().forEach(track => track.stop()); + return (framesAfter - framesBefore); +} + +promise_test(async t => { + const v = document.createElement('video'); + v.autoplay = true; + const pc1 = new RTCPeerConnection(); + t.add_cleanup(() => pc1.close()); + const pc2 = new RTCPeerConnection(); + t.add_cleanup(() => pc2.close()); + const stream1 = await getNoiseStream({video: {signal: 100}}); + t.add_cleanup(() => stream1.getTracks().forEach(track => track.stop())); + const [track1] = stream1.getTracks(); + const sender = pc1.addTrack(track1); + pc2.ontrack = t.step_func((e) => { + v.srcObject = new MediaStream([e.track]); + }); + const metadataToBeLoaded = new Promise((resolve) => { + v.addEventListener('loadedmetadata', resolve); + }); + exchangeIceCandidates(pc1, pc2); + doSignalingHandshake(pc1, pc2); + await metadataToBeLoaded; + // The basic signal is a track with signal 100. We replace this + // with tracks with signal from 0 to 255 and see if they are all + // reliably detected. + await detectSignal(t, v, 100); + // A few buffered frames are received with the old content, and a few + // frames may not have settled on exactly the right value. In testing, + // this test passes with maxFrames = 3; give a little more margin. + const maxFrames = 7; + // Test values 0 and 255 + let maxCount = await signalSettlementTime(t, v, sender, 0, track1); + assert_less_than(maxCount, maxFrames, + 'Should get the black value within ' + maxFrames + ' frames'); + maxCount = Math.max( + await signalSettlementTime(t, v, sender, 255, track1), maxCount); + assert_less_than(maxCount, maxFrames, + 'Should get the white value within ' + maxFrames + ' frames'); + // Test a set of other values - far enough apart to make the test fast. + for (let signal = 2; signal <= 255; signal += 47) { + if (Math.abs(signal - 100) > 10) { + const count = await signalSettlementTime(t, v, sender, signal, track1); + maxCount = Math.max(count, maxCount); + assert_less_than(maxCount, 10, + 'Should get value ' + signal + ' within ' + maxFrames + ' frames'); + } + } + assert_less_than(maxCount, 10, 'Should get the right value within 10 frames'); +}, 'Signal detector detects track change within reasonable time'); +</script> diff --git a/tests/wpt/web-platform-tests/webtransport/quic/client-indication.any.js b/tests/wpt/web-platform-tests/webtransport/quic/client-indication.any.js new file mode 100644 index 00000000000..15baa5f8542 --- /dev/null +++ b/tests/wpt/web-platform-tests/webtransport/quic/client-indication.any.js @@ -0,0 +1,32 @@ +// META: quic=true +// META: script=/common/get-host-info.sub.js + +const PORT = 8983; +const {ORIGINAL_HOST: HOST, ORIGIN} = get_host_info(); +const BASE = `quic-transport://${HOST}:${PORT}`; + +promise_test(async (test) => { + function onClosed() { + assert_unreached('The closed promise should be ' + + 'fulfilled or rejected after getting a PASS signal.'); + } + const qt = new QuicTransport( + `${BASE}/client-indication.quic.py?origin=${ORIGIN}`); + qt.closed.then(test.step_func(onClosed), test.step_func(onClosed)); + + const streams = qt.receiveStreams(); + const {done, value} = await streams.getReader().read(); + assert_false(done, 'getting an incoming stream'); + + const readable = value.readable.pipeThrough(new TextDecoderStream()); + const reader = readable.getReader(); + let result = ''; + while (true) { + const {done, value} = await reader.read(); + if (done) { + break; + } + result += value; + } + assert_equals(result, 'PASS'); +}, 'Client indication'); diff --git a/tests/wpt/web-platform-tests/webtransport/quic/handlers/README.md b/tests/wpt/web-platform-tests/webtransport/quic/handlers/README.md new file mode 100644 index 00000000000..22073e783a2 --- /dev/null +++ b/tests/wpt/web-platform-tests/webtransport/quic/handlers/README.md @@ -0,0 +1,2 @@ +This directory contains custom handlers for testing QuicTransport. Please see +https://github.com/web-platform-tests/wpt/tools/quic.
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/webtransport/quic/handlers/client-indication.quic.py b/tests/wpt/web-platform-tests/webtransport/quic/handlers/client-indication.quic.py new file mode 100644 index 00000000000..da0701cc04b --- /dev/null +++ b/tests/wpt/web-platform-tests/webtransport/quic/handlers/client-indication.quic.py @@ -0,0 +1,28 @@ +import asyncio +import logging + +from aioquic.asyncio import QuicConnectionProtocol +from aioquic.quic.events import QuicEvent +from typing import Dict + + +async def notify_pass(connection: QuicConnectionProtocol): + _, writer = await connection.create_stream(is_unidirectional=True) + writer.write(b'PASS') + writer.write_eof() + + +def handle_client_indication(connection: QuicConnectionProtocol, + origin: str, query: Dict[str, str]): + logging.log(logging.INFO, 'origin = %s, query = %s' % (origin, query)) + if 'origin' not in query or query['origin'] != origin: + logging.log(logging.WARN, 'Client indication failure: invalid origin') + connection.close() + return + + loop = asyncio.get_event_loop() + loop.create_task(notify_pass(connection)) + + +def handle_event(connection: QuicConnectionProtocol, event: QuicEvent) -> None: + pass |