aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/wpt/metadata-layout-2020/FileAPI/url/url-in-tags-revoke.window.js.ini2
-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/css-transforms/transform-scale-hittest.html.ini3
-rw-r--r--tests/wpt/metadata-layout-2020/css/css-transitions/no-transition-from-ua-to-blocking-stylesheet.html.ini2
-rw-r--r--tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-001.html.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPosition.html.ini3
-rw-r--r--tests/wpt/metadata-layout-2020/css/cssom-view/elementsFromPoint-invalid-cases.html.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/css/cssom/cssstyledeclaration-csstext.html.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/css/cssom/cssstyledeclaration-custom-properties.html.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/css/filter-effects/fecomposite-non-zero-inoffset-001.html.ini2
-rw-r--r--tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini12
-rw-r--r--tests/wpt/metadata-layout-2020/fetch/content-type/script.window.js.ini3
-rw-r--r--tests/wpt/metadata-layout-2020/fetch/nosniff/parsing-nosniff.window.js.ini3
-rw-r--r--tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_3.html.ini (renamed from tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini)2
-rw-r--r--tests/wpt/metadata-layout-2020/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini4
-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/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html.ini3
-rw-r--r--tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-multi-channels.html.ini3
-rw-r--r--tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini6
-rw-r--r--tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini2
-rw-r--r--tests/wpt/metadata/MANIFEST.json207
-rw-r--r--tests/wpt/metadata/css/CSS2/floats/hit-test-floats-002.html.ini4
-rw-r--r--tests/wpt/metadata/css/css-transforms/transform-scale-hittest.html.ini3
-rw-r--r--tests/wpt/metadata/css/css-transitions/no-transition-from-ua-to-blocking-stylesheet.html.ini2
-rw-r--r--tests/wpt/metadata/css/cssom-view/elementFromPoint-001.html.ini4
-rw-r--r--tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini3
-rw-r--r--tests/wpt/metadata/css/cssom-view/elementsFromPoint-invalid-cases.html.ini4
-rw-r--r--tests/wpt/metadata/css/cssom/cssstyledeclaration-csstext.html.ini4
-rw-r--r--tests/wpt/metadata/css/cssom/cssstyledeclaration-custom-properties.html.ini4
-rw-r--r--tests/wpt/metadata/css/filter-effects/fecomposite-non-zero-inoffset-001.html.ini2
-rw-r--r--tests/wpt/metadata/fetch/content-type/response.window.js.ini12
-rw-r--r--tests/wpt/metadata/fetch/content-type/script.window.js.ini3
-rw-r--r--tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini3
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_3.html.ini (renamed from tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini)2
-rw-r--r--tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini4
-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/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html.ini3
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-multi-channels.html.ini3
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini6
-rw-r--r--tests/wpt/web-platform-tests/contenteditable/META.yml3
-rw-r--r--tests/wpt/web-platform-tests/contenteditable/plaintext-only.html20
-rw-r--r--tests/wpt/web-platform-tests/css/css-cascade/revert-val-006.html28
-rw-r--r--tests/wpt/web-platform-tests/css/css-cascade/revert-val-007.html34
-rw-r--r--tests/wpt/web-platform-tests/css/css-cascade/revert-val-008.html32
-rw-r--r--tests/wpt/web-platform-tests/css/css-cascade/revert-val-009.html30
-rw-r--r--tests/wpt/web-platform-tests/css/css-cascade/revert-val-010.html36
-rw-r--r--tests/wpt/web-platform-tests/css/css-flexbox/flexitem-stretch-image.html4
-rw-r--r--tests/wpt/web-platform-tests/css/css-flexbox/negative-flex-margins-crash.html21
-rw-r--r--tests/wpt/web-platform-tests/css/css-flexbox/negative-flex-rounding-crash.html46
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/grid-model/grid-layout-stale-001.html42
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/grid-model/grid-layout-stale-002.html30
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/grid-model/reference/grid-layout-stale-001-ref.html13
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/grid-model/reference/grid-layout-stale-002-ref.html4
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/grid-tracks-stretched-with-different-flex-factors-sum.html57
-rw-r--r--tests/wpt/web-platform-tests/css/css-properties-values-api/registered-property-revert.html46
-rw-r--r--tests/wpt/web-platform-tests/css/cssom/cssstyledeclaration-csstext.html12
-rw-r--r--tests/wpt/web-platform-tests/css/cssom/cssstyledeclaration-custom-properties.html19
-rw-r--r--tests/wpt/web-platform-tests/css/filter-effects/fecomposite-non-zero-inoffset-001.html21
-rw-r--r--tests/wpt/web-platform-tests/css/filter-effects/reference/fecomposite-non-zero-inoffset-001-ref.html4
-rw-r--r--tests/wpt/web-platform-tests/css/filter-effects/reference/remove-filter-repaint-ref.html41
-rw-r--r--tests/wpt/web-platform-tests/css/filter-effects/remove-filter-repaint.html60
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/forms/the-label-element/clicking-interactive-content.html11
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/forms/the-label-element/clicking-noninteractive-unlabelable-content.html10
-rw-r--r--tests/wpt/web-platform-tests/preload/subresource-integrity-partial-image.html28
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/add_cookie/add.py27
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/collections.py4
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/execute_script/collections.py4
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/get_alert_text/get.py8
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/get_current_url/get.py4
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/get_named_cookie/get.py20
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/new_session/create_alwaysMatch.py2
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/new_session/create_firstMatch.py2
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/new_session/invalid_capabilities.py2
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/new_session/response.py15
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/perform_actions/support/keys.py5
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/status/status.py4
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/support/asserts.py8
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/support/authentication.py4
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/support/fixtures.py9
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/support/http_request.py5
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/support/image.py4
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/support/inline.py4
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/switch_to_frame/cross_origin.py2
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/switch_to_frame/switch.py2
-rw-r--r--tests/wpt/web-platform-tests/webxr/hit-test/xrRay_constructor.https.html30
-rw-r--r--tests/wpt/web-platform-tests/webxr/resources/webxr_test_constants_fake_world.js20
86 files changed, 1019 insertions, 167 deletions
diff --git a/tests/wpt/metadata-layout-2020/FileAPI/url/url-in-tags-revoke.window.js.ini b/tests/wpt/metadata-layout-2020/FileAPI/url/url-in-tags-revoke.window.js.ini
index 76b44d9e9cf..3605e8f3fc9 100644
--- a/tests/wpt/metadata-layout-2020/FileAPI/url/url-in-tags-revoke.window.js.ini
+++ b/tests/wpt/metadata-layout-2020/FileAPI/url/url-in-tags-revoke.window.js.ini
@@ -4,7 +4,7 @@
expected: TIMEOUT
[Opening a blob URL in a new window immediately before revoking it works.]
- expected: FAIL
+ expected: TIMEOUT
[Fetching a blob URL immediately before revoking it works in an iframe.]
expected: FAIL
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/css-transforms/transform-scale-hittest.html.ini b/tests/wpt/metadata-layout-2020/css/css-transforms/transform-scale-hittest.html.ini
index 4a1e8110f6f..f8e7e539aae 100644
--- a/tests/wpt/metadata-layout-2020/css/css-transforms/transform-scale-hittest.html.ini
+++ b/tests/wpt/metadata-layout-2020/css/css-transforms/transform-scale-hittest.html.ini
@@ -2,3 +2,6 @@
[Hit test intersecting scaled box]
expected: FAIL
+ [Hit test within unscaled box]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/css/css-transitions/no-transition-from-ua-to-blocking-stylesheet.html.ini b/tests/wpt/metadata-layout-2020/css/css-transitions/no-transition-from-ua-to-blocking-stylesheet.html.ini
index e35a452a186..70a00a101f6 100644
--- a/tests/wpt/metadata-layout-2020/css/css-transitions/no-transition-from-ua-to-blocking-stylesheet.html.ini
+++ b/tests/wpt/metadata-layout-2020/css/css-transitions/no-transition-from-ua-to-blocking-stylesheet.html.ini
@@ -1,2 +1,2 @@
[no-transition-from-ua-to-blocking-stylesheet.html]
- expected: TIMEOUT
+ expected: FAIL
diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-001.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-001.html.ini
deleted file mode 100644
index e38782d8c85..00000000000
--- a/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-001.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[elementFromPoint-001.html]
- [CSSOM View - 5 - extensions to the Document interface]
- expected: FAIL
-
diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPosition.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPosition.html.ini
index c131078eace..23c61ede1a1 100644
--- a/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPosition.html.ini
+++ b/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPosition.html.ini
@@ -17,3 +17,6 @@
[test the top of layer]
expected: FAIL
+ [test some point of the element: top left corner]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/elementsFromPoint-invalid-cases.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/elementsFromPoint-invalid-cases.html.ini
new file mode 100644
index 00000000000..e181af5397f
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/css/cssom-view/elementsFromPoint-invalid-cases.html.ini
@@ -0,0 +1,4 @@
+[elementsFromPoint-invalid-cases.html]
+ [The root element is the last element returned for otherwise empty queries within the viewport]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/css/cssom/cssstyledeclaration-csstext.html.ini b/tests/wpt/metadata-layout-2020/css/cssom/cssstyledeclaration-csstext.html.ini
new file mode 100644
index 00000000000..c6715d49f44
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/css/cssom/cssstyledeclaration-csstext.html.ini
@@ -0,0 +1,4 @@
+[cssstyledeclaration-csstext.html]
+ [cssText on computed style declaration returns the empty string]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/css/cssom/cssstyledeclaration-custom-properties.html.ini b/tests/wpt/metadata-layout-2020/css/cssom/cssstyledeclaration-custom-properties.html.ini
new file mode 100644
index 00000000000..595199d7d35
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/css/cssom/cssstyledeclaration-custom-properties.html.ini
@@ -0,0 +1,4 @@
+[cssstyledeclaration-custom-properties.html]
+ [Custom properties are included in computed style]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/css/filter-effects/fecomposite-non-zero-inoffset-001.html.ini b/tests/wpt/metadata-layout-2020/css/filter-effects/fecomposite-non-zero-inoffset-001.html.ini
new file mode 100644
index 00000000000..055c56143e6
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/css/filter-effects/fecomposite-non-zero-inoffset-001.html.ini
@@ -0,0 +1,2 @@
+[fecomposite-non-zero-inoffset-001.html]
+ 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 18aea709ba7..6adf3645101 100644
--- a/tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini
+++ b/tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini
@@ -312,21 +312,21 @@
[Response: combined response Content-Type: text/html;" \\" text/plain ";charset=GBK]
expected: NOTRUN
- [<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;" \\" text/plain]
expected: FAIL
- [<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
+ [<iframe>: combined response Content-Type: text/html;x=" text/plain]
+ expected: FAIL
+
+ [<iframe>: combined response Content-Type: text/html;" text/plain]
expected: FAIL
- [<iframe>: separate response Content-Type: text/html */*]
+ [<iframe>: combined response Content-Type: */* text/html]
expected: FAIL
- [<iframe>: combined response Content-Type: text/html;x=" text/plain]
+ [<iframe>: separate response Content-Type: 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 d2df9b78483..b2ffc8abf78 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
@@ -56,3 +56,6 @@
[separate text/javascript x/x]
expected: FAIL
+ [separate text/javascript error]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/fetch/nosniff/parsing-nosniff.window.js.ini b/tests/wpt/metadata-layout-2020/fetch/nosniff/parsing-nosniff.window.js.ini
index d4ba399b762..87c807a49ff 100644
--- a/tests/wpt/metadata-layout-2020/fetch/nosniff/parsing-nosniff.window.js.ini
+++ b/tests/wpt/metadata-layout-2020/fetch/nosniff/parsing-nosniff.window.js.ini
@@ -11,6 +11,3 @@
[X-Content-Type-Options%3A%20nosniff%0C]
expected: FAIL
- [X-Content-Type-Options%3A%20'NosniFF']
- expected: FAIL
-
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_3.html.ini
index dc2e45516de..51f8272a6de 100644
--- 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_3.html.ini
@@ -1,4 +1,4 @@
-[traverse_the_history_5.html]
+[traverse_the_history_3.html]
[Multiple history traversals, last would be aborted]
expected: FAIL
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 af14e19a466..c9d963b55d2 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
@@ -7,7 +7,7 @@
expected: NOTRUN
[Element with tabindex should support autofocus]
- expected: TIMEOUT
+ expected: FAIL
[Area element should support autofocus]
expected: NOTRUN
@@ -16,5 +16,5 @@
expected: NOTRUN
[Non-HTMLElement should not support autofocus]
- expected: NOTRUN
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini
index f4f994c5d6f..7a36937927c 100644
--- a/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini
+++ b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini
@@ -1,5 +1,4 @@
[iframe_sandbox_popups_nonescaping-3.html]
- expected: TIMEOUT
[Check that popups from a sandboxed iframe do not escape the sandbox]
- expected: NOTRUN
+ 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 d16e3ccb769..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,5 +1,4 @@
[promise-job-entry.html]
- expected: TIMEOUT
[Fulfillment handler on fulfilled promise]
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/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-multi-channels.html.ini b/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-multi-channels.html.ini
index 84787faa62f..77032256502 100644
--- a/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-multi-channels.html.ini
+++ b/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-multi-channels.html.ini
@@ -74,3 +74,6 @@
[X Rendered audio for channel 5 does not equal [0,0.0626220703125,0.125030517578125,0.18695068359375,0.24810791015625,0.308319091796875,0.3673095703125,0.42486572265625,0.480743408203125,0.53472900390625,0.58660888671875,0.636199951171875,0.68328857421875,0.727691650390625,0.76922607421875,0.8077392578125...\] with an element-wise tolerance of {"absoluteThreshold":0.000030517578125,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[1\]\t3.6732959747314453e-1\t6.2622070312500000e-2\t3.0470752716064453e-1\t4.8658168859649127e+0\t3.0517578125000000e-5\n\t[2\]\t6.8329977989196777e-1\t1.2503051757812500e-1\t5.5826926231384277e-1\t4.4650639949963384e+0\t3.0517578125000000e-5\n\t[3\]\t9.0373212099075317e-1\t1.8695068359375000e-1\t7.1678143739700317e-1\t3.8340669508039502e+0\t3.0517578125000000e-5\n\t[4\]\t9.9780619144439697e-1\t2.4810791015625000e-1\t7.4969828128814697e-1\t3.0216621502152523e+0\t3.0517578125000000e-5\n\t[5\]\t9.5236867666244507e-1\t3.0831909179687500e-1\t6.4404958486557007e-1\t2.0889059484187866e+0\t3.0517578125000000e-5\n\t...and 44065 more errors.\n\tMax AbsError of 1.9986611604690552e+0 at index of 15080.\n\t[15080\]\t-9.9994289875030518e-1\t9.9871826171875000e-1\t1.9986611604690552e+0\t2.0012262087101997e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 10584.\n\t[10584\]\t-5.8778524398803711e-1\t0.0000000000000000e+0\t5.8778524398803711e-1\tInfinity\t3.0517578125000000e-5\n]
expected: FAIL
+ [X Rendered audio for channel 5 does not equal [0,0.0626220703125,0.125030517578125,0.18695068359375,0.24810791015625,0.308319091796875,0.3673095703125,0.42486572265625,0.480743408203125,0.53472900390625,0.58660888671875,0.636199951171875,0.68328857421875,0.727691650390625,0.76922607421875,0.8077392578125...\] with an element-wise tolerance of {"absoluteThreshold":0.000030517578125,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[1\]\t3.6732959747314453e-1\t6.2622070312500000e-2\t3.0470752716064453e-1\t4.8658168859649127e+0\t3.0517578125000000e-5\n\t[2\]\t6.8329977989196777e-1\t1.2503051757812500e-1\t5.5826926231384277e-1\t4.4650639949963384e+0\t3.0517578125000000e-5\n\t[3\]\t9.0373212099075317e-1\t1.8695068359375000e-1\t7.1678143739700317e-1\t3.8340669508039502e+0\t3.0517578125000000e-5\n\t[4\]\t9.9780619144439697e-1\t2.4810791015625000e-1\t7.4969828128814697e-1\t3.0216621502152523e+0\t3.0517578125000000e-5\n\t[5\]\t9.5236867666244507e-1\t3.0831909179687500e-1\t6.4404958486557007e-1\t2.0889059484187866e+0\t3.0517578125000000e-5\n\t...and 44059 more errors.\n\tMax AbsError of 1.9986611604690552e+0 at index of 17285.\n\t[17285\]\t-9.9994289875030518e-1\t9.9871826171875000e-1\t1.9986611604690552e+0\t2.0012262087101997e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 12348.\n\t[12348\]\t9.5105654001235962e-1\t0.0000000000000000e+0\t9.5105654001235962e-1\tInfinity\t3.0517578125000000e-5\n]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini b/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini
index 442dc0ed53f..b105dc0821e 100644
--- a/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini
+++ b/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini
@@ -122,3 +122,9 @@
[X Stitched sine-wave buffers at sample rate 44100 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.000090957,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[31080\]\t-6.7816996732928000e+14\t5.6332010030746460e-1\t6.7816996732928063e+14\t1.2038802928550393e+15\t9.0957000000000003e-5\n\t[31081\]\t4.5854689648100989e-41\t6.1397600173950195e-1\t6.1397600173950195e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\tMax AbsError of 6.7816996732928063e+14 at index of 31080.\n\tMax RelError of 1.2038802928550393e+15 at index of 31080.\n]
expected: FAIL
+ [X SNR (45.01863889941501 dB) is not greater than or equal to 85.58. Got 45.01863889941501.]
+ expected: FAIL
+
+ [X Stitched sine-wave buffers at sample rate 44100 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.000090957,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[31080\]\t5.6092996914003379e-10\t5.6332010030746460e-1\t5.6332009974653463e-1\t9.9999999900424297e-1\t9.0957000000000003e-5\n\t[31081\]\t4.5875709125065861e-41\t6.1397600173950195e-1\t6.1397600173950195e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\tMax AbsError of 6.1397600173950195e-1 at index of 31081.\n\tMax RelError of 1.0000000000000000e+0 at index of 31081.\n]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini b/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini
index d4f62ed7113..faa00f45ecf 100644
--- a/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini
+++ b/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini
@@ -7,7 +7,7 @@
expected: FAIL
[Opening a blob URL in a new window immediately before revoking it works.]
- expected: FAIL
+ expected: TIMEOUT
[Opening a blob URL in a noopener about:blank window immediately before revoking it works.]
expected: TIMEOUT
diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json
index af4e0236a06..799e611fae3 100644
--- a/tests/wpt/metadata/MANIFEST.json
+++ b/tests/wpt/metadata/MANIFEST.json
@@ -61,6 +61,20 @@
]
},
"css-flexbox": {
+ "negative-flex-margins-crash.html": [
+ "8bcc566c0f702ef6a8e581bb6790476c71f19bcb",
+ [
+ null,
+ {}
+ ]
+ ],
+ "negative-flex-rounding-crash.html": [
+ "ad69cc059ec705a9856f2c170827b9df18f1662c",
+ [
+ null,
+ {}
+ ]
+ ],
"padding-overflow-crash.html": [
"fd0c333fabadb073b9977a63de6a8c5c3ed79042",
[
@@ -143793,6 +143807,32 @@
{}
]
],
+ "grid-layout-stale-001.html": [
+ "bb81546678cea67020c2f46a470098d6454981d9",
+ [
+ null,
+ [
+ [
+ "/css/css-grid/grid-model/reference/grid-layout-stale-001-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "grid-layout-stale-002.html": [
+ "ea11cd5c5cb5e869493adb908892c3b8f8d7c35d",
+ [
+ null,
+ [
+ [
+ "/css/css-grid/grid-model/reference/grid-layout-stale-002-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"grid-margins-no-collapse-001.html": [
"764cca9ced0077a7376b506f3ef8ca39d8072202",
[
@@ -203865,6 +203905,19 @@
{}
]
],
+ "fecomposite-non-zero-inoffset-001.html": [
+ "b2d71cfa981a4a93b0fa9ad0c41d9351c2889956",
+ [
+ null,
+ [
+ [
+ "/css/filter-effects/reference/fecomposite-non-zero-inoffset-001-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"filter-cb-abspos-inline-001.html": [
"6f99c48d5f34761ba1bc1ce7dbdfd927469ac65a",
[
@@ -204372,6 +204425,19 @@
{}
]
],
+ "remove-filter-repaint.html": [
+ "a9af9db34eeaf10235521514f8c17ceca858924e",
+ [
+ null,
+ [
+ [
+ "/css/filter-effects/reference/remove-filter-repaint-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"root-element-with-opacity-filter-001.html": [
"577e2bd4c032799a159c1c7542812e66081bfcea",
[
@@ -263055,6 +263121,12 @@
}
}
},
+ "contenteditable": {
+ "META.yml": [
+ "3618b8d29d08c2315f6480c0e02578bb4784b344",
+ []
+ ]
+ },
"cookie-store": {
"META.yml": [
"46da8a9fb654cc685e1ba928d2b7adef9c20d4c8",
@@ -294272,6 +294344,14 @@
"100x100-grey-box.html": [
"0592f6d2ce582c3c89b9d7f5278eed9458531c3c",
[]
+ ],
+ "grid-layout-stale-001-ref.html": [
+ "3ade075c99cc2009aabc018aa4181b0ff930bea3",
+ []
+ ],
+ "grid-layout-stale-002-ref.html": [
+ "5d4d996106d13a060cf192efb134e1c74aae024d",
+ []
]
}
},
@@ -308288,6 +308368,10 @@
"cf2c997f6c0d60cac9896c0b0014189cea7790bc",
[]
],
+ "fecomposite-non-zero-inoffset-001-ref.html": [
+ "e4900ad0476a208ec82950a80fb36d1481bd8c09",
+ []
+ ],
"filter-effect-remove-unattached-ref.html": [
"5f9f7a76ec71bfa5abe4a0a82bc126af8fa0ad5a",
[]
@@ -308332,6 +308416,10 @@
"91326ef585e6910cd499ad2d6650f18fca486921",
[]
],
+ "remove-filter-repaint-ref.html": [
+ "bde2a93360b62fcf877c270815f252b5ea0c3191",
+ []
+ ],
"root-element-with-opacity-filter-001-ref.html": [
"cd16e54c8e5b73b02585c606d0133bb36c821b31",
[]
@@ -346994,7 +347082,7 @@
[]
],
"keys.py": [
- "d4072f5a3f33d8422825e1fdc4f017ed7d79993b",
+ "26825f04148befabc9a7b6ae71f1d8313a437e38",
[]
],
"mouse.py": [
@@ -347075,11 +347163,11 @@
[]
],
"asserts.py": [
- "f65137463b48f94fd0c5f2383b1a7c35bcd1de54",
+ "5bd7f5b38e7a344fb2a1f7c40090fb5edd28c4d4",
[]
],
"authentication.py": [
- "6f880f3c85165295bf9e98aa4e4adba2eca88cbd",
+ "1e88a9e730d0805f8e6562a2dae7829b4baa349c",
[]
],
"defaults.py": [
@@ -347087,7 +347175,7 @@
[]
],
"fixtures.py": [
- "ab2aaf4e75d96492d9c6419ab11d567205652b8f",
+ "80ccfddf3d15ad739f7eca6a77fac79e2dcdcaef",
[]
],
"helpers.py": [
@@ -347095,15 +347183,15 @@
[]
],
"http_request.py": [
- "5e46d97017e14ba009d4d1ed6d62bb5012f48d15",
+ "895d1319ac0ac8b9a63defcb73f303c4a31e80bd",
[]
],
"image.py": [
- "81dd933943f78b4bad69967c26729b70b992acb6",
+ "6149ccccbe3252e5c1c2bc37ba3dd3103ffbf9b6",
[]
],
"inline.py": [
- "b65b9cb8b11d27ee4c947a5c2ba5b59cd3853c78",
+ "15bc26e54c68d4ce7c76133f597f4da50eb2e298",
[]
],
"merge_dictionaries.py": [
@@ -350038,7 +350126,7 @@
[]
],
"webxr_test_constants_fake_world.js": [
- "4e2adc633fd88bc13a4ab62bee86b4f3fbd19479",
+ "7e428e21550f6a52461cb8470dee0aa44e3f4578",
[]
],
"webxr_util.js": [
@@ -377712,6 +377800,15 @@
]
}
},
+ "contenteditable": {
+ "plaintext-only.html": [
+ "cb8308edcc49a98be5c34c9614bc61b69e44f784",
+ [
+ null,
+ {}
+ ]
+ ]
+ },
"cookie-store": {
"change_eventhandler_for_document_cookie.tentative.https.window.js": [
"0a8b1bd21efc9b0ac69468ad81c306757e5b18ff",
@@ -382417,6 +382514,41 @@
null,
{}
]
+ ],
+ "revert-val-006.html": [
+ "2b238f6d7e53b35cbdfe98c1fcac3625b9cfd72e",
+ [
+ null,
+ {}
+ ]
+ ],
+ "revert-val-007.html": [
+ "38078fcfa9ad2a064ead3a2e30db3d6790d265be",
+ [
+ null,
+ {}
+ ]
+ ],
+ "revert-val-008.html": [
+ "77cceae7a3f044c8d11b1616f9f54469f18d1aca",
+ [
+ null,
+ {}
+ ]
+ ],
+ "revert-val-009.html": [
+ "e9683e90f44a378f16fda177cf2b8cb64d530921",
+ [
+ null,
+ {}
+ ]
+ ],
+ "revert-val-010.html": [
+ "58449e9132b786a2f489a1517b1be3becadaddbf",
+ [
+ null,
+ {}
+ ]
]
},
"css-color": {
@@ -383279,7 +383411,7 @@
]
],
"flexitem-stretch-image.html": [
- "dd0f8d4f76f1f3dbaf67629315c8e39d73f01df3",
+ "ff3163f6f3d31684db6b22c603f081b6d7c94cfb",
[
null,
{}
@@ -387406,6 +387538,13 @@
]
]
},
+ "grid-tracks-stretched-with-different-flex-factors-sum.html": [
+ "f2c1d5e95a2df428432f30fc651b4bf06ae15322",
+ [
+ null,
+ {}
+ ]
+ ],
"inheritance.html": [
"eee86f70300d4280531235c813589dc3c399c58c",
[
@@ -390334,7 +390473,7 @@
]
],
"registered-property-revert.html": [
- "3d0473ea4397fab0440355a11eb0bff941a50323",
+ "33c395d2c2f6f5f9ca868963b8fb3c4d7f593d28",
[
null,
{}
@@ -401358,7 +401497,14 @@
]
],
"cssstyledeclaration-csstext.html": [
- "30d9bd87bde562a827a367241497fdbc34360a9f",
+ "afd54263bfe0ddd6325a82e0c47f663015dbf67c",
+ [
+ null,
+ {}
+ ]
+ ],
+ "cssstyledeclaration-custom-properties.html": [
+ "92cf2c847dceda660ebedd2d8ae798e33b3b1d3b",
[
null,
{}
@@ -438665,7 +438811,7 @@
},
"the-label-element": {
"clicking-interactive-content.html": [
- "60a80fad9d2aebf284e252949fba7b2bb15af134",
+ "c448df0a38073019112f7f805904a6ec3bd6ef20",
[
null,
{}
@@ -438679,7 +438825,7 @@
]
],
"clicking-noninteractive-unlabelable-content.html": [
- "233168f5664cf972ad579ae4ccba7f674c965d25",
+ "be74ed68330c1f97069e05ed70a2e4908ef6f3c2",
[
null,
{}
@@ -468536,6 +468682,13 @@
{}
]
],
+ "subresource-integrity-partial-image.html": [
+ "3abc8399219688f075deec3bf1551188d29f07b9",
+ [
+ null,
+ {}
+ ]
+ ],
"subresource-integrity.html": [
"7a35e3bc85eb454f847d1087eaf00cb73b891fb4",
[
@@ -510489,7 +510642,7 @@
]
],
"xrRay_constructor.https.html": [
- "08f20142e38e9366bd016fb92666b5136128fef6",
+ "d4d727785f1eb5487765249cf6c58dbe1111f3c5",
[
null,
{}
@@ -539889,7 +540042,7 @@
},
"add_cookie": {
"add.py": [
- "c1a886aafa71757d5efccb3953d2c30a96a14a34",
+ "30804c1dd8ec89f573d3af657de27fe1fe5d9597",
[
null,
{}
@@ -540151,7 +540304,7 @@
},
"execute_async_script": {
"collections.py": [
- "14848da7e2966939c1efb75eb2b66d389f0b3d38",
+ "484a247cffd9a12acd8024f48fa3db7de59db8d3",
[
null,
{}
@@ -540190,7 +540343,7 @@
},
"execute_script": {
"collections.py": [
- "f939713c8064d5826e4439acc6b1803ac0a25950",
+ "be0b3a018c505dc26bb2b44969617a9b9daa0793",
[
null,
{}
@@ -540378,7 +540531,7 @@
},
"get_alert_text": {
"get.py": [
- "d6fdda2d1ed08ecceb5863d78ce915c19d4846fb",
+ "ad0058e0326454147c3b7202daea39864159fd46",
[
null,
{}
@@ -540387,7 +540540,7 @@
},
"get_current_url": {
"get.py": [
- "39c28c612161e30b114298c7d5eed5ccd60d78d4",
+ "c22e3d410c350248f5eb109e2ab332747e64a453",
[
null,
{}
@@ -540513,7 +540666,7 @@
},
"get_named_cookie": {
"get.py": [
- "9ea29c8994eb471882ae0ce68aa48b854ba35b99",
+ "1fd5f9f144969419571ab1193e314670925d1fa8",
[
null,
{}
@@ -540742,7 +540895,7 @@
},
"new_session": {
"create_alwaysMatch.py": [
- "097764e4a999f1def552c5f21fefda3508623385",
+ "a4cc9efc02e2a9c61fb8a79eecd5dcff49ca21a6",
[
null,
{
@@ -540751,7 +540904,7 @@
]
],
"create_firstMatch.py": [
- "f00f6042b085dc09876f67ae650ff62ceb3eb76a",
+ "ec671530f79692c04135ec441426f0044a72e8bc",
[
null,
{
@@ -540769,7 +540922,7 @@
]
],
"invalid_capabilities.py": [
- "f31ce3b8b6fd5f8e4a9ff4d0137debdb7dacdea4",
+ "afdcea0daf706ca32a875db1eb367db0bd2046a7",
[
null,
{}
@@ -540799,7 +540952,7 @@
]
],
"response.py": [
- "16c526ae10bea0540c91a9f7c2291488e4a26119",
+ "dc1328998810faacf74f1b94b54ed59f48e84e4d",
[
null,
{}
@@ -541054,7 +541207,7 @@
},
"status": {
"status.py": [
- "f0df16a1ee17d22e6293af049876810bb4073929",
+ "1f0f1bc4fe7746f34080cc537701020e4c5b2292",
[
null,
{}
@@ -541063,14 +541216,14 @@
},
"switch_to_frame": {
"cross_origin.py": [
- "4425a3ab901fef0effb2fc94ca3611e57f2ba51c",
+ "905f1eb56dce07ea82e0de7c5755e2e1b50ed152",
[
null,
{}
]
],
"switch.py": [
- "67b855a96d963ab03efa9495052767ec033b346f",
+ "f9b0e6fc1fcd16c9f9e66b05149930f6ee0ae346",
[
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/css-transforms/transform-scale-hittest.html.ini b/tests/wpt/metadata/css/css-transforms/transform-scale-hittest.html.ini
index 4a1e8110f6f..f8e7e539aae 100644
--- a/tests/wpt/metadata/css/css-transforms/transform-scale-hittest.html.ini
+++ b/tests/wpt/metadata/css/css-transforms/transform-scale-hittest.html.ini
@@ -2,3 +2,6 @@
[Hit test intersecting scaled box]
expected: FAIL
+ [Hit test within unscaled box]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-transitions/no-transition-from-ua-to-blocking-stylesheet.html.ini b/tests/wpt/metadata/css/css-transitions/no-transition-from-ua-to-blocking-stylesheet.html.ini
index e35a452a186..70a00a101f6 100644
--- a/tests/wpt/metadata/css/css-transitions/no-transition-from-ua-to-blocking-stylesheet.html.ini
+++ b/tests/wpt/metadata/css/css-transitions/no-transition-from-ua-to-blocking-stylesheet.html.ini
@@ -1,2 +1,2 @@
[no-transition-from-ua-to-blocking-stylesheet.html]
- expected: TIMEOUT
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/cssom-view/elementFromPoint-001.html.ini b/tests/wpt/metadata/css/cssom-view/elementFromPoint-001.html.ini
deleted file mode 100644
index e38782d8c85..00000000000
--- a/tests/wpt/metadata/css/cssom-view/elementFromPoint-001.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[elementFromPoint-001.html]
- [CSSOM View - 5 - extensions to the Document interface]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini b/tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini
index 85e94926cb3..5733d536fd3 100644
--- a/tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini
+++ b/tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini
@@ -21,3 +21,6 @@
[test the top of layer]
expected: FAIL
+ [test some point of the element: top left corner]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/cssom-view/elementsFromPoint-invalid-cases.html.ini b/tests/wpt/metadata/css/cssom-view/elementsFromPoint-invalid-cases.html.ini
new file mode 100644
index 00000000000..e181af5397f
--- /dev/null
+++ b/tests/wpt/metadata/css/cssom-view/elementsFromPoint-invalid-cases.html.ini
@@ -0,0 +1,4 @@
+[elementsFromPoint-invalid-cases.html]
+ [The root element is the last element returned for otherwise empty queries within the viewport]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/cssom/cssstyledeclaration-csstext.html.ini b/tests/wpt/metadata/css/cssom/cssstyledeclaration-csstext.html.ini
new file mode 100644
index 00000000000..c6715d49f44
--- /dev/null
+++ b/tests/wpt/metadata/css/cssom/cssstyledeclaration-csstext.html.ini
@@ -0,0 +1,4 @@
+[cssstyledeclaration-csstext.html]
+ [cssText on computed style declaration returns the empty string]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/cssom/cssstyledeclaration-custom-properties.html.ini b/tests/wpt/metadata/css/cssom/cssstyledeclaration-custom-properties.html.ini
new file mode 100644
index 00000000000..595199d7d35
--- /dev/null
+++ b/tests/wpt/metadata/css/cssom/cssstyledeclaration-custom-properties.html.ini
@@ -0,0 +1,4 @@
+[cssstyledeclaration-custom-properties.html]
+ [Custom properties are included in computed style]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/filter-effects/fecomposite-non-zero-inoffset-001.html.ini b/tests/wpt/metadata/css/filter-effects/fecomposite-non-zero-inoffset-001.html.ini
new file mode 100644
index 00000000000..055c56143e6
--- /dev/null
+++ b/tests/wpt/metadata/css/filter-effects/fecomposite-non-zero-inoffset-001.html.ini
@@ -0,0 +1,2 @@
+[fecomposite-non-zero-inoffset-001.html]
+ 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 1a8724198c2..2b1fa7f8d7f 100644
--- a/tests/wpt/metadata/fetch/content-type/response.window.js.ini
+++ b/tests/wpt/metadata/fetch/content-type/response.window.js.ini
@@ -312,21 +312,21 @@
[fetch(): separate response Content-Type: text/plain ]
expected: NOTRUN
- [<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;" \\" text/plain]
expected: FAIL
- [<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
+ [<iframe>: combined response Content-Type: text/html;x=" text/plain]
+ expected: FAIL
+
+ [<iframe>: combined response Content-Type: text/html;" text/plain]
expected: FAIL
- [<iframe>: separate response Content-Type: text/html */*]
+ [<iframe>: combined response Content-Type: */* text/html]
expected: FAIL
- [<iframe>: combined response Content-Type: text/html;x=" text/plain]
+ [<iframe>: separate response Content-Type: 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 d2df9b78483..b2ffc8abf78 100644
--- a/tests/wpt/metadata/fetch/content-type/script.window.js.ini
+++ b/tests/wpt/metadata/fetch/content-type/script.window.js.ini
@@ -56,3 +56,6 @@
[separate text/javascript x/x]
expected: FAIL
+ [separate text/javascript error]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini
index aa6eb8f6085..30e1b851fd4 100644
--- a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini
+++ b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini
@@ -11,6 +11,3 @@
[X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!]
expected: FAIL
- [X-Content-Type-Options%3A%20'NosniFF']
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_3.html.ini
index dc2e45516de..51f8272a6de 100644
--- 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_3.html.ini
@@ -1,4 +1,4 @@
-[traverse_the_history_5.html]
+[traverse_the_history_3.html]
[Multiple history traversals, last would be aborted]
expected: FAIL
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 8b743f36e1d..f1aa94c7ced 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
@@ -4,7 +4,7 @@
expected: FAIL
[Element with tabindex should support autofocus]
- expected: TIMEOUT
+ expected: FAIL
[Host element with delegatesFocus including no focusable descendants should be skipped]
expected: NOTRUN
@@ -16,5 +16,5 @@
expected: NOTRUN
[Non-HTMLElement should not support autofocus]
- expected: NOTRUN
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini
index e440b1e38c6..dc856a3d5a3 100644
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini
+++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini
@@ -1,6 +1,5 @@
[iframe_sandbox_popups_nonescaping-3.html]
type: testharness
- expected: TIMEOUT
[Check that popups from a sandboxed iframe do not escape the sandbox]
- expected: NOTRUN
+ 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 d16e3ccb769..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,5 +1,4 @@
[promise-job-entry.html]
- expected: TIMEOUT
[Fulfillment handler on fulfilled promise]
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/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-multi-channels.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-multi-channels.html.ini
index 8b1c7d6c5f5..64ff19b7967 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-multi-channels.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-multi-channels.html.ini
@@ -143,3 +143,6 @@
[X Rendered audio for channel 5 does not equal [0,0.0626220703125,0.125030517578125,0.18695068359375,0.24810791015625,0.308319091796875,0.3673095703125,0.42486572265625,0.480743408203125,0.53472900390625,0.58660888671875,0.636199951171875,0.68328857421875,0.727691650390625,0.76922607421875,0.8077392578125...\] with an element-wise tolerance of {"absoluteThreshold":0.000030517578125,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[1\]\t3.6732959747314453e-1\t6.2622070312500000e-2\t3.0470752716064453e-1\t4.8658168859649127e+0\t3.0517578125000000e-5\n\t[2\]\t6.8329977989196777e-1\t1.2503051757812500e-1\t5.5826926231384277e-1\t4.4650639949963384e+0\t3.0517578125000000e-5\n\t[3\]\t9.0373212099075317e-1\t1.8695068359375000e-1\t7.1678143739700317e-1\t3.8340669508039502e+0\t3.0517578125000000e-5\n\t[4\]\t9.9780619144439697e-1\t2.4810791015625000e-1\t7.4969828128814697e-1\t3.0216621502152523e+0\t3.0517578125000000e-5\n\t[5\]\t9.5236867666244507e-1\t3.0831909179687500e-1\t6.4404958486557007e-1\t2.0889059484187866e+0\t3.0517578125000000e-5\n\t...and 44065 more errors.\n\tMax AbsError of 1.9986611604690552e+0 at index of 15080.\n\t[15080\]\t-9.9994289875030518e-1\t9.9871826171875000e-1\t1.9986611604690552e+0\t2.0012262087101997e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 10584.\n\t[10584\]\t-5.8778524398803711e-1\t0.0000000000000000e+0\t5.8778524398803711e-1\tInfinity\t3.0517578125000000e-5\n]
expected: FAIL
+ [X Rendered audio for channel 5 does not equal [0,0.0626220703125,0.125030517578125,0.18695068359375,0.24810791015625,0.308319091796875,0.3673095703125,0.42486572265625,0.480743408203125,0.53472900390625,0.58660888671875,0.636199951171875,0.68328857421875,0.727691650390625,0.76922607421875,0.8077392578125...\] with an element-wise tolerance of {"absoluteThreshold":0.000030517578125,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[1\]\t3.6732959747314453e-1\t6.2622070312500000e-2\t3.0470752716064453e-1\t4.8658168859649127e+0\t3.0517578125000000e-5\n\t[2\]\t6.8329977989196777e-1\t1.2503051757812500e-1\t5.5826926231384277e-1\t4.4650639949963384e+0\t3.0517578125000000e-5\n\t[3\]\t9.0373212099075317e-1\t1.8695068359375000e-1\t7.1678143739700317e-1\t3.8340669508039502e+0\t3.0517578125000000e-5\n\t[4\]\t9.9780619144439697e-1\t2.4810791015625000e-1\t7.4969828128814697e-1\t3.0216621502152523e+0\t3.0517578125000000e-5\n\t[5\]\t9.5236867666244507e-1\t3.0831909179687500e-1\t6.4404958486557007e-1\t2.0889059484187866e+0\t3.0517578125000000e-5\n\t...and 44059 more errors.\n\tMax AbsError of 1.9986611604690552e+0 at index of 17285.\n\t[17285\]\t-9.9994289875030518e-1\t9.9871826171875000e-1\t1.9986611604690552e+0\t2.0012262087101997e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 12348.\n\t[12348\]\t9.5105654001235962e-1\t0.0000000000000000e+0\t9.5105654001235962e-1\tInfinity\t3.0517578125000000e-5\n]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini
index ecdef72749c..65919c2c6d2 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini
@@ -353,3 +353,9 @@
[X Stitched sine-wave buffers at sample rate 44100 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.000090957,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[31080\]\t-6.7816996732928000e+14\t5.6332010030746460e-1\t6.7816996732928063e+14\t1.2038802928550393e+15\t9.0957000000000003e-5\n\t[31081\]\t4.5854689648100989e-41\t6.1397600173950195e-1\t6.1397600173950195e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\tMax AbsError of 6.7816996732928063e+14 at index of 31080.\n\tMax RelError of 1.2038802928550393e+15 at index of 31080.\n]
expected: FAIL
+ [X SNR (45.01863889941501 dB) is not greater than or equal to 85.58. Got 45.01863889941501.]
+ expected: FAIL
+
+ [X Stitched sine-wave buffers at sample rate 44100 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.000090957,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[31080\]\t5.6092996914003379e-10\t5.6332010030746460e-1\t5.6332009974653463e-1\t9.9999999900424297e-1\t9.0957000000000003e-5\n\t[31081\]\t4.5875709125065861e-41\t6.1397600173950195e-1\t6.1397600173950195e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\tMax AbsError of 6.1397600173950195e-1 at index of 31081.\n\tMax RelError of 1.0000000000000000e+0 at index of 31081.\n]
+ expected: FAIL
+
diff --git a/tests/wpt/web-platform-tests/contenteditable/META.yml b/tests/wpt/web-platform-tests/contenteditable/META.yml
new file mode 100644
index 00000000000..3618b8d29d0
--- /dev/null
+++ b/tests/wpt/web-platform-tests/contenteditable/META.yml
@@ -0,0 +1,3 @@
+spec: https://w3c.github.io/contentEditable/
+suggested_reviewers:
+ - marcoscaceres
diff --git a/tests/wpt/web-platform-tests/contenteditable/plaintext-only.html b/tests/wpt/web-platform-tests/contenteditable/plaintext-only.html
new file mode 100644
index 00000000000..cb8308edcc4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/contenteditable/plaintext-only.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>contenteditable="plaintext-only" should exist</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<div id="txt" contenteditable="plaintext-only"></div>
+<script>
+test(function() {
+ const txt = document.getElementById('txt');
+ assert_true(txt.isContentEditable);
+ assert_equals(txt.contentEditable, 'plaintext-only');
+}, 'plaintext-only is an accepted attribute value for contenteditable');
+test(function() {
+ const txt = document.createElement('div');
+ assert_false(txt.isContentEditable);
+ txt.contentEditable = 'plaintext-only';
+ assert_true(txt.isContentEditable);
+ assert_equals(txt.contentEditable, 'plaintext-only');
+}, 'plaintext-only can be assigned to contenteditable dynamically');
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-cascade/revert-val-006.html b/tests/wpt/web-platform-tests/css/css-cascade/revert-val-006.html
new file mode 100644
index 00000000000..2b238f6d7e5
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-cascade/revert-val-006.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+<title>CSS Cascade: 'revert' keyword in keyframe animations</title>
+<link rel="help" href="https://drafts.csswg.org/css-cascade/#default">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+ @keyframes test {
+ from { margin-top: 0px; }
+ 50% { margin-top: revert; }
+ to { margin-top: 0px; }
+ }
+ #h1 {
+ margin-top: 0px;
+ animation: test linear 1000s -500s;
+ }
+</style>
+<h1 id=h1></h1>
+<h1 id=ref></h1>
+<script>
+ test(function() {
+ let actual = getComputedStyle(h1).marginTop;
+ let expected = getComputedStyle(ref).marginTop;
+ // This test assumes that the UA style sheet sets a non-0px value on
+ // <h1> elements:
+ assert_not_equals(expected, '0px');
+ assert_equals(actual, expected);
+ }, 'The revert keyword works with @keyframes');
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-cascade/revert-val-007.html b/tests/wpt/web-platform-tests/css/css-cascade/revert-val-007.html
new file mode 100644
index 00000000000..38078fcfa9a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-cascade/revert-val-007.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<title>CSS Cascade: 'revert' in keyframe animations on identical elements</title>
+<link rel="help" href="https://drafts.csswg.org/css-cascade/#default">
+<link rel="help" href="https://crbug.com/1065387">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+ @keyframes test {
+ from { margin-top: revert; }
+ to { margin-top: 100px; }
+ }
+ .anim {
+ margin-top: 0px;
+ animation: test linear 1s paused;
+ }
+</style>
+<h1 class="anim"></h1>
+<h1 class="anim"></h1>
+<h1 class="anim"></h1>
+<h1 id=ref></h1>
+<script>
+ test(function() {
+ // This querySelectorAll includes #ref, but that's OK.
+ let targets = document.querySelectorAll('h1');
+ for (let t of targets) {
+ let actual = getComputedStyle(t).marginTop;
+ let expected = getComputedStyle(ref).marginTop;
+ // This test assumes that the UA style sheet sets a non-0px value on
+ // <h1> elements:
+ assert_not_equals(expected, '0px');
+ assert_equals(actual, expected);
+ }
+ }, 'A @keyframe animation with revert works when applied to multiple identical elements');
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-cascade/revert-val-008.html b/tests/wpt/web-platform-tests/css/css-cascade/revert-val-008.html
new file mode 100644
index 00000000000..77cceae7a3f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-cascade/revert-val-008.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<title>CSS Cascade: 'revert' in final keyframe of web animation</title>
+<link rel="help" href="https://drafts.csswg.org/css-cascade/#default">
+<link rel="help" href="https://crbug.com/1065387">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<h1 id=h1></h1>
+<h1 id=ref></h1>
+<script>
+ test(function() {
+ let expected_lower = parseInt(getComputedStyle(ref).marginTop);
+ let expected_upper = expected_lower * 2;
+
+ h1.animate([
+ { marginTop: `${expected_lower * 4}px` },
+ { marginTop: `${expected_lower * 3}px` },
+ { marginTop: `${expected_lower * 2}px` },
+ { marginTop: 'revert' },
+ ], {
+ duration: 4000,
+ delay: -3500,
+ }).pause();
+
+ let actual = parseInt(getComputedStyle(h1).marginTop);
+
+ // This test assumes that the UA style sheet sets a non-0px value on
+ // <h1> elements:
+ assert_not_equals(expected_lower, 0);
+ assert_not_equals(expected_upper, 0);
+ assert_between_exclusive(actual, expected_lower, expected_upper);
+ }, 'The revert keyword works in the final frame of a web animation');
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-cascade/revert-val-009.html b/tests/wpt/web-platform-tests/css/css-cascade/revert-val-009.html
new file mode 100644
index 00000000000..e9683e90f44
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-cascade/revert-val-009.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<title>CSS Cascade: 'revert' in implicit keyframes</title>
+<link rel="help" href="https://drafts.csswg.org/css-cascade/#default">
+<link rel="help" href="https://crbug.com/1065387">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<h1 id=h1></h1>
+<h1 id=ref></h1>
+<script>
+ test(function() {
+ let expected_lower = parseInt(getComputedStyle(ref).marginTop);
+ let expected_upper = expected_lower * 2;
+ h1.style = `margin-top: ${expected_lower * 1000}px; margin-top: revert;`;
+
+ h1.animate([
+ { marginTop: `${expected_upper}px` },
+ ], {
+ duration: 1000,
+ delay: -500,
+ }).pause();
+
+ let actual = parseInt(getComputedStyle(h1).marginTop);
+
+ // This test assumes that the UA style sheet sets a non-0px value on
+ // <h1> elements:
+ assert_not_equals(expected_lower, 0);
+ assert_not_equals(expected_upper, 0);
+ assert_between_exclusive(actual, expected_lower, expected_upper);
+ }, 'The revert keyword works in implicit keyframes');
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-cascade/revert-val-010.html b/tests/wpt/web-platform-tests/css/css-cascade/revert-val-010.html
new file mode 100644
index 00000000000..58449e9132b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-cascade/revert-val-010.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<title>CSS Cascade: 'revert' appearing in setKeyframes</title>
+<link rel="help" href="https://drafts.csswg.org/css-cascade/#default">
+<link rel="help" href="https://drafts.csswg.org/web-animations-1/#dom-keyframeeffect-setkeyframes">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<h1 id=h1></h1>
+<script>
+ test(function() {
+ let original = parseInt(getComputedStyle(h1).marginTop);
+
+ // This test assumes that the UA style sheet sets a non-0px value on
+ // <h1> elements:
+ assert_not_equals(original, 0);
+
+ let animation = h1.animate([
+ { marginTop: `${original*4}px` },
+ { marginTop: `${original*8}px` },
+ ], {
+ duration: 1000000,
+ delay: -500000,
+ easing: 'steps(2, end)'
+ });
+
+ let animated = parseInt(getComputedStyle(h1).marginTop);
+ assert_equals(animated, original*6);
+
+ animation.effect.setKeyframes([
+ { marginTop: 'revert' },
+ { marginTop: `${original*3}px` },
+ ]);
+
+ let animated_revert = parseInt(getComputedStyle(h1).marginTop);
+ assert_equals(animated_revert, original*2);
+ }, 'The revert works when appearing in setKeyframes');
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/flexitem-stretch-image.html b/tests/wpt/web-platform-tests/css/css-flexbox/flexitem-stretch-image.html
index dd0f8d4f76f..ff3163f6f3d 100644
--- a/tests/wpt/web-platform-tests/css/css-flexbox/flexitem-stretch-image.html
+++ b/tests/wpt/web-platform-tests/css/css-flexbox/flexitem-stretch-image.html
@@ -28,8 +28,8 @@ to fit the size of flexitem according to flex values.">
<div id=log></div>
<div class="flexbox">
- <img data-expected-display="block" data-expected-width="345" style="flex: 1 0 auto;" src="support/100x100-blue.png">
- <img data-expected-display="block" data-expected-width="255" data-expected-height="100" style="flex: 1 0 auto;" src="support/10x10-green.png">
+ <img data-expected-display="block" data-expected-width="345" data-expected-height="345" style="flex: 1 0 auto;" src="support/100x100-blue.png">
+ <img data-expected-display="block" data-expected-width="255" data-expected-height="345" style="flex: 1 0 auto;" src="support/10x10-green.png">
</div>
</body>
diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/negative-flex-margins-crash.html b/tests/wpt/web-platform-tests/css/css-flexbox/negative-flex-margins-crash.html
new file mode 100644
index 00000000000..8bcc566c0f7
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-flexbox/negative-flex-margins-crash.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<title>CSS Flexbox: Crash caused by negative width in flex box</title>
+<link rel="author" title="Christian Biesinger" href="mailto:cbiesinger@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-flexbox-1/#box-model">
+<link rel="issue" href="https://crbug.com/490423">
+<meta name="assert" content="Check that crash doesn't happen in flex box with negative margin.">
+
+<style>
+div {
+ display: flex;
+}
+
+.inner {
+ margin-left: -4em;
+}
+</style>
+<div>
+ <div>
+ <div class="inner">PASS if we don't assert</div>
+ </div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/negative-flex-rounding-crash.html b/tests/wpt/web-platform-tests/css/css-flexbox/negative-flex-rounding-crash.html
new file mode 100644
index 00000000000..ad69cc059ec
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-flexbox/negative-flex-rounding-crash.html
@@ -0,0 +1,46 @@
+<!DOCTYPE html>
+<title>CSS Flexbox: Crash caused by rounding error in flex-shrink</title>
+<link rel="author" title="Tony Chang" href="mailto:tony@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-flexbox/#resolve-flexible-lengths">
+<link rel="issue" href="https://bugs.webkit.org/show_bug.cgi?id=97606">
+<meta name="assert" content="Check that crash doesn't happen in flex-shrink due to floating point precision errors.">
+
+<style>
+.math {
+ display: inline-flex;
+}
+.math > * {
+ padding-bottom: 0.35em;
+}
+.mfrac {
+ display: inline-flex;
+ flex-direction: column;
+}
+.mfrac > :first-child {
+ margin-block-end: 0.2em;
+}
+.mfrac > :last-child {
+ margin-block-start: 0.2em;
+}
+.x {
+ line-height: 9px;
+}
+.y {
+ line-height: 12px;
+}
+</style>
+<div class=math>
+ <div class=mfrac>
+ <div class=mfrac>
+ <div class=x>x</div>
+ <div class=y>y</div>
+ </div>
+ <div class=mfrac>
+ <div class=mfrac>
+ <div class=x>x</div>
+ <div class=y>y</div>
+ </div>
+ <div class=x>z</div>
+ </div>
+ </div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-grid/grid-model/grid-layout-stale-001.html b/tests/wpt/web-platform-tests/css/css-grid/grid-model/grid-layout-stale-001.html
new file mode 100644
index 00000000000..bb81546678c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-grid/grid-model/grid-layout-stale-001.html
@@ -0,0 +1,42 @@
+<!doctype html>
+<title>CSS Grid: Do not add non-children of the grid into the grid container</title>
+<link rel="author" title="Sergio Villar" href="mailto:svillar@igalia.com">
+<link rel="help" href="https://drafts.csswg.org/css-grid">
+<link rel="help" href="https://crbug.com/313293">
+<link rel="match" href="reference/grid-layout-stale-001-ref.html">
+<meta name="assert" content="Check that we do not add non-children of the grid into the grid representation."/>
+
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-actions.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
+
+<style>
+ embed { position: absolute; }
+ .c1 { animation-delay: 45762s; }
+</style>
+
+<p>This test passes if it doesn't crash and it matches the reference.</p>
+<div style="display: grid;">
+ <embed type="something-not-js">
+</div>
+
+<script>
+function keyPress(key) {
+ let actions = new test_driver.Actions()
+ .keyDown(key)
+ .keyUp(key);
+
+ return actions.send();
+}
+function crash() {
+ var highlight = document.createElementNS("http://www.w3.org/1999/xhtml", "highlight");
+ highlight.setAttribute("class", "c1");
+ document.body.appendChild(highlight);
+
+ for (i=0; i != 8; i++)
+ keyPress("\t");
+ keyPress("X");
+}
+
+document.addEventListener("DOMContentLoaded", crash, false);
+</script> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/css/css-grid/grid-model/grid-layout-stale-002.html b/tests/wpt/web-platform-tests/css/css-grid/grid-model/grid-layout-stale-002.html
new file mode 100644
index 00000000000..ea11cd5c5cb
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-grid/grid-model/grid-layout-stale-002.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<title>CSS Grid: Do not leave stale pointers into the grid container</title>
+<link rel="author" title="Sergio Villar" href="mailto:svillar@igalia.com">
+<link rel="help" href="https://drafts.csswg.org/css-grid">
+<link rel="help" href="https://crbug.com/313293">
+<link rel="match" href="reference/grid-layout-stale-002-ref.html">
+<meta name="assert" content="Check that we don't leave stale pointers into the internal grid representation."/>
+
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-actions.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
+
+<p>This test passes if it doesn't crash and it matches the reference.</p>
+<span style="display: grid" contenteditable=plaintext-only></span>
+<script>
+function keyPress(key) {
+ let actions = new test_driver.Actions()
+ .keyDown(key)
+ .keyUp(key);
+
+ return actions.send();
+}
+function crash() {
+ keyPress("\t");
+ keyPress("X");
+ document.designMode = 'on';
+ document.execCommand("InsertHTML", false, "<div>");
+}
+document.addEventListener("DOMContentLoaded", crash, false);
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-grid/grid-model/reference/grid-layout-stale-001-ref.html b/tests/wpt/web-platform-tests/css/css-grid/grid-model/reference/grid-layout-stale-001-ref.html
new file mode 100644
index 00000000000..3ade075c99c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-grid/grid-model/reference/grid-layout-stale-001-ref.html
@@ -0,0 +1,13 @@
+<!doctype html>
+<title>CSS Grid: Do not add non-children of the grid into the grid container</title>
+
+<style>
+ embed { position: absolute; }
+ .c1 { animation-delay: 45762s; }
+</style>
+
+<p>This test passes if it doesn't crash and it matches the reference.</p>
+<div style="display: grid;">
+ <embed type="something-not-js">
+</div>
+<highlight class="c1"></highlight>
diff --git a/tests/wpt/web-platform-tests/css/css-grid/grid-model/reference/grid-layout-stale-002-ref.html b/tests/wpt/web-platform-tests/css/css-grid/grid-model/reference/grid-layout-stale-002-ref.html
new file mode 100644
index 00000000000..5d4d996106d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-grid/grid-model/reference/grid-layout-stale-002-ref.html
@@ -0,0 +1,4 @@
+<!DOCTYPE html>
+<title>CSS Grid: Do not leave stale pointers into the grid container</title>
+<p>This test passes if it doesn't crash and it matches the reference.</p>
+<span style="display: grid" contenteditable=plaintext-only></span>
diff --git a/tests/wpt/web-platform-tests/css/css-grid/grid-tracks-stretched-with-different-flex-factors-sum.html b/tests/wpt/web-platform-tests/css/css-grid/grid-tracks-stretched-with-different-flex-factors-sum.html
new file mode 100644
index 00000000000..f2c1d5e95a2
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-grid/grid-tracks-stretched-with-different-flex-factors-sum.html
@@ -0,0 +1,57 @@
+<!DOCTYPE html>
+<title>CSS Grid: 'stretch' content alignment on flex tracks.</title>
+<link rel="author" title="Javier Fernandez" href="mailto:jfernandez@igalia.com">
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#content-distribution">
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#valdef-align-content-stretch">
+<meta name="assert" content="This test ensures that using flex tracks and 'stretch' value for the content alignment css properties work properly."/>
+<link href="/css/support/grid.css" rel="stylesheet"/>
+<link href="/css/support/alignment.css" rel="stylesheet"/>
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+<style>
+body {
+ margin: 0;
+}
+
+.grid {
+ position: relative;
+ width: 200px;
+ height: 300px;
+}
+
+.fractionFlexTracks {
+ grid-template-columns: auto 0.25fr;
+ grid-template-rows: 0.2fr auto;
+}
+
+.flexTracks {
+ grid-template-columns: auto 1fr;
+ grid-template-rows: 1.5fr auto;
+}
+
+</style>
+</head>
+<body onload="checkLayout('.grid')">
+
+<div style="position: relative">
+ <p>When the sum of all track's flex factor is < 1, they don't exhaust the available space, which is used to stretch the 'auto' sized tracks.</p>
+ <div class="grid fractionFlexTracks contentStretch" data-expected-width="200" data-expected-height="300">
+ <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="150" data-expected-height="60"></div>
+ <div class="firstRowSecondColumn" data-offset-x="150" data-offset-y="0" data-expected-width="50" data-expected-height="60"></div>
+ <div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="60" data-expected-width="150" data-expected-height="240"></div>
+ <div class="secondRowSecondColumn" data-offset-x="150" data-offset-y="60" data-expected-width="50" data-expected-height="240"></div>
+ </div>
+</div>
+
+<div style="position: relative">
+ <p>When the sum of all track's flex factor is >= 1, they exhaust the available space, hence the 'stretch' alignment is not applied to the 'auto' sized tracks.</p>
+ <div class="grid flexTracks contentStretch" data-expected-width="200" data-expected-height="300">
+ <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="0" data-expected-height="300"></div>
+ <div class="firstRowSecondColumn" data-offset-x="0" data-offset-y="0" data-expected-width="200" data-expected-height="300"></div>
+ <div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="300" data-expected-width="0" data-expected-height="0"></div>
+ <div class="secondRowSecondColumn" data-offset-x="0" data-offset-y="300" data-expected-width="200" data-expected-height="0"></div>
+ </div>
+</div>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/css-properties-values-api/registered-property-revert.html b/tests/wpt/web-platform-tests/css/css-properties-values-api/registered-property-revert.html
index 3d0473ea439..33c395d2c2f 100644
--- a/tests/wpt/web-platform-tests/css/css-properties-values-api/registered-property-revert.html
+++ b/tests/wpt/web-platform-tests/css/css-properties-values-api/registered-property-revert.html
@@ -14,11 +14,33 @@
--inherited: revert;
--non-inherited: revert;
}
+
+ @keyframes revert_animation {
+ from {
+ --animated-inherited: revert;
+ --animated-non-inherited: revert;
+ }
+ to {
+ --animated-inherited: 100px;
+ --animated-non-inherited: 100px;
+ }
+ }
+
+ #animated_parent {
+ --animated-inherited: 0px;
+ }
+ #animated_child {
+ animation: revert_animation 10s -5s linear paused;
+ }
</style>
<div id=parent>
<div id=child>
</div>
</div>
+<div id=animated_parent>
+ <div id=animated_child>
+ </div>
+</div>
<script>
CSS.registerProperty({
@@ -35,6 +57,20 @@ CSS.registerProperty({
inherits: false
});
+CSS.registerProperty({
+ name: "--animated-non-inherited",
+ syntax: "<length>",
+ initialValue: "0px",
+ inherits: false
+});
+
+CSS.registerProperty({
+ name: "--animated-inherited",
+ syntax: "<length>",
+ initialValue: "10000px",
+ inherits: true
+});
+
test(function(){
let cs = getComputedStyle(child);
assert_equals(cs.getPropertyValue('--inherited'), '10px');
@@ -45,4 +81,14 @@ test(function(){
assert_equals(cs.getPropertyValue('--non-inherited'), '0px');
}, 'Non-inherited registered custom property can be reverted');
+test(function(){
+ let cs = getComputedStyle(animated_child);
+ assert_equals(cs.getPropertyValue('--animated-non-inherited'), '50px');
+}, 'Non-inherited registered custom property can be reverted in animation');
+
+test(function(){
+ let cs = getComputedStyle(animated_child);
+ assert_equals(cs.getPropertyValue('--animated-inherited'), '50px');
+}, 'Inherited registered custom property can be reverted in animation');
+
</script>
diff --git a/tests/wpt/web-platform-tests/css/cssom/cssstyledeclaration-csstext.html b/tests/wpt/web-platform-tests/css/cssom/cssstyledeclaration-csstext.html
index 30d9bd87bde..afd54263bfe 100644
--- a/tests/wpt/web-platform-tests/css/cssom/cssstyledeclaration-csstext.html
+++ b/tests/wpt/web-platform-tests/css/cssom/cssstyledeclaration-csstext.html
@@ -97,6 +97,18 @@
}, 'invalid property does not appear');
+ // https://github.com/w3c/csswg-drafts/issues/1033
+ test(function() {
+ var elm = newElm();
+ var style = elm.style;
+
+ style.color = 'red';
+ style.unknown = 'unknown';
+ style.fontSize = '10pt';
+
+ assert_not_equals(getComputedStyle(elm).length, 0, "Should have a style");
+ assert_equals(getComputedStyle(elm).cssText, "", "cssText is empty");
+ }, 'cssText on computed style declaration returns the empty string');
</script>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/css/cssom/cssstyledeclaration-custom-properties.html b/tests/wpt/web-platform-tests/css/cssom/cssstyledeclaration-custom-properties.html
new file mode 100644
index 00000000000..92cf2c847dc
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/cssom/cssstyledeclaration-custom-properties.html
@@ -0,0 +1,19 @@
+<!doctype html>
+<title>CSS Test: computed style declaration includes custom properties.</title>
+<link rel="author" href="mailto:emilio@crisal.io" title="Emilio Cobos Álvarez">
+<link rel="author" href="https://mozilla.org" title="Mozilla">
+<link rel="help" href="https://drafts.csswg.org/cssom/#dom-window-getcomputedstyle">
+<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/1316">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<div style="--foo:bar"></div>
+<div></div>
+<script>
+ test(function() {
+ let withCustom = getComputedStyle(document.querySelector("div"));
+ let withoutCustom = getComputedStyle(document.querySelector("div + div"));
+ assert_equals(withCustom.getPropertyValue("--foo"), "bar", "Should be returned from getPropertyValue");
+ assert_equals(withCustom.length, withoutCustom.length + 1, "Should show up in .length");
+ assert_equals(withCustom[withCustom.length - 1], "--foo", "Should be after all the non-custom properties");
+ }, "Custom properties are included in computed style");
+</script>
diff --git a/tests/wpt/web-platform-tests/css/filter-effects/fecomposite-non-zero-inoffset-001.html b/tests/wpt/web-platform-tests/css/filter-effects/fecomposite-non-zero-inoffset-001.html
new file mode 100644
index 00000000000..b2d71cfa981
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/filter-effects/fecomposite-non-zero-inoffset-001.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<title>CSS Filters: Correct destination rectangle in feComposite</title>
+<link rel="help" href="https://drafts.fxtf.org/filter-effects/#FilterProperty">
+<link rel="help" href="https://drafts.fxtf.org/filter-effects/#feMorphologyElement">
+<link rel="help" href="https://drafts.fxtf.org/filter-effects/#feFloodElement">
+<link rel="help" href="https://drafts.fxtf.org/filter-effects/#feCompositeElement">
+<link rel="issue" href="https://bugs.chromium.org/p/chromium/issues/detail?id=391200">
+<link rel="match" href="reference/fecomposite-non-zero-inoffset-001-ref.html">
+<meta name="assert" content="This test ensures that feComposite with 'operator=in' works properly on the correct destination rectangle.">
+<body>
+ <div style="filter: url('#filter'); width: 100px; height: 100px; padding: 1px;">
+ <div style="background-color: red; width: 98px; height: 98px;"></div>
+ </div>
+ <svg width="0" height="0">
+ <filter id="filter">
+ <feFlood result="outlineColor" flood-color="green"/>
+ <feMorphology in="SourceAlpha" operator="dilate" radius="1"/>
+ <feComposite operator="in" in="outlineColor"/>
+ </filter>
+ </svg>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/filter-effects/reference/fecomposite-non-zero-inoffset-001-ref.html b/tests/wpt/web-platform-tests/css/filter-effects/reference/fecomposite-non-zero-inoffset-001-ref.html
new file mode 100644
index 00000000000..e4900ad0476
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/filter-effects/reference/fecomposite-non-zero-inoffset-001-ref.html
@@ -0,0 +1,4 @@
+<!DOCTYPE html>
+<body>
+ <div style="width: 100px; height: 100px; background-color: green;"></div>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/filter-effects/reference/remove-filter-repaint-ref.html b/tests/wpt/web-platform-tests/css/filter-effects/reference/remove-filter-repaint-ref.html
new file mode 100644
index 00000000000..bde2a93360b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/filter-effects/reference/remove-filter-repaint-ref.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>CSS Filters: Repaint a compositing layer</title>
+ <style>
+ .backdrop {
+ position: absolute;
+ top: 0;
+ left: 0;
+ height: 100px;
+ width: 100px;
+ background-color: silver;
+ }
+
+ .overlay {
+ position: absolute;
+ top: 50px;
+ left: 50px;
+ width: 400px;
+ height: 100px;
+ background: gray;
+ box-shadow: 0 0 4px black;
+ }
+
+ .play {
+ font-size: 36pt;
+ background-color: navy;
+ color: white;
+ }
+ .composited {
+ will-change: transform;
+ }
+ </style>
+</head>
+<body>
+ <div class="composited backdrop"></div>
+ <div class="overlay">
+ <span id="play" class="play changed">this should be visible</span>
+ </div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/filter-effects/remove-filter-repaint.html b/tests/wpt/web-platform-tests/css/filter-effects/remove-filter-repaint.html
new file mode 100644
index 00000000000..a9af9db34ee
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/filter-effects/remove-filter-repaint.html
@@ -0,0 +1,60 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>CSS Filters: Repaint a compositing layer</title>
+ <link rel="author" title="Simon Fraser" href="mailto:simon.fraser@apple.com>">
+ <link rel="help" href="https://drafts.fxtf.org/filter-effects/#dropshadowEquivalent">
+ <link rel="issue" href="https://bugs.webkit.org/show_bug.cgi?id=120135">
+ <link rel="issue" href="https://chromiumcodereview.appspot.com/23526037">
+ <link rel="match" href="reference/remove-filter-repaint-ref.html">
+ <meta name="assert" content="This test ensures that we can repaint the compositing layer when removing a filter on an inline child of a compositing layer.">
+ <script src="/common/reftest-wait.js"></script>
+ <style>
+ .backdrop {
+ position: absolute;
+ top: 0;
+ left: 0;
+ height: 100px;
+ width: 100px;
+ background-color: silver;
+ }
+ .overlay {
+ position: absolute;
+ top: 50px;
+ left: 50px;
+ width: 400px;
+ height: 100px;
+ background: gray;
+ box-shadow: 0 0 4px black;
+ }
+ .play {
+ font-size: 36pt;
+ background-color: navy;
+ color: white;
+ }
+ .play.changed {
+ filter: drop-shadow(black 0 0 5px);
+ }
+ .composited {
+ will-change: transform;
+ }
+ </style>
+ <script>
+ function doTest() {
+ requestAnimationFrame(function() {
+ requestAnimationFrame(function() {
+ document.getElementById('play').classList.remove('changed');
+ takeScreenshot();
+ });
+ });
+ }
+ window.addEventListener('load', doTest, false);
+ </script>
+</head>
+<body>
+ <div class="composited backdrop"></div>
+ <div class="overlay">
+ <span id="play" class="play changed">this should be visible</span>
+ </div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-label-element/clicking-interactive-content.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-label-element/clicking-interactive-content.html
index 60a80fad9d2..c448df0a380 100644
--- a/tests/wpt/web-platform-tests/html/semantics/forms/the-label-element/clicking-interactive-content.html
+++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-label-element/clicking-interactive-content.html
@@ -19,17 +19,6 @@
<select></select>
<textarea></textarea>
<video controls></video>
-
- <div tabindex=""></div>
-
- <!-- These are interesting in that even without tabindex, they could become
- interactive with the addition/removal of an attribute. -->
- <a tabindex=""></a>
- <audio tabindex=""></audio>
- <img tabindex="">
- <input type=hidden tabindex="">
- <object tabindex=""></object>
- <video tabindex=""></video>
</template>
<script>
diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-label-element/clicking-noninteractive-unlabelable-content.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-label-element/clicking-noninteractive-unlabelable-content.html
index 233168f5664..be74ed68330 100644
--- a/tests/wpt/web-platform-tests/html/semantics/forms/the-label-element/clicking-noninteractive-unlabelable-content.html
+++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-label-element/clicking-noninteractive-unlabelable-content.html
@@ -17,6 +17,16 @@
<input type=hidden>
<object></object>
<video></video>
+
+ <!-- These are considered interactive content for the purpose of <label> in a
+ previous version of the HTML Standard, but no longer. -->
+ <a tabindex=""></a>
+ <audio tabindex=""></audio>
+ <div tabindex=""></div>
+ <img tabindex="">
+ <input type=hidden tabindex="">
+ <object tabindex=""></object>
+ <video tabindex=""></video>
</template>
<script>
diff --git a/tests/wpt/web-platform-tests/preload/subresource-integrity-partial-image.html b/tests/wpt/web-platform-tests/preload/subresource-integrity-partial-image.html
new file mode 100644
index 00000000000..3abc8399219
--- /dev/null
+++ b/tests/wpt/web-platform-tests/preload/subresource-integrity-partial-image.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Subresource Integrity Check + preload + partial image rendering</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<script>
+// https://crbug.com/1058045: Chromium crashed when:
+// 1. <link rel="preload" as="image" integrity="..." href="url">
+// (strictly speaking the preload scannner) starts preloading the image,
+// and the image url takes some time for loading,
+// 2. <img> loads the same URL and renders the partial image after some image
+// data is received but before fully loaded, and then
+// 3. the image is loaded and integrity check is done.
+
+const t = async_test(
+ "<link rel='image'> with progressive image shouldn't crash");
+
+</script>
+
+<link
+ rel="preload"
+ as="image"
+ integrity="sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU="
+ href="/element-timing/resources/progressive-image.py?name=square100.png&numInitial=7500&sleep=1000">
+<img src="/element-timing/resources/progressive-image.py?name=square100.png&numInitial=7500&sleep=1000"
+ onload="t.step_func_done()()"
+ onerror="t.unreached_func('image should load because SRI is not checked')()">
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/add_cookie/add.py b/tests/wpt/web-platform-tests/webdriver/tests/add_cookie/add.py
index c1a886aafa7..30804c1dd8e 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/add_cookie/add.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/add_cookie/add.py
@@ -1,4 +1,5 @@
from datetime import datetime, timedelta
+from six import text_type
from webdriver.transport import Response
@@ -59,11 +60,11 @@ def test_add_domain_cookie(session, url, server_config):
cookie = session.cookies("hello")
assert "domain" in cookie
- assert isinstance(cookie["domain"], basestring)
+ assert isinstance(cookie["domain"], text_type)
assert "name" in cookie
- assert isinstance(cookie["name"], basestring)
+ assert isinstance(cookie["name"], text_type)
assert "value" in cookie
- assert isinstance(cookie["value"], basestring)
+ assert isinstance(cookie["value"], text_type)
assert cookie["name"] == "hello"
assert cookie["value"] == "world"
@@ -89,11 +90,11 @@ def test_add_cookie_for_ip(session, url, server_config, configuration):
cookie = session.cookies("hello")
assert "name" in cookie
- assert isinstance(cookie["name"], basestring)
+ assert isinstance(cookie["name"], text_type)
assert "value" in cookie
- assert isinstance(cookie["value"], basestring)
+ assert isinstance(cookie["value"], text_type)
assert "domain" in cookie
- assert isinstance(cookie["domain"], basestring)
+ assert isinstance(cookie["domain"], text_type)
assert cookie["name"] == "hello"
assert cookie["value"] == "world"
@@ -118,9 +119,9 @@ def test_add_non_session_cookie(session, url):
cookie = session.cookies("hello")
assert "name" in cookie
- assert isinstance(cookie["name"], basestring)
+ assert isinstance(cookie["name"], text_type)
assert "value" in cookie
- assert isinstance(cookie["value"], basestring)
+ assert isinstance(cookie["value"], text_type)
assert "expiry" in cookie
assert isinstance(cookie["expiry"], int)
@@ -143,9 +144,9 @@ def test_add_session_cookie(session, url):
cookie = session.cookies("hello")
assert "name" in cookie
- assert isinstance(cookie["name"], basestring)
+ assert isinstance(cookie["name"], text_type)
assert "value" in cookie
- assert isinstance(cookie["value"], basestring)
+ assert isinstance(cookie["value"], text_type)
if "expiry" in cookie:
assert cookie.get("expiry") is None
@@ -168,11 +169,11 @@ def test_add_session_cookie_with_leading_dot_character_in_domain(session, url, s
cookie = session.cookies("hello")
assert "name" in cookie
- assert isinstance(cookie["name"], basestring)
+ assert isinstance(cookie["name"], text_type)
assert "value" in cookie
- assert isinstance(cookie["value"], basestring)
+ assert isinstance(cookie["value"], text_type)
assert "domain" in cookie
- assert isinstance(cookie["domain"], basestring)
+ assert isinstance(cookie["domain"], text_type)
assert cookie["name"] == "hello"
assert cookie["value"] == "world"
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/collections.py b/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/collections.py
index 14848da7e29..484a247cffd 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/collections.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/collections.py
@@ -1,5 +1,7 @@
import os
+from six import text_type
+
from tests.support.asserts import assert_same_element, assert_success
from tests.support.inline import inline
@@ -52,7 +54,7 @@ def test_file_list(session, tmpdir):
for expected, actual in zip(files, value):
assert isinstance(actual, dict)
assert "name" in actual
- assert isinstance(actual["name"], basestring)
+ assert isinstance(actual["name"], text_type)
assert os.path.basename(str(expected)) == actual["name"]
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/execute_script/collections.py b/tests/wpt/web-platform-tests/webdriver/tests/execute_script/collections.py
index f939713c806..be0b3a018c5 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/execute_script/collections.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/execute_script/collections.py
@@ -1,5 +1,7 @@
import os
+from six import text_type
+
from tests.support.asserts import assert_same_element, assert_success
from tests.support.inline import inline
@@ -45,7 +47,7 @@ def test_file_list(session, tmpdir):
for expected, actual in zip(files, value):
assert isinstance(actual, dict)
assert "name" in actual
- assert isinstance(actual["name"], basestring)
+ assert isinstance(actual["name"], text_type)
assert os.path.basename(str(expected)) == actual["name"]
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/get_alert_text/get.py b/tests/wpt/web-platform-tests/webdriver/tests/get_alert_text/get.py
index d6fdda2d1ed..ad0058e0326 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/get_alert_text/get.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/get_alert_text/get.py
@@ -1,3 +1,5 @@
+from six import text_type
+
from webdriver.error import NoSuchAlertException
from tests.support.asserts import assert_error, assert_success
@@ -27,7 +29,7 @@ def test_get_alert_text(session):
assert isinstance(response.body, dict)
assert "value" in response.body
alert_text = response.body["value"]
- assert isinstance(alert_text, basestring)
+ assert isinstance(alert_text, text_type)
assert alert_text == "Hello"
@@ -38,7 +40,7 @@ def test_get_confirm_text(session):
assert isinstance(response.body, dict)
assert "value" in response.body
confirm_text = response.body["value"]
- assert isinstance(confirm_text, basestring)
+ assert isinstance(confirm_text, text_type)
assert confirm_text == "Hello"
@@ -49,7 +51,7 @@ def test_get_prompt_text(session):
assert isinstance(response.body, dict)
assert "value" in response.body
prompt_text = response.body["value"]
- assert isinstance(prompt_text, basestring)
+ assert isinstance(prompt_text, text_type)
assert prompt_text == "Enter Your Name: "
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/get_current_url/get.py b/tests/wpt/web-platform-tests/webdriver/tests/get_current_url/get.py
index 39c28c61216..c22e3d410c3 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/get_current_url/get.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/get_current_url/get.py
@@ -1,3 +1,5 @@
+from six import text_type
+
from tests.support import platform_name
from tests.support.inline import inline
from tests.support.asserts import assert_error, assert_success
@@ -31,7 +33,7 @@ def test_get_current_url_payload(session):
response = get_current_url(session)
assert response.status == 200
- assert isinstance(response.body["value"], basestring)
+ assert isinstance(response.body["value"], text_type)
def test_get_current_url_special_pages(session):
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/get_named_cookie/get.py b/tests/wpt/web-platform-tests/webdriver/tests/get_named_cookie/get.py
index 9ea29c8994e..1fd5f9f1449 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/get_named_cookie/get.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/get_named_cookie/get.py
@@ -1,4 +1,6 @@
from datetime import datetime, timedelta
+from six import integer_types, text_type
+
from tests.support.asserts import assert_error, assert_success
from tests.support.helpers import clear_all_cookies
@@ -28,13 +30,13 @@ def test_get_named_session_cookie(session, url):
# table for cookie conversion
# https://w3c.github.io/webdriver/webdriver-spec.html#dfn-table-for-cookie-conversion
assert "name" in cookie
- assert isinstance(cookie["name"], basestring)
+ assert isinstance(cookie["name"], text_type)
assert "value" in cookie
- assert isinstance(cookie["value"], basestring)
+ assert isinstance(cookie["value"], text_type)
assert "path" in cookie
- assert isinstance(cookie["path"], basestring)
+ assert isinstance(cookie["path"], text_type)
assert "domain" in cookie
- assert isinstance(cookie["domain"], basestring)
+ assert isinstance(cookie["domain"], text_type)
assert "secure" in cookie
assert isinstance(cookie["secure"], bool)
assert "httpOnly" in cookie
@@ -60,11 +62,11 @@ def test_get_named_cookie(session, url):
assert isinstance(cookie, dict)
assert "name" in cookie
- assert isinstance(cookie["name"], basestring)
+ assert isinstance(cookie["name"], text_type)
assert "value" in cookie
- assert isinstance(cookie["value"], basestring)
+ assert isinstance(cookie["value"], text_type)
assert "expiry" in cookie
- assert isinstance(cookie["expiry"], (int, long))
+ assert isinstance(cookie["expiry"], integer_types)
assert cookie["name"] == "foo"
assert cookie["value"] == "bar"
@@ -99,9 +101,9 @@ def test_duplicated_cookie(session, url, server_config):
assert isinstance(cookie, dict)
assert "name" in cookie
- assert isinstance(cookie["name"], basestring)
+ assert isinstance(cookie["name"], text_type)
assert "value" in cookie
- assert isinstance(cookie["value"], basestring)
+ assert isinstance(cookie["value"], text_type)
assert cookie["name"] == new_cookie["name"]
assert cookie["value"] == "newworld"
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/new_session/create_alwaysMatch.py b/tests/wpt/web-platform-tests/webdriver/tests/new_session/create_alwaysMatch.py
index 097764e4a99..a4cc9efc02e 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/new_session/create_alwaysMatch.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/new_session/create_alwaysMatch.py
@@ -2,7 +2,7 @@
import pytest
-from conftest import product, flatten
+from .conftest import product, flatten
from tests.support.asserts import assert_success
from tests.new_session.support.create import valid_data
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/new_session/create_firstMatch.py b/tests/wpt/web-platform-tests/webdriver/tests/new_session/create_firstMatch.py
index f00f6042b08..ec671530f79 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/new_session/create_firstMatch.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/new_session/create_firstMatch.py
@@ -2,7 +2,7 @@
import pytest
-from conftest import product, flatten
+from .conftest import product, flatten
from tests.support.asserts import assert_success
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/new_session/invalid_capabilities.py b/tests/wpt/web-platform-tests/webdriver/tests/new_session/invalid_capabilities.py
index f31ce3b8b6f..afdcea0daf7 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/new_session/invalid_capabilities.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/new_session/invalid_capabilities.py
@@ -1,6 +1,6 @@
import pytest
-from conftest import product, flatten
+from .conftest import product, flatten
from tests.new_session.support.create import invalid_data, invalid_extensions
from tests.support.asserts import assert_error
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/new_session/response.py b/tests/wpt/web-platform-tests/webdriver/tests/new_session/response.py
index 16c526ae10b..dc132899881 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/new_session/response.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/new_session/response.py
@@ -1,28 +1,29 @@
import uuid
-
import pytest
+from six import text_type
+
from tests.support.asserts import assert_success
def test_sessionid(new_session, add_browser_capabilities):
response, _ = new_session({"capabilities": {"alwaysMatch": add_browser_capabilities({})}})
value = assert_success(response)
- assert isinstance(value["sessionId"], basestring)
+ assert isinstance(value["sessionId"], text_type)
uuid.UUID(hex=value["sessionId"])
@pytest.mark.parametrize("capability, type", [
- ("browserName", basestring),
- ("browserVersion", basestring),
- ("platformName", basestring),
+ ("browserName", text_type),
+ ("browserVersion", text_type),
+ ("platformName", text_type),
("acceptInsecureCerts", bool),
- ("pageLoadStrategy", basestring),
+ ("pageLoadStrategy", text_type),
("proxy", dict),
("setWindowRect", bool),
("timeouts", dict),
("strictFileInteractability", bool),
- ("unhandledPromptBehavior", basestring),
+ ("unhandledPromptBehavior", text_type),
])
def test_capability_type(session, capability, type):
assert isinstance(session.capabilities, dict)
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/perform_actions/support/keys.py b/tests/wpt/web-platform-tests/webdriver/tests/perform_actions/support/keys.py
index d4072f5a3f3..26825f04148 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/perform_actions/support/keys.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/perform_actions/support/keys.py
@@ -17,9 +17,10 @@
"""The Keys implementation."""
-from inspect import getmembers
import sys
+from inspect import getmembers
+from six import text_type
class Keys(object):
"""
@@ -105,7 +106,7 @@ class Keys(object):
R_DELETE = u"\uE05D"
-ALL_KEYS = getmembers(Keys, lambda x: type(x) == unicode)
+ALL_KEYS = getmembers(Keys, lambda x: type(x) == text_type)
ALL_EVENTS = {
"ADD": {
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/status/status.py b/tests/wpt/web-platform-tests/webdriver/tests/status/status.py
index f0df16a1ee1..1f0f1bc4fe7 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/status/status.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/status/status.py
@@ -1,5 +1,7 @@
import json
+from six import text_type
+
from tests.support.asserts import assert_success
@@ -16,7 +18,7 @@ def test_get_status_no_session(http):
value = parsed_obj["value"]
assert value["ready"] in [True, False]
- assert isinstance(value["message"], basestring)
+ assert isinstance(value["message"], text_type)
def test_status_with_session_running_on_endpoint_node(session):
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/support/asserts.py b/tests/wpt/web-platform-tests/webdriver/tests/support/asserts.py
index f65137463b4..5bd7f5b38e7 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/support/asserts.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/support/asserts.py
@@ -2,7 +2,7 @@ import base64
import imghdr
import struct
-from six import PY3
+from six import ensure_binary, text_type, PY3
from webdriver import Element, NoSuchAlertException, WebDriverException
@@ -52,8 +52,8 @@ def assert_error(response, error_code):
assert response.status == errors[error_code]
assert "value" in response.body
assert response.body["value"]["error"] == error_code
- assert isinstance(response.body["value"]["message"], basestring)
- assert isinstance(response.body["value"]["stacktrace"], basestring)
+ assert isinstance(response.body["value"]["message"], text_type)
+ assert isinstance(response.body["value"]["stacktrace"], text_type)
assert_response_headers(response.headers)
@@ -221,6 +221,6 @@ def assert_move_to_coordinates(point, target, events):
def assert_png(screenshot):
"""Test that screenshot is a Base64 encoded PNG file."""
- image = base64.decodestring(screenshot)
+ image = base64.decodestring(ensure_binary(screenshot))
mime_type = imghdr.what("", image)
assert mime_type == "png", "Expected image to be PNG, but it was {}".format(mime_type)
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/support/authentication.py b/tests/wpt/web-platform-tests/webdriver/tests/support/authentication.py
index 6f880f3c851..1e88a9e730d 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/support/authentication.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/support/authentication.py
@@ -1,4 +1,4 @@
-import urllib
+from six.moves.urllib.parse import urlencode
def basic_authentication(username=None, password=None, protocol="http"):
@@ -8,7 +8,7 @@ def basic_authentication(username=None, password=None, protocol="http"):
query = {}
return build_url("/webdriver/tests/support/authentication.py",
- query=urllib.urlencode(query),
+ query=urlencode(query),
protocol=protocol)
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/support/fixtures.py b/tests/wpt/web-platform-tests/webdriver/tests/support/fixtures.py
index ab2aaf4e75d..80ccfddf3d1 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/support/fixtures.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/support/fixtures.py
@@ -1,11 +1,14 @@
import copy
import json
import os
-import urlparse
import pytest
import webdriver
+from six import string_types
+
+from six.moves.urllib.parse import urlunsplit
+
from tests.support import defaults
from tests.support.helpers import cleanup_session
from tests.support.http_request import HTTPRequest
@@ -172,7 +175,7 @@ def url(server_config):
domain = server_config["domains"][domain][subdomain]
port = server_config["ports"][protocol][0]
host = "{0}:{1}".format(domain, port)
- return urlparse.urlunsplit((protocol, host, path, query, fragment))
+ return urlunsplit((protocol, host, path, query, fragment))
inner.__name__ = "url"
return inner
@@ -191,7 +194,7 @@ def create_dialog(session):
if text is None:
text = ""
- assert isinstance(text, basestring), "`text` parameter must be a string"
+ assert isinstance(text, string_types), "`text` parameter must be a string"
# Script completes itself when the user prompt has been opened.
# For prompt() dialogs, add a value for the 'default' argument,
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/support/http_request.py b/tests/wpt/web-platform-tests/webdriver/tests/support/http_request.py
index 5e46d97017e..895d1319ac0 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/support/http_request.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/support/http_request.py
@@ -1,9 +1,10 @@
import contextlib
-import httplib
import json
from six import text_type
+from six.moves.http_client import HTTPConnection
+
class HTTPRequest(object):
def __init__(self, host, port):
@@ -33,7 +34,7 @@ class HTTPRequest(object):
if isinstance(payload, text_type):
payload = body.encode("utf-8")
- conn = httplib.HTTPConnection(self.host, self.port)
+ conn = HTTPConnection(self.host, self.port)
try:
conn.request(method, path, payload)
yield conn.getresponse()
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/support/image.py b/tests/wpt/web-platform-tests/webdriver/tests/support/image.py
index 81dd933943f..6149ccccbe3 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/support/image.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/support/image.py
@@ -2,11 +2,13 @@ import base64
import math
import struct
+from six import ensure_binary
+
from tests.support.asserts import assert_png
def png_dimensions(screenshot):
assert_png(screenshot)
- image = base64.decodestring(screenshot)
+ image = base64.decodestring(ensure_binary(screenshot))
width, height = struct.unpack(">LL", image[16:24])
return int(width), int(height)
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/support/inline.py b/tests/wpt/web-platform-tests/webdriver/tests/support/inline.py
index b65b9cb8b11..15bc26e54c6 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/support/inline.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/support/inline.py
@@ -1,6 +1,6 @@
"""Helpers for inlining extracts of documents in tests."""
-import urllib
+from six.moves.urllib.parse import urlencode
BOILERPLATES = {
@@ -58,7 +58,7 @@ def inline(src, doctype="html", mime=None, charset=None, **kwargs):
query = {"doc": doc, "mime": mime, "charset": charset}
return build_url(
"/webdriver/tests/support/inline.py",
- query=urllib.urlencode(query),
+ query=urlencode(query),
**kwargs)
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/switch_to_frame/cross_origin.py b/tests/wpt/web-platform-tests/webdriver/tests/switch_to_frame/cross_origin.py
index 4425a3ab901..905f1eb56dc 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/switch_to_frame/cross_origin.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/switch_to_frame/cross_origin.py
@@ -1,4 +1,4 @@
-from urlparse import urlparse
+from six.moves.urllib.parse import urlparse
import webdriver.protocol as protocol
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/switch_to_frame/switch.py b/tests/wpt/web-platform-tests/webdriver/tests/switch_to_frame/switch.py
index 67b855a96d9..f9b0e6fc1fc 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/switch_to_frame/switch.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/switch_to_frame/switch.py
@@ -18,7 +18,7 @@ def switch_to_frame(session, frame):
def frameset(*docs):
- frames = map(lambda doc: "<frame src='{}'></frame>".format(inline(doc)), docs)
+ frames = list(map(lambda doc: "<frame src='{}'></frame>".format(inline(doc)), docs))
return "<frameset rows='{}'>\n{}</frameset>".format(len(frames) * "*,", "\n".join(frames))
diff --git a/tests/wpt/web-platform-tests/webxr/hit-test/xrRay_constructor.https.html b/tests/wpt/web-platform-tests/webxr/hit-test/xrRay_constructor.https.html
index 08f20142e38..d4d727785f1 100644
--- a/tests/wpt/web-platform-tests/webxr/hit-test/xrRay_constructor.https.html
+++ b/tests/wpt/web-platform-tests/webxr/hit-test/xrRay_constructor.https.html
@@ -91,25 +91,23 @@ let constructor_tests = function() {
{
// Check that we throw exception on direction too close to 0,0,0:
let originDict = {x : 10.0, y : 10.0, z : 10.0, w : 1.0};
- let directionDict = {x : 0.0, y : 0.0, z : 0.0, w : 0.0};
+ let directionDict = {x : 1.0, y : 0.0, z : 0.0, w : 0.0};
- try {
- let xrRay = new XRRay(
+ assert_throws_js(TypeError, () => new XRRay(
DOMPoint.fromPoint(originDict),
- DOMPoint.fromPoint(directionDict));
-
- assert(false, "origin-custom-direction-zero:exception not thrown");
- }
- catch(e)
- {
- if(e instanceof DOMException) {
- assert_equals(e.name, "InvalidStateError", "origin-custom-direction-zero:incorrect DOM exception thrown");
- } else {
- assert(false, "origin-custom-direction-zero:other exception thrown: " + e);
- }
- }
- }
+ DOMPoint.fromPoint({x : 0.0, y : 0.0, z : 0.0, w : 0.0})
+ ), "Constructor should throw for zero direction");
+
+ assert_throws_js(TypeError, () => new XRRay(
+ DOMPoint.fromPoint(originDict),
+ DOMPoint.fromPoint({x : 1.0, y : 0.0, z : 0.0, w : 0.5})
+ ), "Constructor should throw for nonzero direction w coordinate");
+ assert_throws_js(TypeError, () => new XRRay(
+ DOMPoint.fromPoint({x : 10.0, y : 10.0, z : 10.0, w : 0.5}),
+ DOMPoint.fromPoint(directionDict)
+ ), "Constructor should throw for non-1 origin w coordinate");
+ }
//
// Constructor 2 - from rigid transform.
//
diff --git a/tests/wpt/web-platform-tests/webxr/resources/webxr_test_constants_fake_world.js b/tests/wpt/web-platform-tests/webxr/resources/webxr_test_constants_fake_world.js
index 4e2adc633fd..7e428e21550 100644
--- a/tests/wpt/web-platform-tests/webxr/resources/webxr_test_constants_fake_world.js
+++ b/tests/wpt/web-platform-tests/webxr/resources/webxr_test_constants_fake_world.js
@@ -29,26 +29,26 @@ function createFakeWorld(
// Faces:
const FRONT_WALL_AND_FLOOR_FACES = [
// Front wall:
- [BOTTOM_LEFT_FRONT, BOTTOM_RIGHT_FRONT, TOP_RIGHT_FRONT],
- [BOTTOM_LEFT_FRONT, TOP_RIGHT_FRONT, TOP_LEFT_FRONT],
+ { vertices: [BOTTOM_LEFT_FRONT, BOTTOM_RIGHT_FRONT, TOP_RIGHT_FRONT] },
+ { vertices: [BOTTOM_LEFT_FRONT, TOP_RIGHT_FRONT, TOP_LEFT_FRONT] },
// Floor:
- [BOTTOM_LEFT_FRONT, BOTTOM_RIGHT_FRONT, BOTTOM_RIGHT_BACK],
- [BOTTOM_LEFT_FRONT, BOTTOM_LEFT_BACK, BOTTOM_RIGHT_BACK],
+ { vertices: [BOTTOM_LEFT_FRONT, BOTTOM_RIGHT_FRONT, BOTTOM_RIGHT_BACK] },
+ { vertices: [BOTTOM_LEFT_FRONT, BOTTOM_LEFT_BACK, BOTTOM_RIGHT_BACK] },
];
const CEILING_FACES = [
// Ceiling:
- [TOP_LEFT_FRONT, TOP_RIGHT_FRONT, TOP_RIGHT_BACK],
- [TOP_LEFT_FRONT, TOP_LEFT_BACK, TOP_RIGHT_BACK],
+ { vertices: [TOP_LEFT_FRONT, TOP_RIGHT_FRONT, TOP_RIGHT_BACK] },
+ { vertices: [TOP_LEFT_FRONT, TOP_LEFT_BACK, TOP_RIGHT_BACK] },
];
const SIDE_WALLS_FACES = [
// Left:
- [BOTTOM_LEFT_FRONT, TOP_LEFT_FRONT, TOP_LEFT_BACK],
- [BOTTOM_LEFT_FRONT, BOTTOM_LEFT_BACK, TOP_LEFT_BACK],
+ { vertices: [BOTTOM_LEFT_FRONT, TOP_LEFT_FRONT, TOP_LEFT_BACK] },
+ { vertices: [BOTTOM_LEFT_FRONT, BOTTOM_LEFT_BACK, TOP_LEFT_BACK] },
// Right:
- [BOTTOM_RIGHT_FRONT, TOP_RIGHT_FRONT, TOP_RIGHT_BACK],
- [BOTTOM_RIGHT_FRONT, BOTTOM_RIGHT_BACK, TOP_RIGHT_BACK],
+ { vertices: [BOTTOM_RIGHT_FRONT, TOP_RIGHT_FRONT, TOP_RIGHT_BACK] },
+ { vertices: [BOTTOM_RIGHT_FRONT, BOTTOM_RIGHT_BACK, TOP_RIGHT_BACK] },
];
// Regions: