diff options
author | WPT Sync Bot <josh+wptsync@joshmatthews.net> | 2020-08-06 08:21:26 +0000 |
---|---|---|
committer | WPT Sync Bot <josh+wptsync@joshmatthews.net> | 2020-08-06 10:31:21 +0000 |
commit | 92d17be4fe755195d2019bb22ad5387e88a35bef (patch) | |
tree | 803192cebd57b543fdc40ae101e74cb646dd3f60 | |
parent | 39c3f46375f2baf33c46d92ab5c110766330a6d8 (diff) | |
download | servo-92d17be4fe755195d2019bb22ad5387e88a35bef.tar.gz servo-92d17be4fe755195d2019bb22ad5387e88a35bef.zip |
Update web-platform-tests to revision 5fe9625d7445a6b88640f830d90dd5489c4bda05
104 files changed, 2429 insertions, 236 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 new file mode 100644 index 00000000000..f64b45fea6b --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-002.html.ini @@ -0,0 +1,4 @@ +[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 deleted file mode 100644 index baa9f1a7541..00000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-005.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[hit-test-floats-005.html] - [Miss clipped float] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/CaretPosition-001.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/CaretPosition-001.html.ini deleted file mode 100644 index 4c79907309b..00000000000 --- a/tests/wpt/metadata-layout-2020/css/cssom-view/CaretPosition-001.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[CaretPosition-001.html] - [Element at (400, 100)] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini b/tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini index 7679f3378c0..1cdc62e8ec0 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 @@ -315,18 +315,18 @@ [<iframe>: separate response Content-Type: text/plain */*;charset=gbk] expected: FAIL - [<iframe>: combined response Content-Type: text/html;" text/plain] - expected: FAIL - [<iframe>: separate response Content-Type: text/html;" text/plain] expected: FAIL [<iframe>: separate response Content-Type: text/html */*;charset=gbk] expected: FAIL - [<iframe>: combined response Content-Type: text/html */*;charset=gbk] + [<iframe>: combined response Content-Type: text/plain;charset=gbk text/html] + expected: FAIL + + [<iframe>: combined response Content-Type: text/html;" \\" text/plain] expected: FAIL - [<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html] + [<iframe>: separate response Content-Type: text/html;" \\" text/plain] 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 0b85801e9d9..279734168dc 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,6 +53,9 @@ [combined text/javascript ] expected: FAIL - [separate text/javascript; charset=windows-1252 text/javascript] + [separate text/javascript x/x] + expected: FAIL + + [separate text/javascript;charset=windows-1252 text/javascript] expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/fetch/cross-origin-resource-policy/image-loads.html.ini b/tests/wpt/metadata-layout-2020/fetch/cross-origin-resource-policy/image-loads.html.ini new file mode 100644 index 00000000000..7d26a22aeb9 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/fetch/cross-origin-resource-policy/image-loads.html.ini @@ -0,0 +1,2 @@ +[image-loads.html] + expected: TIMEOUT diff --git a/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini b/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini deleted file mode 100644 index dc2e45516de..00000000000 --- a/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[traverse_the_history_5.html] - [Multiple history traversals, last would be aborted] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/html/interaction/focus/the-autofocus-attribute/skip-another-top-level-browsing-context.html.ini b/tests/wpt/metadata-layout-2020/html/interaction/focus/the-autofocus-attribute/skip-another-top-level-browsing-context.html.ini deleted file mode 100644 index 5105aa291b2..00000000000 --- a/tests/wpt/metadata-layout-2020/html/interaction/focus/the-autofocus-attribute/skip-another-top-level-browsing-context.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[skip-another-top-level-browsing-context.html] - expected: TIMEOUT - [Autofocus elements queued in another top-level browsing context's documents should be skipped.] - expected: TIMEOUT - diff --git a/tests/wpt/metadata-layout-2020/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini b/tests/wpt/metadata-layout-2020/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini index c9d963b55d2..f45aaafe1c5 100644 --- a/tests/wpt/metadata-layout-2020/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini +++ b/tests/wpt/metadata-layout-2020/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini @@ -1,20 +1,16 @@ [supported-elements.html] - expected: TIMEOUT [Contenteditable element should support autofocus] expected: FAIL [Host element with delegatesFocus including no focusable descendants should be skipped] - expected: NOTRUN + expected: FAIL [Element with tabindex should support autofocus] expected: FAIL [Area element should support autofocus] - expected: NOTRUN + expected: FAIL [Host element with delegatesFocus should support autofocus] - expected: NOTRUN - - [Non-HTMLElement should not support autofocus] - expected: TIMEOUT + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-flexbox.html.ini b/tests/wpt/metadata-layout-2020/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-flexbox.html.ini new file mode 100644 index 00000000000..ac9b670991a --- /dev/null +++ b/tests/wpt/metadata-layout-2020/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-flexbox.html.ini @@ -0,0 +1,2 @@ +[fieldset-flexbox.html] + expected: CRASH diff --git a/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/image-maps/image-map-processing-model/hash-name-reference.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/image-maps/image-map-processing-model/hash-name-reference.html.ini index 09ae27d7480..5c3ac06f42a 100644 --- a/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/image-maps/image-map-processing-model/hash-name-reference.html.ini +++ b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/image-maps/image-map-processing-model/hash-name-reference.html.ini @@ -171,6 +171,3 @@ [XHTML img usemap="#hash-id"] expected: FAIL - [HTML (standards) IMG usemap="no-hash-name"] - expected: FAIL - 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 338d283eb0e..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,4 +1,5 @@ [iframe_sandbox_popups_escaping-3.html] + expected: TIMEOUT [Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used] - expected: FAIL + expected: TIMEOUT diff --git a/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini index 3080be9afc0..d913fcbb129 100644 --- a/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini +++ b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini @@ -1,5 +1,5 @@ [iframe_sandbox_popups_nonescaping-1.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-2.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini index 0218bc9ba9d..c792a071c3b 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,4 +1,5 @@ [iframe_sandbox_popups_nonescaping-2.html] + expected: CRASH [Check that popups from a sandboxed iframe do not escape the sandbox] expected: FAIL 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 7a36937927c..f4f994c5d6f 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,4 +1,5 @@ [iframe_sandbox_popups_nonescaping-3.html] + expected: TIMEOUT [Check that popups from a sandboxed iframe do not escape the sandbox] - expected: FAIL + expected: NOTRUN diff --git a/tests/wpt/metadata-layout-2020/html/semantics/forms/form-submission-0/form-double-submit-3.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/forms/form-submission-0/form-double-submit-3.html.ini new file mode 100644 index 00000000000..9f416703229 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/html/semantics/forms/form-submission-0/form-double-submit-3.html.ini @@ -0,0 +1,4 @@ +[form-double-submit-3.html] + [<button> should have the same double-submit protection as <input type=submit>] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/html/semantics/forms/form-submission-0/form-double-submit.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/forms/form-submission-0/form-double-submit.html.ini deleted file mode 100644 index b193c33c2b6..00000000000 --- a/tests/wpt/metadata-layout-2020/html/semantics/forms/form-submission-0/form-double-submit.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[form-double-submit.html] - [default submit action should supersede onclick submit()] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/html/webappapis/dynamic-markup-insertion/document-write/iframe_005.html.ini b/tests/wpt/metadata-layout-2020/html/webappapis/dynamic-markup-insertion/document-write/iframe_005.html.ini new file mode 100644 index 00000000000..6cf9d13975c --- /dev/null +++ b/tests/wpt/metadata-layout-2020/html/webappapis/dynamic-markup-insertion/document-write/iframe_005.html.ini @@ -0,0 +1,4 @@ +[iframe_005.html] + [document.write external script into iframe write back into parent] + 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 5ddb9bfeff6..a1effd5f801 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,10 +1,9 @@ [promise-job-entry.html] - expected: TIMEOUT [Fulfillment handler on fulfilled promise] expected: FAIL [Rejection handler on pending-then-rejected promise] - expected: TIMEOUT + expected: FAIL [Sanity check: this all works as expected with no promises involved] expected: FAIL @@ -16,5 +15,5 @@ expected: FAIL [Fulfillment handler on pending-then-fulfilled promise] - expected: TIMEOUT + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/streams/readable-streams/tee.any.js.ini b/tests/wpt/metadata-layout-2020/streams/readable-streams/tee.any.js.ini new file mode 100644 index 00000000000..d7c055f3b60 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/streams/readable-streams/tee.any.js.ini @@ -0,0 +1,59 @@ +[tee.any.sharedworker.html] + expected: ERROR + +[tee.any.worker.html] + expected: TIMEOUT + [ReadableStreamTee should not pull more chunks than can fit in the branch queue] + expected: NOTRUN + + [ReadableStream teeing: canceling branch1 should finish when branch2 reads until end of stream] + expected: TIMEOUT + + [ReadableStream teeing: canceling branch1 should finish when original stream errors] + expected: NOTRUN + + [ReadableStreamTee should only pull enough to fill the emptiest queue] + expected: NOTRUN + + [ReadableStreamTee stops pulling when original stream errors while both branches are reading] + expected: NOTRUN + + [ReadableStreamTee stops pulling when original stream errors while branch 1 is reading] + expected: NOTRUN + + [ReadableStreamTee stops pulling when original stream errors while branch 2 is reading] + expected: NOTRUN + + [ReadableStreamTee should not pull when original is already errored] + expected: NOTRUN + + +[tee.any.serviceworker.html] + expected: ERROR + +[tee.any.html] + expected: TIMEOUT + [ReadableStreamTee should not pull more chunks than can fit in the branch queue] + expected: NOTRUN + + [ReadableStream teeing: canceling branch1 should finish when branch2 reads until end of stream] + expected: TIMEOUT + + [ReadableStream teeing: canceling branch1 should finish when original stream errors] + expected: NOTRUN + + [ReadableStreamTee should only pull enough to fill the emptiest queue] + expected: NOTRUN + + [ReadableStreamTee stops pulling when original stream errors while both branches are reading] + expected: NOTRUN + + [ReadableStreamTee stops pulling when original stream errors while branch 1 is reading] + expected: NOTRUN + + [ReadableStreamTee stops pulling when original stream errors while branch 2 is reading] + expected: NOTRUN + + [ReadableStreamTee should not pull when original is already errored] + expected: NOTRUN + diff --git a/tests/wpt/metadata-layout-2020/webmessaging/with-ports/018.html.ini b/tests/wpt/metadata-layout-2020/webmessaging/with-ports/018.html.ini deleted file mode 100644 index 663a1f8fa30..00000000000 --- a/tests/wpt/metadata-layout-2020/webmessaging/with-ports/018.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[018.html] - expected: TIMEOUT - [origin of the script that invoked the method, javascript:] - expected: TIMEOUT - 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 new file mode 100644 index 00000000000..064cf47545b --- /dev/null +++ b/tests/wpt/metadata-layout-2020/webmessaging/without-ports/017.html.ini @@ -0,0 +1,5 @@ +[017.html] + expected: TIMEOUT + [origin of the script that invoked the method, about:blank] + expected: TIMEOUT + diff --git a/tests/wpt/metadata-layout-2020/workers/constructors/Worker/Worker-constructor.html.ini b/tests/wpt/metadata-layout-2020/workers/constructors/Worker/Worker-constructor.html.ini deleted file mode 100644 index 80f9a4f15b8..00000000000 --- a/tests/wpt/metadata-layout-2020/workers/constructors/Worker/Worker-constructor.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[Worker-constructor.html] - expected: ERROR diff --git a/tests/wpt/metadata-layout-2020/workers/interfaces/WorkerGlobalScope/onerror/exception-in-onerror.html.ini b/tests/wpt/metadata-layout-2020/workers/interfaces/WorkerGlobalScope/onerror/exception-in-onerror.html.ini new file mode 100644 index 00000000000..ae39ac39151 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/workers/interfaces/WorkerGlobalScope/onerror/exception-in-onerror.html.ini @@ -0,0 +1,49 @@ +[exception-in-onerror.html] + [Throw in setTimeout(string): classic: listener] + expected: FAIL + + [Throw in setTimeout(function): module: listener] + expected: FAIL + + [Throw in worker initialization: classic: handler] + expected: FAIL + + [Throw in message handler: classic: listener] + expected: FAIL + + [Throw in setTimeout(function): classic: handler] + expected: FAIL + + [Throw in message handler: module: handler] + expected: FAIL + + [Throw in setTimeout(function): module: handler] + expected: FAIL + + [Throw in worker initialization: module: handler] + expected: FAIL + + [Throw in setTimeout(string): module: listener] + expected: FAIL + + [Throw in message handler: classic: handler] + expected: FAIL + + [Throw in worker initialization: classic: listener] + expected: FAIL + + [Throw in message handler: module: listener] + expected: FAIL + + [Throw in setTimeout(string): module: handler] + expected: FAIL + + [Throw in setTimeout(function): classic: listener] + expected: FAIL + + [Throw in worker initialization: module: listener] + expected: FAIL + + [Throw in setTimeout(string): classic: handler] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/workers/shared-worker-in-data-url-context.window.js.ini b/tests/wpt/metadata-layout-2020/workers/shared-worker-in-data-url-context.window.js.ini index daa7a8c41bc..10dda3a6659 100644 --- a/tests/wpt/metadata-layout-2020/workers/shared-worker-in-data-url-context.window.js.ini +++ b/tests/wpt/metadata-layout-2020/workers/shared-worker-in-data-url-context.window.js.ini @@ -1,8 +1,7 @@ [shared-worker-in-data-url-context.window.html] - expected: TIMEOUT [Create a shared worker in a data url frame] expected: FAIL [Create a data url shared worker in a data url frame] - expected: TIMEOUT + expected: FAIL diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index 5535e6d22db..91cd2041cf0 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -144109,6 +144109,136 @@ {} ] ], + "grid-item-no-aspect-ratio-stretch-1.html": [ + "1b5ae0a6ad80610515ed53f5ea34e812fe040d27", + [ + null, + [ + [ + "/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-1-ref.html", + "==" + ] + ], + {} + ] + ], + "grid-item-no-aspect-ratio-stretch-10.html": [ + "6d8d7e848c24d6da176334b56f6b8af03341d374", + [ + null, + [ + [ + "/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-8-ref.html", + "==" + ] + ], + {} + ] + ], + "grid-item-no-aspect-ratio-stretch-2.html": [ + "5371e560a5f80eae466485ccd89486c33d741190", + [ + null, + [ + [ + "/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-2-ref.html", + "==" + ] + ], + {} + ] + ], + "grid-item-no-aspect-ratio-stretch-3.html": [ + "e2b05bd21664eaa61e4ec3a2abb74f431c8fdc1c", + [ + null, + [ + [ + "/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-3-ref.html", + "==" + ] + ], + {} + ] + ], + "grid-item-no-aspect-ratio-stretch-4.html": [ + "1cf2849dad3d067b7d097ab76a775e213e836d10", + [ + null, + [ + [ + "/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-4-ref.html", + "==" + ] + ], + {} + ] + ], + "grid-item-no-aspect-ratio-stretch-5.html": [ + "3000e9d97a1002b41753ca651a0313e090f42bf8", + [ + null, + [ + [ + "/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-5-ref.html", + "==" + ] + ], + {} + ] + ], + "grid-item-no-aspect-ratio-stretch-6.html": [ + "655040eb446497916470875c7312bfa81d343148", + [ + null, + [ + [ + "/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-6-ref.html", + "==" + ] + ], + {} + ] + ], + "grid-item-no-aspect-ratio-stretch-7.html": [ + "29dec490b79ac5ee7c21af8013c0917b0642221b", + [ + null, + [ + [ + "/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-7-ref.html", + "==" + ] + ], + {} + ] + ], + "grid-item-no-aspect-ratio-stretch-8.html": [ + "933ddd0504efe9a3202d3ded7f661b5cacd1a2c4", + [ + null, + [ + [ + "/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-8-ref.html", + "==" + ] + ], + {} + ] + ], + "grid-item-no-aspect-ratio-stretch-9.html": [ + "367adae9eb74d5975170ec94893ae84ad1046f0d", + [ + null, + [ + [ + "/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-8-ref.html", + "==" + ] + ], + {} + ] + ], "grid-item-self-baseline-001.html": [ "ccc50c764975906b59f54aa1205a4513149e85f2", [ @@ -159992,6 +160122,19 @@ {} ] ], + "paint-function-this-value.https.html": [ + "216913899a931e8144d8a647eccb8ba01037f737", + [ + null, + [ + [ + "/css/css-paint-api/parse-input-arguments-ref.html", + "==" + ] + ], + {} + ] + ], "paint2d-composite.https.html": [ "d654ba49aad6048f88e6ddb6750554dc22b860fb", [ @@ -270699,12 +270842,8 @@ "6d1eedb1fcbfda2bf27f74af1b34763adc62d599", [] ], - "not-embeddable-frame.html": [ - "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391", - [] - ], - "not-embeddable-frame.html.sub.headers": [ - "beecdb765cd02cc6f15700d773e66e8844b941da", + "not-embeddable-frame.py": [ + "50f9c83cf5c2343535f36348459ab8144dbe8cd7", [] ], "redirect-throw-function.sub.py": [ @@ -302477,6 +302616,38 @@ "d167a5f1542b5a71b51ce06b806a2f9425d7f6ab", [] ], + "grid-item-no-aspect-ratio-stretch-1-ref.html": [ + "6a7862c9acb626a72fda6138fdabd05a37e865ac", + [] + ], + "grid-item-no-aspect-ratio-stretch-2-ref.html": [ + "69d59e85a3c7134064f516d9e1a32ccb00dc1960", + [] + ], + "grid-item-no-aspect-ratio-stretch-3-ref.html": [ + "7ee8a2d6bdccc5f50b9f1444cb92a23febe9f81d", + [] + ], + "grid-item-no-aspect-ratio-stretch-4-ref.html": [ + "9edb8aa76f8fd40302a8dcac27db19b51f2c56b0", + [] + ], + "grid-item-no-aspect-ratio-stretch-5-ref.html": [ + "6a3446534a1a5e42952f521c9b1634284c4e594b", + [] + ], + "grid-item-no-aspect-ratio-stretch-6-ref.html": [ + "33f472e71b853651285ff7248226ed4be6c1a603", + [] + ], + "grid-item-no-aspect-ratio-stretch-7-ref.html": [ + "0d60375f560f3a2d379bd90eac4a062e0a7f420a", + [] + ], + "grid-item-no-aspect-ratio-stretch-8-ref.html": [ + "09dd27321ab5790927104ccadb4d002dba4f67a7", + [] + ], "grid-item-self-baseline-001-ref.html": [ "6eadf9a02a55822a54fa44715d80bece93997b0f", [] @@ -322761,7 +322932,7 @@ [] ], "index.md": [ - "90a67c21fce2d1546544c0540d3158fd5bf16a26", + "c1d2fe17a31508d65a9b46da5bb93b3329648ad9", [] ], "lint-tool.md": [ @@ -322831,7 +323002,7 @@ [] ], "testharness.md": [ - "1e9772a401796da1a9a15f1fea9958843c64dc7e", + "1037eaca03c702383c0b9caab07fa98cdec4b4c0", [] ], "tools.md": [ @@ -330371,7 +330542,7 @@ [] ], "dispatcher.py": [ - "2617361b0b369bd9efd3aedd42a88f8f46906fe3", + "e77583e479f9506b3f6a5b53293ae25dc3cae8f1", [] ], "executor.html": [ @@ -350648,7 +350819,7 @@ [] ], "github_checks_output.py": [ - "d799be911660f566701be5ebc3b90caf117075e2", + "16d399002984e0b9daf8a0239b49bedbea50914b", [] ], "sink_task.py": [ @@ -351253,7 +351424,7 @@ [] ], "commands.json": [ - "a5457b55a3308d47fac178aedd6282d93b36120f", + "ed1d72e60ec33c3b550308bc55eacbf96e0be4c4", [] ], "serve.py": [ @@ -351261,7 +351432,7 @@ [] ], "test_functional.py": [ - "894479d111c90dad925c683cb0e93ac13fc68619", + "5a918c2ee473e55886dfc70878d3df17b728e6f1", [] ], "test_serve.py": [ @@ -357049,7 +357220,7 @@ [] ], "commands.json": [ - "a47ab40d72847d5f536e0ac2e02eb3fe0fea233a", + "51f66d0decb09d7a17493ca72a5f13f829d04f3b", [] ], "create.py": [ @@ -357118,7 +357289,7 @@ [] ], "test_wpt.py": [ - "b5ae79d13112bec1a4f264686338204ba3d62abc", + "0b6aff42d57d7dc8bb4ba936c86b913f58cba791", [] ] }, @@ -357139,7 +357310,7 @@ [] ], "wpt.py": [ - "395db0394da67caa8bdc1ad9e689e583175192b0", + "efa985c7cc1740eb0fd6e5a80f9e89e24cf75d37", [] ] }, @@ -358137,7 +358308,7 @@ [] ], "test_stash.py": [ - "1c4c9ad933a37746623a0195f553ad8cfe70688f", + "0b960c1e9f8609dcbd82dbb333434fe0d2700185", [] ] }, @@ -363523,7 +363694,7 @@ }, "onerror": { "exception-in-onerror.js": [ - "2bf4124cb74b5fa34302ffddce7e44b953d0d472", + "61a95dda51f7e74c3fdff46fcfd09d7f2305dbe5", [] ], "handled.js": [ @@ -384934,8 +385105,15 @@ } ] ], + "report-frame-ancestors-with-x-frame-options.sub.html": [ + "0c58a5efd54ceda6ad5f906b02862976c40f65cd", + [ + null, + {} + ] + ], "report-frame-ancestors.sub.html": [ - "a5aa1661c1085a61bedfe88b41ee389f62f577d2", + "cd7bbcb9731009651c1646907e55e137e9d5fdb5", [ null, {} @@ -415517,7 +415695,7 @@ }, "events": { "AddEventListenerOptions-once.html": [ - "ae750702c79d0e2f493537ade1c78558987f536e", + "361c838b736258642c0bf5f26f243544edf2224b", [ null, {} @@ -417157,6 +417335,13 @@ {} ] ], + "MutationObserver-callback-arguments.html": [ + "d64758cb4fa00d25ad3dafe576a0098c902922b7", + [ + null, + {} + ] + ], "MutationObserver-characterData.html": [ "addaef03da1ac64ce9e6a6b1c5d244933b2c7f7b", [ @@ -457943,10 +458128,12 @@ ] ], "reporting-observer.html": [ - "4d1eda941ae50ce4482c692dafe749ef9e455ac6", + "decad097b6d29acabb6252497f68658002c3478e", [ null, - {} + { + "timeout": "long" + } ] ] }, @@ -460738,7 +460925,7 @@ ] ], "fieldset-flexbox.html": [ - "07c73554e59ccb576e590192e923de6b7100e1ae", + "9e1c9ed152fb6597891b310f6a492d57ae136441", [ null, {} @@ -461384,7 +461571,7 @@ "pragma-directives": { "attr-meta-http-equiv-refresh": { "allow-scripts-flag-changing-1.html": [ - "3bf8cfb6cc8949ec30f3491660f01fb452307ccb", + "196f6d0409a9cc97104f6c15fc7855fb549bfebe", [ null, {} @@ -476545,6 +476732,13 @@ {} ] ], + "observer-callback-arguments.html": [ + "6e816969d00641af4da1c86d7b7bafc4a3ffbc3b", + [ + null, + {} + ] + ], "observer-exceptions.html": [ "126790f290d9480dcda7eed6e1b2989ffcc6a70f", [ @@ -477343,6 +477537,20 @@ {} ] ], + "child-shift-with-parent-overflow-hidden.html": [ + "d69e55a51b8088ca0a94f3975155646d21792d88", + [ + null, + {} + ] + ], + "child-shift-with-parent.html": [ + "7271af6d4a04fbbafebe2b20b372f6f41b31b3a9", + [ + null, + {} + ] + ], "clip-negative-bottom-margin.html": [ "2c329d9fcd66d86bf8c350c2ee419e28ef6596f4", [ @@ -477380,6 +477588,20 @@ {} ] ], + "inline-flow-shift-vertical-rl.html": [ + "a89cad145b277bb7a92b30781a63de18fb76c42f", + [ + null, + {} + ] + ], + "inline-flow-shift.html": [ + "0385f29c2f9796818daf38ba5cad2aec7ba4b550", + [ + null, + {} + ] + ], "local-shift-without-viewport-shift.html": [ "37729f1c13c298b5a2d95c46b7a4f199d8943022", [ @@ -477401,6 +477623,13 @@ {} ] ], + "outline.html": [ + "1fed8e92f5e4b60cd83646405b6bd77e673c076f", + [ + null, + {} + ] + ], "partially-clipped-visual-rect.html": [ "3b18b98dd93312c37b9e2f25918df50266a09243", [ @@ -487210,6 +487439,15 @@ } ] ], + "pointerevent_mouse-pointer-preventdefault.html": [ + "a727325a5b1d0e7d4f02899a98cfc5d457e106a4", + [ + null, + { + "testdriver": true + } + ] + ], "pointerevent_mouse-pointer-updown-events.html": [ "a5433aab535f075b58844481a44588cb578a6bf0", [ @@ -508087,7 +508325,7 @@ ] ], "tee.any.js": [ - "b6a95368aa5e64df6ca9e15c034a1b4288883622", + "55d4532ff83929b53db7791be52de8a98743d0f8", [ null, { @@ -531672,6 +531910,13 @@ {} ] ], + "render_state_update.https.html": [ + "2f28d442ec9889ae9cf6d54b70e1c4c64b862a0f", + [ + null, + {} + ] + ], "render_state_vertical_fov_immersive.https.html": [ "485438cabf6a633df42a0f94c04922e7274013e1", [ @@ -533668,7 +533913,7 @@ }, "onerror": { "exception-in-onerror.html": [ - "840433d3d894b1a298bbd5bbe2ea14f9fdd81ef4", + "d8aa02a01b8c841b2db575a1b7a77388d66d3dda", [ null, {} 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 new file mode 100644 index 00000000000..f64b45fea6b --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-002.html.ini @@ -0,0 +1,4 @@ +[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 deleted file mode 100644 index baa9f1a7541..00000000000 --- a/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-005.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[hit-test-floats-005.html] - [Miss clipped float] - expected: FAIL - diff --git a/tests/wpt/metadata/css/cssom-view/CaretPosition-001.html.ini b/tests/wpt/metadata/css/cssom-view/CaretPosition-001.html.ini deleted file mode 100644 index 4c79907309b..00000000000 --- a/tests/wpt/metadata/css/cssom-view/CaretPosition-001.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[CaretPosition-001.html] - [Element at (400, 100)] - expected: FAIL - diff --git a/tests/wpt/metadata/fetch/content-type/response.window.js.ini b/tests/wpt/metadata/fetch/content-type/response.window.js.ini index a8d304a9a24..044152368ee 100644 --- a/tests/wpt/metadata/fetch/content-type/response.window.js.ini +++ b/tests/wpt/metadata/fetch/content-type/response.window.js.ini @@ -315,18 +315,18 @@ [<iframe>: separate response Content-Type: text/plain */*;charset=gbk] expected: FAIL - [<iframe>: combined response Content-Type: text/html;" text/plain] - expected: FAIL - [<iframe>: separate response Content-Type: text/html;" text/plain] expected: FAIL [<iframe>: separate response Content-Type: text/html */*;charset=gbk] expected: FAIL - [<iframe>: combined response Content-Type: text/html */*;charset=gbk] + [<iframe>: combined response Content-Type: text/plain;charset=gbk text/html] + expected: FAIL + + [<iframe>: combined response Content-Type: text/html;" \\" text/plain] expected: FAIL - [<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html] + [<iframe>: separate response Content-Type: text/html;" \\" text/plain] expected: FAIL diff --git a/tests/wpt/metadata/fetch/content-type/script.window.js.ini b/tests/wpt/metadata/fetch/content-type/script.window.js.ini index 0b85801e9d9..279734168dc 100644 --- a/tests/wpt/metadata/fetch/content-type/script.window.js.ini +++ b/tests/wpt/metadata/fetch/content-type/script.window.js.ini @@ -53,6 +53,9 @@ [combined text/javascript ] expected: FAIL - [separate text/javascript; charset=windows-1252 text/javascript] + [separate text/javascript x/x] + expected: FAIL + + [separate text/javascript;charset=windows-1252 text/javascript] expected: FAIL diff --git a/tests/wpt/metadata/fetch/cross-origin-resource-policy/image-loads.html.ini b/tests/wpt/metadata/fetch/cross-origin-resource-policy/image-loads.html.ini new file mode 100644 index 00000000000..7d26a22aeb9 --- /dev/null +++ b/tests/wpt/metadata/fetch/cross-origin-resource-policy/image-loads.html.ini @@ -0,0 +1,2 @@ +[image-loads.html] + expected: TIMEOUT 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 deleted file mode 100644 index dc2e45516de..00000000000 --- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[traverse_the_history_5.html] - [Multiple history traversals, last would be aborted] - expected: FAIL - diff --git a/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/skip-another-top-level-browsing-context.html.ini b/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/skip-another-top-level-browsing-context.html.ini deleted file mode 100644 index 5105aa291b2..00000000000 --- a/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/skip-another-top-level-browsing-context.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[skip-another-top-level-browsing-context.html] - expected: TIMEOUT - [Autofocus elements queued in another top-level browsing context's documents should be skipped.] - expected: TIMEOUT - diff --git a/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini b/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini index f1aa94c7ced..6b68e9094e4 100644 --- a/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini +++ b/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini @@ -1,5 +1,4 @@ [supported-elements.html] - expected: TIMEOUT [Contenteditable element should support autofocus] expected: FAIL @@ -7,14 +6,11 @@ expected: FAIL [Host element with delegatesFocus including no focusable descendants should be skipped] - expected: NOTRUN + expected: FAIL [Area element should support autofocus] - expected: NOTRUN + expected: FAIL [Host element with delegatesFocus should support autofocus] - expected: NOTRUN - - [Non-HTMLElement should not support autofocus] - expected: TIMEOUT + expected: FAIL diff --git a/tests/wpt/metadata/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-flexbox.html.ini b/tests/wpt/metadata/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-flexbox.html.ini new file mode 100644 index 00000000000..ac9b670991a --- /dev/null +++ b/tests/wpt/metadata/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-flexbox.html.ini @@ -0,0 +1,2 @@ +[fieldset-flexbox.html] + expected: CRASH diff --git a/tests/wpt/metadata/html/semantics/embedded-content/image-maps/image-map-processing-model/hash-name-reference.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/image-maps/image-map-processing-model/hash-name-reference.html.ini index 98163335e40..1de3f8d68b2 100644 --- a/tests/wpt/metadata/html/semantics/embedded-content/image-maps/image-map-processing-model/hash-name-reference.html.ini +++ b/tests/wpt/metadata/html/semantics/embedded-content/image-maps/image-map-processing-model/hash-name-reference.html.ini @@ -172,6 +172,3 @@ [XHTML img usemap="http://example.org/#garbage-before-hash-id"] expected: FAIL - [HTML (standards) IMG usemap="no-hash-name"] - expected: FAIL - 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 f6a7aca3306..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,5 +1,6 @@ [iframe_sandbox_popups_escaping-3.html] type: testharness + expected: TIMEOUT [Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used] - expected: FAIL + expected: TIMEOUT diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini index 963d4cd20ef..9df1ac56f2a 100644 --- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini @@ -1,6 +1,6 @@ [iframe_sandbox_popups_nonescaping-1.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-2.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini index 3a32693ffa8..06bbed1fcac 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,5 +1,6 @@ [iframe_sandbox_popups_nonescaping-2.html] type: testharness + expected: CRASH [Check that popups from a sandboxed iframe do not escape the sandbox] expected: FAIL diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini index dc856a3d5a3..e440b1e38c6 100644 --- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini @@ -1,5 +1,6 @@ [iframe_sandbox_popups_nonescaping-3.html] type: testharness + expected: TIMEOUT [Check that popups from a sandboxed iframe do not escape the sandbox] - expected: FAIL + expected: NOTRUN diff --git a/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-3.html.ini b/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-3.html.ini new file mode 100644 index 00000000000..9f416703229 --- /dev/null +++ b/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-3.html.ini @@ -0,0 +1,4 @@ +[form-double-submit-3.html] + [<button> should have the same double-submit protection as <input type=submit>] + expected: FAIL + diff --git a/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit.html.ini b/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit.html.ini deleted file mode 100644 index b193c33c2b6..00000000000 --- a/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[form-double-submit.html] - [default submit action should supersede onclick submit()] - expected: FAIL - diff --git a/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/document-write/iframe_005.html.ini b/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/document-write/iframe_005.html.ini new file mode 100644 index 00000000000..6cf9d13975c --- /dev/null +++ b/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/document-write/iframe_005.html.ini @@ -0,0 +1,4 @@ +[iframe_005.html] + [document.write external script into iframe write back into parent] + 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 5ddb9bfeff6..a1effd5f801 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,10 +1,9 @@ [promise-job-entry.html] - expected: TIMEOUT [Fulfillment handler on fulfilled promise] expected: FAIL [Rejection handler on pending-then-rejected promise] - expected: TIMEOUT + expected: FAIL [Sanity check: this all works as expected with no promises involved] expected: FAIL @@ -16,5 +15,5 @@ expected: FAIL [Fulfillment handler on pending-then-fulfilled promise] - expected: TIMEOUT + expected: FAIL diff --git a/tests/wpt/metadata/streams/readable-streams/tee.any.js.ini b/tests/wpt/metadata/streams/readable-streams/tee.any.js.ini index 75b63daffbc..953e38f599b 100644 --- a/tests/wpt/metadata/streams/readable-streams/tee.any.js.ini +++ b/tests/wpt/metadata/streams/readable-streams/tee.any.js.ini @@ -2,34 +2,58 @@ expected: ERROR [tee.any.worker.html] - expected: ERROR + expected: TIMEOUT [ReadableStreamTee should not pull more chunks than can fit in the branch queue] - expected: FAIL + expected: NOTRUN [ReadableStreamTee stops pulling when original stream errors while branch 1 is reading] - expected: FAIL + expected: NOTRUN [ReadableStreamTee stops pulling when original stream errors while both branches are reading] - expected: FAIL + expected: NOTRUN [ReadableStreamTee stops pulling when original stream errors while branch 2 is reading] - expected: FAIL + expected: NOTRUN + + [ReadableStream teeing: canceling branch1 should finish when branch2 reads until end of stream] + expected: TIMEOUT + + [ReadableStream teeing: canceling branch1 should finish when original stream errors] + expected: NOTRUN + + [ReadableStreamTee should only pull enough to fill the emptiest queue] + expected: NOTRUN + + [ReadableStreamTee should not pull when original is already errored] + expected: NOTRUN [tee.any.serviceworker.html] expected: ERROR [tee.any.html] - expected: ERROR + expected: TIMEOUT [ReadableStreamTee should not pull more chunks than can fit in the branch queue] - expected: FAIL + expected: NOTRUN [ReadableStreamTee stops pulling when original stream errors while branch 1 is reading] - expected: FAIL + expected: NOTRUN [ReadableStreamTee stops pulling when original stream errors while both branches are reading] - expected: FAIL + expected: NOTRUN [ReadableStreamTee stops pulling when original stream errors while branch 2 is reading] - expected: FAIL + expected: NOTRUN + + [ReadableStream teeing: canceling branch1 should finish when branch2 reads until end of stream] + expected: TIMEOUT + + [ReadableStream teeing: canceling branch1 should finish when original stream errors] + expected: NOTRUN + + [ReadableStreamTee should only pull enough to fill the emptiest queue] + expected: NOTRUN + + [ReadableStreamTee should not pull when original is already errored] + expected: NOTRUN diff --git a/tests/wpt/metadata/webmessaging/with-ports/018.html.ini b/tests/wpt/metadata/webmessaging/with-ports/018.html.ini deleted file mode 100644 index 663a1f8fa30..00000000000 --- a/tests/wpt/metadata/webmessaging/with-ports/018.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[018.html] - expected: TIMEOUT - [origin of the script that invoked the method, javascript:] - expected: TIMEOUT - diff --git a/tests/wpt/metadata/webmessaging/without-ports/017.html.ini b/tests/wpt/metadata/webmessaging/without-ports/017.html.ini new file mode 100644 index 00000000000..064cf47545b --- /dev/null +++ b/tests/wpt/metadata/webmessaging/without-ports/017.html.ini @@ -0,0 +1,5 @@ +[017.html] + expected: TIMEOUT + [origin of the script that invoked the method, about:blank] + expected: TIMEOUT + diff --git a/tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini b/tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini deleted file mode 100644 index 80f9a4f15b8..00000000000 --- a/tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[Worker-constructor.html] - expected: ERROR diff --git a/tests/wpt/metadata/workers/interfaces/WorkerGlobalScope/onerror/exception-in-onerror.html.ini b/tests/wpt/metadata/workers/interfaces/WorkerGlobalScope/onerror/exception-in-onerror.html.ini new file mode 100644 index 00000000000..ae39ac39151 --- /dev/null +++ b/tests/wpt/metadata/workers/interfaces/WorkerGlobalScope/onerror/exception-in-onerror.html.ini @@ -0,0 +1,49 @@ +[exception-in-onerror.html] + [Throw in setTimeout(string): classic: listener] + expected: FAIL + + [Throw in setTimeout(function): module: listener] + expected: FAIL + + [Throw in worker initialization: classic: handler] + expected: FAIL + + [Throw in message handler: classic: listener] + expected: FAIL + + [Throw in setTimeout(function): classic: handler] + expected: FAIL + + [Throw in message handler: module: handler] + expected: FAIL + + [Throw in setTimeout(function): module: handler] + expected: FAIL + + [Throw in worker initialization: module: handler] + expected: FAIL + + [Throw in setTimeout(string): module: listener] + expected: FAIL + + [Throw in message handler: classic: handler] + expected: FAIL + + [Throw in worker initialization: classic: listener] + expected: FAIL + + [Throw in message handler: module: listener] + expected: FAIL + + [Throw in setTimeout(string): module: handler] + expected: FAIL + + [Throw in setTimeout(function): classic: listener] + expected: FAIL + + [Throw in worker initialization: module: listener] + expected: FAIL + + [Throw in setTimeout(string): classic: handler] + expected: FAIL + diff --git a/tests/wpt/metadata/workers/shared-worker-in-data-url-context.window.js.ini b/tests/wpt/metadata/workers/shared-worker-in-data-url-context.window.js.ini index daa7a8c41bc..10dda3a6659 100644 --- a/tests/wpt/metadata/workers/shared-worker-in-data-url-context.window.js.ini +++ b/tests/wpt/metadata/workers/shared-worker-in-data-url-context.window.js.ini @@ -1,8 +1,7 @@ [shared-worker-in-data-url-context.window.html] - expected: TIMEOUT [Create a shared worker in a data url frame] expected: FAIL [Create a data url shared worker in a data url frame] - expected: TIMEOUT + expected: FAIL diff --git a/tests/wpt/mozilla/meta/mozilla/getBoundingClientRect.html.ini b/tests/wpt/mozilla/meta/mozilla/getBoundingClientRect.html.ini new file mode 100644 index 00000000000..dcd88accd43 --- /dev/null +++ b/tests/wpt/mozilla/meta/mozilla/getBoundingClientRect.html.ini @@ -0,0 +1,4 @@ +[getBoundingClientRect.html] + [getBoundingClientRect 1] + expected: FAIL + diff --git a/tests/wpt/web-platform-tests/content-security-policy/reporting/report-frame-ancestors-with-x-frame-options.sub.html b/tests/wpt/web-platform-tests/content-security-policy/reporting/report-frame-ancestors-with-x-frame-options.sub.html new file mode 100644 index 00000000000..0c58a5efd54 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/reporting/report-frame-ancestors-with-x-frame-options.sub.html @@ -0,0 +1,12 @@ +<!DOCTYPE html> +<html> +<head> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <title>Reporting works with report-only frame-ancestors even if frame is blocked by X-Frame-Options</title> +</head> +<body> + <iframe src="./support/not-embeddable-frame.py?reportID={{$id:uuid()}}&reportOnly=true&xFrameOptions=DENY"></iframe> + <script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=frame-ancestors&reportID={{$id}}'></script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/reporting/report-frame-ancestors.sub.html b/tests/wpt/web-platform-tests/content-security-policy/reporting/report-frame-ancestors.sub.html index a5aa1661c10..cd7bbcb9731 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/reporting/report-frame-ancestors.sub.html +++ b/tests/wpt/web-platform-tests/content-security-policy/reporting/report-frame-ancestors.sub.html @@ -6,7 +6,7 @@ <title>Reporting works with frame-ancestors</title> </head> <body> - <iframe src="./support/not-embeddable-frame.html?reportID={{$id:uuid()}}"></iframe> + <iframe src="./support/not-embeddable-frame.py?reportID={{$id:uuid()}}"></iframe> <script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=frame-ancestors&reportID={{$id}}'></script> </body> </html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/reporting/support/not-embeddable-frame.html b/tests/wpt/web-platform-tests/content-security-policy/reporting/support/not-embeddable-frame.html deleted file mode 100644 index e69de29bb2d..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/reporting/support/not-embeddable-frame.html +++ /dev/null diff --git a/tests/wpt/web-platform-tests/content-security-policy/reporting/support/not-embeddable-frame.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/reporting/support/not-embeddable-frame.html.sub.headers deleted file mode 100644 index beecdb765cd..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/reporting/support/not-embeddable-frame.html.sub.headers +++ /dev/null @@ -1,5 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Content-Security-Policy: frame-ancestors 'none'; report-uri ../../support/report.py?op=put&reportID={{GET[reportID]}}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/reporting/support/not-embeddable-frame.py b/tests/wpt/web-platform-tests/content-security-policy/reporting/support/not-embeddable-frame.py new file mode 100644 index 00000000000..50f9c83cf5c --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/reporting/support/not-embeddable-frame.py @@ -0,0 +1,10 @@ +def main(request, response): + headers = [] + if request.GET.first(b'xFrameOptions', None): + headers.append((b'X-Frame-Options', request.GET[b'xFrameOptions'])) + + csp_header = b'Content-Security-Policy-Report-Only' \ + if request.GET.first(b'reportOnly', None) == 'true' else b'Content-Security-Policy' + headers.append((csp_header, b"frame-ancestors 'none'; report-uri ../../support/report.py?op=put&reportID=" + request.GET[b'reportID'])) + + return headers, b'{}' diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-1-ref.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-1-ref.html new file mode 100644 index 00000000000..6a7862c9acb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-1-ref.html @@ -0,0 +1,39 @@ +<!doctype html> +<meta charset="utf-8"> +<title>CSS Test Reference</title> +<style> + body { + line-height: 0; + } + + div { + display: inline-block; + height: 250px; + width: 350px; + background: purple; + margin: 10px; + } + + svg { + display: block; + background: green; + } + .justify { + width: 350px; + } + .align { + height: 250px; + } +</style> +<div> + <svg class="align justify"></svg> +</div> +<div> + <svg class="align"></svg> +</div> +<div> + <svg class="justify"></svg> +</div> +<div> + <svg></svg> +</div> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-1.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-1.html new file mode 100644 index 00000000000..1b5ae0a6ad8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-1.html @@ -0,0 +1,45 @@ +<!doctype html> +<meta charset="utf-8"> +<title>stretching works for replaced items with no aspect ratio</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://drafts.csswg.org/css-grid"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1656281"> +<link rel="match" href="grid-item-no-aspect-ratio-stretch-1-ref.html"> +<style> + body { + line-height: 0; + } + + div { + display: inline-grid; + height: 250px; + width: 350px; + background: purple; + margin: 10px; + vertical-align: top; + } + + svg { + background: green; + } + + .justify { + justify-self: stretch; + } + .align { + align-self: stretch; + } +</style> +<div> + <svg class="align justify"></svg> +</div> +<div> + <svg class="align"></svg> +</div> +<div> + <svg class="justify"></svg> +</div> +<div> + <svg></svg> +</div> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-10.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-10.html new file mode 100644 index 00000000000..6d8d7e848c2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-10.html @@ -0,0 +1,50 @@ +<!doctype html> +<meta charset="utf-8"> +<title>stretching works for replaced items with no aspect ratio</title> +<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com"> +<link rel="author" title="Mozilla" href="https://mozilla.org"> +<link rel="help" href="https://drafts.csswg.org/css-grid"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1656281"> +<link rel="match" href="grid-item-no-aspect-ratio-stretch-8-ref.html"> +<style> + body { + line-height: 0; + } + + div { + display: inline-grid; + height: 250px; + width: 350px; + background: grey; + margin: 10px; + vertical-align: top; + } + + .justify { + justify-self: stretch; + } + .align { + align-self: stretch; + } +</style> +<div> + <img class="align justify"> +</div> +<div> + <img class="align"> +</div> +<div> + <img class="justify"> +</div> +<div> + <img> +</div> + +<script> +var url = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="0px" height="0px"><circle cx="50%" cy="50%" r="50%" fill="blue"/></svg>' +var imgs = document.querySelectorAll('img'); +for (var i = 0; i < imgs.length; ++i) { + var img = imgs[i]; + img.src = url; +} +</script> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-2-ref.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-2-ref.html new file mode 100644 index 00000000000..69d59e85a3c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-2-ref.html @@ -0,0 +1,53 @@ +<!doctype html> +<meta charset="utf-8"> +<title>Reference: stretching works for replaced items with no aspect ratio</title> +<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com"> +<link rel="author" title="Mozilla" href="https://mozilla.org"> +<style> + body { + line-height: 0; + } + + div { + display: inline-block; + height: 250px; + width: 350px; + background: grey; + margin: 10px; + vertical-align: top; + } + + img { + display: block; + width: 300px; + height: 150px; + } + + .justify { + width: 350px; + } + .align { + height: 250px; + } +</style> +<div> + <img class="align justify"> +</div> +<div> + <img class="align" style="width:20px"> +</div> +<div> + <img class="justify"> +</div> +<div> + <img style="width:20px"> +</div> + +<script> +var url = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="20px"><circle cx="50%" cy="50%" r="50%" fill="blue"/></svg>' +var imgs = document.querySelectorAll('img'); +for (var i = 0; i < imgs.length; ++i) { + var img = imgs[i]; + img.src = url; +} +</script> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-2.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-2.html new file mode 100644 index 00000000000..5371e560a5f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-2.html @@ -0,0 +1,50 @@ +<!doctype html> +<meta charset="utf-8"> +<title>stretching works for replaced items with no aspect ratio</title> +<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com"> +<link rel="author" title="Mozilla" href="https://mozilla.org"> +<link rel="help" href="https://drafts.csswg.org/css-grid"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1656281"> +<link rel="match" href="grid-item-no-aspect-ratio-stretch-2-ref.html"> +<style> + body { + line-height: 0; + } + + div { + display: inline-grid; + height: 250px; + width: 350px; + background: grey; + margin: 10px; + vertical-align: top; + } + + .justify { + justify-self: stretch; + } + .align { + align-self: stretch; + } +</style> +<div> + <img class="align justify"> +</div> +<div> + <img class="align"> +</div> +<div> + <img class="justify"> +</div> +<div> + <img> +</div> + +<script> +var url = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="20px"><circle cx="50%" cy="50%" r="50%" fill="blue"/></svg>' +var imgs = document.querySelectorAll('img'); +for (var i = 0; i < imgs.length; ++i) { + var img = imgs[i]; + img.src = url; +} +</script> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-3-ref.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-3-ref.html new file mode 100644 index 00000000000..7ee8a2d6bdc --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-3-ref.html @@ -0,0 +1,53 @@ +<!doctype html> +<meta charset="utf-8"> +<title>Reference: stretching works for replaced items with no aspect ratio</title> +<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com"> +<link rel="author" title="Mozilla" href="https://mozilla.org"> +<style> + body { + line-height: 0; + } + + div { + display: inline-block; + height: 250px; + width: 350px; + background: grey; + margin: 10px; + vertical-align: top; + } + + img { + display: block; + width: 300px; + height: 150px; + } + + .justify { + width: 350px; + } + .align { + height: 250px; + } +</style> +<div> + <img class="align justify"> +</div> +<div> + <img class="align"> +</div> +<div> + <img class="justify" style="height:20px"> +</div> +<div> + <img style="height:20px"> +</div> + +<script> +var url = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" height="20px"><circle cx="50%" cy="50%" r="50%" fill="blue"/></svg>' +var imgs = document.querySelectorAll('img'); +for (var i = 0; i < imgs.length; ++i) { + var img = imgs[i]; + img.src = url; +} +</script> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-3.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-3.html new file mode 100644 index 00000000000..e2b05bd2166 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-3.html @@ -0,0 +1,50 @@ +<!doctype html> +<meta charset="utf-8"> +<title>stretching works for replaced items with no aspect ratio</title> +<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com"> +<link rel="author" title="Mozilla" href="https://mozilla.org"> +<link rel="help" href="https://drafts.csswg.org/css-grid"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1656281"> +<link rel="match" href="grid-item-no-aspect-ratio-stretch-3-ref.html"> +<style> + body { + line-height: 0; + } + + div { + display: inline-grid; + height: 250px; + width: 350px; + background: grey; + margin: 10px; + vertical-align: top; + } + + .justify { + justify-self: stretch; + } + .align { + align-self: stretch; + } +</style> +<div> + <img class="align justify"> +</div> +<div> + <img class="align"> +</div> +<div> + <img class="justify"> +</div> +<div> + <img> +</div> + +<script> +var url = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" height="20px"><circle cx="50%" cy="50%" r="50%" fill="blue"/></svg>' +var imgs = document.querySelectorAll('img'); +for (var i = 0; i < imgs.length; ++i) { + var img = imgs[i]; + img.src = url; +} +</script> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-4-ref.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-4-ref.html new file mode 100644 index 00000000000..9edb8aa76f8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-4-ref.html @@ -0,0 +1,53 @@ +<!doctype html> +<meta charset="utf-8"> +<title>Reference: stretching works for replaced items with no aspect ratio</title> +<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com"> +<link rel="author" title="Mozilla" href="https://mozilla.org"> +<style> + body { + line-height: 0; + } + + div { + display: inline-block; + height: 250px; + width: 350px; + background: grey; + margin: 10px; + vertical-align: top; + } + + img { + display: block; + width: 300px; + height: 150px; + } + + .justify { + width: 350px; + } + .align { + height: 250px; + } +</style> +<div> + <img class="align justify"> +</div> +<div> + <img class="align" style="width:10px"> +</div> +<div> + <img class="justify" style="height:20px"> +</div> +<div> + <img style="width:10px; height:20px"> +</div> + +<script> +var url = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 100"><circle cx="50%" cy="50%" r="50%" fill="blue"/></svg>' +var imgs = document.querySelectorAll('img'); +for (var i = 0; i < imgs.length; ++i) { + var img = imgs[i]; + img.src = url; +} +</script> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-4.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-4.html new file mode 100644 index 00000000000..1cf2849dad3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-4.html @@ -0,0 +1,50 @@ +<!doctype html> +<meta charset="utf-8"> +<title>stretching works for replaced items with no aspect ratio</title> +<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com"> +<link rel="author" title="Mozilla" href="https://mozilla.org"> +<link rel="help" href="https://drafts.csswg.org/css-grid"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1656281"> +<link rel="match" href="grid-item-no-aspect-ratio-stretch-4-ref.html"> +<style> + body { + line-height: 0; + } + + div { + display: inline-grid; + height: 250px; + width: 350px; + background: grey; + margin: 10px; + vertical-align: top; + } + + .justify { + justify-self: stretch; + } + .align { + align-self: stretch; + } +</style> +<div> + <img class="align justify"> +</div> +<div> + <img class="align"> +</div> +<div> + <img class="justify"> +</div> +<div> + <img> +</div> + +<script> +var url = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 0 50 100"><circle cx="50%" cy="50%" r="50%" fill="blue"/></svg>' +var imgs = document.querySelectorAll('img'); +for (var i = 0; i < imgs.length; ++i) { + var img = imgs[i]; + img.src = url; +} +</script> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-5-ref.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-5-ref.html new file mode 100644 index 00000000000..6a3446534a1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-5-ref.html @@ -0,0 +1,53 @@ +<!doctype html> +<meta charset="utf-8"> +<title>Reference: stretching works for replaced items with no aspect ratio</title> +<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com"> +<link rel="author" title="Mozilla" href="https://mozilla.org"> +<style> + body { + line-height: 0; + } + + div { + display: inline-block; + height: 250px; + width: 350px; + background: grey; + margin: 10px; + vertical-align: top; + } + + img { + display: block; + width: 300px; + height: 150px; + } + + .justify { + width: 350px; + } + .align { + height: 250px; + } +</style> +<div> + <img class="align justify"> +</div> +<div> + <img class="align" style="width:20px"> +</div> +<div> + <img class="justify" style="width:350px; height:40px"> +</div> +<div> + <img style="width:20px; height:40px"> +</div> + +<script> +var url = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 100"><circle cx="50%" cy="50%" r="50%" fill="blue"/></svg>' +var imgs = document.querySelectorAll('img'); +for (var i = 0; i < imgs.length; ++i) { + var img = imgs[i]; + img.src = url; +} +</script> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-5.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-5.html new file mode 100644 index 00000000000..3000e9d97a1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-5.html @@ -0,0 +1,50 @@ +<!doctype html> +<meta charset="utf-8"> +<title>stretching works for replaced items with no aspect ratio</title> +<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com"> +<link rel="author" title="Mozilla" href="https://mozilla.org"> +<link rel="help" href="https://drafts.csswg.org/css-grid"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1656281"> +<link rel="match" href="grid-item-no-aspect-ratio-stretch-5-ref.html"> +<style> + body { + line-height: 0; + } + + div { + display: inline-grid; + height: 250px; + width: 350px; + background: grey; + margin: 10px; + vertical-align: top; + } + + .justify { + justify-self: stretch; + } + .align { + align-self: stretch; + } +</style> +<div> + <img class="align justify"> +</div> +<div> + <img class="align"> +</div> +<div> + <img class="justify"> +</div> +<div> + <img> +</div> + +<script> +var url = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="20px" viewBox="0 0 50 100"><circle cx="50%" cy="50%" r="50%" fill="blue"/></svg>' +var imgs = document.querySelectorAll('img'); +for (var i = 0; i < imgs.length; ++i) { + var img = imgs[i]; + img.src = url; +} +</script> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-6-ref.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-6-ref.html new file mode 100644 index 00000000000..33f472e71b8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-6-ref.html @@ -0,0 +1,54 @@ +<!doctype html> +<meta charset="utf-8"> +<title>Reference: stretching works for replaced items with no aspect ratio</title> +<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com"> +<link rel="author" title="Mozilla" href="https://mozilla.org"> +<style> + body { + line-height: 0; + } + + div { + display: inline-block; + height: 250px; + width: 350px; + background: grey; + margin: 10px; + vertical-align: top; + } + + img { + display: block; + width: 300px; + height: 150px; + background: blue; + } + + .justify { + width: 350px; + } + .align { + height: 250px; + } +</style> +<div> + <img class="align justify"> +</div> +<div> + <img class="align" style="width:0px"> +</div> +<div> + <img class="justify" style="height:20px"> +</div> +<div> + <img style="width:0px; height:20px"> +</div> + +<script> +var url = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg"></svg>' +var imgs = document.querySelectorAll('img'); +for (var i = 0; i < imgs.length; ++i) { + var img = imgs[i]; + img.src = url; +} +</script> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-6.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-6.html new file mode 100644 index 00000000000..655040eb446 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-6.html @@ -0,0 +1,51 @@ +<!doctype html> +<meta charset="utf-8"> +<title>stretching works for replaced items with no aspect ratio</title> +<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com"> +<link rel="author" title="Mozilla" href="https://mozilla.org"> +<link rel="help" href="https://drafts.csswg.org/css-grid"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1656281"> +<link rel="match" href="grid-item-no-aspect-ratio-stretch-6-ref.html"> +<style> + body { + line-height: 0; + } + + div { + display: inline-grid; + height: 250px; + width: 350px; + background: grey; + margin: 10px; + vertical-align: top; + } + img { background: blue; } + + .justify { + justify-self: stretch; + } + .align { + align-self: stretch; + } +</style> +<div> + <img class="align justify"> +</div> +<div> + <img class="align"> +</div> +<div> + <img class="justify"> +</div> +<div> + <img> +</div> + +<script> +var url = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="0px" height="20px" viewBox="0 0 50 100"></svg>' +var imgs = document.querySelectorAll('img'); +for (var i = 0; i < imgs.length; ++i) { + var img = imgs[i]; + img.src = url; +} +</script> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-7-ref.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-7-ref.html new file mode 100644 index 00000000000..0d60375f560 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-7-ref.html @@ -0,0 +1,54 @@ +<!doctype html> +<meta charset="utf-8"> +<title>Reference: stretching works for replaced items with no aspect ratio</title> +<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com"> +<link rel="author" title="Mozilla" href="https://mozilla.org"> +<style> + body { + line-height: 0; + } + + div { + display: inline-block; + height: 250px; + width: 350px; + background: grey; + margin: 10px; + vertical-align: top; + } + + img { + display: block; + width: 300px; + height: 150px; + background: blue; + } + + .justify { + width: 350px; + } + .align { + height: 250px; + } +</style> +<div> + <img class="align justify"> +</div> +<div> + <img class="align" style="width:20px"> +</div> +<div> + <img class="justify" style="height:0px"> +</div> +<div> + <img style="width:20px; height:0px"> +</div> + +<script> +var url = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg"></svg>' +var imgs = document.querySelectorAll('img'); +for (var i = 0; i < imgs.length; ++i) { + var img = imgs[i]; + img.src = url; +} +</script> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-7.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-7.html new file mode 100644 index 00000000000..29dec490b79 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-7.html @@ -0,0 +1,51 @@ +<!doctype html> +<meta charset="utf-8"> +<title>stretching works for replaced items with no aspect ratio</title> +<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com"> +<link rel="author" title="Mozilla" href="https://mozilla.org"> +<link rel="help" href="https://drafts.csswg.org/css-grid"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1656281"> +<link rel="match" href="grid-item-no-aspect-ratio-stretch-7-ref.html"> +<style> + body { + line-height: 0; + } + + div { + display: inline-grid; + height: 250px; + width: 350px; + background: grey; + margin: 10px; + vertical-align: top; + } + img { background: blue; } + + .justify { + justify-self: stretch; + } + .align { + align-self: stretch; + } +</style> +<div> + <img class="align justify"> +</div> +<div> + <img class="align"> +</div> +<div> + <img class="justify"> +</div> +<div> + <img> +</div> + +<script> +var url = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="20px" height="0px" viewBox="0 0 50 100"></svg>' +var imgs = document.querySelectorAll('img'); +for (var i = 0; i < imgs.length; ++i) { + var img = imgs[i]; + img.src = url; +} +</script> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-8-ref.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-8-ref.html new file mode 100644 index 00000000000..09dd27321ab --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-8-ref.html @@ -0,0 +1,27 @@ +<!doctype html> +<meta charset="utf-8"> +<title>Reference: stretching works for replaced items with no aspect ratio</title> +<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com"> +<link rel="author" title="Mozilla" href="https://mozilla.org"> +<style> + body { + line-height: 0; + } + + div { + display: inline-block; + height: 250px; + width: 350px; + background: grey; + margin: 10px; + vertical-align: top; + } +</style> +<div> +</div> +<div> +</div> +<div> +</div> +<div> +</div> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-8.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-8.html new file mode 100644 index 00000000000..933ddd0504e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-8.html @@ -0,0 +1,50 @@ +<!doctype html> +<meta charset="utf-8"> +<title>stretching works for replaced items with no aspect ratio</title> +<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com"> +<link rel="author" title="Mozilla" href="https://mozilla.org"> +<link rel="help" href="https://drafts.csswg.org/css-grid"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1656281"> +<link rel="match" href="grid-item-no-aspect-ratio-stretch-8-ref.html"> +<style> + body { + line-height: 0; + } + + div { + display: inline-grid; + height: 250px; + width: 350px; + background: grey; + margin: 10px; + vertical-align: top; + } + + .justify { + justify-self: stretch; + } + .align { + align-self: stretch; + } +</style> +<div> + <img class="align justify"> +</div> +<div> + <img class="align"> +</div> +<div> + <img class="justify"> +</div> +<div> + <img> +</div> + +<script> +var url = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="0px" height="20px"><circle cx="50%" cy="50%" r="50%" fill="blue"/></svg>' +var imgs = document.querySelectorAll('img'); +for (var i = 0; i < imgs.length; ++i) { + var img = imgs[i]; + img.src = url; +} +</script> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-9.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-9.html new file mode 100644 index 00000000000..367adae9eb7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-9.html @@ -0,0 +1,50 @@ +<!doctype html> +<meta charset="utf-8"> +<title>stretching works for replaced items with no aspect ratio</title> +<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com"> +<link rel="author" title="Mozilla" href="https://mozilla.org"> +<link rel="help" href="https://drafts.csswg.org/css-grid"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1656281"> +<link rel="match" href="grid-item-no-aspect-ratio-stretch-8-ref.html"> +<style> + body { + line-height: 0; + } + + div { + display: inline-grid; + height: 250px; + width: 350px; + background: grey; + margin: 10px; + vertical-align: top; + } + + .justify { + justify-self: stretch; + } + .align { + align-self: stretch; + } +</style> +<div> + <img class="align justify"> +</div> +<div> + <img class="align"> +</div> +<div> + <img class="justify"> +</div> +<div> + <img> +</div> + +<script> +var url = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="20px" height="0px"><circle cx="50%" cy="50%" r="50%" fill="blue"/></svg>' +var imgs = document.querySelectorAll('img'); +for (var i = 0; i < imgs.length; ++i) { + var img = imgs[i]; + img.src = url; +} +</script> diff --git a/tests/wpt/web-platform-tests/css/css-paint-api/paint-function-this-value.https.html b/tests/wpt/web-platform-tests/css/css-paint-api/paint-function-this-value.https.html new file mode 100644 index 00000000000..216913899a9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-paint-api/paint-function-this-value.https.html @@ -0,0 +1,43 @@ +<!DOCTYPE html> +<html class="reftest-wait"> +<meta charset="utf-8"> +<title>Paint callback is invoked with `this` value of `paintInstance`</title> +<link rel="help" href="https://drafts.css-houdini.org/css-paint-api-1/#invoke-a-paint-callback"> +<link rel="match" href="parse-input-arguments-ref.html"> +<style> +.container { + width: 100px; + height: 100px; +} + +#canvas-geometry { + background-image: paint(geometry); +} +</style> +<script src="/common/reftest-wait.js"></script> +<script src="/common/worklet-reftest.js"></script> +<body> +<div id="canvas-geometry" class="container"></div> + +<script id="code" type="text/worklet"> +let paintInstance; + +registerPaint('geometry', class { + constructor() { + paintInstance = this; + } + paint(ctx, geom) { + if (this === paintInstance) + ctx.fillStyle = 'green'; + else + ctx.fillStyle = 'red'; + ctx.fillRect(0, 0, geom.width, geom.height); + } +}); +</script> + +<script> + importWorkletAndTerminateTestAfterAsyncPaint(CSS.paintWorklet, document.getElementById('code').textContent); +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/docs/writing-tests/index.md b/tests/wpt/web-platform-tests/docs/writing-tests/index.md index 90a67c21fce..c1d2fe17a31 100644 --- a/tests/wpt/web-platform-tests/docs/writing-tests/index.md +++ b/tests/wpt/web-platform-tests/docs/writing-tests/index.md @@ -8,43 +8,14 @@ testing plan](making-a-testing-plan) will help you decide what to write. There's also a load of [general guidelines](general-guidelines) that apply to all tests. -```eval_rst -.. toctree:: - :maxdepth: 1 +## Test Types - general-guidelines - ahem - assumptions - crashtest - css-metadata - css-user-styles - file-names - h2tests - lint-tool - making-a-testing-plan - manual - reftest-tutorial - reftests - print-reftests - rendering - server-features - submission-process - testdriver - testdriver-extension-tutorial - testharness - testharness-tutorial - tools - visual - wdspec - test-templates - github-intro -``` - -## Test Type +There are various different ways of writing tests: -Tests in this project use a few different approaches to verify expected -behavior. The tests can be classified based on the way they express -expectations: +* [JavaScript tests (testharness.js)](testharness) are preferred for testing APIs and may be used + for other features too. They are built with the testharness.js unit testing framework, and consist + of assertions written in JavaScript. A high-level [testharness.js tutorial](testharness-tutorial) + is available. * Rendering tests should be used to verify that the browser graphically displays pages as expected. See the [rendering test guidelines](rendering) @@ -53,7 +24,8 @@ expectations: * [Reftests](reftests) should be used to test rendering and layout. They consist of two or more pages with assertions as to whether they render - identically or not. + identically or not. A high-level [reftest tutorial](reftest-tutorial) is available. A + [print reftests](print-reftests) variant is available too. * [Visual tests](visual) should be used for checking rendering where there is a large number of conforming renderings such that reftests are impractical. @@ -61,10 +33,6 @@ expectations: screenshot can be taken and compared to an expected rendering for that user agent on that platform. -* [testharness.js](testharness) tests should be used (where possible!) for - testing everything else. They are built with the testharness.js unit testing - framework, and consist of assertions written in JavaScript. - * [Crashtests](crashtest) tests are used to check that the browser is able to load a given document without crashing or experiencing other low-level issues (asserts, leaks, etc.). They pass if the load @@ -78,14 +46,6 @@ expectations: tested using any of the above. They consist of a page that needs manual interaction or verification of the final result. -In general, there is a strong preference towards reftests and testharness.js -tests types (as they can be easily run without human interaction), so they -should be used in preference to the others even if it results in a -somewhat cumbersome test; there is a far weaker preference between the -two test types, and it is at times advisable to use testharness.js tests -for things which would typically be tested using reftests but for -which it would be overly cumbersome. - See [file names](file-names) for test types and features determined by the file names, and [server features](server-features) for advanced testing features. @@ -94,3 +54,37 @@ and [server features](server-features) for advanced testing features. Once you've written tests, please submit them using the [typical GitHub Pull Request workflow](submission-process); please make sure you run the [`lint` script](lint-tool) before opening a pull request! + +## Table of Contents + +```eval_rst +.. toctree:: + :maxdepth: 1 + + general-guidelines + making-a-testing-plan + testharness + testharness-tutorial + rendering + reftests + reftest-tutorial + print-reftests + visual + crashtest + wdspec + manual + file-names + server-features + submission-process + lint-tool + ahem + assumptions + css-metadata + css-user-styles + h2tests + testdriver + testdriver-extension-tutorial + tools + test-templates + github-intro +``` diff --git a/tests/wpt/web-platform-tests/docs/writing-tests/testharness.md b/tests/wpt/web-platform-tests/docs/writing-tests/testharness.md index 1e9772a4017..1037eaca03c 100644 --- a/tests/wpt/web-platform-tests/docs/writing-tests/testharness.md +++ b/tests/wpt/web-platform-tests/docs/writing-tests/testharness.md @@ -1,4 +1,4 @@ -# testharness.js Tests +# JavaScript Tests (testharness.js) ```eval_rst .. toctree:: diff --git a/tests/wpt/web-platform-tests/dom/events/AddEventListenerOptions-once.html b/tests/wpt/web-platform-tests/dom/events/AddEventListenerOptions-once.html index ae750702c79..361c838b736 100644 --- a/tests/wpt/web-platform-tests/dom/events/AddEventListenerOptions-once.html +++ b/tests/wpt/web-platform-tests/dom/events/AddEventListenerOptions-once.html @@ -78,4 +78,21 @@ test(function() { assert_equals(invoked_count, 0, "The handler should have been removed"); }, "Once listener should be added / removed like normal listeners"); +test(function() { + var invoked_count = 0; + + for (let n = 4; n > 0; n--) { + document.addEventListener('test', (e) => { + invoked_count++; + e.stopImmediatePropagation(); + }, {once: true}); + } + + for (let n = 4; n > 0; n--) { + document.dispatchEvent(new Event('test')); + } + + assert_equals(invoked_count, 4, "The listeners should be invoked"); +}, "Multiple once listeners should be invoked even if the stopImmediatePropagation is set"); + </script> diff --git a/tests/wpt/web-platform-tests/dom/nodes/MutationObserver-callback-arguments.html b/tests/wpt/web-platform-tests/dom/nodes/MutationObserver-callback-arguments.html new file mode 100644 index 00000000000..d64758cb4fa --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/nodes/MutationObserver-callback-arguments.html @@ -0,0 +1,31 @@ +<!DOCTYPE HTML> +<meta charset=utf-8> +<title>MutationObserver: callback arguments</title> +<link rel="help" href="https://dom.spec.whatwg.org/#notify-mutation-observers"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<div id="mo-target"></div> +<div id="log"></div> +<script> +"use strict"; + +async_test(t => { + const moTarget = document.querySelector("#mo-target"); + const mo = new MutationObserver(function(records, observer) { + t.step(() => { + assert_equals(this, mo); + assert_equals(arguments.length, 2); + assert_true(Array.isArray(records)); + assert_equals(records.length, 1); + assert_true(records[0] instanceof MutationRecord); + assert_equals(observer, mo); + + mo.disconnect(); + t.done(); + }); + }); + + mo.observe(moTarget, {attributes: true}); + moTarget.className = "trigger-mutation"; +}, "Callback is invoked with |this| value of MutationObserver and two arguments"); +</script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/reporting-observer.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/reporting-observer.html index 4d1eda941ae..decad097b6d 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/reporting-observer.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/reporting-observer.html @@ -1,3 +1,6 @@ +<!doctype html> +<meta charset="utf-8"> +<meta name="timeout" content="long"> <title> Check the ReportingObserver(s) are notified about the coop-access-violation events. @@ -12,8 +15,10 @@ const directory = "/html/cross-origin-opener-policy/reporting"; const executor_path = directory + "/resources/executor.html?pipe="; -const https = get_host_info().HTTPS_ORIGIN; +const same_origin = get_host_info().HTTPS_ORIGIN; +const cross_site = get_host_info().HTTPS_NOTSAMESITE_ORIGIN; const coep_header = '|header(Cross-Origin-Embedder-Policy,require-corp)'; +const corp_header = '|header(Cross-Origin-Resource-Policy,cross-origin)'; promise_test(async t => { // This test window. @@ -22,13 +27,13 @@ promise_test(async t => { // The "opener" window, using COOP-Report-Only and a reporter. const opener_token = token(); const opener_reportTo = reportToHeaders(token()); - const opener_url = https + executor_path + opener_reportTo.header + + const opener_url = same_origin + executor_path + opener_reportTo.header + opener_reportTo.coopReportOnlySameOriginHeader + coep_header + `&uuid=${opener_token}`; // The "openee" window, NOT using COOP. const openee_token = token(); - const openee_url = https + executor_path + `&uuid=${openee_token}`; + const openee_url = same_origin + executor_path + `&uuid=${openee_token}`; // 1. Create the opener window. window.open(opener_url); @@ -82,12 +87,12 @@ promise_test(async t => { // The "opener" window, NOT using COOP. const opener_token = token(); - const opener_url = https + executor_path + `&uuid=${opener_token}`; + const opener_url = same_origin + executor_path + `&uuid=${opener_token}`; // The "openee" window, using COOP-Report-Only and a reporter. const openee_token = token(); const openee_reportTo = reportToHeaders(token()); - const openee_url = https + executor_path + openee_reportTo.header + + const openee_url = same_origin + executor_path + openee_reportTo.header + openee_reportTo.coopReportOnlySameOriginHeader + coep_header + `&uuid=${openee_token}`; @@ -132,4 +137,126 @@ promise_test(async t => { let report_access_to = JSON.parse(await receive(this_window_token)); assert_equals(report_access_to.length, 0, "Unexpected report received."); }, "Openee COOP"); + +promise_test(async t => { + // This test window. + const this_window_token = token(); + + // The "opener" window, using COOP-Report-Only and a reporter. + const opener_token = token(); + const opener_reportTo = reportToHeaders(token()); + const opener_url = same_origin + executor_path + opener_reportTo.header + + opener_reportTo.coopReportOnlySameOriginHeader + coep_header + + `&uuid=${opener_token}`; + + // The "opener's iframe", same-origin with its parent. + const opener_iframe_token = token(); + const opener_iframe_url = same_origin + executor_path + coep_header + + `&uuid=${opener_iframe_token}`; + + // The "openee" window, NOT using COOP. + const openee_token = token(); + const openee_url = same_origin + executor_path + coep_header + + `&uuid=${openee_token}`; + + // 1. Create the opener window. + window.open(opener_url); + t.add_cleanup(() => send(opener_token, "window.close();")); + + // 2. The opener opens an iframe, and install a ReportingObserver to catch + // future accesses. + send(opener_token, ` + iframe = document.createElement("iframe"); + iframe.src = "${opener_iframe_url}"; + document.body.appendChild(iframe); + + let observer = new ReportingObserver(reports => { + send("${this_window_token}", JSON.stringify(reports)); + observer.disconnect(); + }); + observer.observe(); + `); + + // 3. The iframe opens the openee. + send(opener_iframe_token, `openee = window.open('${openee_url}');`); + t.add_cleanup(() => send(openee_token, `window.close();`)); + + // 4. Wait for the openee to load its document. + send(openee_token, `send("${this_window_token}", "Ready");`); + assert_equals(await receive(this_window_token), "Ready"); + + // 4. The opener's iframe tries to access the openee. This is an + // "access-from-coop-page" from a same-origin iframe, so the + // ReportingObserver(s) are notified. + send(opener_iframe_token, `tryAccess(openee);`); + + let reports = await receive(this_window_token); + assert_not_equals(reports, "timeout", "No report received."); + reports = JSON.parse(reports); + assert_equals(reports.length, 1, "No report received."); + assert_equals(reports[0].type, "coop-access-violation"); + assert_equals(reports[0].url, opener_url.replace(/"/g, '%22')); + assert_true(reports[0].body.sourceFile.includes("try-access.js")); + assert_equals(reports[0].body.lineNumber, 6); + assert_equals(reports[0].body.columnNumber, 7); + assert_equals(reports[0].body.property, "blur"); +}, "Access from same-origin iframe") + +promise_test(async t => { + // This test window. + const this_window_token = token(); + + // The "opener" window, using COOP-Report-Only and a reporter. + const opener_token = token(); + const opener_reportTo = reportToHeaders(token()); + const opener_url = same_origin + executor_path + opener_reportTo.header + + opener_reportTo.coopReportOnlySameOriginHeader + coep_header + + `&uuid=${opener_token}`; + + // The "opener's iframe", same-origin with its parent. + const opener_iframe_token = token(); + const opener_iframe_url = cross_site + executor_path + coep_header + + corp_header + + `&uuid=${opener_iframe_token}`; + + // The "openee" window, NOT using COOP. + const openee_token = token(); + const openee_url = same_origin + executor_path + coep_header + + `&uuid=${openee_token}`; + + // 1. Create the opener window. + window.open(opener_url); + t.add_cleanup(() => send(opener_token, "window.close();")); + + // 2. The opener opens an iframe, and install a ReportingObserver to catch + // future accesses. + send(opener_token, ` + iframe = document.createElement("iframe"); + iframe.src = "${opener_iframe_url}"; + document.body.appendChild(iframe); + + let observer = new ReportingObserver(reports => { + send("${this_window_token}", JSON.stringify(reports)); + observer.disconnect(); + }); + observer.observe(); + `); + + // 3. The iframe opens the openee. + send(opener_iframe_token, `openee = window.open('${openee_url}');`); + t.add_cleanup(() => send(openee_token, `window.close();`)); + + // 4. Wait for the openee to load its document. + send(openee_token, `send("${this_window_token}", "Ready");`); + assert_equals(await receive(this_window_token), "Ready"); + + // 5. The opener's iframe tries to access the openee. This is an + // "access-from-coop-page" from a cross-site iframe. The ReportingObservers + // from the main document aren't notified. + send(opener_iframe_token, `tryAccess(openee);`); + + let reports = await receive(this_window_token); + assert_equals(reports, "timeout", "Unexpected report received."); +}, "Access from cross-site iframe") + </script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/resources/dispatcher.py b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/resources/dispatcher.py index 2617361b0b3..e77583e479f 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/resources/dispatcher.py +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/resources/dispatcher.py @@ -9,12 +9,19 @@ def main(request, response): return b'' uuid = request.GET[b'uuid'] + stash = request.server.stash; + with stash.lock: + queue = stash.take(uuid) + if queue is None: + queue = [] - if request.method == u'POST': - return request.server.stash.put(uuid, request.body) - else: - body = request.server.stash.take(uuid) - if body is None: - return b'not ready' + if request.method == u'POST': + queue.append(request.body) + ret = b'done' else: - return body + if len(queue) == 0: + ret = b'not ready' + else: + ret = queue.pop(0) + stash.put(uuid, queue) + return ret; diff --git a/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-flexbox.html b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-flexbox.html index 07c73554e59..9e1c9ed152f 100644 --- a/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-flexbox.html +++ b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-flexbox.html @@ -81,4 +81,15 @@ legend { testElm.querySelector('div').offsetTop, 'offsetTop') }, "Inline flex"); + +test(() => { + const testElm = document.getElementById('test'); + testElm.style.flexDirection = 'row'; + const item0 = testElm.querySelectorAll('div')[0]; + const item1 = testElm.querySelectorAll('div')[1]; + assert_equals(item0.offsetTop, item1.offsetTop); + + testElm.style.flexDirection = 'column'; + assert_true(item0.offsetTop < item1.offsetTop); +}, "Dynamic change of flex-direction"); </script> diff --git a/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/allow-scripts-flag-changing-1.html b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/allow-scripts-flag-changing-1.html index 3bf8cfb6cc8..196f6d0409a 100644 --- a/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/allow-scripts-flag-changing-1.html +++ b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/allow-scripts-flag-changing-1.html @@ -33,7 +33,10 @@ destIFrame.onload = () => { ++destLoadCount; if (destLoadCount === 2) { - assert_unreached("The iframe into which the meta was moved must not refresh"); + // destIFrame doesn't have the sandboxed automatic features browsing context + // flag sets, thus navigated. + assert_equals(destIFrame.contentDocument.body.textContent.trim(), "foo"); + done(); } maybeStartTest(); @@ -41,9 +44,6 @@ destIFrame.onload = () => { function maybeStartTest() { if (sourceLoadCount === 1 && destLoadCount === 1) { - // Test that no refreshes occur within 3 seconds - step_timeout(done, 3000); - const meta = sourceIFrame.contentDocument.querySelector("meta"); destIFrame.contentDocument.body.appendChild(meta); } diff --git a/tests/wpt/web-platform-tests/intersection-observer/observer-callback-arguments.html b/tests/wpt/web-platform-tests/intersection-observer/observer-callback-arguments.html new file mode 100644 index 00000000000..6e816969d00 --- /dev/null +++ b/tests/wpt/web-platform-tests/intersection-observer/observer-callback-arguments.html @@ -0,0 +1,28 @@ +<!DOCTYPE HTML> +<meta charset=utf-8> +<title>IntersectionObserver: callback arguments</title> +<link rel="help" href="https://w3c.github.io/IntersectionObserver/#notify-intersection-observers-algo"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<div id="log"></div> +<script> +"use strict"; + +async_test(t => { + const io = new IntersectionObserver(function(entries, observer) { + t.step(() => { + assert_equals(this, io); + assert_equals(arguments.length, 2); + assert_true(Array.isArray(entries)); + assert_equals(entries.length, 1); + assert_true(entries[0] instanceof IntersectionObserverEntry); + assert_equals(observer, io); + + io.disconnect(); + t.done(); + }); + }); + + io.observe(document.body); +}, "Callback is invoked with |this| value of IntersectionObserver and two arguments"); +</script> diff --git a/tests/wpt/web-platform-tests/layout-instability/child-shift-with-parent-overflow-hidden.html b/tests/wpt/web-platform-tests/layout-instability/child-shift-with-parent-overflow-hidden.html new file mode 100644 index 00000000000..d69e55a51b8 --- /dev/null +++ b/tests/wpt/web-platform-tests/layout-instability/child-shift-with-parent-overflow-hidden.html @@ -0,0 +1,32 @@ +<!DOCTYPE html> +<title>Layout Instability: parent (with overflow:hidden) and child moved together</title> +<link rel="help" href="https://wicg.github.io/layout-instability/" /> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/util.js"></script> +<div id="parent" style="position: relative; width: 200px; height: 200px; + border: 50px solid blue; overflow: hidden"> + <div id="child" style="height: 400px"></div> +</div> +<script> + +promise_test(async () => { + const watcher = new ScoreWatcher; + + // Wait for the initial render to complete. + await waitForAnimationFrames(2); + + // Modify the position of the div. + const parent = document.querySelector("#parent"); + parent.style.top = '100px'; + + // Only the parent area should be reported. + const expectedScore = computeExpectedScore(300 * (300 + 100), 100); + + // Observer fires after the frame is painted. + assert_equals(watcher.score, 0); + await watcher.promise; + assert_equals(watcher.score, expectedScore); +}, 'Parent (with overflow:hidden) and child moved together.'); + +</script> diff --git a/tests/wpt/web-platform-tests/layout-instability/child-shift-with-parent.html b/tests/wpt/web-platform-tests/layout-instability/child-shift-with-parent.html new file mode 100644 index 00000000000..7271af6d4a0 --- /dev/null +++ b/tests/wpt/web-platform-tests/layout-instability/child-shift-with-parent.html @@ -0,0 +1,34 @@ +<!DOCTYPE html> +<title>Layout Instability: parent/child moved together</title> +<link rel="help" href="https://wicg.github.io/layout-instability/" /> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/util.js"></script> +<div id="parent" style="position: relative; width: 100px; height: 100px; border: 100px solid blue"> + <div id="child" style="height: 300px"></div> +</div> +<script> + +promise_test(async () => { + const watcher = new ScoreWatcher; + + // Wait for the initial render to complete. + await waitForAnimationFrames(2); + + // Modify the position of the div. + const parent = document.querySelector("#parent"); + parent.style.top = '100px'; + + // If the implementation reports child and parent separately + // (overlapping are should be excluded): + const expectedScoreMin = computeExpectedScore(300 * (300 + 100) + 100 * 100, 100); + // If the implementation reports parent bounding box (including child): + const expectedScoreMax = computeExpectedScore(300 * (400 + 100), 100); + + // Observer fires after the frame is painted. + assert_equals(watcher.score, 0); + await watcher.promise; + assert_between_inclusive(watcher.score, expectedScoreMin, expectedScoreMax); +}, 'Parent/child movement.'); + +</script> diff --git a/tests/wpt/web-platform-tests/layout-instability/inline-flow-shift-vertical-rl.html b/tests/wpt/web-platform-tests/layout-instability/inline-flow-shift-vertical-rl.html new file mode 100644 index 00000000000..a89cad145b2 --- /dev/null +++ b/tests/wpt/web-platform-tests/layout-instability/inline-flow-shift-vertical-rl.html @@ -0,0 +1,44 @@ +<!DOCTYPE html> +<title>Layout Instability: vertical-rl inline/text movement is detected</title> +<link rel="help" href="https://wicg.github.io/layout-instability/" /> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/util.js"></script> +<body style="writing-mode: vertical-rl"> +<div style="height: 200px; font-size: 20px; line-height: 25px"> + 1AAAAAAA<br> + 2AAAAAAA<br> + 3AAAAAAA<br> + <div id="inline-block" style="display: inline-block; width: 50px">4AAAAAAA</div><br> + 5AAAAAAA<br> + 6AAAAAAA<br> + 7AAAAAAA<br> +</div> +<script> + +promise_test(async () => { + const watcher = new ScoreWatcher; + + // Wait for the initial render to complete. + await waitForAnimationFrames(2); + + // Modify the position of the div. + const inline_block = document.querySelector("#inline-block"); + inline_block.style.width = '100px'; + + // The lines below the inline-block are shifted down by 50px. + // The implementation may measure the real width of the shifted text + // or use the available width (i.e. width of the containing block). + // Also tolerate extra 10% error. + const text_width = inline_block.offsetWidth; + const expectedScoreMin = computeExpectedScore(text_width * (30 * 3 + 50), 50) * 0.9; + const expectedScoreMax = computeExpectedScore(200 * (30 * 3 + 50), 50) * 1.1; + + // Observer fires after the frame is painted. + assert_equals(watcher.score, 0); + await watcher.promise; + assert_between_exclusive(watcher.score, expectedScoreMin, expectedScoreMax); +}, 'Vertical-rl inline flow movement.'); + +</script> +</body> diff --git a/tests/wpt/web-platform-tests/layout-instability/inline-flow-shift.html b/tests/wpt/web-platform-tests/layout-instability/inline-flow-shift.html new file mode 100644 index 00000000000..0385f29c2f9 --- /dev/null +++ b/tests/wpt/web-platform-tests/layout-instability/inline-flow-shift.html @@ -0,0 +1,42 @@ +<!DOCTYPE html> +<title>Layout Instability: inline/text movement is detected</title> +<link rel="help" href="https://wicg.github.io/layout-instability/" /> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/util.js"></script> +<div style="width: 200px; font-size: 20px; line-height: 25px"> + 1AAAAAAA<br> + 2AAAAAAA<br> + 3AAAAAAA<br> + <div id="inline-block" style="display: inline-block; height: 50px">4AAAAAAA</div><br> + 5AAAAAAA<br> + 6AAAAAAA<br> + 7AAAAAAA<br> +</div> +<script> + +promise_test(async () => { + const watcher = new ScoreWatcher; + + // Wait for the initial render to complete. + await waitForAnimationFrames(2); + + // Modify the position of the div. + const inline_block = document.querySelector("#inline-block"); + inline_block.style.height = '100px'; + + // The lines below the inline-block are shifted down by 50px. + // The implementation may measure the real width of the shifted text + // or use the available width (i.e. width of the containing block). + // Also tolerate extra 10% error. + const text_width = inline_block.offsetWidth; + const expectedScoreMin = computeExpectedScore(text_width * (30 * 3 + 50), 50) * 0.9; + const expectedScoreMax = computeExpectedScore(200 * (30 * 3 + 50), 50) * 1.1; + + // Observer fires after the frame is painted. + assert_equals(watcher.score, 0); + await watcher.promise; + assert_between_exclusive(watcher.score, expectedScoreMin, expectedScoreMax); +}, 'Inline flow movement.'); + +</script> diff --git a/tests/wpt/web-platform-tests/layout-instability/outline.html b/tests/wpt/web-platform-tests/layout-instability/outline.html new file mode 100644 index 00000000000..1fed8e92f5e --- /dev/null +++ b/tests/wpt/web-platform-tests/layout-instability/outline.html @@ -0,0 +1,21 @@ +<!DOCTYPE html> +<title>Layout Instability: outline doesn't contribute to layout shift</title> +<link rel="help" href="https://wicg.github.io/layout-instability/" /> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/util.js"></script> +<div id="target" style="width: 300px; height: 300px"></div> +<script> +promise_test(async () => { + const watcher = new ScoreWatcher; + + // Wait for the initial render to complete. + await waitForAnimationFrames(2); + + // Add outline for target. This should not generate a shift. + target.style.outline = "10px solid blue"; + + await waitForAnimationFrames(3); + assert_equals(watcher.score, 0); +}, "Outline."); +</script> diff --git a/tests/wpt/web-platform-tests/pointerevents/compat/pointerevent_mouse-pointer-preventdefault.html b/tests/wpt/web-platform-tests/pointerevents/compat/pointerevent_mouse-pointer-preventdefault.html new file mode 100644 index 00000000000..a727325a5b1 --- /dev/null +++ b/tests/wpt/web-platform-tests/pointerevents/compat/pointerevent_mouse-pointer-preventdefault.html @@ -0,0 +1,199 @@ +<!DOCTYPE HTML> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/resources/testdriver-actions.js"></script> +<script type="text/javascript" src="../pointerevent_support.js"></script> +<style> +div.box { + margin: 10px; + padding: 50px; + float: left; +} +</style> +<h1>Verifies the effect of pointer event prevent-default on following pointer & mouse events.</h1> +<div id="target" class="box" style="background-color:green;"> +</div> + +<script> +var receivedEvents = []; +var mouseEventList = ["mousedown", "mouseup", "mouseenter", "mouseleave", "mouseover", "mouseout", "mousemove"]; +var pointerEventList = ["pointerdown", "pointerup", "pointerenter", "pointerleave", "pointerover", "pointerout", "pointermove"]; + +var preventDefaultList = ["none"].concat(pointerEventList); +var eventToPreventDefault = ""; +var seqNo = 0; + +function init() { + var targetDiv = document.getElementById("target"); + + mouseEventList.forEach(function(eventName) { + targetDiv.addEventListener(eventName, function(event) { + ++seqNo; + receivedEvents.push(`${seqNo}.${eventName}@target`); + }); + }); + + pointerEventList.forEach(function(eventName) { + targetDiv.addEventListener(eventName, function(event) { + var preventDefaultMsg = ""; + if (event.type == eventToPreventDefault) { + event.preventDefault(); + preventDefaultMsg = "_prevented_default"; + } + ++seqNo; + receivedEvents.push(`${seqNo}.${eventName}@target${preventDefaultMsg}`); + }); + }); +} + +var expectedEvents = new Map([ + ["none", ["1.pointerover@target", "2.pointerenter@target", "3.mouseover@target", + "4.mouseenter@target", "5.pointermove@target", "6.mousemove@target", + "7.pointerdown@target", "8.mousedown@target", "9.pointerup@target", + "10.mouseup@target", "11.pointerdown@target", "12.mousedown@target", + "13.pointermove@target", "14.mousemove@target", "15.pointerout@target", + "16.pointerleave@target", "17.mouseout@target", "18.mouseleave@target", + "19.pointerover@target", "20.pointerenter@target", "21.mouseover@target", + "22.mouseenter@target", "23.pointermove@target", "24.mousemove@target", + "25.pointerup@target", "26.mouseup@target", "27.pointerout@target", + "28.pointerleave@target", "29.mouseout@target", "30.mouseleave@target" + ]], + ["pointerdown", ["1.pointerover@target", "2.pointerenter@target", "3.mouseover@target", + "4.mouseenter@target", "5.pointermove@target", "6.mousemove@target", + "7.pointerdown@target_prevented_default", "8.pointerup@target", + "9.pointerdown@target_prevented_default", + "10.pointermove@target", "11.pointerout@target", "12.pointerleave@target", + "13.mouseout@target", "14.mouseleave@target", "15.pointerover@target", + "16.pointerenter@target", "17.mouseover@target", "18.mouseenter@target", + "19.pointermove@target", "20.pointerup@target", "21.pointerout@target", + "22.pointerleave@target", "23.mouseout@target", "24.mouseleave@target" + ]], + ["pointerup", ["1.pointerover@target", "2.pointerenter@target", "3.mouseover@target", + "4.mouseenter@target", "5.pointermove@target", "6.mousemove@target", + "7.pointerdown@target", "8.mousedown@target", "9.pointerup@target_prevented_default", + "10.mouseup@target", "11.pointerdown@target", "12.mousedown@target", + "13.pointermove@target", "14.mousemove@target", "15.pointerout@target", + "16.pointerleave@target", "17.mouseout@target", "18.mouseleave@target", + "19.pointerover@target", "20.pointerenter@target", "21.mouseover@target", + "22.mouseenter@target", "23.pointermove@target", "24.mousemove@target", + "25.pointerup@target_prevented_default", "26.mouseup@target", "27.pointerout@target", + "28.pointerleave@target", "29.mouseout@target", "30.mouseleave@target"]], + ["pointerenter", ["1.pointerover@target", "2.pointerenter@target_prevented_default", "3.mouseover@target", + "4.mouseenter@target", "5.pointermove@target", "6.mousemove@target", + "7.pointerdown@target", "8.mousedown@target", "9.pointerup@target", + "10.mouseup@target", "11.pointerdown@target", "12.mousedown@target", + "13.pointermove@target", "14.mousemove@target", "15.pointerout@target", + "16.pointerleave@target", "17.mouseout@target", "18.mouseleave@target", + "19.pointerover@target", "20.pointerenter@target_prevented_default", "21.mouseover@target", + "22.mouseenter@target", "23.pointermove@target", "24.mousemove@target", + "25.pointerup@target", "26.mouseup@target", "27.pointerout@target", + "28.pointerleave@target", "29.mouseout@target", "30.mouseleave@target"]], + ["pointerleave", ["1.pointerover@target", "2.pointerenter@target", "3.mouseover@target", + "4.mouseenter@target", "5.pointermove@target", "6.mousemove@target", + "7.pointerdown@target", "8.mousedown@target", "9.pointerup@target", + "10.mouseup@target", "11.pointerdown@target", "12.mousedown@target", + "13.pointermove@target", "14.mousemove@target", "15.pointerout@target", + "16.pointerleave@target_prevented_default", "17.mouseout@target", "18.mouseleave@target", + "19.pointerover@target", "20.pointerenter@target", "21.mouseover@target", + "22.mouseenter@target", "23.pointermove@target", "24.mousemove@target", + "25.pointerup@target", "26.mouseup@target", "27.pointerout@target", + "28.pointerleave@target_prevented_default", "29.mouseout@target", "30.mouseleave@target"]], + ["pointerover", ["1.pointerover@target_prevented_default", "2.pointerenter@target", "3.mouseover@target", + "4.mouseenter@target", "5.pointermove@target", "6.mousemove@target", + "7.pointerdown@target", "8.mousedown@target", "9.pointerup@target", + "10.mouseup@target", "11.pointerdown@target", "12.mousedown@target", + "13.pointermove@target", "14.mousemove@target", "15.pointerout@target", + "16.pointerleave@target", "17.mouseout@target", "18.mouseleave@target", + "19.pointerover@target_prevented_default", "20.pointerenter@target", "21.mouseover@target", + "22.mouseenter@target", "23.pointermove@target", "24.mousemove@target", + "25.pointerup@target", "26.mouseup@target", "27.pointerout@target", + "28.pointerleave@target", "29.mouseout@target", "30.mouseleave@target"]], + ["pointerout", ["1.pointerover@target", "2.pointerenter@target", "3.mouseover@target", + "4.mouseenter@target", "5.pointermove@target", "6.mousemove@target", + "7.pointerdown@target", "8.mousedown@target", "9.pointerup@target", + "10.mouseup@target", "11.pointerdown@target", "12.mousedown@target", + "13.pointermove@target", "14.mousemove@target", "15.pointerout@target_prevented_default", + "16.pointerleave@target", "17.mouseout@target", "18.mouseleave@target", + "19.pointerover@target", "20.pointerenter@target", "21.mouseover@target", + "22.mouseenter@target", "23.pointermove@target", "24.mousemove@target", + "25.pointerup@target", "26.mouseup@target", "27.pointerout@target_prevented_default", + "28.pointerleave@target", "29.mouseout@target", "30.mouseleave@target"]], + ["pointermove", ["1.pointerover@target", "2.pointerenter@target", "3.mouseover@target", + "4.mouseenter@target", "5.pointermove@target_prevented_default", "6.mousemove@target", + "7.pointerdown@target", "8.mousedown@target", "9.pointerup@target", + "10.mouseup@target", "11.pointerdown@target", "12.mousedown@target", + "13.pointermove@target_prevented_default", "14.mousemove@target", "15.pointerout@target", + "16.pointerleave@target", "17.mouseout@target", "18.mouseleave@target", + "19.pointerover@target", "20.pointerenter@target", "21.mouseover@target", + "22.mouseenter@target", "23.pointermove@target_prevented_default", "24.mousemove@target", + "25.pointerup@target", "26.mouseup@target", "27.pointerout@target", + "28.pointerleave@target", "29.mouseout@target", "30.mouseleave@target"]] +]); + +async function runTestForDefaultEvent(preventDefaultEvent) { + promise_test((test)=> + new Promise(async (resolve, reject)=>{ + test.add_cleanup(()=>{ + receivedEvents = []; + seqNo = 0; + eventToPreventDefault = ""; + }); + eventToPreventDefault = preventDefaultEvent; + + try{ + // if awaited Promise rejects then fail the test + await performActions(test, preventDefaultEvent); + } + catch(e){ + reject(e); + } + test.step(()=>{ + assert_array_equals(expectedEvents.get(preventDefaultEvent), receivedEvents);}); + resolve(); + }), `Verifies the effect of pointer event prevent-default on ${preventDefaultEvent}`); +} + +async function runTests(){ + // create one test for each event in preventDefaultList + // run all tests one by one + preventDefaultList.forEach(preventDefaultEvent=>runTestForDefaultEvent(preventDefaultEvent)); +} + +function performActions(test, preventDefaultEvent){ + let targetDiv = document.getElementById("target"); + let rect = targetDiv.getBoundingClientRect(); + let x1 = Math.ceil(rect.left - 3); + let y1 = Math.ceil(rect.top - 5); + let x2 = Math.ceil(rect.left + 3); + let y2 = Math.ceil(rect.top + 5); + + let eventWatcher = new EventWatcher(test, targetDiv, ["mouseleave"], ()=>waitForAnimationFrames(900)); + // wait for all expected events to happen. + // Because each test ends with mouseleave and there are 2 mouseleave events, + // we use EventWatcher to wait for the two mouseleave events to happen + let donePromise = eventWatcher.wait_for(["mouseleave", "mouseleave"], { record: 'all' }); + let actionsPromise = new test_driver.Actions() + .pointerMove(0, 0) + // start with mouse outside target + .pointerMove(x1, y1) + // move into target and click + .pointerMove(x2, y2) + .pointerDown() + .pointerUp() + // drag out of and into target & release within target + .pointerDown() + .pointerMove(x2+5, y2+5) + .pointerMove(x1, y1) + .pointerMove(x2, y2) + .pointerUp() + // move outside target again + .pointerMove(x1, y1) + .send(); + return Promise.all([donePromise, actionsPromise]); +} + +init(); +runTests(); +</script> diff --git a/tests/wpt/web-platform-tests/streams/readable-streams/tee.any.js b/tests/wpt/web-platform-tests/streams/readable-streams/tee.any.js index b6a95368aa5..55d4532ff83 100644 --- a/tests/wpt/web-platform-tests/streams/readable-streams/tee.any.js +++ b/tests/wpt/web-platform-tests/streams/readable-streams/tee.any.js @@ -317,6 +317,57 @@ promise_test(t => { }, 'ReadableStream teeing: erroring the original should immediately error the branches'); +promise_test(async t => { + + let controller; + const rs = new ReadableStream({ + start(c) { + controller = c; + } + }); + + const [reader1, reader2] = rs.tee().map(branch => branch.getReader()); + const cancelPromise = reader2.cancel(); + + controller.enqueue('a'); + + const read1 = await reader1.read(); + assert_object_equals(read1, { value: 'a', done: false }, 'first read() from branch1 should fulfill with the chunk'); + + controller.close(); + + const read2 = await reader1.read(); + assert_object_equals(read2, { value: undefined, done: true }, 'second read() from branch1 should be done'); + + await Promise.all([ + reader1.closed, + cancelPromise + ]); + +}, 'ReadableStream teeing: canceling branch1 should finish when branch2 reads until end of stream'); + +promise_test(async t => { + + let controller; + const theError = { name: 'boo!' }; + const rs = new ReadableStream({ + start(c) { + controller = c; + } + }); + + const [reader1, reader2] = rs.tee().map(branch => branch.getReader()); + const cancelPromise = reader2.cancel(); + + controller.error(theError); + + await Promise.all([ + promise_rejects_exactly(t, theError, reader1.read()), + cancelPromise + ]); + +}, 'ReadableStream teeing: canceling branch1 should finish when original stream errors'); + test(t => { // Copy original global. diff --git a/tests/wpt/web-platform-tests/tools/ci/tc/github_checks_output.py b/tests/wpt/web-platform-tests/tools/ci/tc/github_checks_output.py index d799be91166..16d39900298 100644 --- a/tests/wpt/web-platform-tests/tools/ci/tc/github_checks_output.py +++ b/tests/wpt/web-platform-tests/tools/ci/tc/github_checks_output.py @@ -21,7 +21,7 @@ def get_gh_checks_outputter(kwargs): """Return the outputter for GitHub Checks output, if enabled. :param kwargs: The arguments passed to the program (to look for the - --github_checks_text_file flag) + github_checks_text_file field) """ global __outputter if kwargs['github_checks_text_file'] and __outputter is None: diff --git a/tests/wpt/web-platform-tests/tools/serve/commands.json b/tests/wpt/web-platform-tests/tools/serve/commands.json index a5457b55a33..ed1d72e60ec 100644 --- a/tests/wpt/web-platform-tests/tools/serve/commands.json +++ b/tests/wpt/web-platform-tests/tools/serve/commands.json @@ -12,7 +12,6 @@ "parser": "get_parser", "help": "Run wptserve server for WAVE", "virtualenv": true, - "install": ["ua-parser"], "requirements": ["../wave/requirements.txt"] } } diff --git a/tests/wpt/web-platform-tests/tools/serve/test_functional.py b/tests/wpt/web-platform-tests/tools/serve/test_functional.py index 894479d111c..5a918c2ee47 100644 --- a/tests/wpt/web-platform-tests/tools/serve/test_functional.py +++ b/tests/wpt/web-platform-tests/tools/serve/test_functional.py @@ -9,6 +9,7 @@ try: import Queue as queue # noqa: N813 except ImportError: import queue +import sys import tempfile import threading @@ -45,6 +46,8 @@ def tempfile_name(): os.remove(name) +@pytest.mark.skipif(sys.version_info >= (3, 8) and sys.platform == 'darwin', + reason="multiprocessing test hangs in Python 3.8 on macOS (#24880)") def test_subprocess_exit(server_subprocesses, tempfile_name): timeout = 30 diff --git a/tests/wpt/web-platform-tests/tools/wpt/commands.json b/tests/wpt/web-platform-tests/tools/wpt/commands.json index a47ab40d728..51f66d0decb 100644 --- a/tests/wpt/web-platform-tests/tools/wpt/commands.json +++ b/tests/wpt/web-platform-tests/tools/wpt/commands.json @@ -6,7 +6,6 @@ "help": "Run tests in a browser", "virtualenv": true, "install": [ - "requests", "zstandard" ], "requirements": [ @@ -25,9 +24,6 @@ "parser": "create_parser_update", "help": "Update expectations files from raw logs.", "virtualenv": true, - "install": [ - "requests" - ], "requirements": [ "../wptrunner/requirements.txt" ] @@ -51,6 +47,7 @@ "script": "run", "parser": "get_parser", "help": "Install browser components", + "virtualenv": true, "install": [ "mozinstall" ] diff --git a/tests/wpt/web-platform-tests/tools/wpt/tests/test_wpt.py b/tests/wpt/web-platform-tests/tools/wpt/tests/test_wpt.py index b5ae79d1311..0b6aff42d57 100644 --- a/tests/wpt/web-platform-tests/tools/wpt/tests/test_wpt.py +++ b/tests/wpt/web-platform-tests/tools/wpt/tests/test_wpt.py @@ -188,6 +188,8 @@ def test_run_zero_tests(): @pytest.mark.slow @pytest.mark.remote_network +@pytest.mark.skipif(sys.version_info >= (3, 8) and sys.platform == 'darwin', + reason="multiprocessing test hangs in Python 3.8 on macOS (#24880)") def test_run_failing_test(): """Failing tests should be reported with a non-zero exit status unless the `--no-fail-on-unexpected` option has been specified.""" @@ -211,6 +213,8 @@ def test_run_failing_test(): @pytest.mark.slow @pytest.mark.remote_network +@pytest.mark.skipif(sys.version_info >= (3, 8) and sys.platform == 'darwin', + reason="multiprocessing test hangs in Python 3.8 on macOS (#24880)") def test_run_verify_unstable(temp_test): """Unstable tests should be reported with a non-zero exit status. Stable tests should be reported with a zero exit status.""" diff --git a/tests/wpt/web-platform-tests/tools/wpt/wpt.py b/tests/wpt/web-platform-tests/tools/wpt/wpt.py index 395db0394da..efa985c7cc1 100644 --- a/tests/wpt/web-platform-tests/tools/wpt/wpt.py +++ b/tests/wpt/web-platform-tests/tools/wpt/wpt.py @@ -38,6 +38,8 @@ def load_commands(): "requirements": [os.path.join(base_dir, item) for item in props.get("requirements", [])] } + if rv[command]["install"] or rv[command]["requirements"]: + assert rv[command]["virtualenv"] return rv diff --git a/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/test_stash.py b/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/test_stash.py index 1c4c9ad933a..0b960c1e9f8 100644 --- a/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/test_stash.py +++ b/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/test_stash.py @@ -1,3 +1,4 @@ +import sys import unittest import uuid @@ -9,6 +10,8 @@ from wptserve.stash import StashServer from .base import TestUsingServer +@pytest.mark.skipif(sys.version_info >= (3, 8) and sys.platform == 'darwin', + reason="multiprocessing test hangs in Python 3.8 on macOS (#24880)") class TestResponseSetCookie(TestUsingServer): def run(self, result=None): with StashServer(None, authkey=str(uuid.uuid4())): diff --git a/tests/wpt/web-platform-tests/webxr/render_state_update.https.html b/tests/wpt/web-platform-tests/webxr/render_state_update.https.html new file mode 100644 index 00000000000..2f28d442ec9 --- /dev/null +++ b/tests/wpt/web-platform-tests/webxr/render_state_update.https.html @@ -0,0 +1,96 @@ +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/webxr_util.js"></script> +<script src="resources/webxr_test_constants.js"></script> +<canvas /> + +<script> +let fakeDeviceInitParams = TRACKED_IMMERSIVE_DEVICE; + +let testSessionEnded = function(session, fakeDeviceController, t) { + return new Promise((resolve, reject) => { + resolve(session.end().then(() => { + t.step(() => { + assert_throws_dom('InvalidStateError', () => session.updateRenderState({})); + }); + })); + }); +}; + + +let testBaseLayer = function(session, fakeDeviceController, t, sessionObjects) { + return new Promise((resolve, reject) => { + navigator.xr.test.simulateUserActivation(() => { + navigator.xr.requestSession('inline').then((tempSession) => { + t.step(() => { + assert_not_equals(session, tempSession); + assert_throws_dom('InvalidStateError', () => session.updateRenderState({ baseLayer : new XRWebGLLayer(tempSession, sessionObjects.gl), })); + }); + }); + resolve(); + }); + }); +}; + +let testFieldOfView = function(session, fakeDeviceController, t) { + return new Promise((resolve, reject) => { + t.step(() => { + assert_throws_dom('InvalidStateError', () => session.updateRenderState({ inlineVerticalFieldOfView : Math.PI, })); + }); + resolve(); + }); +}; + +let testNoParams = function(session, fakeDeviceController, t) { + return new Promise((resolve, reject) => { + try { + session.updateRenderState({}); + } catch (err) { + assert_unreached("updateRenderState should not fail (actually not do anything) with no params"); + } + resolve(); + }); +}; + +let testParams = function(session, fakeDeviceController, t, sessionObjects) { + return new Promise((resolve, reject) => { + let gl = sessionObjects.gl; + try { + gl.makeXRCompatible().then(() => { + t.step(() => { + let fov = Math.PI; + let near = 0.2; + let far = 0.8; + let layer = new XRWebGLLayer(session, gl); + session.updateRenderState({ inlineVerticalFieldOfView: fov, depthNear: near, depthFar: far, baseLayer: layer }); + // The update can only happen between frame boundaries, updateRenderState only queues changes. + assert_not_equals(session.renderState.inlineVerticalFieldOfView, fov); + assert_not_equals(session.renderState.depthNear, near); + assert_not_equals(session.renderState.depthFar, far); + assert_not_equals(session.renderState.baseLayer, layer); + }); + }); + } catch (err) { + assert_unreached("updateRenderState should not fail when all params are specified"); + } + resolve(); + }); +}; + +let testName = "updateRenderState handles appropriately ended sessions"; +xr_session_promise_test(testName, testSessionEnded, fakeDeviceInitParams, 'immersive-vr'); + +testName = "updateRenderState handles appropriately baseLayers created with different sessions"; +xr_session_promise_test(testName, testBaseLayer, fakeDeviceInitParams, 'immersive-vr'); + +testName = "updateRenderState handles appropriately immersive sessions with specified inlineVerticalFieldOfView"; +xr_session_promise_test(testName, testFieldOfView, fakeDeviceInitParams, 'immersive-vr'); + +testName = "updateRenderState handles appropriately XRRenderStateInit with no params"; +xr_session_promise_test(testName, testNoParams, fakeDeviceInitParams, 'immersive-vr'); + +testName = "updateRenderState handles appropriately XRRenderStateInit params"; +xr_session_promise_test(testName, testParams, fakeDeviceInitParams, 'inline'); + +</script> diff --git a/tests/wpt/web-platform-tests/workers/interfaces/WorkerGlobalScope/onerror/exception-in-onerror.html b/tests/wpt/web-platform-tests/workers/interfaces/WorkerGlobalScope/onerror/exception-in-onerror.html index 840433d3d89..d8aa02a01b8 100644 --- a/tests/wpt/web-platform-tests/workers/interfaces/WorkerGlobalScope/onerror/exception-in-onerror.html +++ b/tests/wpt/web-platform-tests/workers/interfaces/WorkerGlobalScope/onerror/exception-in-onerror.html @@ -1,19 +1,91 @@ <!doctype html> -<title>onerror, "not handled" with an error in the onerror function</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<div id="log"></div> <script> -async_test(function() { - var worker = new Worker('exception-in-onerror.js'); - worker.onerror = this.step_func(function(e) { - assert_true(e instanceof ErrorEvent, 'e instanceof ErrorEvent'); - assert_equals(typeof e.message, 'string', 'typeof e.message'); - assert_equals(e.filename, document.URL.replace('.html', '.js'), 'e.filename'); - assert_equals(typeof e.lineno, 'number', 'typeof e.lineno'); - assert_equals(typeof e.colno, 'number', 'typeof e.column'); - e.preventDefault(); // "handled" - this.done(); - }); -}); -</script>
\ No newline at end of file +// 1. Exception is thrown somewhere in a Worker. +// Various contexts are tested: from worker initialization, +// from setTimeout, from event handlers, etc. +// 2. WorkerGlobalScope.onerror event handler is called. +// (i.e. `onerror` in the worker script) +// 3. From the event handler, another exception is thrown. +// 4. Each of Worker.onerror handler (on the parent Document) and +// Worker error event listener should be called twice: +// once for each of the exceptions thrown in Step 1 and 2, respectively. +// (We don't check the ordering of two Worker.onerror calls, because +// browsers fires them in different orders) + +function prepareHandler(t, messages) { + const fired = {}; + let fired_count = 0; + t.step_timeout(() => { + if (fired_count < messages.length) { + let error_description = 'Worker.onerror not fired for:'; + for (const message of messages) { + if (!fired[message]) { + error_description += ' '; + error_description += message; + } + } + assert_unreached(error_description); + } + }, 2000); + return t.step_func(e => { + e.preventDefault(); + for (const message of messages) { + if (!fired[message] && e.message.indexOf(message) >= 0) { + fired[message] = true; + ++fired_count; + if (fired_count === messages.length) { + // Worker.onerror is fired for all messages. + t.done(); + } + return; + } + } + assert_unreached("Unexpected worker.onerror message: " + e.message); + }); +} + +function expectErrors(worker, title, messages) { + async_test(t => { + worker.addEventListener('error', prepareHandler(t, messages)); + }, title+ ': listener'); + async_test(t => { + worker.onerror = prepareHandler(t, messages); + }, title + ': handler'); +} + +for (const type of ['classic', 'module']) { + const workerOptions = type === 'module' ? {type: 'module'}: {}; + + const worker1 = new Worker( + 'exception-in-onerror.js?throw-in-worker-initialization', + workerOptions); + expectErrors( + worker1, + 'Throw in worker initialization: ' + type, + ['Throw in worker initialization', 'Throw in error handler']); + + const worker2 = new Worker( + 'exception-in-onerror.js?throw-in-setTimeout-function', workerOptions); + expectErrors( + worker2, + 'Throw in setTimeout(function): ' + type, + ['Throw in setTimeout function', 'Throw in error handler']); + + const worker3 = new Worker( + 'exception-in-onerror.js?throw-in-setTimeout-string', workerOptions); + expectErrors( + worker3, + 'Throw in setTimeout(string): ' + type, + ['Throw in setTimeout string', 'Throw in error handler']); + + const worker4 = new Worker('exception-in-onerror.js', workerOptions); + worker4.postMessage('foo'); + expectErrors( + worker4, + 'Throw in message handler: ' + type, + ['Throw in message handler', 'Throw in error handler']); + +} +</script> diff --git a/tests/wpt/web-platform-tests/workers/interfaces/WorkerGlobalScope/onerror/exception-in-onerror.js b/tests/wpt/web-platform-tests/workers/interfaces/WorkerGlobalScope/onerror/exception-in-onerror.js index 2bf4124cb74..61a95dda51f 100644 --- a/tests/wpt/web-platform-tests/workers/interfaces/WorkerGlobalScope/onerror/exception-in-onerror.js +++ b/tests/wpt/web-platform-tests/workers/interfaces/WorkerGlobalScope/onerror/exception-in-onerror.js @@ -1,7 +1,25 @@ -onerror = function(a, b, c, d) { - y(); // the error is "not handled" +onerror = function() { + throw new Error('Throw in error handler'); + return false; +}; +onmessage = function() { + throw new Error('Throw in message handler'); + return false; +}; + +if (self.location.href.indexOf( + 'throw-in-worker-initialization') >= 0) { + throw new Error('Throw in worker initialization'); } -function x() { - y(); + +if (self.location.href.indexOf( + 'throw-in-setTimeout-function') >= 0) { + // To test the behavior of setTimeout(), raw setTimeout() is used. + setTimeout(() => { throw new Error('Throw in setTimeout function') }, 0); +} + +if (self.location.href.indexOf( + 'throw-in-setTimeout-string') >= 0) { + // To test the behavior of setTimeout(), raw setTimeout() is used. + setTimeout("throw new Error('Throw in setTimeout string')", 0); } -x();
\ No newline at end of file |