diff options
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> |