aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWPT Sync Bot <josh+wptsync@joshmatthews.net>2020-08-06 08:21:26 +0000
committerWPT Sync Bot <josh+wptsync@joshmatthews.net>2020-08-06 10:31:21 +0000
commit92d17be4fe755195d2019bb22ad5387e88a35bef (patch)
tree803192cebd57b543fdc40ae101e74cb646dd3f60
parent39c3f46375f2baf33c46d92ab5c110766330a6d8 (diff)
downloadservo-92d17be4fe755195d2019bb22ad5387e88a35bef.tar.gz
servo-92d17be4fe755195d2019bb22ad5387e88a35bef.zip
Update web-platform-tests to revision 5fe9625d7445a6b88640f830d90dd5489c4bda05
-rw-r--r--tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-002.html.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-004.html.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-005.html.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/css/cssom-view/CaretPosition-001.html.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini10
-rw-r--r--tests/wpt/metadata-layout-2020/fetch/content-type/script.window.js.ini5
-rw-r--r--tests/wpt/metadata-layout-2020/fetch/cross-origin-resource-policy/image-loads.html.ini2
-rw-r--r--tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/html/interaction/focus/the-autofocus-attribute/skip-another-top-level-browsing-context.html.ini5
-rw-r--r--tests/wpt/metadata-layout-2020/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini10
-rw-r--r--tests/wpt/metadata-layout-2020/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-flexbox.html.ini2
-rw-r--r--tests/wpt/metadata-layout-2020/html/semantics/embedded-content/image-maps/image-map-processing-model/hash-name-reference.html.ini3
-rw-r--r--tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini3
-rw-r--r--tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini2
-rw-r--r--tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini1
-rw-r--r--tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini3
-rw-r--r--tests/wpt/metadata-layout-2020/html/semantics/forms/form-submission-0/form-double-submit-3.html.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/html/semantics/forms/form-submission-0/form-double-submit.html.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/html/webappapis/dynamic-markup-insertion/document-write/iframe_005.html.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html.ini5
-rw-r--r--tests/wpt/metadata-layout-2020/streams/readable-streams/tee.any.js.ini59
-rw-r--r--tests/wpt/metadata-layout-2020/webmessaging/with-ports/018.html.ini5
-rw-r--r--tests/wpt/metadata-layout-2020/webmessaging/without-ports/017.html.ini5
-rw-r--r--tests/wpt/metadata-layout-2020/workers/constructors/Worker/Worker-constructor.html.ini2
-rw-r--r--tests/wpt/metadata-layout-2020/workers/interfaces/WorkerGlobalScope/onerror/exception-in-onerror.html.ini49
-rw-r--r--tests/wpt/metadata-layout-2020/workers/shared-worker-in-data-url-context.window.js.ini3
-rw-r--r--tests/wpt/metadata/MANIFEST.json295
-rw-r--r--tests/wpt/metadata/css/CSS2/floats/hit-test-floats-002.html.ini4
-rw-r--r--tests/wpt/metadata/css/CSS2/floats/hit-test-floats-004.html.ini4
-rw-r--r--tests/wpt/metadata/css/CSS2/floats/hit-test-floats-005.html.ini4
-rw-r--r--tests/wpt/metadata/css/cssom-view/CaretPosition-001.html.ini4
-rw-r--r--tests/wpt/metadata/fetch/content-type/response.window.js.ini10
-rw-r--r--tests/wpt/metadata/fetch/content-type/script.window.js.ini5
-rw-r--r--tests/wpt/metadata/fetch/cross-origin-resource-policy/image-loads.html.ini2
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini4
-rw-r--r--tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/skip-another-top-level-browsing-context.html.ini5
-rw-r--r--tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini10
-rw-r--r--tests/wpt/metadata/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-flexbox.html.ini2
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/image-maps/image-map-processing-model/hash-name-reference.html.ini3
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini3
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini2
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini1
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini3
-rw-r--r--tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-3.html.ini4
-rw-r--r--tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit.html.ini4
-rw-r--r--tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/document-write/iframe_005.html.ini4
-rw-r--r--tests/wpt/metadata/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html.ini5
-rw-r--r--tests/wpt/metadata/streams/readable-streams/tee.any.js.ini44
-rw-r--r--tests/wpt/metadata/webmessaging/with-ports/018.html.ini5
-rw-r--r--tests/wpt/metadata/webmessaging/without-ports/017.html.ini5
-rw-r--r--tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini2
-rw-r--r--tests/wpt/metadata/workers/interfaces/WorkerGlobalScope/onerror/exception-in-onerror.html.ini49
-rw-r--r--tests/wpt/metadata/workers/shared-worker-in-data-url-context.window.js.ini3
-rw-r--r--tests/wpt/mozilla/meta/mozilla/getBoundingClientRect.html.ini4
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/reporting/report-frame-ancestors-with-x-frame-options.sub.html12
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/reporting/report-frame-ancestors.sub.html2
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/reporting/support/not-embeddable-frame.html0
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/reporting/support/not-embeddable-frame.html.sub.headers5
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/reporting/support/not-embeddable-frame.py10
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-1-ref.html39
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-1.html45
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-10.html50
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-2-ref.html53
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-2.html50
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-3-ref.html53
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-3.html50
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-4-ref.html53
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-4.html50
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-5-ref.html53
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-5.html50
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-6-ref.html54
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-6.html51
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-7-ref.html54
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-7.html51
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-8-ref.html27
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-8.html50
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-9.html50
-rw-r--r--tests/wpt/web-platform-tests/css/css-paint-api/paint-function-this-value.https.html43
-rw-r--r--tests/wpt/web-platform-tests/docs/writing-tests/index.md90
-rw-r--r--tests/wpt/web-platform-tests/docs/writing-tests/testharness.md2
-rw-r--r--tests/wpt/web-platform-tests/dom/events/AddEventListenerOptions-once.html17
-rw-r--r--tests/wpt/web-platform-tests/dom/nodes/MutationObserver-callback-arguments.html31
-rw-r--r--tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/reporting-observer.html137
-rw-r--r--tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/resources/dispatcher.py21
-rw-r--r--tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-flexbox.html11
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/allow-scripts-flag-changing-1.html8
-rw-r--r--tests/wpt/web-platform-tests/intersection-observer/observer-callback-arguments.html28
-rw-r--r--tests/wpt/web-platform-tests/layout-instability/child-shift-with-parent-overflow-hidden.html32
-rw-r--r--tests/wpt/web-platform-tests/layout-instability/child-shift-with-parent.html34
-rw-r--r--tests/wpt/web-platform-tests/layout-instability/inline-flow-shift-vertical-rl.html44
-rw-r--r--tests/wpt/web-platform-tests/layout-instability/inline-flow-shift.html42
-rw-r--r--tests/wpt/web-platform-tests/layout-instability/outline.html21
-rw-r--r--tests/wpt/web-platform-tests/pointerevents/compat/pointerevent_mouse-pointer-preventdefault.html199
-rw-r--r--tests/wpt/web-platform-tests/streams/readable-streams/tee.any.js51
-rw-r--r--tests/wpt/web-platform-tests/tools/ci/tc/github_checks_output.py2
-rw-r--r--tests/wpt/web-platform-tests/tools/serve/commands.json1
-rw-r--r--tests/wpt/web-platform-tests/tools/serve/test_functional.py3
-rw-r--r--tests/wpt/web-platform-tests/tools/wpt/commands.json5
-rw-r--r--tests/wpt/web-platform-tests/tools/wpt/tests/test_wpt.py4
-rw-r--r--tests/wpt/web-platform-tests/tools/wpt/wpt.py2
-rw-r--r--tests/wpt/web-platform-tests/tools/wptserve/tests/functional/test_stash.py3
-rw-r--r--tests/wpt/web-platform-tests/webxr/render_state_update.https.html96
-rw-r--r--tests/wpt/web-platform-tests/workers/interfaces/WorkerGlobalScope/onerror/exception-in-onerror.html102
-rw-r--r--tests/wpt/web-platform-tests/workers/interfaces/WorkerGlobalScope/onerror/exception-in-onerror.js28
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