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/css-transforms/transform-scale-hittest.html.ini3
-rw-r--r--tests/wpt/metadata-layout-2020/css/cssom-view/CaretPosition-001.html.ini4
-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-view/matchMedia-display-none-iframe.html.ini2
-rw-r--r--tests/wpt/metadata-layout-2020/css/cssom-view/offsetTopLeft-border-box.html.ini7
-rw-r--r--tests/wpt/metadata-layout-2020/custom-elements/reactions/HTMLMediaElement.html.ini2
-rw-r--r--tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini10
-rw-r--r--tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html.ini2
-rw-r--r--tests/wpt/metadata-layout-2020/html/browsers/windows/embedded-opener-remove-frame.html.ini1
-rw-r--r--tests/wpt/metadata-layout-2020/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-attribute-changes.html.ini5
-rw-r--r--tests/wpt/metadata-layout-2020/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-empty-content-value.html.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-first-valid-applies.html.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-insert.html.ini10
-rw-r--r--tests/wpt/metadata-layout-2020/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-no-content-value.html.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-presentational-hint.html.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-remove-head.html.ini7
-rw-r--r--tests/wpt/metadata-layout-2020/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-remove.html.ini5
-rw-r--r--tests/wpt/metadata-layout-2020/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-single-value-in-body.html.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-single-value-in-head.html.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-single-value-in-shadow-tree.html.ini2
-rw-r--r--tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini2
-rw-r--r--tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini2
-rw-r--r--tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini1
-rw-r--r--tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini1
-rw-r--r--tests/wpt/metadata-layout-2020/html/semantics/forms/form-submission-0/form-double-submit-3.html.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/html/syntax/parsing/DOMContentLoaded-defer.html.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/html/webappapis/dynamic-markup-insertion/document-write/module-delayed.html.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini2
-rw-r--r--tests/wpt/metadata-layout-2020/wasm/jsapi/memory/constructor-types.tentative.any.js.ini21
-rw-r--r--tests/wpt/metadata-layout-2020/wasm/jsapi/memory/constructor.any.js.ini9
-rw-r--r--tests/wpt/metadata-layout-2020/wasm/jsapi/table/constructor-types.tentative.any.js.ini21
-rw-r--r--tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini1
-rw-r--r--tests/wpt/metadata-layout-2020/webdriver/tests/perform_actions/wheel.py.ini19
-rw-r--r--tests/wpt/metadata-layout-2020/webmessaging/with-ports/018.html.ini5
-rw-r--r--tests/wpt/metadata-layout-2020/webxr/webGLCanvasContext_create_xrcompatible.https.html.ini7
-rw-r--r--tests/wpt/metadata-layout-2020/webxr/webxr_feature_policy.https.html.ini11
-rw-r--r--tests/wpt/metadata-layout-2020/workers/constructors/Worker/Worker-constructor.html.ini2
-rw-r--r--tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini2
-rw-r--r--tests/wpt/metadata/MANIFEST.json444
-rw-r--r--tests/wpt/metadata/css/css-transforms/transform-scale-hittest.html.ini3
-rw-r--r--tests/wpt/metadata/css/cssom-view/CaretPosition-001.html.ini4
-rw-r--r--tests/wpt/metadata/css/cssom-view/elementsFromPoint-invalid-cases.html.ini4
-rw-r--r--tests/wpt/metadata/css/cssom-view/matchMedia-display-none-iframe.html.ini2
-rw-r--r--tests/wpt/metadata/css/cssom-view/offsetTopLeft-border-box.html.ini7
-rw-r--r--tests/wpt/metadata/custom-elements/reactions/HTMLMediaElement.html.ini2
-rw-r--r--tests/wpt/metadata/fetch/content-type/response.window.js.ini10
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html.ini2
-rw-r--r--tests/wpt/metadata/html/browsers/windows/embedded-opener-remove-frame.html.ini1
-rw-r--r--tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-attribute-changes.html.ini5
-rw-r--r--tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-empty-content-value.html.ini4
-rw-r--r--tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-first-valid-applies.html.ini4
-rw-r--r--tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-insert.html.ini10
-rw-r--r--tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-no-content-value.html.ini4
-rw-r--r--tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-presentational-hint.html.ini4
-rw-r--r--tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-remove-head.html.ini7
-rw-r--r--tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-remove.html.ini5
-rw-r--r--tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-single-value-in-body.html.ini4
-rw-r--r--tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-single-value-in-head.html.ini4
-rw-r--r--tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-single-value-in-shadow-tree.html.ini2
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini2
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini2
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini1
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini1
-rw-r--r--tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-3.html.ini4
-rw-r--r--tests/wpt/metadata/html/syntax/parsing/DOMContentLoaded-defer.html.ini4
-rw-r--r--tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/document-write/module-delayed.html.ini4
-rw-r--r--tests/wpt/metadata/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini2
-rw-r--r--tests/wpt/metadata/wasm/jsapi/memory/constructor-types.tentative.any.js.ini21
-rw-r--r--tests/wpt/metadata/wasm/jsapi/memory/constructor.any.js.ini6
-rw-r--r--tests/wpt/metadata/wasm/jsapi/table/constructor-types.tentative.any.js.ini21
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini1
-rw-r--r--tests/wpt/metadata/webdriver/tests/perform_actions/wheel.py.ini19
-rw-r--r--tests/wpt/metadata/webmessaging/with-ports/018.html.ini5
-rw-r--r--tests/wpt/metadata/webxr/webGLCanvasContext_create_xrcompatible.https.html.ini3
-rw-r--r--tests/wpt/metadata/webxr/webxr_feature_policy.https.html.ini3
-rw-r--r--tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini2
-rw-r--r--tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolum-001-ref.html5
-rw-r--r--tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-001.html39
-rw-r--r--tests/wpt/web-platform-tests/css/css-overflow/scrollbar-gutter-001.html197
-rw-r--r--tests/wpt/web-platform-tests/css/css-overflow/scrollbar-gutter-002.html263
-rw-r--r--tests/wpt/web-platform-tests/css/css-overflow/scrollbar-gutter-003.html263
-rw-r--r--tests/wpt/web-platform-tests/css/css-overflow/scrollbar-gutter-004.html263
-rw-r--r--tests/wpt/web-platform-tests/css/css-overflow/scrollbar-gutter-005.html263
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/abspos-014.tentative.html14
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/flex-aspect-ratio-024.tentative.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-text-decor/reference/text-decoration-color-ref.html5
-rw-r--r--tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-color.html5
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/altering-dom-crash.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/whitespace-followed-by-cham-symbol-crash.html2
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/idlharness.window.js9
-rw-r--r--tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cross-origin-isolated-permission.https.html156
-rw-r--r--tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/resources/cross-origin-isolated-worker.js11
-rw-r--r--tests/wpt/web-platform-tests/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/blob-data.https.html12
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-attribute-changes.html (renamed from tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-attribute-changes.html)4
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-empty-content-value.html (renamed from tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-empty-content-value.html)4
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-first-valid-applies.html (renamed from tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-first-valid-applies.html)4
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-insert.html (renamed from tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-insert.html)4
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-no-content-value.html (renamed from tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-no-content-value.html)4
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-presentational-hint.html (renamed from tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-presentational-hint.html)4
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-remove-head.html (renamed from tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-remove-head.html)4
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-remove.html (renamed from tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-remove.html)4
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-single-value-in-body.html (renamed from tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-single-value-in-body.html)6
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-single-value-in-head.html (renamed from tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-single-value-in-head.html)4
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-single-value-in-shadow-tree.html (renamed from tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-single-value-in-shadow-tree.html)4
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/document-metadata/the-meta-element/color-scheme/support/compute-root-color-scheme.js (renamed from tests/wpt/web-platform-tests/css/css-color-adjust/meta/support/compute-root-color-scheme.js)0
-rw-r--r--tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/wheelScroll.html.ini3
-rw-r--r--tests/wpt/web-platform-tests/infrastructure/testdriver/actions/wheelScroll.html45
-rw-r--r--tests/wpt/web-platform-tests/interfaces/is-input-pending.idl8
-rw-r--r--tests/wpt/web-platform-tests/interfaces/native-file-system.idl2
-rw-r--r--tests/wpt/web-platform-tests/interfaces/permissions-policy.idl (renamed from tests/wpt/web-platform-tests/interfaces/feature-policy.idl)10
-rw-r--r--tests/wpt/web-platform-tests/is-input-pending/idlharness.window.js1
-rw-r--r--tests/wpt/web-platform-tests/is-input-pending/resources/input-onmessage.js4
-rw-r--r--tests/wpt/web-platform-tests/lint.ignore8
-rw-r--r--tests/wpt/web-platform-tests/origin-isolation/popups-crash.https.html9
-rw-r--r--tests/wpt/web-platform-tests/origin-isolation/resources/crashy-popup.sub.html6
-rw-r--r--tests/wpt/web-platform-tests/origin-isolation/resources/crashy-popup.sub.html.headers1
-rw-r--r--tests/wpt/web-platform-tests/pointerlock/mouse_buttons_back_forward.html21
-rw-r--r--tests/wpt/web-platform-tests/resources/chromium/webxr-test.js7
-rw-r--r--tests/wpt/web-platform-tests/resources/testdriver-actions.js96
-rw-r--r--tests/wpt/web-platform-tests/tools/lint/lint.py2
-rw-r--r--tests/wpt/web-platform-tests/tools/manifest/sourcefile.py60
-rw-r--r--tests/wpt/web-platform-tests/tools/serve/serve.py13
-rw-r--r--tests/wpt/web-platform-tests/tools/webdriver/webdriver/client.py26
-rw-r--r--tests/wpt/web-platform-tests/tools/wpt/browser.py58
-rw-r--r--tests/wpt/web-platform-tests/tools/wpt/run.py9
-rw-r--r--tests/wpt/web-platform-tests/tools/wpt/tests/test_browser.py62
-rw-r--r--tests/wpt/web-platform-tests/wasm/jsapi/memory/constructor-types.tentative.any.js4
-rw-r--r--tests/wpt/web-platform-tests/wasm/jsapi/memory/constructor.any.js2
-rw-r--r--tests/wpt/web-platform-tests/wasm/jsapi/table/constructor-types.tentative.any.js10
-rw-r--r--tests/wpt/web-platform-tests/web-share/canShare.tentative.https.html40
-rw-r--r--tests/wpt/web-platform-tests/webauthn/getcredential-extensions.https.html13
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/perform_actions/conftest.py11
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/perform_actions/support/test_actions_scroll_wdspec.html103
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/perform_actions/wheel.py63
-rw-r--r--tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-getStats.https.html2
-rw-r--r--tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-replaceTrack.https.html8
-rw-r--r--tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-track-stats.https.html24
-rw-r--r--tests/wpt/web-platform-tests/webrtc/legacy/RTCPeerConnection-addStream.https.html2
-rw-r--r--tests/wpt/web-platform-tests/webrtc/protocol/candidate-exchange.https.html27
-rw-r--r--tests/wpt/web-platform-tests/webxr/webGLCanvasContext_create_xrcompatible.https.html10
-rw-r--r--tests/wpt/web-platform-tests/webxr/webxr_feature_policy.https.html16
146 files changed, 1564 insertions, 1636 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 3605e8f3fc9..76b44d9e9cf 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: TIMEOUT
+ expected: FAIL
[Fetching a blob URL immediately before revoking it works in an iframe.]
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 f8e7e539aae..4a1e8110f6f 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,6 +2,3 @@
[Hit test intersecting scaled box]
expected: FAIL
- [Hit test within unscaled box]
- expected: FAIL
-
diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/CaretPosition-001.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/CaretPosition-001.html.ini
new file mode 100644
index 00000000000..4c79907309b
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/css/cssom-view/CaretPosition-001.html.ini
@@ -0,0 +1,4 @@
+[CaretPosition-001.html]
+ [Element at (400, 100)]
+ 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
deleted file mode 100644
index e181af5397f..00000000000
--- a/tests/wpt/metadata-layout-2020/css/cssom-view/elementsFromPoint-invalid-cases.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[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-view/matchMedia-display-none-iframe.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/matchMedia-display-none-iframe.html.ini
new file mode 100644
index 00000000000..e6e1f29e274
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/css/cssom-view/matchMedia-display-none-iframe.html.ini
@@ -0,0 +1,2 @@
+[matchMedia-display-none-iframe.html]
+ expected: ERROR
diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/offsetTopLeft-border-box.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/offsetTopLeft-border-box.html.ini
deleted file mode 100644
index 239c35135e4..00000000000
--- a/tests/wpt/metadata-layout-2020/css/cssom-view/offsetTopLeft-border-box.html.ini
+++ /dev/null
@@ -1,7 +0,0 @@
-[offsetTopLeft-border-box.html]
- [container: 1]
- expected: FAIL
-
- [container: 0]
- expected: FAIL
-
diff --git a/tests/wpt/metadata-layout-2020/custom-elements/reactions/HTMLMediaElement.html.ini b/tests/wpt/metadata-layout-2020/custom-elements/reactions/HTMLMediaElement.html.ini
new file mode 100644
index 00000000000..2ca05f57bb0
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/custom-elements/reactions/HTMLMediaElement.html.ini
@@ -0,0 +1,2 @@
+[HTMLMediaElement.html]
+ expected: TIMEOUT
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 0d44a823cc7..ee975808986 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
@@ -318,9 +318,15 @@
[<iframe>: separate response Content-Type: text/html;" text/plain]
expected: FAIL
- [<iframe>: separate response Content-Type: text/html;x=" text/plain]
+ [<iframe>: combined response Content-Type: text/html;" text/plain]
expected: FAIL
- [<iframe>: separate response Content-Type: text/html;" \\" text/plain]
+ [<iframe>: combined response Content-Type: text/html */*]
+ expected: FAIL
+
+ [<iframe>: separate response Content-Type: text/html */*]
+ expected: FAIL
+
+ [<iframe>: separate response Content-Type: text/plain */*]
expected: FAIL
diff --git a/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini b/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini
new file mode 100644
index 00000000000..87b07c3e670
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini
@@ -0,0 +1,4 @@
+[traverse_the_history_1.html]
+ [Multiple history traversals from the same task]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini b/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini
deleted file mode 100644
index 75d75b4cda2..00000000000
--- a/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[traverse_the_history_2.html]
- [Multiple history traversals, last would be aborted]
- expected: FAIL
-
diff --git a/tests/wpt/metadata-layout-2020/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html.ini b/tests/wpt/metadata-layout-2020/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html.ini
new file mode 100644
index 00000000000..735a9a75a2a
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html.ini
@@ -0,0 +1,2 @@
+[cross-origin-objects-on-new-window.html]
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata-layout-2020/html/browsers/windows/embedded-opener-remove-frame.html.ini b/tests/wpt/metadata-layout-2020/html/browsers/windows/embedded-opener-remove-frame.html.ini
index b91c29e0274..d1022db6481 100644
--- a/tests/wpt/metadata-layout-2020/html/browsers/windows/embedded-opener-remove-frame.html.ini
+++ b/tests/wpt/metadata-layout-2020/html/browsers/windows/embedded-opener-remove-frame.html.ini
@@ -1,4 +1,5 @@
[embedded-opener-remove-frame.html]
+ expected: CRASH
[opener of discarded nested browsing context]
expected: FAIL
diff --git a/tests/wpt/metadata-layout-2020/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-attribute-changes.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-attribute-changes.html.ini
new file mode 100644
index 00000000000..8b7ac783be2
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-attribute-changes.html.ini
@@ -0,0 +1,5 @@
+[meta-color-scheme-attribute-changes.html]
+ expected: ERROR
+ [Meta color-scheme initially 'dark'.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-empty-content-value.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-empty-content-value.html.ini
new file mode 100644
index 00000000000..a5972da050c
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-empty-content-value.html.ini
@@ -0,0 +1,4 @@
+[meta-color-scheme-empty-content-value.html]
+ [Meta color-scheme with empty content attribute has no effect.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-first-valid-applies.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-first-valid-applies.html.ini
new file mode 100644
index 00000000000..a62a92de046
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-first-valid-applies.html.ini
@@ -0,0 +1,4 @@
+[meta-color-scheme-first-valid-applies.html]
+ [Tree order decides which meta color-scheme applies.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-insert.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-insert.html.ini
new file mode 100644
index 00000000000..a5c3b7d54fd
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-insert.html.ini
@@ -0,0 +1,10 @@
+[meta-color-scheme-insert.html]
+ [Inserted meta color-scheme applies]
+ expected: FAIL
+
+ [Inserted meta color-scheme before existing in head applies]
+ expected: FAIL
+
+ [Initial color-scheme]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-no-content-value.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-no-content-value.html.ini
new file mode 100644
index 00000000000..32b9cb25716
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-no-content-value.html.ini
@@ -0,0 +1,4 @@
+[meta-color-scheme-no-content-value.html]
+ [Meta color-scheme without content attribute has no effect.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-presentational-hint.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-presentational-hint.html.ini
new file mode 100644
index 00000000000..4c167af9462
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-presentational-hint.html.ini
@@ -0,0 +1,4 @@
+[meta-color-scheme-presentational-hint.html]
+ [Author origin style rule overrides meta color-scheme.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-remove-head.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-remove-head.html.ini
new file mode 100644
index 00000000000..33251fc53ac
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-remove-head.html.ini
@@ -0,0 +1,7 @@
+[meta-color-scheme-remove-head.html]
+ [Initial value after removing head including meta color-scheme.]
+ expected: FAIL
+
+ [Meta color-scheme applies.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-remove.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-remove.html.ini
new file mode 100644
index 00000000000..13cf48e88e9
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-remove.html.ini
@@ -0,0 +1,5 @@
+[meta-color-scheme-remove.html]
+ expected: ERROR
+ [First meta applies.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-single-value-in-body.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-single-value-in-body.html.ini
new file mode 100644
index 00000000000..498aed22a2c
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-single-value-in-body.html.ini
@@ -0,0 +1,4 @@
+[meta-color-scheme-single-value-in-body.html]
+ [Meta color-scheme in body should apply.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-single-value-in-head.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-single-value-in-head.html.ini
new file mode 100644
index 00000000000..84fb2c2c8c9
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-single-value-in-head.html.ini
@@ -0,0 +1,4 @@
+[meta-color-scheme-single-value-in-head.html]
+ [Meta color-scheme in head applies.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-single-value-in-shadow-tree.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-single-value-in-shadow-tree.html.ini
new file mode 100644
index 00000000000..3502f22f24a
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-single-value-in-shadow-tree.html.ini
@@ -0,0 +1,2 @@
+[meta-color-scheme-single-value-in-shadow-tree.html]
+ expected: ERROR
diff --git a/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini
index 88f4ddd0e9a..42ebcc9d57e 100644
--- a/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini
+++ b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini
@@ -1,5 +1,5 @@
[iframe_sandbox_popups_escaping-1.html]
- expected: CRASH
+ expected: TIMEOUT
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
expected: TIMEOUT
diff --git a/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini
index c6f45be1eb2..e63fe7c263e 100644
--- a/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini
+++ b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini
@@ -1,5 +1,5 @@
[iframe_sandbox_popups_escaping-2.html]
- expected: TIMEOUT
+ expected: CRASH
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
expected: TIMEOUT
diff --git a/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini
index 338d283eb0e..93673c2a0db 100644
--- a/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini
+++ b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini
@@ -1,4 +1,5 @@
[iframe_sandbox_popups_escaping-3.html]
+ expected: CRASH
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
expected: FAIL
diff --git a/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini
index 1b74d6e073d..0c89d5253df 100644
--- a/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini
+++ b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini
@@ -1,4 +1,5 @@
[iframe_sandbox_popups_nonescaping-1.html]
+ expected: CRASH
[Check that popups from a sandboxed iframe do not escape the sandbox]
expected: FAIL
diff --git a/tests/wpt/metadata-layout-2020/html/semantics/forms/form-submission-0/form-double-submit-3.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/forms/form-submission-0/form-double-submit-3.html.ini
new file mode 100644
index 00000000000..9f416703229
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/html/semantics/forms/form-submission-0/form-double-submit-3.html.ini
@@ -0,0 +1,4 @@
+[form-double-submit-3.html]
+ [<button> should have the same double-submit protection as <input type=submit>]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/html/syntax/parsing/DOMContentLoaded-defer.html.ini b/tests/wpt/metadata-layout-2020/html/syntax/parsing/DOMContentLoaded-defer.html.ini
new file mode 100644
index 00000000000..a9677391662
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/html/syntax/parsing/DOMContentLoaded-defer.html.ini
@@ -0,0 +1,4 @@
+[DOMContentLoaded-defer.html]
+ [The end: DOMContentLoaded and defer scripts]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/html/webappapis/dynamic-markup-insertion/document-write/module-delayed.html.ini b/tests/wpt/metadata-layout-2020/html/webappapis/dynamic-markup-insertion/document-write/module-delayed.html.ini
deleted file mode 100644
index 59a54fe88e4..00000000000
--- a/tests/wpt/metadata-layout-2020/html/webappapis/dynamic-markup-insertion/document-write/module-delayed.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[module-delayed.html]
- [async document.write in a module]
- expected: FAIL
-
diff --git a/tests/wpt/metadata-layout-2020/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini b/tests/wpt/metadata-layout-2020/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini
index 450c88bd32b..5602ea31dbe 100644
--- a/tests/wpt/metadata-layout-2020/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini
+++ b/tests/wpt/metadata-layout-2020/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini
@@ -4,5 +4,5 @@
expected: TIMEOUT
[The entry settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
- expected: FAIL
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata-layout-2020/wasm/jsapi/memory/constructor-types.tentative.any.js.ini b/tests/wpt/metadata-layout-2020/wasm/jsapi/memory/constructor-types.tentative.any.js.ini
new file mode 100644
index 00000000000..383e4828679
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/wasm/jsapi/memory/constructor-types.tentative.any.js.ini
@@ -0,0 +1,21 @@
+[constructor-types.tentative.any.html]
+ [Zero minimum]
+ expected: FAIL
+
+ [Initializing with both initial and minimum]
+ expected: FAIL
+
+ [Non-zero minimum]
+ expected: FAIL
+
+
+[constructor-types.tentative.any.worker.html]
+ [Zero minimum]
+ expected: FAIL
+
+ [Initializing with both initial and minimum]
+ expected: FAIL
+
+ [Non-zero minimum]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/wasm/jsapi/memory/constructor.any.js.ini b/tests/wpt/metadata-layout-2020/wasm/jsapi/memory/constructor.any.js.ini
deleted file mode 100644
index e9ddc18beff..00000000000
--- a/tests/wpt/metadata-layout-2020/wasm/jsapi/memory/constructor.any.js.ini
+++ /dev/null
@@ -1,9 +0,0 @@
-[constructor.any.worker.html]
- [Proxy descriptor]
- expected: FAIL
-
-
-[constructor.any.html]
- [Proxy descriptor]
- expected: FAIL
-
diff --git a/tests/wpt/metadata-layout-2020/wasm/jsapi/table/constructor-types.tentative.any.js.ini b/tests/wpt/metadata-layout-2020/wasm/jsapi/table/constructor-types.tentative.any.js.ini
new file mode 100644
index 00000000000..383e4828679
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/wasm/jsapi/table/constructor-types.tentative.any.js.ini
@@ -0,0 +1,21 @@
+[constructor-types.tentative.any.html]
+ [Zero minimum]
+ expected: FAIL
+
+ [Initializing with both initial and minimum]
+ expected: FAIL
+
+ [Non-zero minimum]
+ expected: FAIL
+
+
+[constructor-types.tentative.any.worker.html]
+ [Zero minimum]
+ expected: FAIL
+
+ [Initializing with both initial and minimum]
+ expected: FAIL
+
+ [Non-zero minimum]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini b/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini
index 66bd350083b..a56bad443a2 100644
--- a/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini
+++ b/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini
@@ -1,4 +1,5 @@
[realtimeanalyser-fft-scaling.html]
+ expected: TIMEOUT
[X 2048-point FFT peak position is not equal to 64. Got 0.]
expected: FAIL
diff --git a/tests/wpt/metadata-layout-2020/webdriver/tests/perform_actions/wheel.py.ini b/tests/wpt/metadata-layout-2020/webdriver/tests/perform_actions/wheel.py.ini
new file mode 100644
index 00000000000..7dd26e0d083
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/webdriver/tests/perform_actions/wheel.py.ini
@@ -0,0 +1,19 @@
+[wheel.py]
+ [test_wheel_scroll_overflow]
+ expected: FAIL
+
+ [test_null_response_value]
+ expected: FAIL
+
+ [test_wheel_scroll]
+ expected: FAIL
+
+ [test_no_top_browsing_context]
+ expected: ERROR
+
+ [test_no_browsing_context]
+ expected: ERROR
+
+ [test_wheel_scroll_iframe]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/webmessaging/with-ports/018.html.ini b/tests/wpt/metadata-layout-2020/webmessaging/with-ports/018.html.ini
deleted file mode 100644
index 663a1f8fa30..00000000000
--- a/tests/wpt/metadata-layout-2020/webmessaging/with-ports/018.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[018.html]
- expected: TIMEOUT
- [origin of the script that invoked the method, javascript:]
- expected: TIMEOUT
-
diff --git a/tests/wpt/metadata-layout-2020/webxr/webGLCanvasContext_create_xrcompatible.https.html.ini b/tests/wpt/metadata-layout-2020/webxr/webGLCanvasContext_create_xrcompatible.https.html.ini
new file mode 100644
index 00000000000..499ac075aee
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/webxr/webGLCanvasContext_create_xrcompatible.https.html.ini
@@ -0,0 +1,7 @@
+[webGLCanvasContext_create_xrcompatible.https.html]
+ [Creating a webglCanvasContext with no device]
+ expected: FAIL
+
+ [An XR-compatible webglCanvasContext can be created]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/webxr/webxr_feature_policy.https.html.ini b/tests/wpt/metadata-layout-2020/webxr/webxr_feature_policy.https.html.ini
new file mode 100644
index 00000000000..342d9fa6735
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/webxr/webxr_feature_policy.https.html.ini
@@ -0,0 +1,11 @@
+[webxr_feature_policy.https.html]
+ expected: ERROR
+ [Validate isSessionSupported behavior without xr-spatial-tracking policy]
+ expected: FAIL
+
+ [Validate xr compatibility requests without xr-spatial-tracking policy]
+ expected: NOTRUN
+
+ [Validate requestSession behavior without xr-spatial-tracking policy]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/workers/constructors/Worker/Worker-constructor.html.ini b/tests/wpt/metadata-layout-2020/workers/constructors/Worker/Worker-constructor.html.ini
new file mode 100644
index 00000000000..80f9a4f15b8
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/workers/constructors/Worker/Worker-constructor.html.ini
@@ -0,0 +1,2 @@
+[Worker-constructor.html]
+ expected: ERROR
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 faa00f45ecf..d4f62ed7113 100644
--- a/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini
+++ b/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini
@@ -7,7 +7,7 @@
expected: FAIL
[Opening a blob URL in a new window immediately before revoking it works.]
- expected: TIMEOUT
+ expected: FAIL
[Opening a blob URL in a noopener about:blank window immediately before revoking it works.]
expected: TIMEOUT
diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json
index 21d01e8b6b4..3c2ecc6a4f7 100644
--- a/tests/wpt/metadata/MANIFEST.json
+++ b/tests/wpt/metadata/MANIFEST.json
@@ -432,7 +432,7 @@
},
"css-text": {
"altering-dom-crash.html": [
- "227956e7a313fbfef1ac7882e0f5df10db4f5c43",
+ "4840014533dca4db0405967f24dc7bca11b7d88c",
[
null,
{}
@@ -487,7 +487,7 @@
]
},
"whitespace-followed-by-cham-symbol-crash.html": [
- "c56f915518fc0006322df8572f3c3f1f78c52b2b",
+ "b07a802ecd671fea595e2137fd4a1c21407485f2",
[
null,
{}
@@ -924,6 +924,15 @@
]
}
},
+ "origin-isolation": {
+ "popups-crash.https.html": [
+ "dcfb5eb277489b5849f250275d6ce8197eedc224",
+ [
+ null,
+ {}
+ ]
+ ]
+ },
"portals": {
"portals-no-frame-crash.html": [
"c87afa38c29bf98344c9d01039ed6bf9af1d5d96",
@@ -124976,6 +124985,19 @@
{}
]
],
+ "out-of-flow-in-multicolumn-001.html": [
+ "148f39467f7b1db682cf16940702948152ff912e",
+ [
+ null,
+ [
+ [
+ "/css/css-break/out-of-flow-in-multicolum-001-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"overflowed-block-with-no-room-after-000.html": [
"084e16fb38de072fb83f92ba01302a2e404cdd97",
[
@@ -170051,6 +170073,19 @@
{}
]
],
+ "abspos-014.tentative.html": [
+ "b0accc68dc85564b851f746965a1bad48318ab40",
+ [
+ null,
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"auto-margins-001.tentative.html": [
"9e89ab6ca7f5220ea030aa537bcb3b64f156043d",
[
@@ -170754,7 +170789,7 @@
]
],
"flex-aspect-ratio-024.tentative.html": [
- "b0cefd57c48378e688b19c849786a11a65759668",
+ "ebac88ce33e45de1b288e5298d46ab0203430ae2",
[
null,
[
@@ -186404,7 +186439,7 @@
]
],
"text-decoration-color.html": [
- "ec00b56aa4453f5263cd9f19b925e6fa0eec4bf0",
+ "1e1353d9fa67ea6ef0019fc499dfeaafae65fe87",
[
null,
[
@@ -295256,6 +295291,10 @@
"9a329b2446849d8f13b9d88cb5f73934536c3767",
[]
],
+ "out-of-flow-in-multicolum-001-ref.html": [
+ "7b6a3c50ca82b586450c8912e34141a9bca551e7",
+ []
+ ],
"reference": {
"widows-orphans-001-ref.html": [
"06108ac800c19c68841f2a0e8867fb05e868c1ab",
@@ -295584,14 +295623,6 @@
]
},
"css-color-adjust": {
- "meta": {
- "support": {
- "compute-root-color-scheme.js": [
- "8ceddbc40bf2cdc37c0c26e0bede9b7a24892caf",
- []
- ]
- }
- },
"rendering": {
"dark-color-scheme": {
"color-scheme-change-checkbox-notref.html": [
@@ -314262,7 +314293,7 @@
[]
],
"text-decoration-color-ref.html": [
- "33272cbe1da2512c79282895c1eb19bbeccf6d86",
+ "3ae7777ef06cf3fa3bebcf385d8462cf8453ae64",
[]
],
"text-decoration-line-010-ref.xht": [
@@ -333217,6 +333248,10 @@
"b79fe288b3ba6de26ccd15947e8521839a18c62a",
[]
],
+ "cross-origin-isolated-worker.js": [
+ "9f1e3710af6e21832050b3f99f65f51f49fac461",
+ []
+ ],
"dedicated-worker.js": [
"66f3cc3d413ec4f4ed3e92dd18081a59e2696734",
[]
@@ -338782,6 +338817,14 @@
]
},
"the-meta-element": {
+ "color-scheme": {
+ "support": {
+ "compute-root-color-scheme.js": [
+ "8ceddbc40bf2cdc37c0c26e0bede9b7a24892caf",
+ []
+ ]
+ }
+ },
"pragma-directives": {
"attr-meta-http-equiv-refresh": {
"support": {
@@ -343080,6 +343123,10 @@
"pause.html.ini": [
"657d2a2492605557dcc62f02dca36364cf3007fd",
[]
+ ],
+ "wheelScroll.html.ini": [
+ "f96fd377ba5daee31d56df4f6d490beb01e18522",
+ []
]
},
"file_upload.sub.html.ini": [
@@ -343439,10 +343486,6 @@
"492c5ce01218c78543ced4e46b62559544da61dc",
[]
],
- "feature-policy.idl": [
- "4f22cf299430062fd0bb6cb5483b011750a692ba",
- []
- ],
"fetch.idl": [
"a9304e90ef886bd9db5356258e84f700418d4393",
[]
@@ -343528,7 +343571,7 @@
[]
],
"is-input-pending.idl": [
- "aa918fb568b107ce12c0d51f38713e195592d893",
+ "76e47cc06cfd66887b2ffbe60550a522ccfcf7f8",
[]
],
"js-self-profiling.idl": [
@@ -343596,7 +343639,7 @@
[]
],
"native-file-system.idl": [
- "92ca66c82e07fb24f72eab4973b6fe13beac0e7a",
+ "3eda19c9d84af81a8eecc5ef3f0ea06753290301",
[]
],
"navigation-timing.idl": [
@@ -343655,6 +343698,10 @@
"37a58ba1495805e08724cdcb7f37527cbf224821",
[]
],
+ "permissions-policy.idl": [
+ "16945e3a9b7cded5610d9d2e2cb53acbb8d6b831",
+ []
+ ],
"permissions-request.idl": [
"e189194dd0bd92bb833c39b15b89bf243cee2729",
[]
@@ -343999,7 +344046,7 @@
[]
],
"input-onmessage.js": [
- "21dddfb11b5d385ec4e4087c5b82fb37866fabcb",
+ "919c939d1fc8de666f83159778c19a1a91548c8b",
[]
],
"pending-input-utils.js": [
@@ -344141,7 +344188,7 @@
]
},
"lint.ignore": [
- "9336f1ee574ab28effaee6ef45ef886c9c649dbd",
+ "c740932e60ad5dc6939e7a41dc7d92534d81a5e4",
[]
],
"loading": {
@@ -346338,6 +346385,14 @@
"9292fe3894e4a82f77a8877b76faa19fe6dfdb47",
[]
],
+ "crashy-popup.sub.html": [
+ "f8d077c2a29ff494d502d70fc7f2cd80a443da68",
+ []
+ ],
+ "crashy-popup.sub.html.headers": [
+ "ea3f6b335c7620acf59f546fd48484bf624ccb38",
+ []
+ ],
"frame.html": [
"8f35d2703e72eb316b1e46f602ae6fc1d5894285",
[]
@@ -349269,7 +349324,7 @@
[]
],
"webxr-test.js": [
- "a1f57ac036b04a2b804d83acb594507aa9d1f31c",
+ "800c0a4a9782d254f6f7b8473853354bdd31d058",
[]
],
"webxr-test.js.headers": [
@@ -349710,7 +349765,7 @@
[]
],
"testdriver-actions.js": [
- "870a2e8e26678085f80c030d436dd13686fb9b0b",
+ "b6030bf121388d5f4e33fbc31f8680fb6f58344b",
[]
],
"testdriver-vendor.js": [
@@ -354293,7 +354348,7 @@
[]
],
"lint.py": [
- "8965c1a0a12926213eb74f7f880c198004cf46fc",
+ "bb49d8970d96dfe6767fcefdf1eea183e6bbccbd",
[]
],
"rules.py": [
@@ -354547,7 +354602,7 @@
[]
],
"sourcefile.py": [
- "5a7310213a75d564324791c64dfe9646fcc7355e",
+ "6e90ac05475fc656de22befc5addc3fd5f51e913",
[]
],
"testpaths.py": [
@@ -354755,7 +354810,7 @@
[]
],
"serve.py": [
- "1c44615358567d6477f3746171bffef3935d9cc3",
+ "8243acc5eb8ec21e2d1d322ec4d93dc536976e08",
[]
],
"test_functional.py": [
@@ -360520,7 +360575,7 @@
[]
],
"client.py": [
- "0f79483826b34bdd5f5331d715cebbcda82e4737",
+ "1a4b6498312d652b4a9d839e2076dbb7d8b0f9f5",
[]
],
"error.py": [
@@ -360547,7 +360602,7 @@
[]
],
"browser.py": [
- "664d984da0403acf03a13406f8263780f9be7ead",
+ "6f9da16c50bea6f073421c99e5050ed9eedb71b8",
[]
],
"commands.json": [
@@ -360583,7 +360638,7 @@
[]
],
"run.py": [
- "18f1c55145e819dbf16aeb35cfcbf3dedcaf5d7d",
+ "8edaa60ab03bf19339aa0773789dd8bdf3755b54",
[]
],
"testfiles.py": [
@@ -360596,7 +360651,7 @@
[]
],
"test_browser.py": [
- "495d5f056fc1bd898047c7a46220fa523ffb4093",
+ "350ee9b5eaee3e23454a71202480e28f14330a0a",
[]
],
"test_install.py": [
@@ -363594,7 +363649,7 @@
[]
],
"conftest.py": [
- "5ee8ae1c741a9c75658d36d774e0c2523913c6d5",
+ "970f7b7dd9be42356b64c5082862e11abbe80c68",
[]
],
"support": {
@@ -363614,6 +363669,10 @@
"3a6d63e04ce941d26ab3898cb2fc2a730d46c1ce",
[]
],
+ "test_actions_scroll_wdspec.html": [
+ "b6e281e581816f7f42b5e92387adc3047fa4f891",
+ []
+ ],
"test_actions_wdspec.html": [
"0253add960792f79bef8a8747dac26661c4a2f86",
[]
@@ -394990,85 +395049,6 @@
{}
]
],
- "meta": {
- "meta-color-scheme-attribute-changes.html": [
- "bb9fa659f32778b3860d93b0c4964521db01720d",
- [
- null,
- {}
- ]
- ],
- "meta-color-scheme-empty-content-value.html": [
- "86cc93c2dc9e2eef670f9f153b89e6f764db382e",
- [
- null,
- {}
- ]
- ],
- "meta-color-scheme-first-valid-applies.html": [
- "0ade6df501eef9ac035b6688a0b1b6a38ecda1e7",
- [
- null,
- {}
- ]
- ],
- "meta-color-scheme-insert.html": [
- "861818284bcb74857bc89b293c34b02c7a464223",
- [
- null,
- {}
- ]
- ],
- "meta-color-scheme-no-content-value.html": [
- "6edb761960b60b2b0b69842179772aeb9288e4c8",
- [
- null,
- {}
- ]
- ],
- "meta-color-scheme-presentational-hint.html": [
- "5a87604e86b992669e92fd1be3a243841e5d890e",
- [
- null,
- {}
- ]
- ],
- "meta-color-scheme-remove-head.html": [
- "d627f62df781a15b3bc9f8d1ea28f755104a7e54",
- [
- null,
- {}
- ]
- ],
- "meta-color-scheme-remove.html": [
- "8439c5046259dfe3648331476849976f1b60f9e5",
- [
- null,
- {}
- ]
- ],
- "meta-color-scheme-single-value-in-body.html": [
- "ff8fe416251c15f28e45ba07d2cca4b4f87733a3",
- [
- null,
- {}
- ]
- ],
- "meta-color-scheme-single-value-in-head.html": [
- "6b5e5c0f8a6f6519a5ac63945811671ef743dee7",
- [
- null,
- {}
- ]
- ],
- "meta-color-scheme-single-value-in-shadow-tree.html": [
- "23ec7de1a945876a6a2e75eb4b72ce41be972a8a",
- [
- null,
- {}
- ]
- ]
- },
"parsing": {
"color-scheme-computed.html": [
"5e1ee74ad9b5208eece25fb003eeff6957b2e996",
@@ -403001,41 +402981,6 @@
null,
{}
]
- ],
- "scrollbar-gutter-001.html": [
- "c6cdb55baad8b5e1deb5e89277c0bf2f5196a770",
- [
- null,
- {}
- ]
- ],
- "scrollbar-gutter-002.html": [
- "8756ab7f0f810870676cbd6da6147d4b41235772",
- [
- null,
- {}
- ]
- ],
- "scrollbar-gutter-003.html": [
- "1002b462390c2e7bbe7ee2cd0a93be410717a3c7",
- [
- null,
- {}
- ]
- ],
- "scrollbar-gutter-004.html": [
- "b41e3491f278d8fc691aa4834b8408f3699836b7",
- [
- null,
- {}
- ]
- ],
- "scrollbar-gutter-005.html": [
- "dca465770ddb8d77aebf5be511c1c9325f9f7745",
- [
- null,
- {}
- ]
]
},
"css-overscroll-behavior": {
@@ -436347,7 +436292,7 @@
]
],
"idlharness.window.js": [
- "724da3c80179e0aa1cf3875125fd02e2df23905e",
+ "2546061c52c5b39266b44b8725206b5dd50b81a5",
[
"feature-policy/idlharness.window.html",
{
@@ -461302,7 +461247,7 @@
]
],
"cross-origin-isolated-permission.https.html": [
- "aec1b858542bd95dce04bf0773af8138854acc69",
+ "2fc545d5acb69dc21684418cb24e4830d4c9bb9c",
[
null,
{}
@@ -463410,7 +463355,7 @@
],
"shared-array-buffers": {
"blob-data.https.html": [
- "dbc73e98f578111757e5b82a8d6f5197249871a9",
+ "bfcc8b61ca233d4563a5972c8cfaacf681cf9c66",
[
null,
{}
@@ -465572,6 +465517,85 @@
]
},
"the-meta-element": {
+ "color-scheme": {
+ "meta-color-scheme-attribute-changes.html": [
+ "e92b089b052acf263ea9118ac02d0f6afa232a2a",
+ [
+ null,
+ {}
+ ]
+ ],
+ "meta-color-scheme-empty-content-value.html": [
+ "b6a1ecbb851fe91bace264dbc60b12aae0e36a0f",
+ [
+ null,
+ {}
+ ]
+ ],
+ "meta-color-scheme-first-valid-applies.html": [
+ "095d0f360dc29937db7e8ee4e291daccb20cfedf",
+ [
+ null,
+ {}
+ ]
+ ],
+ "meta-color-scheme-insert.html": [
+ "faac2bf3155bdaaaf516c4c68ae38a0c5e4e78dc",
+ [
+ null,
+ {}
+ ]
+ ],
+ "meta-color-scheme-no-content-value.html": [
+ "9cb8febe4b89f1920867cf1c9f2dcfca641dd842",
+ [
+ null,
+ {}
+ ]
+ ],
+ "meta-color-scheme-presentational-hint.html": [
+ "e5dc75a911c8f4fa12d85087cd769286e62719a4",
+ [
+ null,
+ {}
+ ]
+ ],
+ "meta-color-scheme-remove-head.html": [
+ "409abb694df3c9d350e65674a3359178b79d3235",
+ [
+ null,
+ {}
+ ]
+ ],
+ "meta-color-scheme-remove.html": [
+ "8457dde6fa37cb77a526543f64bc3448de1a2980",
+ [
+ null,
+ {}
+ ]
+ ],
+ "meta-color-scheme-single-value-in-body.html": [
+ "19f8d53994a2ee0a5ec6cc6938bb1485d76f3452",
+ [
+ null,
+ {}
+ ]
+ ],
+ "meta-color-scheme-single-value-in-head.html": [
+ "b9fd2c4384cccc8c76604f19c8ec6483f643ee86",
+ [
+ null,
+ {}
+ ]
+ ],
+ "meta-color-scheme-single-value-in-shadow-tree.html": [
+ "1e0e2d956278b2dfa999b09270241e5fbeaf2aa5",
+ [
+ null,
+ {}
+ ]
+ ]
+ },
"pragma-directives": {
"attr-meta-http-equiv-refresh": {
"allow-scripts-flag-changing-1.html": [
@@ -480622,6 +480646,15 @@
"testdriver": true
}
]
+ ],
+ "wheelScroll.html": [
+ "a7d9b2609da763dbfaacab253edb13ca35c16627",
+ [
+ null,
+ {
+ "testdriver": true
+ }
+ ]
]
},
"bless.html": [
@@ -481280,7 +481313,7 @@
},
"is-input-pending": {
"idlharness.window.js": [
- "e6bb26a5a710d0dbd35bddae78143b433cb5bb1b",
+ "726dd137dd6717addd33dbbafef8955f39e8bb2c",
[
"is-input-pending/idlharness.window.html",
{
@@ -493698,7 +493731,7 @@
]
],
"mouse_buttons_back_forward.html": [
- "95490d2d4df442bba56aed62205bdf3bc34e55a3",
+ "6f4e764983b89f72cbd7e42a20fcb133dc8383f5",
[
null,
{
@@ -523901,7 +523934,7 @@
]
],
"constructor-types.tentative.any.js": [
- "764aac78670c5d0711345434060801b76eeb2291",
+ "d5378dbe82b00b98e036090a377f5e90cca57e57",
[
null,
{
@@ -523909,7 +523942,45 @@
"script_metadata": [
[
"global",
- "jsshell"
+ "window,dedicatedworker,jsshell"
+ ],
+ [
+ "script",
+ "/wasm/jsapi/assertions.js"
+ ],
+ [
+ "script",
+ "/wasm/jsapi/memory/assertions.js"
+ ]
+ ]
+ }
+ ],
+ [
+ "wasm/jsapi/memory/constructor-types.tentative.any.html",
+ {
+ "script_metadata": [
+ [
+ "global",
+ "window,dedicatedworker,jsshell"
+ ],
+ [
+ "script",
+ "/wasm/jsapi/assertions.js"
+ ],
+ [
+ "script",
+ "/wasm/jsapi/memory/assertions.js"
+ ]
+ ]
+ }
+ ],
+ [
+ "wasm/jsapi/memory/constructor-types.tentative.any.worker.html",
+ {
+ "script_metadata": [
+ [
+ "global",
+ "window,dedicatedworker,jsshell"
],
[
"script",
@@ -523924,7 +523995,7 @@
]
],
"constructor.any.js": [
- "30cc8ef9885fe0507bcea15aa88ac57a2bd4c124",
+ "0a0be11e370877096aa543a179f6eca2633b4c81",
[
null,
{
@@ -524400,7 +524471,7 @@
],
"table": {
"constructor-types.tentative.any.js": [
- "09ab18a2d8cec7443eb58eee81f0ef7b86aacb41",
+ "99ca41b55a9152be82d86b8b73cc7962f16b2862",
[
null,
{
@@ -524408,7 +524479,45 @@
"script_metadata": [
[
"global",
- "jsshell"
+ "window,dedicatedworker,jsshell"
+ ],
+ [
+ "script",
+ "/wasm/jsapi/assertions.js"
+ ],
+ [
+ "script",
+ "/wasm/jsapi/table/assertions.js"
+ ]
+ ]
+ }
+ ],
+ [
+ "wasm/jsapi/table/constructor-types.tentative.any.html",
+ {
+ "script_metadata": [
+ [
+ "global",
+ "window,dedicatedworker,jsshell"
+ ],
+ [
+ "script",
+ "/wasm/jsapi/assertions.js"
+ ],
+ [
+ "script",
+ "/wasm/jsapi/table/assertions.js"
+ ]
+ ]
+ }
+ ],
+ [
+ "wasm/jsapi/table/constructor-types.tentative.any.worker.html",
+ {
+ "script_metadata": [
+ [
+ "global",
+ "window,dedicatedworker,jsshell"
],
[
"script",
@@ -527433,7 +527542,7 @@
]
],
"canShare.tentative.https.html": [
- "bb263e542559d8676c2dd94b7521ecf345dc712e",
+ "55e026dd4cc9bdea9c3e9933b80ec6037d9b6a08",
[
null,
{}
@@ -529317,7 +529426,7 @@
]
],
"getcredential-extensions.https.html": [
- "af03086ee048567c32338636560ff2d76351892b",
+ "fd8d38d2dfd25b31eb97f66ad97574bacc27e66a",
[
null,
{
@@ -530786,7 +530895,7 @@
]
],
"RTCPeerConnection-getStats.https.html": [
- "bdf7770350e99fe6b730d3e91255f49f30961ed0",
+ "f39fd2c3137c35006a7ba13ef77e062e46ee86d5",
[
null,
{}
@@ -531017,7 +531126,7 @@
]
],
"RTCPeerConnection-setRemoteDescription-replaceTrack.https.html": [
- "4bdcddec5115c3d9c953859950854b3ec97fbbef",
+ "217326bfae22f13ca6dce2874d8d01d106ad7378",
[
null,
{}
@@ -531054,7 +531163,7 @@
]
],
"RTCPeerConnection-track-stats.https.html": [
- "7b43e4e0bb43cf0cabb53132ea5cd410e2163f1d",
+ "42054ad9e66615543cd3bf02544f876dabd2a3a0",
[
null,
{
@@ -531343,7 +531452,7 @@
],
"legacy": {
"RTCPeerConnection-addStream.https.html": [
- "5a35ebc53b8d7ce3857d4869a476e0e99a9078c8",
+ "7ebcacda5371f74a237d1e19412c200371be9d58",
[
null,
{
@@ -531396,7 +531505,7 @@
]
],
"candidate-exchange.https.html": [
- "82178953b6bbe3faccfd949817cf59e8d1dfa1ab",
+ "c54f26e6d80dd9056e8ebc11df929b51f69f88eb",
[
null,
{
@@ -537707,7 +537816,7 @@
]
],
"webGLCanvasContext_create_xrcompatible.https.html": [
- "33e54865253f93ee3f33da32c3591e4149b7a67a",
+ "2b3a1fccc45fb9f1fad9fc11f3641b313929116b",
[
null,
{}
@@ -537742,7 +537851,7 @@
]
],
"webxr_feature_policy.https.html": [
- "7f3d03b48e5881d74d92d187243814dc9fa58b7d",
+ "b493ec73cce687832cfc0784a1a798d665eb10af",
[
null,
{}
@@ -568343,6 +568452,13 @@
null,
{}
]
+ ],
+ "wheel.py": [
+ "fc84f2f2e0148967464505f83317edac2e54bd84",
+ [
+ null,
+ {}
+ ]
]
},
"permissions": {
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 f8e7e539aae..4a1e8110f6f 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,6 +2,3 @@
[Hit test intersecting scaled box]
expected: FAIL
- [Hit test within unscaled box]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/css/cssom-view/CaretPosition-001.html.ini b/tests/wpt/metadata/css/cssom-view/CaretPosition-001.html.ini
new file mode 100644
index 00000000000..4c79907309b
--- /dev/null
+++ b/tests/wpt/metadata/css/cssom-view/CaretPosition-001.html.ini
@@ -0,0 +1,4 @@
+[CaretPosition-001.html]
+ [Element at (400, 100)]
+ 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
deleted file mode 100644
index e181af5397f..00000000000
--- a/tests/wpt/metadata/css/cssom-view/elementsFromPoint-invalid-cases.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[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-view/matchMedia-display-none-iframe.html.ini b/tests/wpt/metadata/css/cssom-view/matchMedia-display-none-iframe.html.ini
new file mode 100644
index 00000000000..e6e1f29e274
--- /dev/null
+++ b/tests/wpt/metadata/css/cssom-view/matchMedia-display-none-iframe.html.ini
@@ -0,0 +1,2 @@
+[matchMedia-display-none-iframe.html]
+ expected: ERROR
diff --git a/tests/wpt/metadata/css/cssom-view/offsetTopLeft-border-box.html.ini b/tests/wpt/metadata/css/cssom-view/offsetTopLeft-border-box.html.ini
deleted file mode 100644
index 239c35135e4..00000000000
--- a/tests/wpt/metadata/css/cssom-view/offsetTopLeft-border-box.html.ini
+++ /dev/null
@@ -1,7 +0,0 @@
-[offsetTopLeft-border-box.html]
- [container: 1]
- expected: FAIL
-
- [container: 0]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/custom-elements/reactions/HTMLMediaElement.html.ini b/tests/wpt/metadata/custom-elements/reactions/HTMLMediaElement.html.ini
new file mode 100644
index 00000000000..2ca05f57bb0
--- /dev/null
+++ b/tests/wpt/metadata/custom-elements/reactions/HTMLMediaElement.html.ini
@@ -0,0 +1,2 @@
+[HTMLMediaElement.html]
+ expected: TIMEOUT
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 82ff3abe581..060982b25e6 100644
--- a/tests/wpt/metadata/fetch/content-type/response.window.js.ini
+++ b/tests/wpt/metadata/fetch/content-type/response.window.js.ini
@@ -318,9 +318,15 @@
[<iframe>: separate response Content-Type: text/html;" text/plain]
expected: FAIL
- [<iframe>: separate response Content-Type: text/html;x=" text/plain]
+ [<iframe>: combined response Content-Type: text/html;" text/plain]
expected: FAIL
- [<iframe>: separate response Content-Type: text/html;" \\" text/plain]
+ [<iframe>: combined response Content-Type: text/html */*]
+ expected: FAIL
+
+ [<iframe>: separate response Content-Type: text/html */*]
+ expected: FAIL
+
+ [<iframe>: separate response Content-Type: text/plain */*]
expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini
new file mode 100644
index 00000000000..87b07c3e670
--- /dev/null
+++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini
@@ -0,0 +1,4 @@
+[traverse_the_history_1.html]
+ [Multiple history traversals from the same task]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini
deleted file mode 100644
index 75d75b4cda2..00000000000
--- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[traverse_the_history_2.html]
- [Multiple history traversals, last would be aborted]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html.ini b/tests/wpt/metadata/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html.ini
new file mode 100644
index 00000000000..735a9a75a2a
--- /dev/null
+++ b/tests/wpt/metadata/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html.ini
@@ -0,0 +1,2 @@
+[cross-origin-objects-on-new-window.html]
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/browsers/windows/embedded-opener-remove-frame.html.ini b/tests/wpt/metadata/html/browsers/windows/embedded-opener-remove-frame.html.ini
index 49b12655f9a..df95dfa2c17 100644
--- a/tests/wpt/metadata/html/browsers/windows/embedded-opener-remove-frame.html.ini
+++ b/tests/wpt/metadata/html/browsers/windows/embedded-opener-remove-frame.html.ini
@@ -1,4 +1,5 @@
[embedded-opener-remove-frame.html]
+ expected: CRASH
[opener and "removed" embedded documents]
expected: FAIL
diff --git a/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-attribute-changes.html.ini b/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-attribute-changes.html.ini
new file mode 100644
index 00000000000..8b7ac783be2
--- /dev/null
+++ b/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-attribute-changes.html.ini
@@ -0,0 +1,5 @@
+[meta-color-scheme-attribute-changes.html]
+ expected: ERROR
+ [Meta color-scheme initially 'dark'.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-empty-content-value.html.ini b/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-empty-content-value.html.ini
new file mode 100644
index 00000000000..a5972da050c
--- /dev/null
+++ b/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-empty-content-value.html.ini
@@ -0,0 +1,4 @@
+[meta-color-scheme-empty-content-value.html]
+ [Meta color-scheme with empty content attribute has no effect.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-first-valid-applies.html.ini b/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-first-valid-applies.html.ini
new file mode 100644
index 00000000000..a62a92de046
--- /dev/null
+++ b/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-first-valid-applies.html.ini
@@ -0,0 +1,4 @@
+[meta-color-scheme-first-valid-applies.html]
+ [Tree order decides which meta color-scheme applies.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-insert.html.ini b/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-insert.html.ini
new file mode 100644
index 00000000000..a5c3b7d54fd
--- /dev/null
+++ b/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-insert.html.ini
@@ -0,0 +1,10 @@
+[meta-color-scheme-insert.html]
+ [Inserted meta color-scheme applies]
+ expected: FAIL
+
+ [Inserted meta color-scheme before existing in head applies]
+ expected: FAIL
+
+ [Initial color-scheme]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-no-content-value.html.ini b/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-no-content-value.html.ini
new file mode 100644
index 00000000000..32b9cb25716
--- /dev/null
+++ b/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-no-content-value.html.ini
@@ -0,0 +1,4 @@
+[meta-color-scheme-no-content-value.html]
+ [Meta color-scheme without content attribute has no effect.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-presentational-hint.html.ini b/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-presentational-hint.html.ini
new file mode 100644
index 00000000000..4c167af9462
--- /dev/null
+++ b/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-presentational-hint.html.ini
@@ -0,0 +1,4 @@
+[meta-color-scheme-presentational-hint.html]
+ [Author origin style rule overrides meta color-scheme.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-remove-head.html.ini b/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-remove-head.html.ini
new file mode 100644
index 00000000000..33251fc53ac
--- /dev/null
+++ b/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-remove-head.html.ini
@@ -0,0 +1,7 @@
+[meta-color-scheme-remove-head.html]
+ [Initial value after removing head including meta color-scheme.]
+ expected: FAIL
+
+ [Meta color-scheme applies.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-remove.html.ini b/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-remove.html.ini
new file mode 100644
index 00000000000..13cf48e88e9
--- /dev/null
+++ b/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-remove.html.ini
@@ -0,0 +1,5 @@
+[meta-color-scheme-remove.html]
+ expected: ERROR
+ [First meta applies.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-single-value-in-body.html.ini b/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-single-value-in-body.html.ini
new file mode 100644
index 00000000000..498aed22a2c
--- /dev/null
+++ b/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-single-value-in-body.html.ini
@@ -0,0 +1,4 @@
+[meta-color-scheme-single-value-in-body.html]
+ [Meta color-scheme in body should apply.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-single-value-in-head.html.ini b/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-single-value-in-head.html.ini
new file mode 100644
index 00000000000..84fb2c2c8c9
--- /dev/null
+++ b/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-single-value-in-head.html.ini
@@ -0,0 +1,4 @@
+[meta-color-scheme-single-value-in-head.html]
+ [Meta color-scheme in head applies.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-single-value-in-shadow-tree.html.ini b/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-single-value-in-shadow-tree.html.ini
new file mode 100644
index 00000000000..3502f22f24a
--- /dev/null
+++ b/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-single-value-in-shadow-tree.html.ini
@@ -0,0 +1,2 @@
+[meta-color-scheme-single-value-in-shadow-tree.html]
+ expected: ERROR
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini
index 2a166bb97b7..fc37df7e3fa 100644
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini
+++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini
@@ -1,6 +1,6 @@
[iframe_sandbox_popups_escaping-1.html]
type: testharness
- expected: CRASH
+ expected: TIMEOUT
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini
index c6f45be1eb2..e63fe7c263e 100644
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini
+++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini
@@ -1,5 +1,5 @@
[iframe_sandbox_popups_escaping-2.html]
- expected: TIMEOUT
+ expected: CRASH
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini
index f6a7aca3306..cb0211f1d21 100644
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini
+++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini
@@ -1,5 +1,6 @@
[iframe_sandbox_popups_escaping-3.html]
type: testharness
+ expected: CRASH
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
expected: FAIL
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini
index 3f7e3e9544f..4bc0524f105 100644
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini
+++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini
@@ -1,5 +1,6 @@
[iframe_sandbox_popups_nonescaping-1.html]
type: testharness
+ expected: CRASH
[Check that popups from a sandboxed iframe do not escape the sandbox]
expected: FAIL
diff --git a/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-3.html.ini b/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-3.html.ini
new file mode 100644
index 00000000000..9f416703229
--- /dev/null
+++ b/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-3.html.ini
@@ -0,0 +1,4 @@
+[form-double-submit-3.html]
+ [<button> should have the same double-submit protection as <input type=submit>]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/syntax/parsing/DOMContentLoaded-defer.html.ini b/tests/wpt/metadata/html/syntax/parsing/DOMContentLoaded-defer.html.ini
new file mode 100644
index 00000000000..a9677391662
--- /dev/null
+++ b/tests/wpt/metadata/html/syntax/parsing/DOMContentLoaded-defer.html.ini
@@ -0,0 +1,4 @@
+[DOMContentLoaded-defer.html]
+ [The end: DOMContentLoaded and defer scripts]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/document-write/module-delayed.html.ini b/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/document-write/module-delayed.html.ini
deleted file mode 100644
index 59a54fe88e4..00000000000
--- a/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/document-write/module-delayed.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[module-delayed.html]
- [async document.write in a module]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini b/tests/wpt/metadata/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini
index 01f7b72cbe7..edae5e5adcd 100644
--- a/tests/wpt/metadata/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini
+++ b/tests/wpt/metadata/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini
@@ -5,5 +5,5 @@
expected: TIMEOUT
[The entry settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
- expected: FAIL
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/wasm/jsapi/memory/constructor-types.tentative.any.js.ini b/tests/wpt/metadata/wasm/jsapi/memory/constructor-types.tentative.any.js.ini
new file mode 100644
index 00000000000..383e4828679
--- /dev/null
+++ b/tests/wpt/metadata/wasm/jsapi/memory/constructor-types.tentative.any.js.ini
@@ -0,0 +1,21 @@
+[constructor-types.tentative.any.html]
+ [Zero minimum]
+ expected: FAIL
+
+ [Initializing with both initial and minimum]
+ expected: FAIL
+
+ [Non-zero minimum]
+ expected: FAIL
+
+
+[constructor-types.tentative.any.worker.html]
+ [Zero minimum]
+ expected: FAIL
+
+ [Initializing with both initial and minimum]
+ expected: FAIL
+
+ [Non-zero minimum]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/wasm/jsapi/memory/constructor.any.js.ini b/tests/wpt/metadata/wasm/jsapi/memory/constructor.any.js.ini
index 8b107dc471f..4f50e76a2de 100644
--- a/tests/wpt/metadata/wasm/jsapi/memory/constructor.any.js.ini
+++ b/tests/wpt/metadata/wasm/jsapi/memory/constructor.any.js.ini
@@ -2,14 +2,8 @@
[Shared memory]
expected: FAIL
- [Proxy descriptor]
- expected: FAIL
-
[constructor.any.html]
[Shared memory]
expected: FAIL
- [Proxy descriptor]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/wasm/jsapi/table/constructor-types.tentative.any.js.ini b/tests/wpt/metadata/wasm/jsapi/table/constructor-types.tentative.any.js.ini
new file mode 100644
index 00000000000..383e4828679
--- /dev/null
+++ b/tests/wpt/metadata/wasm/jsapi/table/constructor-types.tentative.any.js.ini
@@ -0,0 +1,21 @@
+[constructor-types.tentative.any.html]
+ [Zero minimum]
+ expected: FAIL
+
+ [Initializing with both initial and minimum]
+ expected: FAIL
+
+ [Non-zero minimum]
+ expected: FAIL
+
+
+[constructor-types.tentative.any.worker.html]
+ [Zero minimum]
+ expected: FAIL
+
+ [Initializing with both initial and minimum]
+ expected: FAIL
+
+ [Non-zero minimum]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini
index 66bd350083b..a56bad443a2 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini
@@ -1,4 +1,5 @@
[realtimeanalyser-fft-scaling.html]
+ expected: TIMEOUT
[X 2048-point FFT peak position is not equal to 64. Got 0.]
expected: FAIL
diff --git a/tests/wpt/metadata/webdriver/tests/perform_actions/wheel.py.ini b/tests/wpt/metadata/webdriver/tests/perform_actions/wheel.py.ini
new file mode 100644
index 00000000000..7dd26e0d083
--- /dev/null
+++ b/tests/wpt/metadata/webdriver/tests/perform_actions/wheel.py.ini
@@ -0,0 +1,19 @@
+[wheel.py]
+ [test_wheel_scroll_overflow]
+ expected: FAIL
+
+ [test_null_response_value]
+ expected: FAIL
+
+ [test_wheel_scroll]
+ expected: FAIL
+
+ [test_no_top_browsing_context]
+ expected: ERROR
+
+ [test_no_browsing_context]
+ expected: ERROR
+
+ [test_wheel_scroll_iframe]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webmessaging/with-ports/018.html.ini b/tests/wpt/metadata/webmessaging/with-ports/018.html.ini
deleted file mode 100644
index 663a1f8fa30..00000000000
--- a/tests/wpt/metadata/webmessaging/with-ports/018.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[018.html]
- expected: TIMEOUT
- [origin of the script that invoked the method, javascript:]
- expected: TIMEOUT
-
diff --git a/tests/wpt/metadata/webxr/webGLCanvasContext_create_xrcompatible.https.html.ini b/tests/wpt/metadata/webxr/webGLCanvasContext_create_xrcompatible.https.html.ini
index 217c1739644..b3887279762 100644
--- a/tests/wpt/metadata/webxr/webGLCanvasContext_create_xrcompatible.https.html.ini
+++ b/tests/wpt/metadata/webxr/webGLCanvasContext_create_xrcompatible.https.html.ini
@@ -2,3 +2,6 @@
[An XR-compatible webglCanvasContext can be created]
expected: FAIL
+ [Creating a webglCanvasContext with no device]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webxr/webxr_feature_policy.https.html.ini b/tests/wpt/metadata/webxr/webxr_feature_policy.https.html.ini
index a74f6535030..c2d1111d66c 100644
--- a/tests/wpt/metadata/webxr/webxr_feature_policy.https.html.ini
+++ b/tests/wpt/metadata/webxr/webxr_feature_policy.https.html.ini
@@ -6,3 +6,6 @@
[Validate requestSession behavior without xr-spatial-tracking policy]
expected: FAIL
+ [Validate xr compatibility requests without xr-spatial-tracking policy]
+ expected: NOTRUN
+
diff --git a/tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini b/tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini
new file mode 100644
index 00000000000..80f9a4f15b8
--- /dev/null
+++ b/tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini
@@ -0,0 +1,2 @@
+[Worker-constructor.html]
+ expected: ERROR
diff --git a/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolum-001-ref.html b/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolum-001-ref.html
new file mode 100644
index 00000000000..7b6a3c50ca8
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolum-001-ref.html
@@ -0,0 +1,5 @@
+<!DOCTYPE html>
+<link rel="author" title="Benjamin Beaudry" href="mailto:bebeaudr@microsoft.com">
+<p>The abs element should be split equally into the two columns - no red!</p>
+<div style="float:left; border-bottom:10px solid green; width:42px; height: 30px; background:gray;"></div>
+<div style="float:left; margin-left: 16px; border-top:10px solid green; width:42px; height: 30px; background:gray;"></div>
diff --git a/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-001.html b/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-001.html
new file mode 100644
index 00000000000..148f39467f7
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-break/out-of-flow-in-multicolumn-001.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<link rel="author" title="Benjamin Beaudry" href="mailto:bebeaudr@microsoft.com">
+<link rel="help" href="href=https://www.w3.org/TR/css-break-3/#break-decoration">
+<link rel="match" href="out-of-flow-in-multicolum-001-ref.html">
+
+<p>The abs element should be split equally into the two columns - no red!</p>
+<style>
+ #multicol {
+ column-count: 2;
+ column-fill: auto;
+ column-gap: 16px;
+ column-rule:16px white solid;
+ width: 100px;
+ height: 40px;
+ background: gray;
+ }
+
+ .abs {
+ position: absolute;
+ top: 0px;
+ width: 100%;
+ height: 20px;
+ background: green;
+ }
+
+ .below-abs {
+ height: 20px;
+ background: red;
+ }
+</style>
+<div id="container">
+ <div id="multicol">
+ <div style="width:100px; height:30px;"></div>
+ <div style="position: relative;">
+ <div class="below-abs"></div>
+ <div class="abs"></div>
+ </div>
+ </div>
+</div> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/css/css-overflow/scrollbar-gutter-001.html b/tests/wpt/web-platform-tests/css/css-overflow/scrollbar-gutter-001.html
deleted file mode 100644
index c6cdb55baad..00000000000
--- a/tests/wpt/web-platform-tests/css/css-overflow/scrollbar-gutter-001.html
+++ /dev/null
@@ -1,197 +0,0 @@
-<!doctype html>
-<meta charset="utf-8">
-<title>CSS Overflow: test scrollbar-gutter: auto (classic scrollbars)</title>
-<link rel="author" title="Felipe Erias Morandeira" href="mailto:felipeerias@gmail.com"/>
-<link rel="help" href="https://www.w3.org/TR/css-overflow-4/#scollbar-gutter-property"/>
-<meta name="assert" content="Test scrollbar-gutter: auto with custom classic scrollbars">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/css/support/parsing-testcommon.js"></script>
-<style>
-
- .container {
- scrollbar-gutter: auto;
- height: 200px;
- width: 200px;
- margin: 1px;
- padding: 0px;
- border: none;
- background: deepskyblue;
- }
-
- .content {
- height: 100%;
- width: 100%;
- background: lightsalmon;
- }
-
- /* ensure that we are using classic scrollbars */
- .classic {
- scrollbar-width: 20px;
- scrollbar-color: hsla(0, 0%, 20%, 0.6) hsla(0, 0%, 40%, 0.3);
- }
- .classic::-webkit-scrollbar {
- width: 20px;
- height: 20px;
- }
- .classic::-webkit-scrollbar-track {
- background-color: hsla(0, 0%, 40%, 0.4);
- }
- .classic::-webkit-scrollbar-thumb {
- background-color: hsla(0, 0%, 20%, 0.8);
- border-radius: 10px;
- }
-
- /* writing modes */
- .horizontal {
- writing-mode: horizontal-tb;
- overflow-x: auto;
- }
- .vertical {
- writing-mode: vertical-rl;
- overflow-y: auto;
- }
-
- /* overflow on the block direction */
- .horizontal.auto { overflow-y: auto; }
- .horizontal.scroll { overflow-y: scroll; }
- .horizontal.visible { overflow: visible; }
- .horizontal.hidden { overflow-y: hidden; }
- .vertical.auto { overflow-x: auto; }
- .vertical.scroll { overflow-x: scroll; }
- .vertical.visible { overflow: visible; }
- .vertical.hidden { overflow-x: hidden; }
-
- /* Note: not testing with overflow: clip; */
-
-</style>
-<script type="text/javascript">
-
- function performTest() {
- setup({explicit_done: true});
-
- test(function() {
- let container = document.getElementById('container_auto_h');
- let content = document.getElementById('content_auto_h');
- assert_equals(container.scrollWidth, 200, "auto/auto scrollWidth");
- assert_equals(container.clientWidth, 200, "auto/auto clientWidth");
- assert_equals(container.offsetLeft, content.offsetLeft, "auto/auto offsetLeft");
- assert_equals(container.clientWidth, content.clientWidth, "auto/auto clientWidth");
- assert_equals(container.offsetWidth, content.offsetWidth, "auto/auto offsetWidth");
- }, "Unexpected layout: overflow auto, scrollbar-gutter auto, horizontal-tb");
-
- test(function() {
- let container = document.getElementById('container_scroll_h');
- let content = document.getElementById('content_scroll_h');
- assert_equals(container.scrollWidth, 180, "scroll/auto scrollWidth");
- assert_equals(container.clientWidth, 180, "scroll/auto clientWidth");
- assert_equals(container.offsetLeft, content.offsetLeft, "scroll/auto offsetLeft");
- assert_equals(container.clientWidth, content.clientWidth, "scroll/auto clientWidth");
- assert_not_equals(container.offsetWidth, content.offsetWidth, "scroll/auto offsetWidth");
- }, "Unexpected layout: overflow scroll, scrollbar-gutter auto, horizontal-tb");
-
- test(function() {
- let container = document.getElementById('container_visible_h');
- let content = document.getElementById('content_visible_h');
- assert_equals(container.scrollWidth, 200, "visible/auto scrollWidth");
- assert_equals(container.clientWidth, 200, "visible/auto clientWidth");
- assert_equals(container.offsetLeft, content.offsetLeft, "visible/auto offsetLeft");
- assert_equals(container.clientWidth, content.clientWidth, "visible/auto clientWidth");
- assert_equals(container.offsetWidth, content.offsetWidth, "visible/auto offsetWidth");
- }, "Unexpected layout: overflow visible, scrollbar-gutter auto, horizontal-tb");
-
- test(function() {
- let container = document.getElementById('container_hidden_h');
- let content = document.getElementById('content_hidden_h');
- assert_equals(container.scrollWidth, 200, "hidden/auto scrollWidth");
- assert_equals(container.clientWidth, 200, "hidden/auto clientWidth");
- assert_equals(container.offsetLeft, content.offsetLeft, "hidden/auto offsetLeft");
- assert_equals(container.clientWidth, content.clientWidth, "hidden/auto clientWidth");
- assert_equals(container.offsetWidth, content.offsetWidth, "hidden/auto offsetWidth");
- }, "Unexpected layout: overflow hidden, scrollbar-gutter auto, horizontal-tb");
-
- // vertical
-
- test(function() {
- let container = document.getElementById('container_auto_v');
- let content = document.getElementById('content_auto_v');
- assert_equals(container.scrollHeight, 200, "auto/auto scrollHeight");
- assert_equals(container.clientHeight, 200, "auto/auto clientHeight");
- assert_equals(container.offsetTop, content.offsetTop, "auto/auto offsetTop");
- assert_equals(container.clientHeight, content.clientHeight, "auto/auto clientHeight");
- assert_equals(container.offsetHeight, content.offsetHeight, "auto/auto offsetHeight");
- }, "Unexpected layout: overflow auto, scrollbar-gutter auto, vertical-rl");
-
- test(function() {
- let container = document.getElementById('container_scroll_v');
- let content = document.getElementById('content_scroll_v');
- assert_equals(container.scrollHeight, 180, "scroll/auto scrollHeight");
- assert_equals(container.clientHeight, 180, "scroll/auto clientHeight");
- assert_equals(container.offsetTop, content.offsetTop, "scroll/auto offsetTop");
- assert_equals(container.clientHeight, content.clientHeight, "scroll/auto clientHeight");
- assert_not_equals(container.offsetHeight, content.offsetHeight, "scroll/auto offsetHeight");
- }, "Unexpected layout: overflow scroll, scrollbar-gutter auto, vertical-rl");
-
- test(function() {
- let container = document.getElementById('container_visible_v');
- let content = document.getElementById('content_visible_v');
- assert_equals(container.scrollHeight, 200, "visible/auto scrollHeight");
- assert_equals(container.clientHeight, 200, "visible/auto clientHeight");
- assert_equals(container.offsetTop, content.offsetTop, "visible/auto offsetTop");
- assert_equals(container.clientHeight, content.clientHeight, "visible/auto clientHeight");
- assert_equals(container.offsetHeight, content.offsetHeight, "visible/auto offsetHeight");
- }, "Unexpected layout: overflow visible, scrollbar-gutter auto, vertical-rl");
-
- test(function() {
- let container = document.getElementById('container_hidden_v');
- let content = document.getElementById('content_hidden_v');
- assert_equals(container.scrollHeight, 200, "hidden/auto scrollHeight");
- assert_equals(container.clientHeight, 200, "hidden/auto clientHeight");
- assert_equals(container.offsetTop, content.offsetTop, "hidden/auto offsetTop");
- assert_equals(container.clientHeight, content.clientHeight, "hidden/auto clientHeight");
- assert_equals(container.offsetHeight, content.offsetHeight, "hidden/auto offsetHeight");
- }, "Unexpected layout: overflow hidden, scrollbar-gutter auto, vertical-rl");
-
- done();
- }
-
-</script>
-<body onload="performTest()">
-
- Test scrollbar-gutter: auto, writing-mode: horizontal-tb
-
- <div class="container classic horizontal auto" id="container_auto_h">
- <div class="content" id="content_auto_h">overflow-y: auto</div>
- </div>
-
- <div class="container classic horizontal scroll" id="container_scroll_h">
- <div class="content" id="content_scroll_h">overflow-y: scroll</div>
- </div>
-
- <div class="container classic horizontal visible" id="container_visible_h">
- <div class="content" id="content_visible_h">overflow: visible</div>
- </div>
-
- <div class="container classic horizontal hidden" id="container_hidden_h">
- <div class="content" id="content_hidden_h">overflow-y: hidden</div>
- </div>
-
- writing-mode: vertical-rl;
-
- <div class="container classic vertical auto" id="container_auto_v">
- <div class="content" id="content_auto_v">overflow-x: auto</div>
- </div>
-
- <div class="container classic vertical scroll" id="container_scroll_v">
- <div class="content" id="content_scroll_v">overflow-x: scroll</div>
- </div>
-
- <div class="container classic vertical visible" id="container_visible_v">
- <div class="content" id="content_visible_v">overflow: visible</div>
- </div>
-
- <div class="container classic vertical hidden" id="container_hidden_v">
- <div class="content" id="content_hidden_v">overflow-x: hidden</div>
- </div>
-
-</body>
diff --git a/tests/wpt/web-platform-tests/css/css-overflow/scrollbar-gutter-002.html b/tests/wpt/web-platform-tests/css/css-overflow/scrollbar-gutter-002.html
deleted file mode 100644
index 8756ab7f0f8..00000000000
--- a/tests/wpt/web-platform-tests/css/css-overflow/scrollbar-gutter-002.html
+++ /dev/null
@@ -1,263 +0,0 @@
-<!doctype html>
-<meta charset="utf-8">
-<title>CSS Overflow: test scrollbar-gutter: stable (classic scrollbars)</title>
-<link rel="author" title="Felipe Erias Morandeira" href="mailto:felipeerias@gmail.com"/>
-<link rel="help" href="https://www.w3.org/TR/css-overflow-4/#scollbar-gutter-property"/>
-<meta name="assert" content="Test scrollbar-gutter: stable with custom classic scrollbars">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/css/support/parsing-testcommon.js"></script>
-<style>
-
- .container {
- scrollbar-gutter: stable;
- height: 200px;
- width: 200px;
- margin: 1px;
- padding: 0px;
- border: none;
- background: deepskyblue;
- }
-
- .container.force {
- scrollbar-gutter: stable force;
- }
-
- .content {
- height: 100%;
- width: 100%;
- background: lightsalmon;
- }
-
- /* ensure that we are using classic scrollbars */
- .classic {
- scrollbar-width: 20px;
- scrollbar-color: hsla(0, 0%, 20%, 0.6) hsla(0, 0%, 40%, 0.3);
- }
- .classic::-webkit-scrollbar {
- width: 20px;
- height: 20px;
- }
- .classic::-webkit-scrollbar-track {
- background-color: hsla(0, 0%, 40%, 0.4);
- }
- .classic::-webkit-scrollbar-thumb {
- background-color: hsla(0, 0%, 20%, 0.8);
- border-radius: 10px;
- }
-
- /* writing modes */
- .horizontal {
- writing-mode: horizontal-tb;
- overflow-x: auto;
- }
- .vertical {
- writing-mode: vertical-rl;
- overflow-y: auto;
- }
-
- /* overflow on the block direction */
- .horizontal.auto { overflow-y: auto; }
- .horizontal.scroll { overflow-y: scroll; }
- .horizontal.visible { overflow: visible; }
- .horizontal.hidden { overflow-y: hidden; }
- .vertical.auto { overflow-x: auto; }
- .vertical.scroll { overflow-x: scroll; }
- .vertical.visible { overflow: visible; }
- .vertical.hidden { overflow-x: hidden; }
-
- /* Note: not testing with overflow: clip; */
-
-</style>
-<script type="text/javascript">
-
- function performTest() {
- setup({explicit_done: true});
-
- // horizontal
-
- test(function() {
- let container = document.getElementById('container_auto_h');
- let content = document.getElementById('content_auto_h');
- assert_equals(container.scrollWidth, 180, "auto/stable scrollWidth");
- assert_equals(container.clientWidth, 180, "auto/stable clientWidth");
- assert_equals(container.offsetLeft, content.offsetLeft, "auto/stable offsetLeft");
- assert_equals(container.clientWidth, content.clientWidth, "auto/stable clientWidth");
- assert_not_equals(container.offsetWidth, content.offsetWidth, "auto/stable offsetWidth");
- }, "Unexpected layout: overflow auto, scrollbar-gutter stable, horizontal-tb");
-
- test(function() {
- let container = document.getElementById('container_scroll_h');
- let content = document.getElementById('content_scroll_h');
- assert_equals(container.scrollWidth, 180, "scroll/stable scrollWidth");
- assert_equals(container.clientWidth, 180, "scroll/stable clientWidth");
- assert_equals(container.offsetLeft, content.offsetLeft, "scroll/stable offsetLeft");
- assert_equals(container.clientWidth, content.clientWidth, "scroll/stable clientWidth");
- assert_not_equals(container.offsetWidth, content.offsetWidth, "scroll/stable offsetWidth");
- }, "Unexpected layout: overflow scroll, scrollbar-gutter stable, horizontal-tb");
-
- test(function() {
- let container = document.getElementById('container_visible_h');
- let content = document.getElementById('content_visible_h');
- assert_equals(container.scrollWidth, 200, "visible/stable scrollWidth");
- assert_equals(container.clientWidth, 200, "visible/stable clientWidth");
- assert_equals(container.offsetLeft, content.offsetLeft, "visible/stable offsetLeft");
- assert_equals(container.clientWidth, content.clientWidth, "visible/stable clientWidth");
- assert_equals(container.offsetWidth, content.offsetWidth, "visible/stable offsetWidth");
- }, "Unexpected layout: overflow visible, scrollbar-gutter stable, horizontal-tb");
-
- test(function() {
- let container = document.getElementById('container_hidden_h');
- let content = document.getElementById('content_hidden_h');
- assert_equals(container.scrollWidth, 200, "hidden/stable scrollWidth");
- assert_equals(container.clientWidth, 200, "hidden/stable clientWidth");
- assert_equals(container.offsetLeft, content.offsetLeft, "hidden/stable offsetLeft");
- assert_equals(container.clientWidth, content.clientWidth, "hidden/stable clientWidth");
- assert_equals(container.offsetWidth, content.offsetWidth, "hidden/stable offsetWidth");
- }, "Unexpected layout: overflow hidden, scrollbar-gutter stable, horizontal-tb");
-
- test(function() {
- let container = document.getElementById('container_visible_force_h');
- let content = document.getElementById('content_visible_force_h');
- assert_equals(container.scrollWidth, 180, "visible/stable force scrollWidth");
- assert_equals(container.clientWidth, 180, "visible/stable force clientWidth");
- assert_equals(container.offsetLeft, content.offsetLeft, "visible/stable force offsetLeft");
- assert_equals(container.clientWidth, content.clientWidth, "visible/stable force clientWidth");
- assert_not_equals(container.offsetWidth, content.offsetWidth, "visible/stable force offsetWidth");
- }, "Unexpected layout: overflow visible, scrollbar-gutter stable force, horizontal-tb");
-
- test(function() {
- let container = document.getElementById('container_hidden_force_h');
- let content = document.getElementById('content_hidden_force_h');
- assert_equals(container.scrollWidth, 180, "hidden/stable force scrollWidth");
- assert_equals(container.clientWidth, 180, "hidden/stable force clientWidth");
- assert_equals(container.offsetLeft, content.offsetLeft, "hidden/stable force offsetLeft");
- assert_equals(container.clientWidth, content.clientWidth, "hidden/stable force clientWidth");
- assert_not_equals(container.offsetWidth, content.offsetWidth, "hidden/stable force offsetWidth");
- }, "Unexpected layout: overflow hidden, scrollbar-gutter stable force, horizontal-tb");
-
- // vertical
-
- test(function() {
- let container = document.getElementById('container_auto_v');
- let content = document.getElementById('content_auto_v');
- assert_equals(container.scrollHeight, 180, "auto/stable scrollHeight");
- assert_equals(container.clientHeight, 180, "auto/stable clientHeight");
- assert_equals(container.offsetTop, content.offsetTop, "auto/stable offsetTop");
- assert_equals(container.clientHeight, content.clientHeight, "auto/stable clientHeight");
- assert_not_equals(container.offsetHeight, content.offsetHeight, "auto/stable offsetHeight");
- }, "Unexpected layout: overflow auto, scrollbar-gutter stable, vertical-rl");
-
- test(function() {
- let container = document.getElementById('container_scroll_v');
- let content = document.getElementById('content_scroll_v');
- assert_equals(container.scrollHeight, 180, "scroll/stable scrollHeight");
- assert_equals(container.clientHeight, 180, "scroll/stable clientHeight");
- assert_equals(container.offsetTop, content.offsetTop, "scroll/stable offsetTop");
- assert_equals(container.clientHeight, content.clientHeight, "scroll/stable clientHeight");
- assert_not_equals(container.offsetHeight, content.offsetHeight, "scroll/stable offsetHeight");
- }, "Unexpected layout: overflow scroll, scrollbar-gutter stable, vertical-rl");
-
- test(function() {
- let container = document.getElementById('container_visible_v');
- let content = document.getElementById('content_visible_v');
- assert_equals(container.scrollHeight, 200, "visible/stable scrollHeight");
- assert_equals(container.clientHeight, 200, "visible/stable clientHeight");
- assert_equals(container.offsetTop, content.offsetTop, "visible/stable offsetTop");
- assert_equals(container.clientHeight, content.clientHeight, "visible/stable clientHeight");
- assert_equals(container.offsetHeight, content.offsetHeight, "visible/stable offsetHeight");
- }, "Unexpected layout: overflow visible, scrollbar-gutter stable, vertical-rl");
-
- test(function() {
- let container = document.getElementById('container_hidden_v');
- let content = document.getElementById('content_hidden_v');
- assert_equals(container.scrollHeight, 200, "hidden/stable scrollHeight");
- assert_equals(container.clientHeight, 200, "hidden/stable clientHeight");
- assert_equals(container.offsetTop, content.offsetTop, "hidden/stable offsetTop");
- assert_equals(container.clientHeight, content.clientHeight, "hidden/stable clientHeight");
- assert_equals(container.offsetHeight, content.offsetHeight, "hidden/stable offsetHeight");
- }, "Unexpected layout: overflow hidden, scrollbar-gutter stable, vertical-rl");
-
- test(function() {
- let container = document.getElementById('container_visible_force_v');
- let content = document.getElementById('content_visible_force_v');
- assert_equals(container.scrollHeight, 180, "visible/stable force scrollHeight");
- assert_equals(container.clientHeight, 180, "visible/stable force clientHeight");
- assert_equals(container.offsetTop, content.offsetTop, "visible/stable force offsetTop");
- assert_equals(container.clientHeight, content.clientHeight, "visible/stable force clientHeight");
- assert_not_equals(container.offsetHeight, content.offsetHeight, "visible/stable force offsetHeight");
- }, "Unexpected layout: overflow visible, scrollbar-gutter stable force, vertical-rl");
-
- test(function() {
- let container = document.getElementById('container_hidden_force_v');
- let content = document.getElementById('content_hidden_force_v');
- assert_equals(container.scrollHeight, 180, "hidden/stable force scrollHeight");
- assert_equals(container.clientHeight, 180, "hidden/stable force clientHeight");
- assert_equals(container.offsetTop, content.offsetTop, "hidden/stable force offsetTop");
- assert_equals(container.clientHeight, content.clientHeight, "hidden/stable force clientHeight");
- assert_not_equals(container.offsetHeight, content.offsetHeight, "hidden/stable force offsetHeight");
- }, "Unexpected layout: overflow hidden, scrollbar-gutter stable force, vertical-rl");
-
- done();
- }
-
-</script>
-<body onload="performTest()">
-
- Test scrollbar-gutter: stable, writing-mode: horizontal-tb
-
- <div class="container classic horizontal auto" id="container_auto_h">
- <div class="content" id="content_auto_h">overflow-y: auto</div>
- </div>
-
- <div class="container classic horizontal scroll" id="container_scroll_h">
- <div class="content" id="content_scroll_h">overflow-y: scroll</div>
- </div>
-
- <div class="container classic horizontal visible" id="container_visible_h">
- <div class="content" id="content_visible_h">overflow: visible</div>
- </div>
-
- <div class="container classic horizontal hidden" id="container_hidden_h">
- <div class="content" id="content_hidden_h">overflow-y: hidden</div>
- </div>
-
- scrollbar-gutter: stable force
-
- <div class="container classic horizontal visible force" id="container_visible_force_h">
- <div class="content" id="content_visible_force_h">overflow: visible (force)</div>
- </div>
-
- <div class="container classic horizontal hidden force" id="container_hidden_force_h">
- <div class="content" id="content_hidden_force_h">overflow-y: hidden (force)</div>
- </div>
-
- writing-mode: vertical-rl;
-
- <div class="container classic vertical auto" id="container_auto_v">
- <div class="content" id="content_auto_v">overflow-x: auto</div>
- </div>
-
- <div class="container classic vertical scroll" id="container_scroll_v">
- <div class="content" id="content_scroll_v">overflow-x: scroll</div>
- </div>
-
- <div class="container classic vertical visible" id="container_visible_v">
- <div class="content" id="content_visible_v">overflow: visible</div>
- </div>
-
- <div class="container classic vertical hidden" id="container_hidden_v">
- <div class="content" id="content_hidden_v">overflow-x: hidden</div>
- </div>
-
- scrollbar-gutter: stable force
-
- <div class="container classic vertical visible force" id="container_visible_force_v">
- <div class="content" id="content_visible_force_v">overflow: visible</div>
- </div>
-
- <div class="container classic vertical hidden force" id="container_hidden_force_v">
- <div class="content" id="content_hidden_force_v">overflow-x: hidden</div>
- </div>
-
-</body>
diff --git a/tests/wpt/web-platform-tests/css/css-overflow/scrollbar-gutter-003.html b/tests/wpt/web-platform-tests/css/css-overflow/scrollbar-gutter-003.html
deleted file mode 100644
index 1002b462390..00000000000
--- a/tests/wpt/web-platform-tests/css/css-overflow/scrollbar-gutter-003.html
+++ /dev/null
@@ -1,263 +0,0 @@
-<!doctype html>
-<meta charset="utf-8">
-<title>CSS Overflow: test scrollbar-gutter: always (classic scrollbars)</title>
-<link rel="author" title="Felipe Erias Morandeira" href="mailto:felipeerias@gmail.com"/>
-<link rel="help" href="https://www.w3.org/TR/css-overflow-4/#scollbar-gutter-property"/>
-<meta name="assert" content="Test scrollbar-gutter: always with custom classic scrollbars">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/css/support/parsing-testcommon.js"></script>
-<style>
-
- .container {
- scrollbar-gutter: always;
- height: 200px;
- width: 200px;
- margin: 1px;
- padding: 0px;
- border: none;
- background: deepskyblue;
- }
-
- .container.force {
- scrollbar-gutter: always force;
- }
-
- .content {
- height: 100%;
- width: 100%;
- background: lightsalmon;
- }
-
- /* ensure that we are using classic scrollbars */
- .classic {
- scrollbar-width: 20px;
- scrollbar-color: hsla(0, 0%, 20%, 0.6) hsla(0, 0%, 40%, 0.3);
- }
- .classic::-webkit-scrollbar {
- width: 20px;
- height: 20px;
- }
- .classic::-webkit-scrollbar-track {
- background-color: hsla(0, 0%, 40%, 0.4);
- }
- .classic::-webkit-scrollbar-thumb {
- background-color: hsla(0, 0%, 20%, 0.8);
- border-radius: 10px;
- }
-
- /* writing modes */
- .horizontal {
- writing-mode: horizontal-tb;
- overflow-x: auto;
- }
- .vertical {
- writing-mode: vertical-rl;
- overflow-y: auto;
- }
-
- /* overflow on the block direction */
- .horizontal.auto { overflow-y: auto; }
- .horizontal.scroll { overflow-y: scroll; }
- .horizontal.visible { overflow: visible; }
- .horizontal.hidden { overflow-y: hidden; }
- .vertical.auto { overflow-x: auto; }
- .vertical.scroll { overflow-x: scroll; }
- .vertical.visible { overflow: visible; }
- .vertical.hidden { overflow-x: hidden; }
-
- /* Note: not testing with overflow: clip; */
-
-</style>
-<script type="text/javascript">
-
- function performTest() {
- setup({explicit_done: true});
-
- // horizontal
-
- test(function() {
- let container = document.getElementById('container_auto_h');
- let content = document.getElementById('content_auto_h');
- assert_equals(container.scrollWidth, 180, "auto/always scrollWidth");
- assert_equals(container.clientWidth, 180, "auto/always clientWidth");
- assert_equals(container.offsetLeft, content.offsetLeft, "auto/always offsetLeft");
- assert_equals(container.clientWidth, content.clientWidth, "auto/always clientWidth");
- assert_not_equals(container.offsetWidth, content.offsetWidth, "auto/always offsetWidth");
- }, "Unexpected layout: overflow auto, scrollbar-gutter always, horizontal-tb");
-
- test(function() {
- let container = document.getElementById('container_scroll_h');
- let content = document.getElementById('content_scroll_h');
- assert_equals(container.scrollWidth, 180, "scroll/always scrollWidth");
- assert_equals(container.clientWidth, 180, "scroll/always clientWidth");
- assert_equals(container.offsetLeft, content.offsetLeft, "scroll/always offsetLeft");
- assert_equals(container.clientWidth, content.clientWidth, "scroll/always clientWidth");
- assert_not_equals(container.offsetWidth, content.offsetWidth, "scroll/always offsetWidth");
- }, "Unexpected layout: overflow scroll, scrollbar-gutter always, horizontal-tb");
-
- test(function() {
- let container = document.getElementById('container_visible_h');
- let content = document.getElementById('content_visible_h');
- assert_equals(container.scrollWidth, 200, "visible/always scrollWidth");
- assert_equals(container.clientWidth, 200, "visible/always clientWidth");
- assert_equals(container.offsetLeft, content.offsetLeft, "visible/always offsetLeft");
- assert_equals(container.clientWidth, content.clientWidth, "visible/always clientWidth");
- assert_equals(container.offsetWidth, content.offsetWidth, "visible/always offsetWidth");
- }, "Unexpected layout: overflow visible, scrollbar-gutter always, horizontal-tb");
-
- test(function() {
- let container = document.getElementById('container_hidden_h');
- let content = document.getElementById('content_hidden_h');
- assert_equals(container.scrollWidth, 200, "hidden/always scrollWidth");
- assert_equals(container.clientWidth, 200, "hidden/always clientWidth");
- assert_equals(container.offsetLeft, content.offsetLeft, "hidden/always offsetLeft");
- assert_equals(container.clientWidth, content.clientWidth, "hidden/always clientWidth");
- assert_equals(container.offsetWidth, content.offsetWidth, "hidden/always offsetWidth");
- }, "Unexpected layout: overflow hidden, scrollbar-gutter always, horizontal-tb");
-
- test(function() {
- let container = document.getElementById('container_visible_force_h');
- let content = document.getElementById('content_visible_force_h');
- assert_equals(container.scrollWidth, 180, "visible/always force scrollWidth");
- assert_equals(container.clientWidth, 180, "visible/always force clientWidth");
- assert_equals(container.offsetLeft, content.offsetLeft, "visible/always force offsetLeft");
- assert_equals(container.clientWidth, content.clientWidth, "visible/always force clientWidth");
- assert_not_equals(container.offsetWidth, content.offsetWidth, "visible/always force offsetWidth");
- }, "Unexpected layout: overflow visible, scrollbar-gutter always force, horizontal-tb");
-
- test(function() {
- let container = document.getElementById('container_hidden_force_h');
- let content = document.getElementById('content_hidden_force_h');
- assert_equals(container.scrollWidth, 180, "hidden/always force scrollWidth");
- assert_equals(container.clientWidth, 180, "hidden/always force clientWidth");
- assert_equals(container.offsetLeft, content.offsetLeft, "hidden/always force offsetLeft");
- assert_equals(container.clientWidth, content.clientWidth, "hidden/always force clientWidth");
- assert_not_equals(container.offsetWidth, content.offsetWidth, "hidden/always force offsetWidth");
- }, "Unexpected layout: overflow hidden, scrollbar-gutter always force, horizontal-tb");
-
- // vertical
-
- test(function() {
- let container = document.getElementById('container_auto_v');
- let content = document.getElementById('content_auto_v');
- assert_equals(container.scrollHeight, 180, "auto/always scrollHeight");
- assert_equals(container.clientHeight, 180, "auto/always clientHeight");
- assert_equals(container.offsetTop, content.offsetTop, "auto/always offsetTop");
- assert_equals(container.clientHeight, content.clientHeight, "auto/always clientHeight");
- assert_not_equals(container.offsetHeight, content.offsetHeight, "auto/always offsetHeight");
- }, "Unexpected layout: overflow auto, scrollbar-gutter always, vertical-rl");
-
- test(function() {
- let container = document.getElementById('container_scroll_v');
- let content = document.getElementById('content_scroll_v');
- assert_equals(container.scrollHeight, 180, "scroll/always scrollHeight");
- assert_equals(container.clientHeight, 180, "scroll/always clientHeight");
- assert_equals(container.offsetTop, content.offsetTop, "scroll/always offsetTop");
- assert_equals(container.clientHeight, content.clientHeight, "scroll/always clientHeight");
- assert_not_equals(container.offsetHeight, content.offsetHeight, "scroll/always offsetHeight");
- }, "Unexpected layout: overflow scroll, scrollbar-gutter always, vertical-rl");
-
- test(function() {
- let container = document.getElementById('container_visible_v');
- let content = document.getElementById('content_visible_v');
- assert_equals(container.scrollHeight, 200, "visible/always scrollHeight");
- assert_equals(container.clientHeight, 200, "visible/always clientHeight");
- assert_equals(container.offsetTop, content.offsetTop, "visible/always offsetTop");
- assert_equals(container.clientHeight, content.clientHeight, "visible/always clientHeight");
- assert_equals(container.offsetHeight, content.offsetHeight, "visible/always offsetHeight");
- }, "Unexpected layout: overflow visible, scrollbar-gutter always, vertical-rl");
-
- test(function() {
- let container = document.getElementById('container_hidden_v');
- let content = document.getElementById('content_hidden_v');
- assert_equals(container.scrollHeight, 200, "hidden/always scrollHeight");
- assert_equals(container.clientHeight, 200, "hidden/always clientHeight");
- assert_equals(container.offsetTop, content.offsetTop, "hidden/always offsetTop");
- assert_equals(container.clientHeight, content.clientHeight, "hidden/always clientHeight");
- assert_equals(container.offsetHeight, content.offsetHeight, "hidden/always offsetHeight");
- }, "Unexpected layout: overflow hidden, scrollbar-gutter always, vertical-rl");
-
- test(function() {
- let container = document.getElementById('container_visible_force_v');
- let content = document.getElementById('content_visible_force_v');
- assert_equals(container.scrollHeight, 180, "visible/always force scrollHeight");
- assert_equals(container.clientHeight, 180, "visible/always force clientHeight");
- assert_equals(container.offsetTop, content.offsetTop, "visible/always force offsetTop");
- assert_equals(container.clientHeight, content.clientHeight, "visible/always force clientHeight");
- assert_not_equals(container.offsetHeight, content.offsetHeight, "visible/always force offsetHeight");
- }, "Unexpected layout: overflow visible, scrollbar-gutter always force, vertical-rl");
-
- test(function() {
- let container = document.getElementById('container_hidden_force_v');
- let content = document.getElementById('content_hidden_force_v');
- assert_equals(container.scrollHeight, 180, "hidden/always force scrollHeight");
- assert_equals(container.clientHeight, 180, "hidden/always force clientHeight");
- assert_equals(container.offsetTop, content.offsetTop, "hidden/always force offsetTop");
- assert_equals(container.clientHeight, content.clientHeight, "hidden/always force clientHeight");
- assert_not_equals(container.offsetHeight, content.offsetHeight, "hidden/always force offsetHeight");
- }, "Unexpected layout: overflow hidden, scrollbar-gutter always force, vertical-rl");
-
- done();
- }
-
-</script>
-<body onload="performTest()">
-
- Test scrollbar-gutter: always, writing-mode: horizontal-tb
-
- <div class="container classic horizontal auto" id="container_auto_h">
- <div class="content" id="content_auto_h">overflow-y: auto</div>
- </div>
-
- <div class="container classic horizontal scroll" id="container_scroll_h">
- <div class="content" id="content_scroll_h">overflow-y: scroll</div>
- </div>
-
- <div class="container classic horizontal visible" id="container_visible_h">
- <div class="content" id="content_visible_h">overflow: visible</div>
- </div>
-
- <div class="container classic horizontal hidden" id="container_hidden_h">
- <div class="content" id="content_hidden_h">overflow-y: hidden</div>
- </div>
-
- scrollbar-gutter: always force
-
- <div class="container classic horizontal visible force" id="container_visible_force_h">
- <div class="content" id="content_visible_force_h">overflow: visible (force)</div>
- </div>
-
- <div class="container classic horizontal hidden force" id="container_hidden_force_h">
- <div class="content" id="content_hidden_force_h">overflow-y: hidden (force)</div>
- </div>
-
- writing-mode: vertical-rl;
-
- <div class="container classic vertical auto" id="container_auto_v">
- <div class="content" id="content_auto_v">overflow-x: auto</div>
- </div>
-
- <div class="container classic vertical scroll" id="container_scroll_v">
- <div class="content" id="content_scroll_v">overflow-x: scroll</div>
- </div>
-
- <div class="container classic vertical visible" id="container_visible_v">
- <div class="content" id="content_visible_v">overflow: visible</div>
- </div>
-
- <div class="container classic vertical hidden" id="container_hidden_v">
- <div class="content" id="content_hidden_v">overflow-x: hidden</div>
- </div>
-
- scrollbar-gutter: always force
-
- <div class="container classic vertical visible force" id="container_visible_force_v">
- <div class="content" id="content_visible_force_v">overflow: visible</div>
- </div>
-
- <div class="container classic vertical hidden force" id="container_hidden_force_v">
- <div class="content" id="content_hidden_force_v">overflow-x: hidden</div>
- </div>
-
-</body>
diff --git a/tests/wpt/web-platform-tests/css/css-overflow/scrollbar-gutter-004.html b/tests/wpt/web-platform-tests/css/css-overflow/scrollbar-gutter-004.html
deleted file mode 100644
index b41e3491f27..00000000000
--- a/tests/wpt/web-platform-tests/css/css-overflow/scrollbar-gutter-004.html
+++ /dev/null
@@ -1,263 +0,0 @@
-<!doctype html>
-<meta charset="utf-8">
-<title>CSS Overflow: test scrollbar-gutter: stable both (classic scrollbars)</title>
-<link rel="author" title="Felipe Erias Morandeira" href="mailto:felipeerias@gmail.com"/>
-<link rel="help" href="https://www.w3.org/TR/css-overflow-4/#scollbar-gutter-property"/>
-<meta name="assert" content="Test scrollbar-gutter: stable with custom classic scrollbars">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/css/support/parsing-testcommon.js"></script>
-<style>
-
- .container {
- scrollbar-gutter: stable both;
- height: 200px;
- width: 200px;
- margin: 1px;
- padding: 0px;
- border: none;
- background: deepskyblue;
- }
-
- .container.force {
- scrollbar-gutter: stable both force;
- }
-
- .content {
- height: 100%;
- width: 100%;
- background: lightsalmon;
- }
-
- /* ensure that we are using classic scrollbars */
- .classic {
- scrollbar-width: 20px;
- scrollbar-color: hsla(0, 0%, 20%, 0.6) hsla(0, 0%, 40%, 0.3);
- }
- .classic::-webkit-scrollbar {
- width: 20px;
- height: 20px;
- }
- .classic::-webkit-scrollbar-track {
- background-color: hsla(0, 0%, 40%, 0.4);
- }
- .classic::-webkit-scrollbar-thumb {
- background-color: hsla(0, 0%, 20%, 0.8);
- border-radius: 10px;
- }
-
- /* writing modes */
- .horizontal {
- writing-mode: horizontal-tb;
- overflow-x: auto;
- }
- .vertical {
- writing-mode: vertical-rl;
- overflow-y: auto;
- }
-
- /* overflow on the block direction */
- .horizontal.auto { overflow-y: auto; }
- .horizontal.scroll { overflow-y: scroll; }
- .horizontal.visible { overflow: visible; }
- .horizontal.hidden { overflow-y: hidden; }
- .vertical.auto { overflow-x: auto; }
- .vertical.scroll { overflow-x: scroll; }
- .vertical.visible { overflow: visible; }
- .vertical.hidden { overflow-x: hidden; }
-
- /* Note: not testing with overflow: clip; */
-
-</style>
-<script type="text/javascript">
-
- function performTest() {
- setup({explicit_done: true});
-
- // horizontal
-
- test(function() {
- let container = document.getElementById('container_auto_h');
- let content = document.getElementById('content_auto_h');
- assert_equals(container.scrollWidth, 160, "auto/stable both scrollWidth");
- assert_equals(container.clientWidth, 160, "auto/stable both clientWidth");
- assert_equals(container.offsetLeft, content.offsetLeft - 20, "auto/stable both offsetLeft");
- assert_equals(container.clientWidth, content.clientWidth, "auto/stable both clientWidth");
- assert_not_equals(container.offsetWidth, content.offsetWidth, "auto/stable both offsetWidth");
- }, "Unexpected layout: overflow auto, scrollbar-gutter stable both, horizontal-tb");
-
- test(function() {
- let container = document.getElementById('container_scroll_h');
- let content = document.getElementById('content_scroll_h');
- assert_equals(container.scrollWidth, 160, "scroll/stable both scrollWidth");
- assert_equals(container.clientWidth, 160, "scroll/stable both clientWidth");
- assert_equals(container.offsetLeft, content.offsetLeft - 20, "scroll/stable both offsetLeft");
- assert_equals(container.clientWidth, content.clientWidth, "scroll/stable both clientWidth");
- assert_not_equals(container.offsetWidth, content.offsetWidth, "scroll/stable both offsetWidth");
- }, "Unexpected layout: overflow scroll, scrollbar-gutter stable both, horizontal-tb");
-
- test(function() {
- let container = document.getElementById('container_visible_h');
- let content = document.getElementById('content_visible_h');
- assert_equals(container.scrollWidth, 200, "visible/stable both scrollWidth");
- assert_equals(container.clientWidth, 200, "visible/stable both clientWidth");
- assert_equals(container.offsetLeft, content.offsetLeft, "visible/stable both offsetLeft");
- assert_equals(container.clientWidth, content.clientWidth, "visible/stable both clientWidth");
- assert_equals(container.offsetWidth, content.offsetWidth, "visible/stable both offsetWidth");
- }, "Unexpected layout: overflow visible, scrollbar-gutter stable both, horizontal-tb");
-
- test(function() {
- let container = document.getElementById('container_hidden_h');
- let content = document.getElementById('content_hidden_h');
- assert_equals(container.scrollWidth, 200, "hidden/stable both scrollWidth");
- assert_equals(container.clientWidth, 200, "hidden/stable both clientWidth");
- assert_equals(container.offsetLeft, content.offsetLeft, "hidden/stable both offsetLeft");
- assert_equals(container.clientWidth, content.clientWidth, "hidden/stable both clientWidth");
- assert_equals(container.offsetWidth, content.offsetWidth, "hidden/stable both offsetWidth");
- }, "Unexpected layout: overflow hidden, scrollbar-gutter stable both, horizontal-tb");
-
- test(function() {
- let container = document.getElementById('container_visible_force_h');
- let content = document.getElementById('content_visible_force_h');
- assert_equals(container.scrollWidth, 160, "visible/stable both force scrollWidth");
- assert_equals(container.clientWidth, 160, "visible/stable both force clientWidth");
- assert_equals(container.offsetLeft, content.offsetLeft - 20, "visible/stable both force offsetLeft");
- assert_equals(container.clientWidth, content.clientWidth, "visible/stable both force clientWidth");
- assert_not_equals(container.offsetWidth, content.offsetWidth, "visible/stable both force offsetWidth");
- }, "Unexpected layout: overflow visible, scrollbar-gutter stable both force, horizontal-tb");
-
- test(function() {
- let container = document.getElementById('container_hidden_force_h');
- let content = document.getElementById('content_hidden_force_h');
- assert_equals(container.scrollWidth, 160, "hidden/stable both force scrollWidth");
- assert_equals(container.clientWidth, 160, "hidden/stable both force clientWidth");
- assert_equals(container.offsetLeft, content.offsetLeft - 20, "hidden/stable both force offsetLeft");
- assert_equals(container.clientWidth, content.clientWidth, "hidden/stable both force clientWidth");
- assert_not_equals(container.offsetWidth, content.offsetWidth, "hidden/stable both force offsetWidth");
- }, "Unexpected layout: overflow hidden, scrollbar-gutter stable both force, horizontal-tb");
-
- // vertical
-
- test(function() {
- let container = document.getElementById('container_auto_v');
- let content = document.getElementById('content_auto_v');
- assert_equals(container.scrollHeight, 160, "auto/stable both scrollHeight");
- assert_equals(container.clientHeight, 160, "auto/stable both clientHeight");
- assert_equals(container.offsetTop, content.offsetTop - 20, "auto/stable both offsetTop");
- assert_equals(container.clientHeight, content.clientHeight, "auto/stable both clientHeight");
- assert_not_equals(container.offsetHeight, content.offsetHeight, "auto/stable both offsetHeight");
- }, "Unexpected layout: overflow auto, scrollbar-gutter stable both, vertical-rl");
-
- test(function() {
- let container = document.getElementById('container_scroll_v');
- let content = document.getElementById('content_scroll_v');
- assert_equals(container.scrollHeight, 160, "scroll/stable both scrollHeight");
- assert_equals(container.clientHeight, 160, "scroll/stable both clientHeight");
- assert_equals(container.offsetTop, content.offsetTop - 20, "scroll/stable both offsetTop");
- assert_equals(container.clientHeight, content.clientHeight, "scroll/stable both clientHeight");
- assert_not_equals(container.offsetHeight, content.offsetHeight, "scroll/stable both offsetHeight");
- }, "Unexpected layout: overflow scroll, scrollbar-gutter stable both, vertical-rl");
-
- test(function() {
- let container = document.getElementById('container_visible_v');
- let content = document.getElementById('content_visible_v');
- assert_equals(container.scrollHeight, 200, "visible/stable both scrollHeight");
- assert_equals(container.clientHeight, 200, "visible/stable both clientHeight");
- assert_equals(container.offsetTop, content.offsetTop, "visible/stable both offsetTop");
- assert_equals(container.clientHeight, content.clientHeight, "visible/stable both clientHeight");
- assert_equals(container.offsetHeight, content.offsetHeight, "visible/stable both offsetHeight");
- }, "Unexpected layout: overflow visible, scrollbar-gutter stable both, vertical-rl");
-
- test(function() {
- let container = document.getElementById('container_hidden_v');
- let content = document.getElementById('content_hidden_v');
- assert_equals(container.scrollHeight, 200, "hidden/stable both scrollHeight");
- assert_equals(container.clientHeight, 200, "hidden/stable both clientHeight");
- assert_equals(container.offsetTop, content.offsetTop, "hidden/stable both offsetTop");
- assert_equals(container.clientHeight, content.clientHeight, "hidden/stable both clientHeight");
- assert_equals(container.offsetHeight, content.offsetHeight, "hidden/stable both offsetHeight");
- }, "Unexpected layout: overflow hidden, scrollbar-gutter stable both, vertical-rl");
-
- test(function() {
- let container = document.getElementById('container_visible_force_v');
- let content = document.getElementById('content_visible_force_v');
- assert_equals(container.scrollHeight, 160, "visible/stable both scrollHeight");
- assert_equals(container.clientHeight, 160, "visible/stable both clientHeight");
- assert_equals(container.offsetTop, content.offsetTop - 20, "visible/stable both offsetTop");
- assert_equals(container.clientHeight, content.clientHeight, "visible/stable both clientHeight");
- assert_not_equals(container.offsetHeight, content.offsetHeight, "visible/stable both offsetHeight");
- }, "Unexpected layout: overflow visible, scrollbar-gutter stable both force, vertical-rl");
-
- test(function() {
- let container = document.getElementById('container_hidden_force_v');
- let content = document.getElementById('content_hidden_force_v');
- assert_equals(container.scrollHeight, 160, "hidden/stable both scrollHeight");
- assert_equals(container.clientHeight, 160, "hidden/stable both clientHeight");
- assert_equals(container.offsetTop, content.offsetTop - 20, "hidden/stable both offsetTop");
- assert_equals(container.clientHeight, content.clientHeight, "hidden/stable both clientHeight");
- assert_not_equals(container.offsetHeight, content.offsetHeight, "hidden/stable both offsetHeight");
- }, "Unexpected layout: overflow hidden, scrollbar-gutter stable both force, vertical-rl");
-
- done();
- }
-
-</script>
-<body onload="performTest()">
-
- Test scrollbar-gutter: stable both, writing-mode: horizontal-tb
-
- <div class="container classic horizontal auto" id="container_auto_h">
- <div class="content" id="content_auto_h">overflow-y: auto</div>
- </div>
-
- <div class="container classic horizontal scroll" id="container_scroll_h">
- <div class="content" id="content_scroll_h">overflow-y: scroll</div>
- </div>
-
- <div class="container classic horizontal visible" id="container_visible_h">
- <div class="content" id="content_visible_h">overflow: visible</div>
- </div>
-
- <div class="container classic horizontal hidden" id="container_hidden_h">
- <div class="content" id="content_hidden_h">overflow-y: hidden</div>
- </div>
-
- scrollbar-gutter: stable both force
-
- <div class="container classic horizontal visible force" id="container_visible_force_h">
- <div class="content" id="content_visible_force_h">overflow: visible (force)</div>
- </div>
-
- <div class="container classic horizontal hidden force" id="container_hidden_force_h">
- <div class="content" id="content_hidden_force_h">overflow-y: hidden (force)</div>
- </div>
-
- writing-mode: vertical-rl;
-
- <div class="container classic vertical auto" id="container_auto_v">
- <div class="content" id="content_auto_v">overflow-x: auto</div>
- </div>
-
- <div class="container classic vertical scroll" id="container_scroll_v">
- <div class="content" id="content_scroll_v">overflow-x: scroll</div>
- </div>
-
- <div class="container classic vertical visible" id="container_visible_v">
- <div class="content" id="content_visible_v">overflow: visible</div>
- </div>
-
- <div class="container classic vertical hidden" id="container_hidden_v">
- <div class="content" id="content_hidden_v">overflow-x: hidden</div>
- </div>
-
- scrollbar-gutter: stable both force
-
- <div class="container classic vertical visible force" id="container_visible_force_v">
- <div class="content" id="content_visible_force_v">overflow: visible</div>
- </div>
-
- <div class="container classic vertical hidden force" id="container_hidden_force_v">
- <div class="content" id="content_hidden_force_v">overflow-x: hidden</div>
- </div>
-
-</body>
diff --git a/tests/wpt/web-platform-tests/css/css-overflow/scrollbar-gutter-005.html b/tests/wpt/web-platform-tests/css/css-overflow/scrollbar-gutter-005.html
deleted file mode 100644
index dca465770dd..00000000000
--- a/tests/wpt/web-platform-tests/css/css-overflow/scrollbar-gutter-005.html
+++ /dev/null
@@ -1,263 +0,0 @@
-<!doctype html>
-<meta charset="utf-8">
-<title>CSS Overflow: test scrollbar-gutter: always both (classic scrollbars)</title>
-<link rel="author" title="Felipe Erias Morandeira" href="mailto:felipeerias@gmail.com"/>
-<link rel="help" href="https://www.w3.org/TR/css-overflow-4/#scollbar-gutter-property"/>
-<meta name="assert" content="Test scrollbar-gutter: always with custom classic scrollbars">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/css/support/parsing-testcommon.js"></script>
-<style>
-
- .container {
- scrollbar-gutter: always both;
- height: 200px;
- width: 200px;
- margin: 1px;
- padding: 0px;
- border: none;
- background: deepskyblue;
- }
-
- .container.force {
- scrollbar-gutter: always both force;
- }
-
- .content {
- height: 100%;
- width: 100%;
- background: lightsalmon;
- }
-
- /* ensure that we are using classic scrollbars */
- .classic {
- scrollbar-width: 20px;
- scrollbar-color: hsla(0, 0%, 20%, 0.6) hsla(0, 0%, 40%, 0.3);
- }
- .classic::-webkit-scrollbar {
- width: 20px;
- height: 20px;
- }
- .classic::-webkit-scrollbar-track {
- background-color: hsla(0, 0%, 40%, 0.4);
- }
- .classic::-webkit-scrollbar-thumb {
- background-color: hsla(0, 0%, 20%, 0.8);
- border-radius: 10px;
- }
-
- /* writing modes */
- .horizontal {
- writing-mode: horizontal-tb;
- overflow-x: auto;
- }
- .vertical {
- writing-mode: vertical-rl;
- overflow-y: auto;
- }
-
- /* overflow on the block direction */
- .horizontal.auto { overflow-y: auto; }
- .horizontal.scroll { overflow-y: scroll; }
- .horizontal.visible { overflow: visible; }
- .horizontal.hidden { overflow-y: hidden; }
- .vertical.auto { overflow-x: auto; }
- .vertical.scroll { overflow-x: scroll; }
- .vertical.visible { overflow: visible; }
- .vertical.hidden { overflow-x: hidden; }
-
- /* Note: not testing with overflow: clip; */
-
-</style>
-<script type="text/javascript">
-
- function performTest() {
- setup({explicit_done: true});
-
- // horizontal
-
- test(function() {
- let container = document.getElementById('container_auto_h');
- let content = document.getElementById('content_auto_h');
- assert_equals(container.scrollWidth, 160, "auto/always both scrollWidth");
- assert_equals(container.clientWidth, 160, "auto/always both clientWidth");
- assert_equals(container.offsetLeft, content.offsetLeft - 20, "auto/always both offsetLeft");
- assert_equals(container.clientWidth, content.clientWidth, "auto/always both clientWidth");
- assert_not_equals(container.offsetWidth, content.offsetWidth, "auto/always both offsetWidth");
- }, "Unexpected layout: overflow auto, scrollbar-gutter always both, horizontal-tb");
-
- test(function() {
- let container = document.getElementById('container_scroll_h');
- let content = document.getElementById('content_scroll_h');
- assert_equals(container.scrollWidth, 160, "scroll/always both scrollWidth");
- assert_equals(container.clientWidth, 160, "scroll/always both clientWidth");
- assert_equals(container.offsetLeft, content.offsetLeft - 20, "scroll/always both offsetLeft");
- assert_equals(container.clientWidth, content.clientWidth, "scroll/always both clientWidth");
- assert_not_equals(container.offsetWidth, content.offsetWidth, "scroll/always both offsetWidth");
- }, "Unexpected layout: overflow scroll, scrollbar-gutter always both, horizontal-tb");
-
- test(function() {
- let container = document.getElementById('container_visible_h');
- let content = document.getElementById('content_visible_h');
- assert_equals(container.scrollWidth, 200, "visible/always both scrollWidth");
- assert_equals(container.clientWidth, 200, "visible/always both clientWidth");
- assert_equals(container.offsetLeft, content.offsetLeft, "visible/always both offsetLeft");
- assert_equals(container.clientWidth, content.clientWidth, "visible/always both clientWidth");
- assert_equals(container.offsetWidth, content.offsetWidth, "visible/always both offsetWidth");
- }, "Unexpected layout: overflow visible, scrollbar-gutter always both, horizontal-tb");
-
- test(function() {
- let container = document.getElementById('container_hidden_h');
- let content = document.getElementById('content_hidden_h');
- assert_equals(container.scrollWidth, 200, "hidden/always both scrollWidth");
- assert_equals(container.clientWidth, 200, "hidden/always both clientWidth");
- assert_equals(container.offsetLeft, content.offsetLeft, "hidden/always both offsetLeft");
- assert_equals(container.clientWidth, content.clientWidth, "hidden/always both clientWidth");
- assert_equals(container.offsetWidth, content.offsetWidth, "hidden/always both offsetWidth");
- }, "Unexpected layout: overflow hidden, scrollbar-gutter always both, horizontal-tb");
-
- test(function() {
- let container = document.getElementById('container_visible_force_h');
- let content = document.getElementById('content_visible_force_h');
- assert_equals(container.scrollWidth, 160, "visible/always both force scrollWidth");
- assert_equals(container.clientWidth, 160, "visible/always both force clientWidth");
- assert_equals(container.offsetLeft, content.offsetLeft - 20, "visible/always both force offsetLeft");
- assert_equals(container.clientWidth, content.clientWidth, "visible/always both force clientWidth");
- assert_not_equals(container.offsetWidth, content.offsetWidth, "visible/always both force offsetWidth");
- }, "Unexpected layout: overflow visible, scrollbar-gutter always both force, horizontal-tb");
-
- test(function() {
- let container = document.getElementById('container_hidden_force_h');
- let content = document.getElementById('content_hidden_force_h');
- assert_equals(container.scrollWidth, 160, "hidden/always both force scrollWidth");
- assert_equals(container.clientWidth, 160, "hidden/always both force clientWidth");
- assert_equals(container.offsetLeft, content.offsetLeft - 20, "hidden/always both force offsetLeft");
- assert_equals(container.clientWidth, content.clientWidth, "hidden/always both force clientWidth");
- assert_not_equals(container.offsetWidth, content.offsetWidth, "hidden/always both force offsetWidth");
- }, "Unexpected layout: overflow hidden, scrollbar-gutter always both force, horizontal-tb");
-
- // vertical
-
- test(function() {
- let container = document.getElementById('container_auto_v');
- let content = document.getElementById('content_auto_v');
- assert_equals(container.scrollHeight, 160, "auto/always both scrollHeight");
- assert_equals(container.clientHeight, 160, "auto/always both clientHeight");
- assert_equals(container.offsetTop, content.offsetTop - 20, "auto/always both offsetTop");
- assert_equals(container.clientHeight, content.clientHeight, "auto/always both clientHeight");
- assert_not_equals(container.offsetHeight, content.offsetHeight, "auto/always both offsetHeight");
- }, "Unexpected layout: overflow auto, scrollbar-gutter always both, vertical-rl");
-
- test(function() {
- let container = document.getElementById('container_scroll_v');
- let content = document.getElementById('content_scroll_v');
- assert_equals(container.scrollHeight, 160, "scroll/always both scrollHeight");
- assert_equals(container.clientHeight, 160, "scroll/always both clientHeight");
- assert_equals(container.offsetTop, content.offsetTop - 20, "scroll/always both offsetTop");
- assert_equals(container.clientHeight, content.clientHeight, "scroll/always both clientHeight");
- assert_not_equals(container.offsetHeight, content.offsetHeight, "scroll/always both offsetHeight");
- }, "Unexpected layout: overflow scroll, scrollbar-gutter always both, vertical-rl");
-
- test(function() {
- let container = document.getElementById('container_visible_v');
- let content = document.getElementById('content_visible_v');
- assert_equals(container.scrollHeight, 200, "visible/always both scrollHeight");
- assert_equals(container.clientHeight, 200, "visible/always both clientHeight");
- assert_equals(container.offsetTop, content.offsetTop, "visible/always both offsetTop");
- assert_equals(container.clientHeight, content.clientHeight, "visible/always both clientHeight");
- assert_equals(container.offsetHeight, content.offsetHeight, "visible/always both offsetHeight");
- }, "Unexpected layout: overflow visible, scrollbar-gutter always both, vertical-rl");
-
- test(function() {
- let container = document.getElementById('container_hidden_v');
- let content = document.getElementById('content_hidden_v');
- assert_equals(container.scrollHeight, 200, "hidden/always both scrollHeight");
- assert_equals(container.clientHeight, 200, "hidden/always both clientHeight");
- assert_equals(container.offsetTop, content.offsetTop, "hidden/always both offsetTop");
- assert_equals(container.clientHeight, content.clientHeight, "hidden/always both clientHeight");
- assert_equals(container.offsetHeight, content.offsetHeight, "hidden/always both offsetHeight");
- }, "Unexpected layout: overflow hidden, scrollbar-gutter always both, vertical-rl");
-
- test(function() {
- let container = document.getElementById('container_visible_force_v');
- let content = document.getElementById('content_visible_force_v');
- assert_equals(container.scrollHeight, 160, "visible/always both scrollHeight");
- assert_equals(container.clientHeight, 160, "visible/always both clientHeight");
- assert_equals(container.offsetTop, content.offsetTop - 20, "visible/always both offsetTop");
- assert_equals(container.clientHeight, content.clientHeight, "visible/always both clientHeight");
- assert_not_equals(container.offsetHeight, content.offsetHeight, "visible/always both offsetHeight");
- }, "Unexpected layout: overflow visible, scrollbar-gutter always both force, vertical-rl");
-
- test(function() {
- let container = document.getElementById('container_hidden_force_v');
- let content = document.getElementById('content_hidden_force_v');
- assert_equals(container.scrollHeight, 160, "hidden/always both scrollHeight");
- assert_equals(container.clientHeight, 160, "hidden/always both clientHeight");
- assert_equals(container.offsetTop, content.offsetTop - 20, "hidden/always both offsetTop");
- assert_equals(container.clientHeight, content.clientHeight, "hidden/always both clientHeight");
- assert_not_equals(container.offsetHeight, content.offsetHeight, "hidden/always both offsetHeight");
- }, "Unexpected layout: overflow hidden, scrollbar-gutter always both force, vertical-rl");
-
- done();
- }
-
-</script>
-<body onload="performTest()">
-
- Test scrollbar-gutter: always both, writing-mode: horizontal-tb
-
- <div class="container classic horizontal auto" id="container_auto_h">
- <div class="content" id="content_auto_h">overflow-y: auto</div>
- </div>
-
- <div class="container classic horizontal scroll" id="container_scroll_h">
- <div class="content" id="content_scroll_h">overflow-y: scroll</div>
- </div>
-
- <div class="container classic horizontal visible" id="container_visible_h">
- <div class="content" id="content_visible_h">overflow: visible</div>
- </div>
-
- <div class="container classic horizontal hidden" id="container_hidden_h">
- <div class="content" id="content_hidden_h">overflow-y: hidden</div>
- </div>
-
- scrollbar-gutter: always both force
-
- <div class="container classic horizontal visible force" id="container_visible_force_h">
- <div class="content" id="content_visible_force_h">overflow: visible (force)</div>
- </div>
-
- <div class="container classic horizontal hidden force" id="container_hidden_force_h">
- <div class="content" id="content_hidden_force_h">overflow-y: hidden (force)</div>
- </div>
-
- writing-mode: vertical-rl;
-
- <div class="container classic vertical auto" id="container_auto_v">
- <div class="content" id="content_auto_v">overflow-x: auto</div>
- </div>
-
- <div class="container classic vertical scroll" id="container_scroll_v">
- <div class="content" id="content_scroll_v">overflow-x: scroll</div>
- </div>
-
- <div class="container classic vertical visible" id="container_visible_v">
- <div class="content" id="content_visible_v">overflow: visible</div>
- </div>
-
- <div class="container classic vertical hidden" id="container_hidden_v">
- <div class="content" id="content_hidden_v">overflow-x: hidden</div>
- </div>
-
- scrollbar-gutter: always both force
-
- <div class="container classic vertical visible force" id="container_visible_force_v">
- <div class="content" id="content_visible_force_v">overflow: visible</div>
- </div>
-
- <div class="container classic vertical hidden force" id="container_hidden_force_v">
- <div class="content" id="content_hidden_force_v">overflow-x: hidden</div>
- </div>
-
-</body>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/abspos-014.tentative.html b/tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/abspos-014.tentative.html
new file mode 100644
index 00000000000..b0accc68dc8
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/abspos-014.tentative.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<title>CSS aspect-ratio: abspos div inline size with max-height and contain-intrinsic-size</title>
+<link rel="author" title="Google LLC" href="https://www.google.com/">
+<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#aspect-ratio">
+<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/5257">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht" />
+<meta name="assert" content="A max-height constraint should be transferred through the aspect-ratio to apply to the inline size">
+
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+
+<div style="position: relative; height: 100px; position: relative;">
+ <div style="position: absolute; aspect-ratio: 1/1; max-height: 100%; min-height: 0; contain-intrinsic-size: 500px 500px; contain: size; background: green; color: green;">
+ </div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/flex-aspect-ratio-024.tentative.html b/tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/flex-aspect-ratio-024.tentative.html
index b0cefd57c48..ebac88ce33e 100644
--- a/tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/flex-aspect-ratio-024.tentative.html
+++ b/tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/flex-aspect-ratio-024.tentative.html
@@ -7,6 +7,6 @@
<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
-<div style="display: inline-flex; flex-direction: column; height: 100px;">
+<div style="display: inline-flex; flex-direction: column; flex-wrap: wrap; height: 100px;">
<img src="support/20x50-green.png" style="aspect-ratio: 1/1; min-height: 0; height: 50px; flex: 1;">
</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/reference/text-decoration-color-ref.html b/tests/wpt/web-platform-tests/css/css-text-decor/reference/text-decoration-color-ref.html
index 33272cbe1da..3ae7777ef06 100644
--- a/tests/wpt/web-platform-tests/css/css-text-decor/reference/text-decoration-color-ref.html
+++ b/tests/wpt/web-platform-tests/css/css-text-decor/reference/text-decoration-color-ref.html
@@ -20,6 +20,10 @@
-webkit-text-stroke-width: 1px;
-webkit-text-stroke-color: black;
}
+ .sys-color {
+ -webkit-text-stroke-width: thin;
+ -webkit-text-stroke-color: LinkText;
+ }
</style>
</head>
<body>
@@ -39,5 +43,6 @@
<sup class="underline" style="color: blue;"><span class="black-fill">superscript text</span></sup>
</div><br/>
<div class="underline" style="color: green;"><span class="transparent-fill">Transparent fill with black stroke text and green underline</span></div><br/>
+ <div class="underline" style="text-decoration-color: LinkText;"><span class="sys-color">LinkText stroke and underline with black fill</span></div><br/>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-color.html b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-color.html
index ec00b56aa44..1e1353d9fa6 100644
--- a/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-color.html
+++ b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-color.html
@@ -31,6 +31,10 @@
-webkit-text-stroke-width: 1px;
-webkit-text-stroke-color: black;
}
+ #sys-color {
+ -webkit-text-stroke-width: thin;
+ -webkit-text-stroke-color: LinkText;
+ }
</style>
</head>
<body>
@@ -60,5 +64,6 @@
<!-- Test with text-fill-color and text-stroke-color values set -->
<div class="underline" id="transparent-fill" style="text-decoration-color: green;">Transparent fill with black stroke text and green underline</div><br/>
+ <div class="underline" id="sys-color">LinkText stroke and underline with black fill</div><br/>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/css/css-text/altering-dom-crash.html b/tests/wpt/web-platform-tests/css/css-text/altering-dom-crash.html
index 227956e7a31..4840014533d 100644
--- a/tests/wpt/web-platform-tests/css/css-text/altering-dom-crash.html
+++ b/tests/wpt/web-platform-tests/css/css-text/altering-dom-crash.html
@@ -1,6 +1,6 @@
<!DOCTYPE html>
<title>CSS Text Test: Altering the DOM generates empty text elements that cause line-breaking to crash</title>
-<link rel="help" href="https://crbug.com/972992">
+<link rel="help" href="https://crbug.com/1128571">
<style>
body {
width: 5pt;
diff --git a/tests/wpt/web-platform-tests/css/css-text/whitespace-followed-by-cham-symbol-crash.html b/tests/wpt/web-platform-tests/css/css-text/whitespace-followed-by-cham-symbol-crash.html
index c56f915518f..b07a802ecd6 100644
--- a/tests/wpt/web-platform-tests/css/css-text/whitespace-followed-by-cham-symbol-crash.html
+++ b/tests/wpt/web-platform-tests/css/css-text/whitespace-followed-by-cham-symbol-crash.html
@@ -1,5 +1,5 @@
<title>CSS Text Test: Under quirks mode, a white space, followed by a Cham symbol, makes chrome to crash</title>
-<link rel="help" href="https://crbug.com/972992">
+<link rel="help" href="https://crbug.com/1130288">
<style>
body { margin: 40 91 18446744073709551526px 5307% }
#tCF9 { line-break: anywhere; }
diff --git a/tests/wpt/web-platform-tests/feature-policy/idlharness.window.js b/tests/wpt/web-platform-tests/feature-policy/idlharness.window.js
index 724da3c8017..2546061c52c 100644
--- a/tests/wpt/web-platform-tests/feature-policy/idlharness.window.js
+++ b/tests/wpt/web-platform-tests/feature-policy/idlharness.window.js
@@ -4,16 +4,17 @@
"use strict";
-// https://wicg.github.io/feature-policy/
+// https://wicg.github.io/permissions-policy/
idl_test(
- ['feature-policy'],
+ ['permissions-policy'],
['reporting', 'html', 'dom'],
idl_array => {
idl_array.add_objects({
Document: ['document'],
HTMLIframeElement: ['document.createElement("iframe")'],
- FeaturePolicy: ['document.featurePolicy'],
- })
+ PermissionsPolicy: ['document.permissionsPolicy'],
+ // TODO: PermissionsPolicyViolationReportBody
+ });
}
);
diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cross-origin-isolated-permission.https.html b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cross-origin-isolated-permission.https.html
index aec1b858542..2fc545d5acb 100644
--- a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cross-origin-isolated-permission.https.html
+++ b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cross-origin-isolated-permission.https.html
@@ -3,24 +3,28 @@
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src="/common/get-host-info.sub.js"></script>
+<script src="/common/utils.js"></script>
+<script src="/service-workers/service-worker/resources/test-helpers.sub.js"></script>
<body>
<script>
const {ORIGIN, HTTPS_REMOTE_ORIGIN} = get_host_info();
-const PATH =
+const FRAME_PATH =
new URL('resources/cross-origin-isolated-frame.html', location).pathname;
+const WORKER_URL =
+ new URL('resources/cross-origin-isolated-worker.js', location).href;
const PIPE =
'?pipe=' +
'|header(cross-origin-embedder-policy,require-corp)' +
'|header(cross-origin-resource-policy,cross-origin)';
-async function getCrossOriginIsolatedFor(t, origin, value) {
+async function getCrossOriginIsolatedForFrame(t, origin, value) {
const parentFrame = document.createElement('iframe');
t.add_cleanup(() => parentFrame.remove());
let pipe = PIPE;
if (value !== undefined) {
pipe += `|header(permissions-policy,cross-origin-isolated=${value})`;
}
- parentFrame.src = `${PATH}${pipe}`;
+ parentFrame.src = `${FRAME_PATH}${pipe}`;
document.body.append(parentFrame);
await new Promise((resolve) => {
@@ -28,7 +32,7 @@ async function getCrossOriginIsolatedFor(t, origin, value) {
});
const frame = parentFrame.contentDocument.createElement('iframe');
- frame.src = `${origin}${PATH}${PIPE}`;
+ frame.src = `${origin}${FRAME_PATH}${PIPE}`;
parentFrame.contentDocument.body.append(frame);
frame.addEventListener('error', t.unreached_func('frame.error'));
await new Promise((resolve) => {
@@ -37,35 +41,149 @@ async function getCrossOriginIsolatedFor(t, origin, value) {
const mc = new MessageChannel();
frame.contentWindow.postMessage({port: mc.port2}, '*', [mc.port2]);
+ return (await new Promise(r => mc.port1.onmessage = r)).data;
+}
+
+async function getCrossOriginIsolatedForDedicatedWorker(t, scheme, value) {
+ const frame = document.createElement('iframe');
+ t.add_cleanup(() => frame.remove());
+ let pipe = PIPE;
+ if (value !== undefined) {
+ pipe += `|header(permissions-policy,cross-origin-isolated=${value})`
+ }
+ frame.src = `${FRAME_PATH}${pipe}`;
+ document.body.append(frame);
- const e = await new Promise((resolve) => {
- mc.port1.onmessage = resolve;
+ frame.addEventListener('error', t.unreached_func('frame.error'));
+ await new Promise((resolve) => {
+ frame.addEventListener('load', resolve);
});
- assert_equals(typeof(e.data), 'boolean');
- return e.data;
+
+ let workerURL;
+ if (scheme === 'https') {
+ workerURL = `${WORKER_URL}${PIPE}`;
+ } else if (scheme === 'data') {
+ const res = await fetch(WORKER_URL);
+ const text = await res.text();
+
+ workerURL = `data:application/javascript;base64,${btoa(text)}`;
+ } else if (scheme === 'blob') {
+ const res = await fetch(WORKER_URL);
+ const blob = await res.blob();
+
+ workerURL = URL.createObjectURL(blob);
+ } else {
+ assert_unreached('scheme should be one of "https", "data" and "blob".');
+ }
+
+ const worker = new frame.contentWindow.Worker(workerURL);
+ const mc = new MessageChannel();
+ worker.postMessage({port: mc.port2}, [mc.port2]);
+ return (await new Promise(r => mc.port1.onmessage = r)).data;
+}
+
+async function getCrossOriginIsolatedForSharedWorker(t, withCoopCoep) {
+ const workerURL = `${WORKER_URL}${withCoopCoep ? PIPE : ''}`;
+ const worker = new SharedWorker(workerURL);
+ worker.addEventListener('error', t.unreached_func('worker.error'));
+
+ const mc = new MessageChannel();
+ worker.port.postMessage({port: mc.port2}, [mc.port2]);
+ return (await new Promise(r => mc.port1.onmessage = r)).data;
+}
+
+async function getCrossOriginIsolatedForServiceWorker(t, withCoopCoep) {
+ // As we don't want the service worker to control any page, generate a
+ // one-time scope.
+ const SCOPE = new URL(`resources/${token()}.html`, location).pathname;
+ const workerURL = `${WORKER_URL}${withCoopCoep ? PIPE : ''}`;
+ const reg =
+ await service_worker_unregister_and_register(t, workerURL, SCOPE);
+ t.add_cleanup(() => reg.unregister());
+ const worker = reg.installing;
+
+ const mc = new MessageChannel();
+ worker.postMessage({port: mc.port2}, [mc.port2]);
+ return (await new Promise(r => mc.port1.onmessage = r)).data;
+}
+
+function generateFrameTest(origin, value, expectation) {
+ async function run(t) {
+ assert_equals(
+ await getCrossOriginIsolatedForFrame(t, origin, value), expectation);
+ }
+ // We use async_test, not promise_test here to run tests in parallel.
+ async_test((t) => {
+ run(t).then(() => t.done(), (e) => t.step(() => {throw e;}));
+ }, `frame: origin = ${origin}, value = ${value}`);
}
-function generateTest(origin, value, expectation) {
+function generateDedicatedWorkerTest(scheme, value, expectation) {
async function run(t) {
assert_equals(
- await getCrossOriginIsolatedFor(t, origin, value), expectation);
+ await getCrossOriginIsolatedForDedicatedWorker(t, scheme, value),
+ expectation);
}
// We use async_test, not promise_test here to run tests in parallel.
async_test((t) => {
run(t).then(() => t.done(), (e) => t.step(() => {throw e;}));
- }, `origin = ${origin}, value = ${value}`);
+ }, `dedicated worker: scheme = ${scheme}, value = ${value}`);
}
-generateTest(ORIGIN, undefined, true);
-generateTest(ORIGIN, '*', true);
-generateTest(ORIGIN, "self", true);
+function generateSharedWorkerTest(withCoopCoep) {
+ async function run(t) {
+ assert_equals(
+ await getCrossOriginIsolatedForSharedWorker(t, withCoopCoep),
+ withCoopCoep);
+ }
+ // We use async_test, not promise_test here to run tests in parallel.
+ async_test((t) => {
+ run(t).then(() => t.done(), (e) => t.step(() => {throw e;}));
+ }, `shared worker: withCoopCoep = ${withCoopCoep}`);
+}
+
+function generateServiceWorkerTest(withCoopCoep) {
+ // Here we use promise_test as we want to use a cleanup callback that returns
+ // a promise.
+ promise_test(async (t) => {
+ assert_equals(
+ await getCrossOriginIsolatedForServiceWorker(t, withCoopCoep),
+ withCoopCoep);
+ }, `service worker: withCoopCoep = ${withCoopCoep}`);
+}
+
+generateFrameTest(ORIGIN, undefined, true);
+generateFrameTest(ORIGIN, '*', true);
+generateFrameTest(ORIGIN, 'self', true);
// We need the backslash to escape the close parenthesis in a wpt pipe.
-generateTest(ORIGIN, "(\\)", false);
-generateTest(HTTPS_REMOTE_ORIGIN, undefined, false);
-generateTest(HTTPS_REMOTE_ORIGIN, '*', true);
-generateTest(HTTPS_REMOTE_ORIGIN, "self", false);
+generateFrameTest(ORIGIN, '(\\)', false);
+generateFrameTest(HTTPS_REMOTE_ORIGIN, undefined, false);
+generateFrameTest(HTTPS_REMOTE_ORIGIN, '*', true);
+generateFrameTest(HTTPS_REMOTE_ORIGIN, 'self', false);
+// We need the backslash to escape the close parenthesis in a wpt pipe.
+generateFrameTest(HTTPS_REMOTE_ORIGIN, '(\\)', false);
+
+generateDedicatedWorkerTest('https', undefined, true);
+generateDedicatedWorkerTest('https', '*', true);
+generateDedicatedWorkerTest('https', 'self', true);
+// We need the backslash to escape the close parenthesis in a wpt pipe.
+generateDedicatedWorkerTest('https', '(\\)', false);
+generateDedicatedWorkerTest('data', undefined, false);
+generateDedicatedWorkerTest('data', '*', false);
+generateDedicatedWorkerTest('data', 'self', false);
+// We need the backslash to escape the close parenthesis in a wpt pipe.
+generateDedicatedWorkerTest('data', '(\\)', false);
+generateDedicatedWorkerTest('blob', undefined, true);
+generateDedicatedWorkerTest('blob', '*', true);
+generateDedicatedWorkerTest('blob', 'self', true);
// We need the backslash to escape the close parenthesis in a wpt pipe.
-generateTest(HTTPS_REMOTE_ORIGIN, "(\\)", false);
+generateDedicatedWorkerTest('blob', '(\\)', false);
+
+generateSharedWorkerTest(false);
+generateSharedWorkerTest(true);
+
+generateServiceWorkerTest(false);
+generateServiceWorkerTest(true);
</script>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/resources/cross-origin-isolated-worker.js b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/resources/cross-origin-isolated-worker.js
new file mode 100644
index 00000000000..9f1e3710af6
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/resources/cross-origin-isolated-worker.js
@@ -0,0 +1,11 @@
+// For DedicatedWorker and ServiceWorker
+self.addEventListener('message', (e) => {
+ e.data.port.postMessage(self.crossOriginIsolated);
+});
+
+// For SharedWorker
+self.addEventListener('connect', (e) => {
+ e.ports[0].onmessage = (ev) => {
+ ev.data.port.postMessage(self.crossOriginIsolated);
+ };
+}); \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/blob-data.https.html b/tests/wpt/web-platform-tests/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/blob-data.https.html
index dbc73e98f57..bfcc8b61ca2 100644
--- a/tests/wpt/web-platform-tests/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/blob-data.https.html
+++ b/tests/wpt/web-platform-tests/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/blob-data.https.html
@@ -50,14 +50,14 @@ self.postMessage({ origin: self.origin, view });
`;
}
-function propertyTests(name) {
+function propertyTests(name, crossOriginIsolated) {
return `
test(() => {
assert_equals(self.origin, self.location.origin);
}, "${name}: self.origin");
test(() => {
- assert_true(self.crossOriginIsolated);
+ assert_equals(self.crossOriginIsolated, ${crossOriginIsolated});
}, "${name}: self.crossOriginIsolated");
test(() => {
@@ -74,7 +74,7 @@ ${httpWorkerIncrementerTest("blob worker")}
${blobWorkerIncrementerTest("blob worker", self.location.origin)}
-${propertyTests("blob worker")}
+${propertyTests("blob worker", true)}
done();
`;
@@ -90,7 +90,7 @@ ${httpWorkerIncrementerTest("blob frame")}
${blobWorkerIncrementerTest("blob frame", self.location.origin)}
-${propertyTests("blob frame")}
+${propertyTests("blob frame", true)}
<\/script>
`;
@@ -106,7 +106,7 @@ importScripts("${url.origin}/resources/testharness.js?pipe=header(Cross-Origin-R
${blobWorkerIncrementerTest("data worker")}
-${propertyTests("data worker")}
+${propertyTests("data worker", false)}
done();
`;
@@ -121,7 +121,7 @@ const dataFrameScript = `
${blobWorkerIncrementerTest("data frame")}
-${propertyTests("data frame")}
+${propertyTests("data frame", true)}
<\/script>
`;
diff --git a/tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-attribute-changes.html b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-attribute-changes.html
index bb9fa659f32..e92b089b052 100644
--- a/tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-attribute-changes.html
+++ b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-attribute-changes.html
@@ -1,7 +1,7 @@
<!doctype html>
-<title>CSS Color Adjust Test: meta color-scheme - attribute changes</title>
+<title>Meta color-scheme - attribute changes</title>
<meta id="meta" name="color-scheme" content="dark">
-<link rel="help" href="https://drafts.csswg.org/css-color-adjust-1/#color-scheme-meta">
+<link rel="help" href="https://html.spec.whatwg.org/multipage/semantics.html#meta-color-scheme">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="support/compute-root-color-scheme.js"></script>
diff --git a/tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-empty-content-value.html b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-empty-content-value.html
index 86cc93c2dc9..b6a1ecbb851 100644
--- a/tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-empty-content-value.html
+++ b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-empty-content-value.html
@@ -1,7 +1,7 @@
<!doctype html>
-<title>CSS Color Adjust Test: meta color-scheme - empty content value</title>
+<title>Meta color-scheme - empty content value</title>
<meta name="color-scheme" content="">
-<link rel="help" href="https://drafts.csswg.org/css-color-adjust-1/#color-scheme-meta">
+<link rel="help" href="https://html.spec.whatwg.org/multipage/semantics.html#meta-color-scheme">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="support/compute-root-color-scheme.js"></script>
diff --git a/tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-first-valid-applies.html b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-first-valid-applies.html
index 0ade6df501e..095d0f360dc 100644
--- a/tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-first-valid-applies.html
+++ b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-first-valid-applies.html
@@ -1,5 +1,5 @@
<!doctype html>
-<title>CSS Color Adjust Test: multiple meta tags - first valid applies</title>
+<title>Multiple color-scheme meta tags - first valid applies</title>
<meta name="color-scheme">
<meta name="color-scheme" content>
<meta name="color-scheme" content="">
@@ -7,7 +7,7 @@
<!-- This is first with a valid content value -->
<meta name="color-scheme" content="dark">
<meta name="color-scheme" content="light">
-<link rel="help" href="https://drafts.csswg.org/css-color-adjust-1/#color-scheme-meta">
+<link rel="help" href="https://html.spec.whatwg.org/multipage/semantics.html#meta-color-scheme">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="support/compute-root-color-scheme.js"></script>
diff --git a/tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-insert.html b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-insert.html
index 861818284bc..faac2bf3155 100644
--- a/tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-insert.html
+++ b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-insert.html
@@ -1,6 +1,6 @@
<!doctype html>
-<title>CSS Color Adjust Test: insert meta tags</title>
-<link rel="help" href="https://drafts.csswg.org/css-color-adjust-1/#color-scheme-meta">
+<title>Insert color-scheme meta tags</title>
+<link rel="help" href="https://html.spec.whatwg.org/multipage/semantics.html#meta-color-scheme">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="support/compute-root-color-scheme.js"></script>
diff --git a/tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-no-content-value.html b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-no-content-value.html
index 6edb761960b..9cb8febe4b8 100644
--- a/tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-no-content-value.html
+++ b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-no-content-value.html
@@ -1,7 +1,7 @@
<!doctype html>
-<title>CSS Color Adjust Test: meta color-scheme - no content value</title>
+<title>Meta color-scheme - no content value</title>
<meta name="color-scheme">
-<link rel="help" href="https://drafts.csswg.org/css-color-adjust-1/#color-scheme-meta">
+<link rel="help" href="https://html.spec.whatwg.org/multipage/semantics.html#meta-color-scheme">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="support/compute-root-color-scheme.js"></script>
diff --git a/tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-presentational-hint.html b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-presentational-hint.html
index 5a87604e86b..e5dc75a911c 100644
--- a/tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-presentational-hint.html
+++ b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-presentational-hint.html
@@ -1,6 +1,6 @@
<!doctype html>
-<title>CSS Color Adjust Test: meta color-scheme - presentational hint</title>
-<link rel="help" href="https://drafts.csswg.org/css-color-adjust-1/#color-scheme-meta">
+<title>Meta color-scheme - presentational hint</title>
+<link rel="help" href="https://html.spec.whatwg.org/multipage/semantics.html#meta-color-scheme">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="support/compute-root-color-scheme.js"></script>
diff --git a/tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-remove-head.html b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-remove-head.html
index d627f62df78..409abb694df 100644
--- a/tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-remove-head.html
+++ b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-remove-head.html
@@ -1,7 +1,7 @@
<!doctype html>
-<title>CSS Color Adjust Test: Remove head with meta color-scheme</title>
+<title>Remove head with meta color-scheme</title>
<meta name="color-scheme" content="dark">
-<link rel="help" href="https://drafts.csswg.org/css-color-adjust-1/#color-scheme-meta">
+<link rel="help" href="https://html.spec.whatwg.org/multipage/semantics.html#meta-color-scheme">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="support/compute-root-color-scheme.js"></script>
diff --git a/tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-remove.html b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-remove.html
index 8439c504625..8457dde6fa3 100644
--- a/tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-remove.html
+++ b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-remove.html
@@ -1,8 +1,8 @@
<!doctype html>
-<title>CSS Color Adjust Test: remove meta tag</title>
+<title>Remove color-scheme meta tag</title>
<meta id="dark" name="color-scheme" content="dark">
<meta id="light" name="color-scheme" content="light">
-<link rel="help" href="https://drafts.csswg.org/css-color-adjust-1/#color-scheme-meta">
+<link rel="help" href="https://html.spec.whatwg.org/multipage/semantics.html#meta-color-scheme">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="support/compute-root-color-scheme.js"></script>
diff --git a/tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-single-value-in-body.html b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-single-value-in-body.html
index ff8fe416251..19f8d53994a 100644
--- a/tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-single-value-in-body.html
+++ b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-single-value-in-body.html
@@ -1,6 +1,6 @@
<!doctype html>
-<title>CSS Color Adjust Test: meta color-scheme in body should not apply</title>
-<link rel="help" href="https://drafts.csswg.org/css-color-adjust-1/#color-scheme-meta">
+<title>Meta color-scheme in body should apply</title>
+<link rel="help" href="https://html.spec.whatwg.org/multipage/semantics.html#meta-color-scheme">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="support/compute-root-color-scheme.js"></script>
@@ -8,5 +8,5 @@
<meta name="color-scheme" content="dark">
</body>
<script>
- assert_root_color_scheme("normal", "Meta color-scheme in body does not apply.");
+ assert_root_color_scheme("dark", "Meta color-scheme in body should apply.");
</script>
diff --git a/tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-single-value-in-head.html b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-single-value-in-head.html
index 6b5e5c0f8a6..b9fd2c4384c 100644
--- a/tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-single-value-in-head.html
+++ b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-single-value-in-head.html
@@ -1,7 +1,7 @@
<!doctype html>
-<title>CSS Color Adjust Test: Single meta color-scheme in head</title>
+<title>Single meta color-scheme in head</title>
<meta name="color-scheme" content="dark">
-<link rel="help" href="https://drafts.csswg.org/css-color-adjust-1/#color-scheme-meta">
+<link rel="help" href="https://html.spec.whatwg.org/multipage/semantics.html#meta-color-scheme">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="support/compute-root-color-scheme.js"></script>
diff --git a/tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-single-value-in-shadow-tree.html b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-single-value-in-shadow-tree.html
index 23ec7de1a94..1e0e2d95627 100644
--- a/tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-single-value-in-shadow-tree.html
+++ b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-single-value-in-shadow-tree.html
@@ -1,6 +1,6 @@
<!doctype html>
-<title>CSS Color Adjust Test: meta color-scheme in shadow-tree should not apply</title>
-<link rel="help" href="https://drafts.csswg.org/css-color-adjust-1/#color-scheme-meta">
+<title>Meta color-scheme in shadow-tree should not apply</title>
+<link rel="help" href="https://html.spec.whatwg.org/multipage/semantics.html#meta-color-scheme">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="support/compute-root-color-scheme.js"></script>
diff --git a/tests/wpt/web-platform-tests/css/css-color-adjust/meta/support/compute-root-color-scheme.js b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-meta-element/color-scheme/support/compute-root-color-scheme.js
index 8ceddbc40bf..8ceddbc40bf 100644
--- a/tests/wpt/web-platform-tests/css/css-color-adjust/meta/support/compute-root-color-scheme.js
+++ b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-meta-element/color-scheme/support/compute-root-color-scheme.js
diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/wheelScroll.html.ini b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/wheelScroll.html.ini
new file mode 100644
index 00000000000..f96fd377ba5
--- /dev/null
+++ b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/wheelScroll.html.ini
@@ -0,0 +1,3 @@
+[wheelScroll.html]
+ expected:
+ if product == "firefox" or product == "safari" or product == "epiphany" or product == "webkit": ERROR
diff --git a/tests/wpt/web-platform-tests/infrastructure/testdriver/actions/wheelScroll.html b/tests/wpt/web-platform-tests/infrastructure/testdriver/actions/wheelScroll.html
new file mode 100644
index 00000000000..a7d9b2609da
--- /dev/null
+++ b/tests/wpt/web-platform-tests/infrastructure/testdriver/actions/wheelScroll.html
@@ -0,0 +1,45 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>TestDriver actions: wheel scroll</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-actions.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
+
+<style>
+#container {
+ width: 200px;
+ height: 200px;
+ overflow: scroll;
+}
+
+#content {
+ width: 600px;
+ height: 1000px;
+ background-color: blue;
+}
+
+</style>
+
+<div id="container">
+ <div id="content"></div>
+</div>
+
+<script>
+let event_type = [];
+let event_id = [];
+
+async_test(t => {
+ let container = document.getElementById("container");
+ container.addEventListener("wheel",
+ e => {event_type.push(e.type);});
+
+ let actions = new test_driver.Actions()
+ .scroll(0, 0, 0, 50, {origin: container});
+
+ actions.send()
+ .then(t.step_func_done(() => {assert_array_equals(event_type, ["wheel"]);}))
+ .catch(e => t.step_func(() => assert_unreached("Actions sequence failed " + e)));
+});
+</script>
diff --git a/tests/wpt/web-platform-tests/interfaces/is-input-pending.idl b/tests/wpt/web-platform-tests/interfaces/is-input-pending.idl
index aa918fb568b..76e47cc06cf 100644
--- a/tests/wpt/web-platform-tests/interfaces/is-input-pending.idl
+++ b/tests/wpt/web-platform-tests/interfaces/is-input-pending.idl
@@ -3,16 +3,10 @@
// (https://github.com/w3c/webref)
// Source: Early detection of input events (https://wicg.github.io/is-input-pending/)
-dictionary IsInputPendingOptionsInit {
+dictionary IsInputPendingOptions {
boolean includeContinuous = false;
};
-[Exposed=Window]
-interface IsInputPendingOptions {
- constructor(optional IsInputPendingOptionsInit isInputPendingOptionsInit = {});
- attribute boolean includeContinuous;
-};
-
[Exposed=Window] interface Scheduling {
boolean isInputPending(optional IsInputPendingOptions isInputPendingOptions);
};
diff --git a/tests/wpt/web-platform-tests/interfaces/native-file-system.idl b/tests/wpt/web-platform-tests/interfaces/native-file-system.idl
index 92ca66c82e0..3eda19c9d84 100644
--- a/tests/wpt/web-platform-tests/interfaces/native-file-system.idl
+++ b/tests/wpt/web-platform-tests/interfaces/native-file-system.idl
@@ -1,7 +1,7 @@
// GENERATED CONTENT - DO NOT EDIT
// Content was automatically extracted by Reffy into webref
// (https://github.com/w3c/webref)
-// Source: Native File System (https://wicg.github.io/native-file-system/)
+// Source: File System Access (https://wicg.github.io/file-system-access/)
enum FileSystemPermissionMode {
"read",
diff --git a/tests/wpt/web-platform-tests/interfaces/feature-policy.idl b/tests/wpt/web-platform-tests/interfaces/permissions-policy.idl
index 4f22cf29943..16945e3a9b7 100644
--- a/tests/wpt/web-platform-tests/interfaces/feature-policy.idl
+++ b/tests/wpt/web-platform-tests/interfaces/permissions-policy.idl
@@ -1,10 +1,10 @@
// GENERATED CONTENT - DO NOT EDIT
// Content was automatically extracted by Reffy into webref
// (https://github.com/w3c/webref)
-// Source: Feature Policy (https://w3c.github.io/webappsec-feature-policy/)
+// Source: Permissions Policy (https://w3c.github.io/webappsec-permissions-policy/)
[Exposed=Window]
-interface FeaturePolicy {
+interface PermissionsPolicy {
boolean allowsFeature(DOMString feature, optional DOMString origin);
sequence<DOMString> features();
sequence<DOMString> allowedFeatures();
@@ -12,15 +12,15 @@ interface FeaturePolicy {
};
partial interface Document {
- [SameObject] readonly attribute FeaturePolicy featurePolicy;
+ [SameObject] readonly attribute PermissionsPolicy permissionsPolicy;
};
partial interface HTMLIFrameElement {
- [SameObject] readonly attribute FeaturePolicy featurePolicy;
+ [SameObject] readonly attribute PermissionsPolicy permissionsPolicy;
};
[Exposed=Window]
-interface FeaturePolicyViolationReportBody : ReportBody {
+interface PermissionsPolicyViolationReportBody : ReportBody {
readonly attribute DOMString featureId;
readonly attribute DOMString? sourceFile;
readonly attribute long? lineNumber;
diff --git a/tests/wpt/web-platform-tests/is-input-pending/idlharness.window.js b/tests/wpt/web-platform-tests/is-input-pending/idlharness.window.js
index e6bb26a5a71..726dd137dd6 100644
--- a/tests/wpt/web-platform-tests/is-input-pending/idlharness.window.js
+++ b/tests/wpt/web-platform-tests/is-input-pending/idlharness.window.js
@@ -8,7 +8,6 @@ idl_test(
['html', 'dom'],
async idl_array => {
idl_array.add_objects({
- IsInputPendingOptions: ['new IsInputPendingOptions'],
Scheduling: ['navigator.scheduling'],
});
}
diff --git a/tests/wpt/web-platform-tests/is-input-pending/resources/input-onmessage.js b/tests/wpt/web-platform-tests/is-input-pending/resources/input-onmessage.js
index 21dddfb11b5..919c939d1fc 100644
--- a/tests/wpt/web-platform-tests/is-input-pending/resources/input-onmessage.js
+++ b/tests/wpt/web-platform-tests/is-input-pending/resources/input-onmessage.js
@@ -2,8 +2,8 @@
onmessage = async e => {
if (e.data !== 'check-input') return;
- const discreteOptions = new IsInputPendingOptions({ includeContinuous: false });
- const continuousOptions = new IsInputPendingOptions({ includeContinuous: true });
+ const discreteOptions = { includeContinuous: false };
+ const continuousOptions = { includeContinuous: true };
// Use a reasonable time to wait after dispatching events, since we want to be
// able to test for cases where isInputPending returns false.
diff --git a/tests/wpt/web-platform-tests/lint.ignore b/tests/wpt/web-platform-tests/lint.ignore
index 9336f1ee574..c740932e60a 100644
--- a/tests/wpt/web-platform-tests/lint.ignore
+++ b/tests/wpt/web-platform-tests/lint.ignore
@@ -782,3 +782,11 @@ TESTHARNESS-IN-OTHER-TYPE: svg/svg-in-svg/svg-in-svg-circular-filter-reference-c
PRINT STATEMENT: webdriver/tests/print/printcmd.py
PRINT STATEMENT: webdriver/tests/print/user_prompts.py
+
+DUPLICATE-BASENAME-PATH: acid/acid3/empty.html
+DUPLICATE-BASENAME-PATH: acid/acid3/empty.xml
+DUPLICATE-BASENAME-PATH: dom/nodes/Document-createElement-namespace-tests/*
+DUPLICATE-BASENAME-PATH: dom/nodes/ParentNode-querySelector-All-content.html
+DUPLICATE-BASENAME-PATH: dom/nodes/ParentNode-querySelector-All-content.xht
+DUPLICATE-BASENAME-PATH: svg/struct/reftests/reference/green-100x100.html
+DUPLICATE-BASENAME-PATH: svg/struct/reftests/reference/green-100x100.svg
diff --git a/tests/wpt/web-platform-tests/origin-isolation/popups-crash.https.html b/tests/wpt/web-platform-tests/origin-isolation/popups-crash.https.html
new file mode 100644
index 00000000000..dcfb5eb2774
--- /dev/null
+++ b/tests/wpt/web-platform-tests/origin-isolation/popups-crash.https.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Crash test for https://crbug.com/1099718</title>
+
+<div id="log"></div>
+
+<script>
+window.open("resources/crashy-popup.sub.html", "windowName1", "noopener");
+</script>
diff --git a/tests/wpt/web-platform-tests/origin-isolation/resources/crashy-popup.sub.html b/tests/wpt/web-platform-tests/origin-isolation/resources/crashy-popup.sub.html
new file mode 100644
index 00000000000..f8d077c2a29
--- /dev/null
+++ b/tests/wpt/web-platform-tests/origin-isolation/resources/crashy-popup.sub.html
@@ -0,0 +1,6 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>This page helps exhibit a crash bug when window.open()ed</title>
+
+<iframe src="https://{{hosts[][www]}}:{{ports[https][0]}}/origin-isolation/resources/send-origin-isolation-header.py"></iframe>
+<iframe src="https://{{hosts[][www]}}:{{ports[https][0]}}/origin-isolation/resources/send-origin-isolation-header.py?header=?1"></iframe>
diff --git a/tests/wpt/web-platform-tests/origin-isolation/resources/crashy-popup.sub.html.headers b/tests/wpt/web-platform-tests/origin-isolation/resources/crashy-popup.sub.html.headers
new file mode 100644
index 00000000000..ea3f6b335c7
--- /dev/null
+++ b/tests/wpt/web-platform-tests/origin-isolation/resources/crashy-popup.sub.html.headers
@@ -0,0 +1 @@
+Origin-Isolation: ?1
diff --git a/tests/wpt/web-platform-tests/pointerlock/mouse_buttons_back_forward.html b/tests/wpt/web-platform-tests/pointerlock/mouse_buttons_back_forward.html
index 95490d2d4df..6f4e764983b 100644
--- a/tests/wpt/web-platform-tests/pointerlock/mouse_buttons_back_forward.html
+++ b/tests/wpt/web-platform-tests/pointerlock/mouse_buttons_back_forward.html
@@ -32,15 +32,28 @@
}
});
+ document.addEventListener("pointerlockchange", function() {
+ assert_equals(document.pointerLockElement, document.body);
+
+ // Inject mouse input
+ var actions = new test_driver.Actions();
+ actions.pointerMove(1, 1)
+ .pointerDown({button: actions.ButtonType.BACK})
+ .pointerUp({button: actions.ButtonType.BACK})
+ .pointerDown({button: actions.ButtonType.FORWARD})
+ .pointerUp({button: actions.ButtonType.FORWARD})
+ .send();
+ }, { once: true });
+
+ document.addEventListener("pointerlockerror", function() {
+ assert_unreached("Pointer lock error");
+ });
+
// Inject mouse input
var actions = new test_driver.Actions();
actions.pointerMove(1, 1)
.pointerDown({button: actions.ButtonType.LEFT})
.pointerUp({button: actions.ButtonType.LEFT})
- .pointerDown({button: actions.ButtonType.BACK})
- .pointerUp({button: actions.ButtonType.BACK})
- .pointerDown({button: actions.ButtonType.FORWARD})
- .pointerUp({button: actions.ButtonType.FORWARD})
.send();
</script>
diff --git a/tests/wpt/web-platform-tests/resources/chromium/webxr-test.js b/tests/wpt/web-platform-tests/resources/chromium/webxr-test.js
index a1f57ac036b..800c0a4a978 100644
--- a/tests/wpt/web-platform-tests/resources/chromium/webxr-test.js
+++ b/tests/wpt/web-platform-tests/resources/chromium/webxr-test.js
@@ -217,8 +217,13 @@ class MockVRService {
// Only handles asynchronous calls to makeXrCompatible. Synchronous calls are
// not supported in Javascript.
makeXrCompatible() {
+ if (this.runtimes_.length == 0) {
+ return Promise.resolve({
+ xrCompatibleResult: device.mojom.XrCompatibleResult.kNoDeviceAvailable
+ });
+ }
return Promise.resolve({
- xr_compatible_result: device.mojom.XrCompatibleResult.kAlreadyCompatible
+ xrCompatibleResult: device.mojom.XrCompatibleResult.kAlreadyCompatible
});
}
}
diff --git a/tests/wpt/web-platform-tests/resources/testdriver-actions.js b/tests/wpt/web-platform-tests/resources/testdriver-actions.js
index 870a2e8e266..b6030bf1213 100644
--- a/tests/wpt/web-platform-tests/resources/testdriver-actions.js
+++ b/tests/wpt/web-platform-tests/resources/testdriver-actions.js
@@ -9,6 +9,7 @@
function Actions(defaultTickDuration=16) {
this.sourceTypes = new Map([["key", KeySource],
["pointer", PointerSource],
+ ["wheel", WheelSource],
["none", GeneralSource]]);
this.sources = new Map();
this.sourceOrder = [];
@@ -73,7 +74,7 @@
* If no name is passed, a new source with the given type is
* created.
*
- * @param {String} type - Source type ('none', 'key', or 'pointer')
+ * @param {String} type - Source type ('none', 'key', 'pointer', or 'wheel')
* @param {String?} name - Name of the source
* @returns {Source} Source object for that source.
*/
@@ -154,6 +155,32 @@
return this;
},
+ /**
+ * Add a new wheel input source with the given name
+ *
+ * @param {String} type - Name of the wheel source
+ * @param {Bool} set - Set source as the default wheel source
+ * @returns {Actions}
+ */
+ addWheel: function(name, set=true) {
+ this.createSource("wheel", name);
+ if (set) {
+ this.setWheel(name);
+ }
+ return this;
+ },
+
+ /**
+ * Set the current default wheel source
+ *
+ * @param {String} name - Name of the wheel source
+ * @returns {Actions}
+ */
+ setWheel: function(name) {
+ this.setSource("wheel", name);
+ return this;
+ },
+
createSource: function(type, name, parameters={}) {
if (!this.sources.has(type)) {
throw new Error(`${type} is not a valid action type`);
@@ -196,8 +223,9 @@
*
* @param {Number?} duration - Minimum length of the tick in ms.
* @param {String} sourceType - source type
- * @param {String?} sourceName - Named key or pointer source to use or null for the default
- * key or pointer source
+ * @param {String?} sourceName - Named key, pointer or wheel source to use
+ * or null for the default key, pointer or
+ * wheel source
* @returns {Actions}
*/
pause: function(duration=0, sourceType="none", {sourceName=null}={}) {
@@ -280,6 +308,27 @@
source.pointerMove(this, x, y, duration, origin);
return this;
},
+
+ /**
+ * Create a scroll event for the current default wheel source
+ *
+ * @param {Number} x - mouse cursor x coordinate
+ * @param {Number} y - mouse cursor y coordinate
+ * @param {Number} deltaX - scroll delta value along the x-axis in pixels
+ * @param {Number} deltaY - scroll delta value along the y-axis in pixels
+ * @param {String|Element} origin - Origin of the coordinate system.
+ * Either "viewport" or an Element
+ * @param {Number?} duration - Time in ms for the scroll
+ * @param {String?} sourceName - Named wheel source to use or null for the
+ * default wheel source
+ * @returns {Actions}
+ */
+ scroll: function(x, y, deltaX, deltaY,
+ {origin="viewport", duration, sourceName=null}={}) {
+ let source = this.getSource("wheel", sourceName);
+ source.scroll(this, x, y, deltaX, deltaY, duration, origin);
+ return this;
+ },
};
function GeneralSource() {
@@ -417,5 +466,46 @@
},
};
+ function WheelSource() {
+ this.actions = new Map();
+ }
+
+ WheelSource.prototype = {
+ serialize: function(tickCount) {
+ if (!this.actions.size) {
+ return undefined;
+ }
+ let actions = [];
+ let data = {"type": "wheel", "actions": actions};
+ for (let i=0; i<tickCount; i++) {
+ if (this.actions.has(i)) {
+ actions.push(this.actions.get(i));
+ } else {
+ actions.push({"type": "pause"});
+ }
+ }
+ return data;
+ },
+
+ scroll: function(actions, x, y, deltaX, deltaY, duration, origin) {
+ let tick = actions.tickIdx;
+ if (this.actions.has(tick)) {
+ tick = actions.addTick().tickIdx;
+ }
+ this.actions.set(tick, {type: "scroll", x, y, deltaX, deltaY, origin});
+ if (duration) {
+ this.actions.get(tick).duration = duration;
+ }
+ },
+
+ addPause: function(actions, duration) {
+ let tick = actions.tickIdx;
+ if (this.actions.has(tick)) {
+ tick = actions.addTick().tickIdx;
+ }
+ this.actions.set(tick, {type: "pause", duration: duration});
+ },
+ };
+
test_driver.Actions = Actions;
})();
diff --git a/tests/wpt/web-platform-tests/tools/lint/lint.py b/tests/wpt/web-platform-tests/tools/lint/lint.py
index 8965c1a0a12..bb49d8970d9 100644
--- a/tests/wpt/web-platform-tests/tools/lint/lint.py
+++ b/tests/wpt/web-platform-tests/tools/lint/lint.py
@@ -367,7 +367,7 @@ def check_unique_testharness_basenames(repo_root, paths):
file_dict = defaultdict(list)
for path in paths:
source_file = SourceFile(repo_root, path, "/")
- if source_file.type != "testharness":
+ if "testharness" not in source_file.possible_types:
continue
file_name, file_extension = os.path.splitext(path)
file_dict[file_name].append(file_extension)
diff --git a/tests/wpt/web-platform-tests/tools/manifest/sourcefile.py b/tests/wpt/web-platform-tests/tools/manifest/sourcefile.py
index 5a7310213a7..6e90ac05475 100644
--- a/tests/wpt/web-platform-tests/tools/manifest/sourcefile.py
+++ b/tests/wpt/web-platform-tests/tools/manifest/sourcefile.py
@@ -865,9 +865,68 @@ class SourceFile(object):
@property
def type(self):
# type: () -> Text
+ possible_types = self.possible_types
+ if len(possible_types) == 1:
+ return possible_types.pop()
+
rv, _ = self.manifest_items()
return rv
+ @property
+ def possible_types(self):
+ # type: () -> Set[Text]
+ """Determines the set of possible types without reading the file"""
+
+ if self.items_cache:
+ return {self.items_cache[0]}
+
+ if self.name_is_non_test:
+ return {SupportFile.item_type}
+
+ if self.name_is_manual:
+ return {ManualTest.item_type}
+
+ if self.name_is_conformance:
+ return {ConformanceCheckerTest.item_type}
+
+ if self.name_is_conformance_support:
+ return {SupportFile.item_type}
+
+ if self.name_is_webdriver:
+ return {WebDriverSpecTest.item_type}
+
+ if self.name_is_visual:
+ return {VisualTest.item_type}
+
+ if self.name_is_crashtest:
+ return {CrashTest.item_type}
+
+ if self.name_is_print_reftest:
+ return {PrintRefTest.item_type}
+
+ if self.name_is_multi_global:
+ return {TestharnessTest.item_type}
+
+ if self.name_is_worker:
+ return {TestharnessTest.item_type}
+
+ if self.name_is_window:
+ return {TestharnessTest.item_type}
+
+ if self.markup_type is None:
+ return {SupportFile.item_type}
+
+ if not self.name_is_reference:
+ return {ManualTest.item_type,
+ TestharnessTest.item_type,
+ RefTest.item_type,
+ VisualTest.item_type,
+ SupportFile.item_type}
+
+ return {TestharnessTest.item_type,
+ RefTest.item_type,
+ SupportFile.item_type}
+
def manifest_items(self):
# type: () -> Tuple[Text, List[ManifestItem]]
"""List of manifest items corresponding to the file. There is typically one
@@ -1070,6 +1129,7 @@ class SourceFile(object):
self.rel_path
)]
+ assert rv[0] in self.possible_types
assert len(rv[1]) == len(set(rv[1]))
self.items_cache = rv
diff --git a/tests/wpt/web-platform-tests/tools/serve/serve.py b/tests/wpt/web-platform-tests/tools/serve/serve.py
index 1c446153585..8243acc5eb8 100644
--- a/tests/wpt/web-platform-tests/tools/serve/serve.py
+++ b/tests/wpt/web-platform-tests/tools/serve/serve.py
@@ -418,6 +418,19 @@ class ServerProc(object):
def create_daemon(self, init_func, host, port, paths, routes, bind_address,
config, **kwargs):
+ if sys.platform == "darwin":
+ # on Darwin, NOFILE starts with a very low limit (256), so bump it up a little
+ # by way of comparison, Debian starts with a limit of 1024, Windows 512
+ import resource # local, as it only exists on Unix-like systems
+ maxfilesperproc = int(subprocess.check_output(
+ ["sysctl", "-n", "kern.maxfilesperproc"]
+ ).strip())
+ soft, hard = resource.getrlimit(resource.RLIMIT_NOFILE)
+ # 2048 is somewhat arbitrary, but gives us some headroom for wptrunner --parallel
+ # note that it's expected that 2048 will be the min here
+ new_soft = min(2048, maxfilesperproc, hard)
+ if soft < new_soft:
+ resource.setrlimit(resource.RLIMIT_NOFILE, (new_soft, hard))
try:
self.daemon = init_func(host, port, paths, routes, bind_address, config, **kwargs)
except socket.error:
diff --git a/tests/wpt/web-platform-tests/tools/webdriver/webdriver/client.py b/tests/wpt/web-platform-tests/tools/webdriver/webdriver/client.py
index 0f79483826b..1a4b6498312 100644
--- a/tests/wpt/web-platform-tests/tools/webdriver/webdriver/client.py
+++ b/tests/wpt/web-platform-tests/tools/webdriver/webdriver/client.py
@@ -203,6 +203,32 @@ class ActionSequence(object):
self.key_up(c)
return self
+ def scroll(self, x, y, delta_x, delta_y, duration=None, origin=None):
+ """Queue a scroll action.
+
+ :param x: Destination x-axis coordinate of pointer in CSS pixels.
+ :param y: Destination y-axis coordinate of pointer in CSS pixels.
+ :param delta_x: scroll delta on x-axis in CSS pixels.
+ :param delta_y: scroll delta on y-axis in CSS pixels.
+ :param duration: Number of milliseconds over which to distribute the
+ scroll. If None, remote end defaults to 0.
+ :param origin: Origin of coordinates, either "viewport" or an Element.
+ If None, remote end defaults to "viewport".
+ """
+ action = {
+ "type": "scroll",
+ "x": x,
+ "y": y,
+ "deltaX": delta_x,
+ "deltaY": delta_y
+ }
+ if duration is not None:
+ action["duration"] = duration
+ if origin is not None:
+ action["origin"] = origin
+ self._actions.append(action)
+ return self
+
class Actions(object):
def __init__(self, session):
diff --git a/tests/wpt/web-platform-tests/tools/wpt/browser.py b/tests/wpt/web-platform-tests/tools/wpt/browser.py
index 664d984da04..6f9da16c50b 100644
--- a/tests/wpt/web-platform-tests/tools/wpt/browser.py
+++ b/tests/wpt/web-platform-tests/tools/wpt/browser.py
@@ -656,8 +656,36 @@ class Chrome(Browser):
self.logger.warning("Unable to find the browser binary.")
return None
- def find_webdriver(self, channel=None):
- return find_executable("chromedriver")
+ def find_webdriver(self, channel=None, browser_binary=None):
+ chromedriver_binary = find_executable("chromedriver")
+ if not chromedriver_binary:
+ return chromedriver_binary
+
+ chromedriver_version = self.webdriver_version(chromedriver_binary)
+ if not chromedriver_version:
+ self.logger.warning(
+ "Unable to get version for ChromeDriver %s, rejecting it" %
+ chromedriver_binary)
+ return None
+
+ if not browser_binary:
+ browser_binary = self.find_binary(channel)
+ browser_version = self.version(browser_binary)
+ if not browser_version:
+ # If we can't get the browser version, we just have to assume the
+ # ChromeDriver is good.
+ return chromedriver_binary
+
+ # Check that the ChromeDriver version matches the Chrome version.
+ chromedriver_major = chromedriver_version.split('.')[0]
+ browser_major = browser_version.split('.')[0]
+ if chromedriver_major != browser_major:
+ self.logger.warning(
+ "Found ChromeDriver %s; does not match Chrome/Chromium %s" %
+ (chromedriver_version, browser_version))
+ return None
+
+ return chromedriver_binary
def _official_chromedriver_url(self, chrome_version):
# http://chromedriver.chromium.org/downloads/version-selection
@@ -700,6 +728,17 @@ class Chrome(Browser):
def install_webdriver_by_version(self, version, dest=None):
if dest is None:
dest = os.pwd
+
+ # There may be an existing chromedriver binary from a previous install.
+ # To provide a clean install experience, remove the old binary - this
+ # avoids tricky issues like unzipping over a read-only file.
+ existing_binary_path = find_executable("chromedriver", dest)
+ if existing_binary_path:
+ self.logger.info("Removing existing ChromeDriver binary: %s" %
+ existing_binary_path)
+ os.chmod(existing_binary_path, stat.S_IWUSR)
+ os.remove(existing_binary_path)
+
url = self._latest_chromedriver_url(version) if version \
else self._chromium_chromedriver_url(None)
self.logger.info("Downloading ChromeDriver from %s" % url)
@@ -749,6 +788,21 @@ class Chrome(Browser):
return None
return m.group(1)
+ def webdriver_version(self, webdriver_binary):
+ if uname[0] == "Windows":
+ return _get_fileversion(webdriver_binary, self.logger)
+
+ try:
+ version_string = call(webdriver_binary, "--version").strip()
+ except subprocess.CalledProcessError:
+ self.logger.warning("Failed to call %s" % webdriver_binary)
+ return None
+ m = re.match(r"ChromeDriver ([0-9][0-9.]*)", version_string)
+ if not m:
+ self.logger.warning("Failed to extract version from: %s" % version_string)
+ return None
+ return m.group(1)
+
class ChromeAndroidBase(Browser):
"""A base class for ChromeAndroid and AndroidWebView.
diff --git a/tests/wpt/web-platform-tests/tools/wpt/run.py b/tests/wpt/web-platform-tests/tools/wpt/run.py
index 18f1c55145e..8edaa60ab03 100644
--- a/tests/wpt/web-platform-tests/tools/wpt/run.py
+++ b/tests/wpt/web-platform-tests/tools/wpt/run.py
@@ -334,16 +334,19 @@ class Chrome(BrowserSetup):
logger.info("MojoJS enabled")
except Exception as e:
logger.error("Cannot enable MojoJS: %s" % e)
+
if kwargs["webdriver_binary"] is None:
webdriver_binary = None
if not kwargs["install_webdriver"]:
- webdriver_binary = self.browser.find_webdriver()
+ webdriver_binary = self.browser.find_webdriver(
+ channel=kwargs["browser_channel"],
+ browser_binary=kwargs["binary"]
+ )
if webdriver_binary is None:
install = self.prompt_install("chromedriver")
if install:
- logger.info("Downloading chromedriver")
webdriver_binary = self.browser.install_webdriver(
dest=self.venv.bin_path,
channel=browser_channel,
@@ -355,7 +358,7 @@ class Chrome(BrowserSetup):
if webdriver_binary:
kwargs["webdriver_binary"] = webdriver_binary
else:
- raise WptrunError("Unable to locate or install chromedriver binary")
+ raise WptrunError("Unable to locate or install matching ChromeDriver binary")
if browser_channel in self.experimental_channels:
logger.info("Automatically turning on experimental features for Chrome Dev/Canary or Chromium trunk")
kwargs["binary_args"].append("--enable-experimental-web-platform-features")
diff --git a/tests/wpt/web-platform-tests/tools/wpt/tests/test_browser.py b/tests/wpt/web-platform-tests/tools/wpt/tests/test_browser.py
index 495d5f056fc..350ee9b5eae 100644
--- a/tests/wpt/web-platform-tests/tools/wpt/tests/test_browser.py
+++ b/tests/wpt/web-platform-tests/tools/wpt/tests/test_browser.py
@@ -24,6 +24,68 @@ def test_all_browser_abc():
assert not inspect.isabstract(cls), "%s is abstract" % name
+@mock.patch('tools.wpt.browser.find_executable')
+def test_chrome_find_webdriver(mocked_find_executable):
+ # Cannot find ChromeDriver
+ chrome = browser.Chrome(logger)
+ mocked_find_executable.return_value = None
+ assert chrome.find_webdriver() is None
+
+ # ChromeDriver binary cannot be called.
+ chrome = browser.Chrome(logger)
+ mocked_find_executable.return_value = '/usr/bin/chromedriver'
+ chrome.webdriver_version = mock.MagicMock(return_value=None)
+ assert chrome.find_webdriver() is None
+
+ # Browser binary cannot be called.
+ chrome = browser.Chrome(logger)
+ mocked_find_executable.return_value = '/usr/bin/chromedriver'
+ chrome.webdriver_version = mock.MagicMock(return_value='70.0.1')
+ chrome.version = mock.MagicMock(return_value=None)
+ assert chrome.find_webdriver(browser_binary='/usr/bin/chrome') == '/usr/bin/chromedriver'
+
+ # Browser version matches.
+ chrome = browser.Chrome(logger)
+ mocked_find_executable.return_value = '/usr/bin/chromedriver'
+ chrome.webdriver_version = mock.MagicMock(return_value='70.0.1')
+ chrome.version = mock.MagicMock(return_value='70.1.5')
+ assert chrome.find_webdriver(browser_binary='/usr/bin/chrome') == '/usr/bin/chromedriver'
+
+ # Browser version doesn't match.
+ chrome = browser.Chrome(logger)
+ mocked_find_executable.return_value = '/usr/bin/chromedriver'
+ chrome.webdriver_version = mock.MagicMock(return_value='70.0.1')
+ chrome.version = mock.MagicMock(return_value='69.0.1')
+ assert chrome.find_webdriver(browser_binary='/usr/bin/chrome') is None
+
+
+# On Windows, webdriver_version directly calls _get_fileversion, so there is no
+# logic to test there.
+@pytest.mark.skipif(sys.platform.startswith('win'), reason='just uses _get_fileversion on Windows')
+@mock.patch('tools.wpt.browser.call')
+def test_chrome_webdriver_version(mocked_call):
+ chrome = browser.Chrome(logger)
+ webdriver_binary = '/usr/bin/chromedriver'
+
+ # Working cases.
+ mocked_call.return_value = 'ChromeDriver 84.0.4147.30'
+ assert chrome.webdriver_version(webdriver_binary) == '84.0.4147.30'
+ mocked_call.return_value = 'ChromeDriver 87.0.1 (abcd1234-refs/branch-heads/4147@{#310})'
+ assert chrome.webdriver_version(webdriver_binary) == '87.0.1'
+
+ # Various invalid version strings
+ mocked_call.return_value = 'Chrome 84.0.4147.30 (dev)'
+ assert chrome.webdriver_version(webdriver_binary) is None
+ mocked_call.return_value = 'ChromeDriver New 84.0.4147.30'
+ assert chrome.webdriver_version(webdriver_binary) is None
+ mocked_call.return_value = ''
+ assert chrome.webdriver_version(webdriver_binary) is None
+
+ # The underlying subprocess call throws.
+ mocked_call.side_effect = subprocess.CalledProcessError(5, 'cmd', output='Call failed')
+ assert chrome.webdriver_version(webdriver_binary) is None
+
+
@mock.patch('subprocess.check_output')
def test_safari_version(mocked_check_output):
safari = browser.Safari(logger)
diff --git a/tests/wpt/web-platform-tests/wasm/jsapi/memory/constructor-types.tentative.any.js b/tests/wpt/web-platform-tests/wasm/jsapi/memory/constructor-types.tentative.any.js
index 764aac78670..d5378dbe82b 100644
--- a/tests/wpt/web-platform-tests/wasm/jsapi/memory/constructor-types.tentative.any.js
+++ b/tests/wpt/web-platform-tests/wasm/jsapi/memory/constructor-types.tentative.any.js
@@ -1,4 +1,4 @@
-// META: global=jsshell
+// META: global=window,dedicatedworker,jsshell
// META: script=/wasm/jsapi/assertions.js
// META: script=/wasm/jsapi/memory/assertions.js
@@ -13,7 +13,7 @@ test(() => {
assert_Memory(memory, { "size": 0 });
}, "Zero minimum");
- test(() => {
+test(() => {
const argument = { minimum: 4 };
const memory = new WebAssembly.Memory(argument);
assert_Memory(memory, { "size": 4 });
diff --git a/tests/wpt/web-platform-tests/wasm/jsapi/memory/constructor.any.js b/tests/wpt/web-platform-tests/wasm/jsapi/memory/constructor.any.js
index 30cc8ef9885..0a0be11e370 100644
--- a/tests/wpt/web-platform-tests/wasm/jsapi/memory/constructor.any.js
+++ b/tests/wpt/web-platform-tests/wasm/jsapi/memory/constructor.any.js
@@ -76,7 +76,7 @@ test(() => {
switch (x) {
case "shared":
return false;
- case "minimum":
+ case "initial":
case "maximum":
return 0;
default:
diff --git a/tests/wpt/web-platform-tests/wasm/jsapi/table/constructor-types.tentative.any.js b/tests/wpt/web-platform-tests/wasm/jsapi/table/constructor-types.tentative.any.js
index 09ab18a2d8c..99ca41b55a9 100644
--- a/tests/wpt/web-platform-tests/wasm/jsapi/table/constructor-types.tentative.any.js
+++ b/tests/wpt/web-platform-tests/wasm/jsapi/table/constructor-types.tentative.any.js
@@ -1,20 +1,20 @@
-// META: global=jsshell
+// META: global=window,dedicatedworker,jsshell
// META: script=/wasm/jsapi/assertions.js
// META: script=/wasm/jsapi/table/assertions.js
test(() => {
const argument = { "element": "anyfunc", "initial": 0, "minimum": 0 };
- assert_throws_js(TypeError, () => WebAssembly.Table(argument));
-}, "Supplying both initial and minimum");
+ assert_throws_js(TypeError, () => new WebAssembly.Table(argument));
+}, "Initializing with both initial and minimum");
test(() => {
const argument = { "element": "anyfunc", "minimum": 0 };
const table = new WebAssembly.Table(argument);
assert_Table(table, { "length": 0 });
-}, "Basic (zero, minimum)");
+}, "Zero minimum");
test(() => {
const argument = { "element": "anyfunc", "minimum": 5 };
const table = new WebAssembly.Table(argument);
assert_Table(table, { "length": 5 });
-}, "Basic (non-zero, minimum)"); \ No newline at end of file
+}, "Non-zero minimum"); \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/web-share/canShare.tentative.https.html b/tests/wpt/web-platform-tests/web-share/canShare.tentative.https.html
index bb263e54255..55e026dd4cc 100644
--- a/tests/wpt/web-platform-tests/web-share/canShare.tentative.https.html
+++ b/tests/wpt/web-platform-tests/web-share/canShare.tentative.https.html
@@ -11,74 +11,74 @@
'use strict';
test(() => {
- assert_equals(navigator.canShare(), false);
+ assert_false(navigator.canShare());
}, 'canShare with no arguments (same as empty dictionary)');
test(() => {
- assert_equals(navigator.canShare({}), false);
+ assert_false(navigator.canShare({}));
}, 'canShare with an empty dictionary');
test(() => {
- assert_equals(navigator.canShare(undefined), false);
+ assert_false(navigator.canShare(undefined));
}, 'canShare with a undefined argument (same as empty dictionary)');
test(() => {
- assert_equals(navigator.canShare(null), false);
+ assert_false(navigator.canShare(null));
}, 'canShare with a null argument (same as empty dictionary)');
test(() => {
- assert_equals(navigator.canShare({unused: 'unexpected field'}), false);
+ assert_false(navigator.canShare({unused: 'unexpected field'}));
}, 'canShare with a dictionary containing only surplus fields');
test(() => {
// URL is invalid in that the URL Parser returns failure (port is too
// large).
const url = 'http://example.com:65536';
- assert_equals(navigator.canShare({url}), false);
+ assert_false(navigator.canShare({url}));
}, 'canShare with an invalid URL');
test(() => {
- assert_equals(navigator.canShare({title: undefined}), false);
+ assert_false(navigator.canShare({url: 'data:the url'}));
+ }, 'canShare with data URL');
+
+ test(() => {
+ assert_false(navigator.canShare({title: undefined}));
}, 'canShare with attribute undefined is equivalent to omitting the attribute');
test(() => {
- assert_equals(navigator.canShare({title: 'subject'}), true);
+ assert_true(navigator.canShare({title: 'subject'}));
}, 'canShare with title');
test(() => {
- assert_equals(navigator.canShare({text: 'body'}), true);
+ assert_true(navigator.canShare({text: 'body'}));
}, 'canShare with text');
test(() => {
- assert_equals(navigator.canShare({url: 'https://www.example.com/some/path?some_query#some_fragment'}), true);
+ assert_true(navigator.canShare({url: 'https://www.example.com/some/path?some_query#some_fragment'}));
}, 'canShare with URL');
test(() => {
- assert_equals(navigator.canShare({title: null}), true);
+ assert_true(navigator.canShare({title: null}));
}, 'canShare with null attribute');
test(() => {
- assert_equals(navigator.canShare({text: 123}), true);
+ assert_true(navigator.canShare({text: 123}));
}, 'canShare with number');
test(() => {
- assert_equals(navigator.canShare({url: {toString() { return 'https://example.com/'; }}}), true);
+ assert_true(navigator.canShare({url: {toString() { return 'https://example.com/'; }}}));
}, 'canShare with object');
test(() => {
- assert_equals(navigator.canShare({title: 'subject', text: 'body', url: 'https://example.com/', unused: 'unexpected field'}), true);
+ assert_true(navigator.canShare({title: 'subject', text: 'body', url: 'https://example.com/', unused: 'unexpected field'}));
}, 'canShare with unexpected field');
test(() => {
- assert_equals(navigator.canShare({url: 'data:the url'}), true);
- }, 'canShare with data URL');
-
- test(() => {
- assert_equals(navigator.canShare({url: ''}), true);
+ assert_true(navigator.canShare({url: ''}));
}, 'canShare with empty URL');
test(() => {
- assert_equals(navigator.canShare({url: '//www.example.com/some/path?some_query#some_fragment'}), true);
+ assert_true(navigator.canShare({url: '//www.example.com/some/path?some_query#some_fragment'}));
}, 'canShare with URL having no scheme');
</script>
</body>
diff --git a/tests/wpt/web-platform-tests/webauthn/getcredential-extensions.https.html b/tests/wpt/web-platform-tests/webauthn/getcredential-extensions.https.html
index af03086ee04..fd8d38d2dfd 100644
--- a/tests/wpt/web-platform-tests/webauthn/getcredential-extensions.https.html
+++ b/tests/wpt/web-platform-tests/webauthn/getcredential-extensions.https.html
@@ -46,16 +46,9 @@ standardSetup(function() {
.addCredential(credPromise)
.runTest("extension ID too long");
- // TODO
- // defined extensions:
- // * appid
- // * txAuthSimple
- // * txAuthGeneric
- // * authnSel
- // * exts
- // * uvi
- // * loc
- // * uvm
+ new GetCredentialsTest("options.publicKey.extensions", {credProps: true})
+ .addCredential(credPromise)
+ .runTest("credProps is only supported at registration", "NotSupportedError");
});
/* JSHINT */
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/perform_actions/conftest.py b/tests/wpt/web-platform-tests/webdriver/tests/perform_actions/conftest.py
index 5ee8ae1c741..970f7b7dd9b 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/perform_actions/conftest.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/perform_actions/conftest.py
@@ -18,6 +18,7 @@ def session_new_window(capabilities, session):
session.window_handle = original_handle
+
@pytest.fixture
def key_chain(session):
return session.actions.sequence("key", "keyboard_id")
@@ -36,6 +37,11 @@ def none_chain(session):
return session.actions.sequence("none", "none_id")
+@pytest.fixture
+def wheel_chain(session):
+ return session.actions.sequence("wheel", "wheel_id")
+
+
@pytest.fixture(autouse=True)
def release_actions(session, request):
# release all actions after each test
@@ -55,3 +61,8 @@ def key_reporter(session, test_actions_page, request):
@pytest.fixture
def test_actions_page(session, url):
session.url = url("/webdriver/tests/perform_actions/support/test_actions_wdspec.html")
+
+
+@pytest.fixture
+def test_actions_scroll_page(session, url):
+ session.url = url("/webdriver/tests/perform_actions/support/test_actions_scroll_wdspec.html")
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/perform_actions/support/test_actions_scroll_wdspec.html b/tests/wpt/web-platform-tests/webdriver/tests/perform_actions/support/test_actions_scroll_wdspec.html
new file mode 100644
index 00000000000..b6e281e5818
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webdriver/tests/perform_actions/support/test_actions_scroll_wdspec.html
@@ -0,0 +1,103 @@
+<!doctype html>
+<meta charset=utf-8>
+<html>
+<head>
+ <title>Test Actions</title>
+ <style>
+ div { padding:0px; margin: 0px; }
+ .area { width: 100px; height: 50px; background-color: #ccc; }
+ #scrollable { width: 100px; height: 100px; overflow: scroll; }
+ #scrollContent { width: 600px; height: 1000px; background-color: blue; }
+ #subframe { width: 100px; height: 100px; }
+ </style>
+ <script>
+ "use strict";
+ var els = {};
+ var allEvents = { events: [] };
+ function displayMessage(message) {
+ document.getElementById("events").innerHTML = "<p>" + message + "</p>";
+ }
+
+ function appendMessage(message) {
+ document.getElementById("events").innerHTML += "<p>" + message + "</p>";
+ }
+
+ function recordWheelEvent(event) {
+ allEvents.events.push({
+ "type": event.type,
+ "button": event.button,
+ "buttons": event.buttons,
+ "deltaX": event.deltaX,
+ "deltaY": event.deltaY,
+ "deltaZ": event.deltaZ,
+ "deltaMode": event.deltaMode,
+ "target": event.target.id
+ });
+ appendMessage(event.type + " " +
+ "button: " + event.button + ", " +
+ "pageX: " + event.pageX + ", " +
+ "pageY: " + event.pageY + ", " +
+ "button: " + event.button + ", " +
+ "buttons: " + event.buttons + ", " +
+ "deltaX: " + event.deltaX + ", " +
+ "deltaY: " + event.deltaY + ", " +
+ "deltaZ: " + event.deltaZ + ", " +
+ "deltaMode: " + event.deltaMode + ", " +
+ "target id: " + event.target.id);
+ }
+
+ function resetEvents() {
+ allEvents.events.length = 0;
+ displayMessage("");
+ }
+
+ document.addEventListener("DOMContentLoaded", function() {
+ var outer = document.getElementById("outer");
+ outer.addEventListener("wheel", recordWheelEvent);
+
+ var scrollable = document.getElementById("scrollable");
+ scrollable.addEventListener("wheel", recordWheelEvent);
+ });
+ </script>
+</head>
+<body>
+ <div>
+ <h2>ScrollReporter</h2>
+ <div id="outer" class="area">
+ </div>
+ </div>
+ <div>
+ <h2>OverflowScrollReporter</h2>
+ <div id="scrollable">
+ <div id="scrollContent"></div>
+ </div>
+ </div>
+ <div>
+ <h2>IframeScrollReporter</h2>
+ <iframe id='subframe' srcdoc='
+ <script>
+ document.scrollingElement.addEventListener("wheel",
+ function(event) {
+ window.parent.allEvents.events.push({
+ "type": event.type,
+ "button": event.button,
+ "buttons": event.buttons,
+ "deltaX": event.deltaX,
+ "deltaY": event.deltaY,
+ "deltaZ": event.deltaZ,
+ "deltaMode": event.deltaMode,
+ "target": event.target.id
+ });
+ }
+ );
+ </script>
+ <div id="iframeContent"
+ style="width: 7500px; height: 7500px; background-color:blue" ></div>'>
+ </iframe>
+ </div>
+ <div id="resultContainer">
+ <h2>Events</h2>
+ <div id="events"></div>
+ </div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/perform_actions/wheel.py b/tests/wpt/web-platform-tests/webdriver/tests/perform_actions/wheel.py
new file mode 100644
index 00000000000..fc84f2f2e01
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webdriver/tests/perform_actions/wheel.py
@@ -0,0 +1,63 @@
+import pytest
+
+from webdriver.error import NoSuchWindowException
+
+from tests.perform_actions.support.refine import filter_dict, get_events
+from tests.support.asserts import assert_move_to_coordinates
+
+
+def test_null_response_value(session, wheel_chain):
+ value = wheel_chain.scroll(0, 0, 0, 10).perform()
+ assert value is None
+
+
+def test_no_top_browsing_context(session, closed_window, wheel_chain):
+ with pytest.raises(NoSuchWindowException):
+ wheel_chain.scroll(0, 0, 0, 10).perform()
+
+
+def test_no_browsing_context(session, closed_window, wheel_chain):
+ with pytest.raises(NoSuchWindowException):
+ wheel_chain.scroll(0, 0, 0, 10).perform()
+
+
+def test_wheel_scroll(session, test_actions_scroll_page, wheel_chain):
+ session.execute_script("document.scrollingElement.scrollTop = 0")
+
+ outer = session.find.css("#outer", all=False)
+ wheel_chain.scroll(0, 0, 5, 10, origin=outer).perform()
+ events = get_events(session)
+ assert len(events) == 1
+ assert events[0]["type"] == "wheel"
+ assert events[0]["deltaX"] >= 5
+ assert events[0]["deltaY"] >= 10
+ assert events[0]["deltaZ"] == 0
+ assert events[0]["target"] == "outer"
+
+
+def test_wheel_scroll_overflow(session, test_actions_scroll_page, wheel_chain):
+ session.execute_script("document.scrollingElement.scrollTop = 0")
+
+ scrollable = session.find.css("#scrollable", all=False)
+ wheel_chain.scroll(0, 0, 5, 10, origin=scrollable).perform()
+ events = get_events(session)
+ assert len(events) == 1
+ assert events[0]["type"] == "wheel"
+ assert events[0]["deltaX"] >= 5
+ assert events[0]["deltaY"] >= 10
+ assert events[0]["deltaZ"] == 0
+ assert events[0]["target"] == "scrollContent"
+
+
+def test_wheel_scroll_iframe(session, test_actions_scroll_page, wheel_chain):
+ session.execute_script("document.scrollingElement.scrollTop = 0")
+
+ subframe = session.find.css("#subframe", all=False)
+ wheel_chain.scroll(0, 0, 5, 10, origin=subframe).perform()
+ events = get_events(session)
+ assert len(events) == 1
+ assert events[0]["type"] == "wheel"
+ assert events[0]["deltaX"] >= 5
+ assert events[0]["deltaY"] >= 10
+ assert events[0]["deltaZ"] == 0
+ assert events[0]["target"] == "iframeContent"
diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-getStats.https.html b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-getStats.https.html
index bdf7770350e..f39fd2c3137 100644
--- a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-getStats.https.html
+++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-getStats.https.html
@@ -247,7 +247,7 @@
const dataChannel = pc1.createDataChannel('test-channel');
- return getNoiseStream({
+ getNoiseStream({
audio: true,
video: true
})
diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-replaceTrack.https.html b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-replaceTrack.https.html
index 4bdcddec511..217326bfae2 100644
--- a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-replaceTrack.https.html
+++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-replaceTrack.https.html
@@ -13,7 +13,7 @@
async_test(t => {
const caller = new RTCPeerConnection();
t.add_cleanup(() => caller.close());
- return getUserMediaTracksAndStreams(2)
+ getUserMediaTracksAndStreams(2)
.then(t.step_func(([tracks, streams]) => {
const sender = caller.addTrack(tracks[0], streams[0]);
return sender.replaceTrack(tracks[1])
@@ -30,7 +30,7 @@
async_test(t => {
const caller = new RTCPeerConnection();
t.add_cleanup(() => caller.close());
- return getUserMediaTracksAndStreams(1)
+ getUserMediaTracksAndStreams(1)
.then(t.step_func(([tracks, streams]) => {
const sender = caller.addTrack(tracks[0], streams[0]);
return sender.replaceTrack(null)
@@ -47,7 +47,7 @@
async_test(t => {
const caller = new RTCPeerConnection();
t.add_cleanup(() => caller.close());
- return getUserMediaTracksAndStreams(2)
+ getUserMediaTracksAndStreams(2)
.then(t.step_func(([tracks, streams]) => {
const sender = caller.addTrack(tracks[0], streams[0]);
assert_equals(sender.track, tracks[0]);
@@ -66,7 +66,7 @@
const expectedException = 'InvalidStateError';
const caller = new RTCPeerConnection();
t.add_cleanup(() => caller.close());
- return getUserMediaTracksAndStreams(2)
+ getUserMediaTracksAndStreams(2)
.then(t.step_func(([tracks, streams]) => {
const sender = caller.addTrack(tracks[0], streams[0]);
caller.close();
diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-track-stats.https.html b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-track-stats.https.html
index 7b43e4e0bb4..42054ad9e66 100644
--- a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-track-stats.https.html
+++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-track-stats.https.html
@@ -23,7 +23,7 @@
const pc = new RTCPeerConnection();
t.add_cleanup(() => pc.close());
let track;
- return getUserMediaTracksAndStreams(1)
+ getUserMediaTracksAndStreams(1)
.then(t.step_func(([tracks, streams]) => {
t.add_cleanup(() => tracks.forEach(track => track.stop()));
track = tracks[0];
@@ -49,7 +49,7 @@
const pc = new RTCPeerConnection();
t.add_cleanup(() => pc.close());
let stream;
- return getUserMediaTracksAndStreams(1)
+ getUserMediaTracksAndStreams(1)
.then(t.step_func(([tracks, streams]) => {
t.add_cleanup(() => tracks.forEach(track => track.stop()));
let track = tracks[0];
@@ -72,7 +72,7 @@
const pc = new RTCPeerConnection();
t.add_cleanup(() => pc.close());
let track;
- return getUserMediaTracksAndStreams(1)
+ getUserMediaTracksAndStreams(1)
.then(t.step_func(([tracks, streams]) => {
t.add_cleanup(() => tracks.forEach(track => track.stop()));
track = tracks[0];
@@ -100,7 +100,7 @@
const pc = new RTCPeerConnection();
t.add_cleanup(() => pc.close());
let stream;
- return getUserMediaTracksAndStreams(1)
+ getUserMediaTracksAndStreams(1)
.then(t.step_func(([tracks, streams]) => {
t.add_cleanup(() => tracks.forEach(track => track.stop()));
let track = tracks[0];
@@ -130,7 +130,7 @@
t.add_cleanup(() => pc.close());
let track;
let stream;
- return getUserMediaTracksAndStreams(1)
+ getUserMediaTracksAndStreams(1)
.then(t.step_func(([tracks, streams]) => {
t.add_cleanup(() => tracks.forEach(track => track.stop()));
track = tracks[0];
@@ -165,7 +165,7 @@
t.add_cleanup(() => pc.close());
let track;
let stream;
- return getUserMediaTracksAndStreams(1)
+ getUserMediaTracksAndStreams(1)
.then(t.step_func(([tracks, streams]) => {
t.add_cleanup(() => tracks.forEach(track => track.stop()));
track = tracks[0];
@@ -203,7 +203,7 @@
const callee = new RTCPeerConnection();
t.add_cleanup(() => callee.close());
let sendingTrack;
- return getUserMediaTracksAndStreams(1)
+ getUserMediaTracksAndStreams(1)
.then(t.step_func(([tracks, streams]) => {
t.add_cleanup(() => tracks.forEach(track => track.stop()));
sendingTrack = tracks[0];
@@ -238,7 +238,7 @@
assert_equals(receivingTrack, undefined, 'ontrack has not fired before');
receivingTrack = trackEvent.track;
};
- return getUserMediaTracksAndStreams(1)
+ getUserMediaTracksAndStreams(1)
.then(t.step_func(([tracks, streams]) => {
t.add_cleanup(() => tracks.forEach(track => track.stop()));
caller.addTrack(tracks[0], streams[0]);
@@ -271,7 +271,7 @@
let sendingTrack1;
let sendingTrack2;
let sender;
- return getUserMediaTracksAndStreams(2)
+ getUserMediaTracksAndStreams(2)
.then(t.step_func(([tracks, streams]) => {
t.add_cleanup(() => tracks.forEach(track => track.stop()));
sendingTrack1 = tracks[0];
@@ -301,7 +301,7 @@
let sendingTrack1;
let sendingTrack2;
let sender;
- return getUserMediaTracksAndStreams(2)
+ getUserMediaTracksAndStreams(2)
.then(t.step_func(([tracks, streams]) => {
t.add_cleanup(() => tracks.forEach(track => track.stop()));
sendingTrack1 = tracks[0];
@@ -339,7 +339,7 @@
let sendingTrack1;
let sendingTrack2;
let sender;
- return getUserMediaTracksAndStreams(2)
+ getUserMediaTracksAndStreams(2)
.then(t.step_func(([tracks, streams]) => {
t.add_cleanup(() => tracks.forEach(track => track.stop()));
sendingTrack1 = tracks[0];
@@ -376,7 +376,7 @@
let sendingTrack1;
let sendingTrack2;
let sender;
- return getUserMediaTracksAndStreams(2)
+ getUserMediaTracksAndStreams(2)
.then(t.step_func(([tracks, streams]) => {
t.add_cleanup(() => tracks.forEach(track => track.stop()));
sendingTrack1 = tracks[0];
diff --git a/tests/wpt/web-platform-tests/webrtc/legacy/RTCPeerConnection-addStream.https.html b/tests/wpt/web-platform-tests/webrtc/legacy/RTCPeerConnection-addStream.https.html
index 5a35ebc53b8..7ebcacda537 100644
--- a/tests/wpt/web-platform-tests/webrtc/legacy/RTCPeerConnection-addStream.https.html
+++ b/tests/wpt/web-platform-tests/webrtc/legacy/RTCPeerConnection-addStream.https.html
@@ -27,7 +27,7 @@
t.add_cleanup(() => pc.close());
let track;
let stream;
- return getUserMediaTracksAndStreams(1)
+ getUserMediaTracksAndStreams(1)
.then(t.step_func(([tracks, streams]) => {
track = tracks[0];
stream = streams[0];
diff --git a/tests/wpt/web-platform-tests/webrtc/protocol/candidate-exchange.https.html b/tests/wpt/web-platform-tests/webrtc/protocol/candidate-exchange.https.html
index 82178953b6b..c54f26e6d80 100644
--- a/tests/wpt/web-platform-tests/webrtc/protocol/candidate-exchange.https.html
+++ b/tests/wpt/web-platform-tests/webrtc/protocol/candidate-exchange.https.html
@@ -186,6 +186,33 @@ promise_test(async t => {
assert_array_equals(pc2IceStates.events, ['new', 'checking', 'connected']);
}, 'Explicit offer/answer exchange gives a connection');
+promise_test(async t => {
+ const pc1 = new RTCPeerConnection();
+ t.add_cleanup(() => pc1.close());
+ pc1.createDataChannel('datachannel');
+ pc1.onicecandidate = assert_unreached;
+ const offer = await pc1.createOffer();
+ await pc1.setLocalDescription(offer);
+ await new Promise(resolve => {
+ pc1.onicecandidate = resolve;
+ });
+}, 'Candidates always arrive after setLocalDescription(offer) resolves');
+
+promise_test(async t => {
+ const pc1 = new RTCPeerConnection();
+ const pc2 = new RTCPeerConnection();
+ t.add_cleanup(() => pc1.close());
+ t.add_cleanup(() => pc2.close());
+ pc1.createDataChannel('datachannel');
+ pc2.onicecandidate = assert_unreached;
+ const offer = await pc1.createOffer();
+ await pc2.setRemoteDescription(offer);
+ await pc2.setLocalDescription(await pc2.createAnswer());
+ await new Promise(resolve => {
+ pc2.onicecandidate = resolve;
+ });
+}, 'Candidates always arrive after setLocalDescription(answer) resolves');
+
</script>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/webxr/webGLCanvasContext_create_xrcompatible.https.html b/tests/wpt/web-platform-tests/webxr/webGLCanvasContext_create_xrcompatible.https.html
index 33e54865253..2b3a1fccc45 100644
--- a/tests/wpt/web-platform-tests/webxr/webGLCanvasContext_create_xrcompatible.https.html
+++ b/tests/wpt/web-platform-tests/webxr/webGLCanvasContext_create_xrcompatible.https.html
@@ -6,6 +6,15 @@
<script src="resources/webxr_test_constants.js"></script>
<canvas id="webgl-canvas"></canvas>
<script>
+ xr_promise_test("Creating a webglCanvasContext with no device",
+ (t) => {
+ let webglCanvas = document.createElement('canvas');
+ let gl = webglCanvas.getContext('webgl');
+
+ assert_false(gl.getContextAttributes().xrCompatible);
+ return promise_rejects_dom(t, "InvalidStateError", gl.makeXRCompatible());
+ });
+
xr_promise_test("An XR-compatible webglCanvasContext can be created",
(t) => {
let gl = null;
@@ -26,6 +35,5 @@
assert_true(offscreenGl.getContextAttributes().xrCompatible);
});
});
-
</script>
</body>
diff --git a/tests/wpt/web-platform-tests/webxr/webxr_feature_policy.https.html b/tests/wpt/web-platform-tests/webxr/webxr_feature_policy.https.html
index 7f3d03b48e5..b493ec73cce 100644
--- a/tests/wpt/web-platform-tests/webxr/webxr_feature_policy.https.html
+++ b/tests/wpt/web-platform-tests/webxr/webxr_feature_policy.https.html
@@ -78,4 +78,20 @@ xr_promise_test(
});
});
+
+xr_promise_test(
+"Validate xr compatibility requests without xr-spatial-tracking policy",
+(t) => {
+ let canvas = document.createElement('canvas');
+ let gl = canvas.getContext('webgl', {xrCompatible: true});
+
+ t.step(() => {
+ assert_false(gl.getContextAttributes().xrCompatible,
+ "xrCompatibility shouldn't be set when requested without feature policy");
+ });
+
+ return promise_rejects_dom(t, "SecurityError",
+ gl.makeXRCompatible(),
+ "makeXRCompatible should reject without feature policy");
+});
</script>