diff options
author | bors-servo <lbergstrom+bors@mozilla.com> | 2019-08-28 12:38:43 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-08-28 12:38:43 -0400 |
commit | 2a8cd0f0064392f7ba3ecfd6925d83db2b552024 (patch) | |
tree | d87b5f75c58a0536d90d435b6cb1811a3744d5dd | |
parent | 0636f51c1475db8665d777076784317924519b23 (diff) | |
parent | d18b651358c3c7496c900e558468494ae36edb69 (diff) | |
download | servo-2a8cd0f0064392f7ba3ecfd6925d83db2b552024.tar.gz servo-2a8cd0f0064392f7ba3ecfd6925d83db2b552024.zip |
Auto merge of #24078 - servo-wpt-sync:wpt_update_28-08-2019, r=servo-wpt-sync
Sync WPT with upstream (28-08-2019)
Automated downstream sync of changes from upstream as of 28-08-2019.
[no-wpt-sync]
<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/24078)
<!-- Reviewable:end -->
120 files changed, 3584 insertions, 1358 deletions
diff --git a/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini b/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini index 3b874fc1748..947e223fb28 100644 --- a/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini +++ b/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini @@ -34,6 +34,3 @@ [Revoke blob URL after creating Request, will fetch] expected: FAIL - [Revoke blob URL after calling fetch, fetch should succeed] - expected: FAIL - diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index 7d50948f31a..de5217e8a5c 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -131659,6 +131659,18 @@ {} ] ], + "css/css-multicol/multicol-breaking-005.html": [ + [ + "css/css-multicol/multicol-breaking-005.html", + [ + [ + "/css/css-multicol/multicol-breaking-005-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-multicol/multicol-breaking-nobackground-000.html": [ [ "css/css-multicol/multicol-breaking-nobackground-000.html", @@ -131719,6 +131731,18 @@ {} ] ], + "css/css-multicol/multicol-breaking-nobackground-005.html": [ + [ + "css/css-multicol/multicol-breaking-nobackground-005.html", + [ + [ + "/css/css-multicol/multicol-breaking-nobackground-005-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-multicol/multicol-clip-001.xht": [ [ "css/css-multicol/multicol-clip-001.xht", @@ -252929,6 +252953,9 @@ "css/css-multicol/multicol-breaking-004-ref.html": [ [] ], + "css/css-multicol/multicol-breaking-005-ref.html": [ + [] + ], "css/css-multicol/multicol-breaking-nobackground-000-ref.html": [ [] ], @@ -252944,6 +252971,9 @@ "css/css-multicol/multicol-breaking-nobackground-004-ref.html": [ [] ], + "css/css-multicol/multicol-breaking-nobackground-005-ref.html": [ + [] + ], "css/css-multicol/multicol-clip-001-ref.xht": [ [] ], @@ -265412,6 +265442,9 @@ "docs/reviewing-tests/reverting.md": [ [] ], + "docs/running-tests/android_webview.md": [ + [] + ], "docs/running-tests/chrome.md": [ [] ], @@ -275180,7 +275213,7 @@ "infrastructure/metadata/infrastructure/reftest/reftest_cycle_fail.html.ini": [ [] ], - "infrastructure/metadata/infrastructure/reftest/reftest_fuzzy_chain_ini.html": [ + "infrastructure/metadata/infrastructure/reftest/reftest_fuzzy_chain_ini.html.ini": [ [] ], "infrastructure/metadata/infrastructure/reftest/reftest_fuzzy_ini_full.html.ini": [ @@ -275426,9 +275459,6 @@ "interfaces/cssom.idl": [ [] ], - "interfaces/dedicated-workers.idl": [ - [] - ], "interfaces/dom.idl": [ [] ], @@ -317356,6 +317386,12 @@ {} ] ], + "css/css-font-loading/font-face-reject.html": [ + [ + "css/css-font-loading/font-face-reject.html", + {} + ] + ], "css/css-font-loading/fontfacesetloadevent-constructor.html": [ [ "css/css-font-loading/fontfacesetloadevent-constructor.html", @@ -320078,6 +320114,24 @@ {} ] ], + "css/css-inline/parsing/vertical-align-computed.html": [ + [ + "css/css-inline/parsing/vertical-align-computed.html", + {} + ] + ], + "css/css-inline/parsing/vertical-align-invalid.html": [ + [ + "css/css-inline/parsing/vertical-align-invalid.html", + {} + ] + ], + "css/css-inline/parsing/vertical-align-valid.html": [ + [ + "css/css-inline/parsing/vertical-align-valid.html", + {} + ] + ], "css/css-layout-api/at-supports-rule.https.html": [ [ "css/css-layout-api/at-supports-rule.https.html", @@ -320828,6 +320882,30 @@ {} ] ], + "css/css-multicol/animation/column-count-interpolation.html": [ + [ + "css/css-multicol/animation/column-count-interpolation.html", + {} + ] + ], + "css/css-multicol/animation/column-rule-color-interpolation.html": [ + [ + "css/css-multicol/animation/column-rule-color-interpolation.html", + {} + ] + ], + "css/css-multicol/animation/column-rule-width.html": [ + [ + "css/css-multicol/animation/column-rule-width.html", + {} + ] + ], + "css/css-multicol/animation/column-width-interpolation.html": [ + [ + "css/css-multicol/animation/column-width-interpolation.html", + {} + ] + ], "css/css-multicol/balance-table-with-fractional-height-row.html": [ [ "css/css-multicol/balance-table-with-fractional-height-row.html", @@ -322286,21 +322364,21 @@ {} ] ], - "css/css-scroll-snap/parsing/scroll-margin-block-computed.html": [ + "css/css-scroll-snap/parsing/scroll-margin-block-inline-computed.html": [ [ - "css/css-scroll-snap/parsing/scroll-margin-block-computed.html", + "css/css-scroll-snap/parsing/scroll-margin-block-inline-computed.html", {} ] ], - "css/css-scroll-snap/parsing/scroll-margin-block-invalid.html": [ + "css/css-scroll-snap/parsing/scroll-margin-block-inline-invalid.html": [ [ - "css/css-scroll-snap/parsing/scroll-margin-block-invalid.html", + "css/css-scroll-snap/parsing/scroll-margin-block-inline-invalid.html", {} ] ], - "css/css-scroll-snap/parsing/scroll-margin-block-valid.html": [ + "css/css-scroll-snap/parsing/scroll-margin-block-inline-valid.html": [ [ - "css/css-scroll-snap/parsing/scroll-margin-block-valid.html", + "css/css-scroll-snap/parsing/scroll-margin-block-inline-valid.html", {} ] ], @@ -322310,24 +322388,6 @@ {} ] ], - "css/css-scroll-snap/parsing/scroll-margin-inline-computed.html": [ - [ - "css/css-scroll-snap/parsing/scroll-margin-inline-computed.html", - {} - ] - ], - "css/css-scroll-snap/parsing/scroll-margin-inline-invalid.html": [ - [ - "css/css-scroll-snap/parsing/scroll-margin-inline-invalid.html", - {} - ] - ], - "css/css-scroll-snap/parsing/scroll-margin-inline-valid.html": [ - [ - "css/css-scroll-snap/parsing/scroll-margin-inline-valid.html", - {} - ] - ], "css/css-scroll-snap/parsing/scroll-margin-invalid.html": [ [ "css/css-scroll-snap/parsing/scroll-margin-invalid.html", @@ -322340,21 +322400,21 @@ {} ] ], - "css/css-scroll-snap/parsing/scroll-padding-block-computed.html": [ + "css/css-scroll-snap/parsing/scroll-padding-block-inline-computed.html": [ [ - "css/css-scroll-snap/parsing/scroll-padding-block-computed.html", + "css/css-scroll-snap/parsing/scroll-padding-block-inline-computed.html", {} ] ], - "css/css-scroll-snap/parsing/scroll-padding-block-invalid.html": [ + "css/css-scroll-snap/parsing/scroll-padding-block-inline-invalid.html": [ [ - "css/css-scroll-snap/parsing/scroll-padding-block-invalid.html", + "css/css-scroll-snap/parsing/scroll-padding-block-inline-invalid.html", {} ] ], - "css/css-scroll-snap/parsing/scroll-padding-block-valid.html": [ + "css/css-scroll-snap/parsing/scroll-padding-block-inline-valid.html": [ [ - "css/css-scroll-snap/parsing/scroll-padding-block-valid.html", + "css/css-scroll-snap/parsing/scroll-padding-block-inline-valid.html", {} ] ], @@ -322364,24 +322424,6 @@ {} ] ], - "css/css-scroll-snap/parsing/scroll-padding-inline-computed.html": [ - [ - "css/css-scroll-snap/parsing/scroll-padding-inline-computed.html", - {} - ] - ], - "css/css-scroll-snap/parsing/scroll-padding-inline-invalid.html": [ - [ - "css/css-scroll-snap/parsing/scroll-padding-inline-invalid.html", - {} - ] - ], - "css/css-scroll-snap/parsing/scroll-padding-inline-valid.html": [ - [ - "css/css-scroll-snap/parsing/scroll-padding-inline-valid.html", - {} - ] - ], "css/css-scroll-snap/parsing/scroll-padding-invalid.html": [ [ "css/css-scroll-snap/parsing/scroll-padding-invalid.html", @@ -322670,6 +322712,24 @@ {} ] ], + "css/css-shapes/animation/shape-image-threshold-interpolation.html": [ + [ + "css/css-shapes/animation/shape-image-threshold-interpolation.html", + {} + ] + ], + "css/css-shapes/animation/shape-margin-interpolation.html": [ + [ + "css/css-shapes/animation/shape-margin-interpolation.html", + {} + ] + ], + "css/css-shapes/animation/shape-outside-interpolation.html": [ + [ + "css/css-shapes/animation/shape-outside-interpolation.html", + {} + ] + ], "css/css-shapes/basic-shape-circle-ellipse-serialization.html": [ [ "css/css-shapes/basic-shape-circle-ellipse-serialization.html", @@ -333661,26 +333721,152 @@ {} ] ], - "dom/interface-objects.html": [ + "dom/idlharness.any.js": [ [ - "dom/interface-objects.html", - {} + "dom/idlharness.any.serviceworker.html", + { + "script_metadata": [ + [ + "global", + "!window,worker" + ], + [ + "script", + "/resources/WebIDLParser.js" + ], + [ + "script", + "/resources/idlharness.js" + ], + [ + "timeout", + "long" + ] + ], + "timeout": "long" + } + ], + [ + "dom/idlharness.any.sharedworker.html", + { + "script_metadata": [ + [ + "global", + "!window,worker" + ], + [ + "script", + "/resources/WebIDLParser.js" + ], + [ + "script", + "/resources/idlharness.js" + ], + [ + "timeout", + "long" + ] + ], + "timeout": "long" + } + ], + [ + "dom/idlharness.any.worker.html", + { + "script_metadata": [ + [ + "global", + "!window,worker" + ], + [ + "script", + "/resources/WebIDLParser.js" + ], + [ + "script", + "/resources/idlharness.js" + ], + [ + "timeout", + "long" + ] + ], + "timeout": "long" + } ] ], - "dom/interfaces.html": [ + "dom/idlharness.window.js": [ [ - "dom/interfaces.html?exclude=Node", + "dom/idlharness.window.html?exclude=Node", { + "script_metadata": [ + [ + "script", + "/resources/WebIDLParser.js" + ], + [ + "script", + "/resources/idlharness.js" + ], + [ + "script", + "/common/subset-tests-by-key.js" + ], + [ + "variant", + "?include=Node" + ], + [ + "variant", + "?exclude=Node" + ], + [ + "timeout", + "long" + ] + ], "timeout": "long" } ], [ - "dom/interfaces.html?include=Node", + "dom/idlharness.window.html?include=Node", { + "script_metadata": [ + [ + "script", + "/resources/WebIDLParser.js" + ], + [ + "script", + "/resources/idlharness.js" + ], + [ + "script", + "/common/subset-tests-by-key.js" + ], + [ + "variant", + "?include=Node" + ], + [ + "variant", + "?exclude=Node" + ], + [ + "timeout", + "long" + ] + ], "timeout": "long" } ] ], + "dom/interface-objects.html": [ + [ + "dom/interface-objects.html", + {} + ] + ], "dom/lists/DOMTokenList-Iterable.html": [ [ "dom/lists/DOMTokenList-Iterable.html", @@ -334635,6 +334821,12 @@ {} ] ], + "dom/nodes/aria-element-reflection.tentative.html": [ + [ + "dom/nodes/aria-element-reflection.tentative.html", + {} + ] + ], "dom/nodes/attributes.html": [ [ "dom/nodes/attributes.html", @@ -345758,18 +345950,17 @@ {} ] ], - "event-timing/bufferbeforeonload.html": [ + "event-timing/buffered-flag.html": [ [ - "event-timing/bufferbeforeonload.html", + "event-timing/buffered-flag.html", { - "testdriver": true, - "timeout": "long" + "testdriver": true } ] ], - "event-timing/buffered-flag.html": [ + "event-timing/click-timing.html": [ [ - "event-timing/buffered-flag.html", + "event-timing/click-timing.html", { "testdriver": true } @@ -345862,33 +346053,6 @@ } ] ], - "event-timing/observethenonload.html": [ - [ - "event-timing/observethenonload.html", - { - "testdriver": true, - "timeout": "long" - } - ] - ], - "event-timing/onloadthenobserve-firstInput.html": [ - [ - "event-timing/onloadthenobserve-firstInput.html", - { - "testdriver": true, - "timeout": "long" - } - ] - ], - "event-timing/onloadthenobserve.html": [ - [ - "event-timing/onloadthenobserve.html", - { - "testdriver": true, - "timeout": "long" - } - ] - ], "event-timing/only-observe-firstInput.html": [ [ "event-timing/only-observe-firstInput.html", @@ -354771,6 +354935,18 @@ {} ] ], + "html/semantics/document-metadata/the-base-element/base_target_does_not_affect_iframe_src_navigation.html": [ + [ + "html/semantics/document-metadata/the-base-element/base_target_does_not_affect_iframe_src_navigation.html", + {} + ] + ], + "html/semantics/document-metadata/the-base-element/base_target_does_not_affect_location_assignment.html": [ + [ + "html/semantics/document-metadata/the-base-element/base_target_does_not_affect_location_assignment.html", + {} + ] + ], "html/semantics/document-metadata/the-link-element/document-without-browsing-context.html": [ [ "html/semantics/document-metadata/the-link-element/document-without-browsing-context.html", @@ -367574,8 +367750,13 @@ [ "script", "/resources/idlharness.js" + ], + [ + "timeout", + "long" ] - ] + ], + "timeout": "long" } ] ], @@ -404136,6 +404317,12 @@ {} ] ], + "svg/animations/spaces-at-end-of-path-data.html": [ + [ + "svg/animations/spaces-at-end-of-path-data.html", + {} + ] + ], "svg/animations/svgangle-animation-deg-to-grad.html": [ [ "svg/animations/svgangle-animation-deg-to-grad.html", @@ -405372,6 +405559,18 @@ {} ] ], + "svg/pservers/parsing/stop-color-invalid.svg": [ + [ + "svg/pservers/parsing/stop-color-invalid.svg", + {} + ] + ], + "svg/pservers/parsing/stop-color-valid.svg": [ + [ + "svg/pservers/parsing/stop-color-valid.svg", + {} + ] + ], "svg/pservers/parsing/stop-opacity-computed.svg": [ [ "svg/pservers/parsing/stop-opacity-computed.svg", @@ -420624,12 +420823,6 @@ } ] ], - "workers/interfaces.worker.js": [ - [ - "workers/interfaces.worker.html", - {} - ] - ], "workers/interfaces/DedicatedWorkerGlobalScope/EventTarget.worker.js": [ [ "workers/interfaces/DedicatedWorkerGlobalScope/EventTarget.worker.html", @@ -445064,6 +445257,12 @@ {} ] ], + "webdriver/tests/take_element_screenshot/iframe.py": [ + [ + "webdriver/tests/take_element_screenshot/iframe.py", + {} + ] + ], "webdriver/tests/take_element_screenshot/screenshot.py": [ [ "webdriver/tests/take_element_screenshot/screenshot.py", @@ -445078,6 +445277,12 @@ } ] ], + "webdriver/tests/take_screenshot/iframe.py": [ + [ + "webdriver/tests/take_screenshot/iframe.py", + {} + ] + ], "webdriver/tests/take_screenshot/screenshot.py": [ [ "webdriver/tests/take_screenshot/screenshot.py", @@ -445096,7 +445301,7 @@ }, "paths": { ".azure-pipelines.yml": [ - "0776b1994f7fe4defc3a9439a106eadfbcce8133", + "06fe7999246ee7af31d11d266ff6c51f17c1fe12", "support" ], ".codecov.yml": [ @@ -455320,7 +455525,7 @@ "support" ], "audio-output/idlharness.https.window.js": [ - "f10e523bcdc530ee1dbd04a52541ac0b343e9376", + "c13b167296d8059b96bfa4704714051e341ee987", "testharness" ], "audio-output/setSinkId-manual.https.html": [ @@ -455560,7 +455765,7 @@ "support" ], "beacon/idlharness.any.js": [ - "958daf4865d1d7c9dfb621a163e15a8862330d2b", + "bf267ab8bdce52ce32df4ea3a53b30b6d35c8000", "testharness" ], "beacon/resources/beacon.py": [ @@ -553195,6 +553400,10 @@ "3ac9b655b0606783334ff91f9fba852df8efdbc1", "support" ], + "css/css-font-loading/font-face-reject.html": [ + "7b87a8121325f2e44d155df0c8d61f9ab48cb686", + "testharness" + ], "css/css-font-loading/fontface-descriptor-updates-ref.html": [ "513867b3503042886e51312bcfec20967f7384d4", "support" @@ -564451,6 +564660,18 @@ "663e2638d8b4869561ea24748c8e54077079371c", "testharness" ], + "css/css-inline/parsing/vertical-align-computed.html": [ + "24225084721b17dd78182242172e2ded2620a623", + "testharness" + ], + "css/css-inline/parsing/vertical-align-invalid.html": [ + "0565eb4a68d23514390b8b4af444a0ac15840e9f", + "testharness" + ], + "css/css-inline/parsing/vertical-align-valid.html": [ + "d51c759dcc5d7f7e2820751e7a5a7f39dcf91bf1", + "testharness" + ], "css/css-layout-api/META.yml": [ "c85c2d4ccc0b02f3e22ca444952fb7583d96e7c7", "support" @@ -566831,6 +567052,22 @@ "c30a19d001b530c304def61e1e6d55dc0f6b0318", "testharness" ], + "css/css-multicol/animation/column-count-interpolation.html": [ + "def34adc6c0ae83c3432b195663c877c28157a99", + "testharness" + ], + "css/css-multicol/animation/column-rule-color-interpolation.html": [ + "060c8416ffbe2e227ddde74bac415976a9337bdb", + "testharness" + ], + "css/css-multicol/animation/column-rule-width.html": [ + "d600d68ff1aa57c5fcb7759e7d3f3af0f119439c", + "testharness" + ], + "css/css-multicol/animation/column-width-interpolation.html": [ + "fdb26353b4946423f236988da5075c2af7aa49d3", + "testharness" + ], "css/css-multicol/balance-table-with-fractional-height-row.html": [ "434dc52ea3d731bd1393270372294cd007382e59", "testharness" @@ -567003,6 +567240,14 @@ "82931ac85165637a5114a8b41be14ccfcf2e1857", "reftest" ], + "css/css-multicol/multicol-breaking-005-ref.html": [ + "a22fda57c0b2759cce0e1e6ce72de7c07c22ed23", + "support" + ], + "css/css-multicol/multicol-breaking-005.html": [ + "18a1b78fc9a20b4e1c0c7fb605928ba9b476d9a1", + "reftest" + ], "css/css-multicol/multicol-breaking-nobackground-000-ref.html": [ "7a99354061cfeb982fffb921c850484dd02eac15", "support" @@ -567043,6 +567288,14 @@ "7b810423c91d862b80891902c4ba405975c0a493", "reftest" ], + "css/css-multicol/multicol-breaking-nobackground-005-ref.html": [ + "63296363bf99dfb790919cf04f022abeb8dd2419", + "support" + ], + "css/css-multicol/multicol-breaking-nobackground-005.html": [ + "2065949cc92c19ee9816ac2bf10b6a35cfc9a54d", + "reftest" + ], "css/css-multicol/multicol-clip-001-ref.xht": [ "d742ea716d38b186ce5598b4e7db28e6ae74985b", "support" @@ -573895,34 +574148,22 @@ "ee31847fddd16ec9d4a5b1e799c73461009f9e1a", "testharness" ], - "css/css-scroll-snap/parsing/scroll-margin-block-computed.html": [ - "b186e674ab7edbb15ebe2bb488f6833358dc5590", + "css/css-scroll-snap/parsing/scroll-margin-block-inline-computed.html": [ + "3bb0e740acf187969777e470a8f7e9ee2a648b02", "testharness" ], - "css/css-scroll-snap/parsing/scroll-margin-block-invalid.html": [ - "371c933aa0e12115d85f540752a15c9f0a139208", + "css/css-scroll-snap/parsing/scroll-margin-block-inline-invalid.html": [ + "b8a70b0d4890ab108de348f2866b79a2c3cea2c3", "testharness" ], - "css/css-scroll-snap/parsing/scroll-margin-block-valid.html": [ - "f4be8994f7ca1ded25510e78cb16bff683db7ae2", + "css/css-scroll-snap/parsing/scroll-margin-block-inline-valid.html": [ + "e675eeb427064d51af1b9b0c2e29a812d0ae5fce", "testharness" ], "css/css-scroll-snap/parsing/scroll-margin-computed.html": [ "ae7b6de5ddabb9fe2af83996960483b8d29f5882", "testharness" ], - "css/css-scroll-snap/parsing/scroll-margin-inline-computed.html": [ - "d9854713b55fabe80af36c4457bd202bab4ac4a8", - "testharness" - ], - "css/css-scroll-snap/parsing/scroll-margin-inline-invalid.html": [ - "eaeb97157a6287a967c07537d0ebbdb15ad6b49d", - "testharness" - ], - "css/css-scroll-snap/parsing/scroll-margin-inline-valid.html": [ - "a29ede3d32fbcedeaee5c96fcb9fcf449ec97bc1", - "testharness" - ], "css/css-scroll-snap/parsing/scroll-margin-invalid.html": [ "97beb0d295dcda5e18946bc1122a8aedc40ce796", "testharness" @@ -573931,36 +574172,24 @@ "be3499869159c5fb29f9859889f4f2354874853c", "testharness" ], - "css/css-scroll-snap/parsing/scroll-padding-block-computed.html": [ - "2021818dd33c246364c26a3ca4c182b7a4d252a8", + "css/css-scroll-snap/parsing/scroll-padding-block-inline-computed.html": [ + "6a66110cda3b871c5130dae896d54766d96769de", "testharness" ], - "css/css-scroll-snap/parsing/scroll-padding-block-invalid.html": [ - "206e6f5da89a7cc1ae411b57652d7bf1e266844a", + "css/css-scroll-snap/parsing/scroll-padding-block-inline-invalid.html": [ + "da995cfcc07ad43a489aa4e0205fa24d6e435e39", "testharness" ], - "css/css-scroll-snap/parsing/scroll-padding-block-valid.html": [ - "79f675acd5b530db6f0fc6d31a5f059651c8b1f6", + "css/css-scroll-snap/parsing/scroll-padding-block-inline-valid.html": [ + "a932bb6393db62a000092276128d9934b269fc25", "testharness" ], "css/css-scroll-snap/parsing/scroll-padding-computed.html": [ "f638138a7fdd5e84930cac36ea9bab56177fd5dd", "testharness" ], - "css/css-scroll-snap/parsing/scroll-padding-inline-computed.html": [ - "b70cf01b6fe227658f9df2b330856030d7cf8a70", - "testharness" - ], - "css/css-scroll-snap/parsing/scroll-padding-inline-invalid.html": [ - "0cf3fa7353f7123d0f27573c610ce42638c59d40", - "testharness" - ], - "css/css-scroll-snap/parsing/scroll-padding-inline-valid.html": [ - "3fb9003585a9d9cb4af7891cd77ca91f3b8f42c0", - "testharness" - ], "css/css-scroll-snap/parsing/scroll-padding-invalid.html": [ - "e060fcdc0ec064a255ff496fd329fab9917b73b4", + "c805ee2e55eda1ba713b5ba5432c8120410cdcbd", "testharness" ], "css/css-scroll-snap/parsing/scroll-padding-valid.html": [ @@ -574287,6 +574516,18 @@ "2e433aa66f914de66e36f0f4f99237254a7def29", "support" ], + "css/css-shapes/animation/shape-image-threshold-interpolation.html": [ + "edac744592f76704ba82b0c4a7e5a53c7db6ba79", + "testharness" + ], + "css/css-shapes/animation/shape-margin-interpolation.html": [ + "48b3d0c460794b18261ce7a6beedf980d8335d36", + "testharness" + ], + "css/css-shapes/animation/shape-outside-interpolation.html": [ + "3380acdba00db8e9440b33c60275f6fd6340d345", + "testharness" + ], "css/css-shapes/basic-shape-circle-ellipse-serialization.html": [ "5e4842d234f6af393a5ee04fa604a63f6db5cae1", "testharness" @@ -618423,6 +618664,10 @@ "277ccb047abb1b54448a3be76722412e0ddb1979", "support" ], + "docs/running-tests/android_webview.md": [ + "5d1cb26ecafa7fc4d1dd3644e3be1d53d2d0e7fb", + "support" + ], "docs/running-tests/chrome.md": [ "c56d3c56f846f0318e452765192df27beb05e2b9", "support" @@ -618440,7 +618685,7 @@ "support" ], "docs/running-tests/from-local-system.md": [ - "97a6b9e940f716877b33e546cb657e1462293c87", + "35c1905a0c5690171489e93e1635c793433c402a", "support" ], "docs/running-tests/from-web.md": [ @@ -618899,12 +619144,16 @@ "921fa07b3f6de0f9a579b75b14d6509039765205", "testharness" ], - "dom/interface-objects.html": [ - "936d63517eada5521f814fabdbd785a57b9640b2", + "dom/idlharness.any.js": [ + "5119f9f975414e4ef930026da6b83bbb1394017b", "testharness" ], - "dom/interfaces.html": [ - "111608bcaec1c39fa832474ebe014e8730a40c4e", + "dom/idlharness.window.js": [ + "7d87aeaa337ed7709875428641f78107395d9317", + "testharness" + ], + "dom/interface-objects.html": [ + "936d63517eada5521f814fabdbd785a57b9640b2", "testharness" ], "dom/lists/DOMTokenList-Iterable.html": [ @@ -619819,6 +620068,10 @@ "8d9ce2e3ff604ee43807ee0eb1962870439725a9", "testharness" ], + "dom/nodes/aria-element-reflection.tentative.html": [ + "974727f92aa315d727295fcf7b650bc24c507aab", + "testharness" + ], "dom/nodes/attributes.html": [ "dac191b54cb2cafdaf9a71a297d130e571cd5230", "testharness" @@ -622896,7 +623149,7 @@ "testharness" ], "encrypted-media/idlharness.https.html": [ - "6a2ae80a5384aa885d7a1545b19f41cc828c420e", + "b501bde9d25511b2ac38e0431b9211ed6083a4bf", "testharness" ], "encrypted-media/polyfill/cast-polyfill.js": [ @@ -623279,14 +623532,14 @@ "aa27fb61c310d91b629ff0d7b19cd01ce469e645", "support" ], - "event-timing/bufferbeforeonload.html": [ - "4b003a98f64ed99266f9bb12c09c4b5cde5afa32", - "testharness" - ], "event-timing/buffered-flag.html": [ "b9c63ffd8fdd6dca11211376538c65fa9571c437", "testharness" ], + "event-timing/click-timing.html": [ + "afe53bfc23c943a3f3a3679dffbab5edcf5a27ea", + "testharness" + ], "event-timing/crossiframe.html": [ "bb19c82a2a1d64e5edcdc965812488aab1a73652", "testharness" @@ -623299,18 +623552,6 @@ "8b5b6ed91369e1541eb2ccc644ba260627a4ced7", "manual" ], - "event-timing/observethenonload.html": [ - "8295aaf04128c3998a6ce30703bcf85c99a49865", - "testharness" - ], - "event-timing/onloadthenobserve-firstInput.html": [ - "3cd80e2eba1a748a68151a8bf45cfdc93a7b3f71", - "testharness" - ], - "event-timing/onloadthenobserve.html": [ - "4365f4837bcceb070f683db2ee1d2f2a7ea050d6", - "testharness" - ], "event-timing/only-observe-firstInput.html": [ "48df6ec9fc65a9eb8c4adf62f5fc7219b7c5a056", "testharness" @@ -627176,7 +627417,7 @@ "testharness" ], "geolocation-API/idlharness.window.js": [ - "f8c92c121352b6daffe3c3b289f49d3572292c10", + "fe4ac8895dfb6e889eded7d694e3c87905868b4f", "testharness" ], "geolocation-API/support.js": [ @@ -631520,7 +631761,7 @@ "testharness" ], "html/dom/interfaces.worker.js": [ - "f49198cd5c67a603f6fcd1fe33fdc9dd76b1f06b", + "b720d54f3d953633bd7abd1e73097a31a369e825", "testharness" ], "html/dom/new-harness.js": [ @@ -637403,6 +637644,14 @@ "eea1efe51d3c5d52aaa0c5147ffbc5945c71a3fd", "testharness" ], + "html/semantics/document-metadata/the-base-element/base_target_does_not_affect_iframe_src_navigation.html": [ + "b432698f210db32367c5b71bd5478a1b4adc33c4", + "testharness" + ], + "html/semantics/document-metadata/the-base-element/base_target_does_not_affect_location_assignment.html": [ + "2914f1f77f554ae29313ec982cae4b1b80f48071", + "testharness" + ], "html/semantics/document-metadata/the-base-element/example.html": [ "49dc772f9161d60b63eb910e9f286f27bbdbdd76", "support" @@ -647712,11 +647961,11 @@ "testharness" ], "inert/inert-retargeting-iframe.tentative.html": [ - "c31cc88ccecce9212a0e7771c6cfe46479908d66", + "ddcb3ccb0d2c851fe3f1d07169de839465d12354", "testharness" ], "inert/inert-retargeting.tentative.html": [ - "6ef3b2a1b1b7ededf6072156bb85fc5b22d885fe", + "2280cf5a5d1fb16ef192310e4fb4f7d22b3702b3", "testharness" ], "infrastructure/META.yml": [ @@ -647851,7 +648100,7 @@ "472b33f7764bde6e2aea7bc2ccd8bf3739babad2", "support" ], - "infrastructure/metadata/infrastructure/reftest/reftest_fuzzy_chain_ini.html": [ + "infrastructure/metadata/infrastructure/reftest/reftest_fuzzy_chain_ini.html.ini": [ "69dc018f38990001626df54f1d067efd3421fdd0", "support" ], @@ -648236,7 +648485,7 @@ "support" ], "interfaces/IndexedDB.idl": [ - "f2625ebe53ddde37b5625802b7a417220e7cafbd", + "a8ef47e89ab707f037364afdccbbf572a6c1450a", "support" ], "interfaces/InputDeviceCapabilities.idl": [ @@ -648395,10 +648644,6 @@ "dc9b78fda6180dba6b7958c3429a77e0fb5048b2", "support" ], - "interfaces/dedicated-workers.idl": [ - "8d7255f2a564e3dd648592db59e84dc3529359d1", - "support" - ], "interfaces/dom.idl": [ "285e5f00b87e4033374024f705ccc78cd56364c7", "support" @@ -648484,7 +648729,7 @@ "support" ], "interfaces/input-events.idl": [ - "c10aa32bed093a27df7993d1d384a926b7a65536", + "5ddaae5b9d3db83caca699c847373e7deb421ac4", "support" ], "interfaces/intersection-observer.idl": [ @@ -648640,7 +648885,7 @@ "support" ], "interfaces/requestidlecallback.idl": [ - "812cc0ef81533136f537b2591cf6c1774bf525ba", + "c763b50bde782bb484564b49e25068fff88f782b", "support" ], "interfaces/resize-observer.idl": [ @@ -649440,7 +649685,7 @@ "testharness" ], "lint.whitelist": [ - "a6aa9466810d226208051c597a8c6c3c24337c1e", + "8ff3b81893231ad409e4dd41378a7826a848afb0", "support" ], "loading/lazyload/common.js": [ @@ -650804,7 +651049,7 @@ "support" ], "media-source/idlharness.window.js": [ - "28da56b32e692b0a43f9ab7e49cb395cba91ec6a", + "9300f67fe04f21454a96bb14f6f0b8a059d8e00d", "testharness" ], "media-source/import_tests.sh": [ @@ -651396,7 +651641,7 @@ "manual" ], "mediacapture-depth/idlharness.html": [ - "1afc6e5a05b2b8e0a288e7b680cf2920bdd1c525", + "963229aaca31dd8b92a07e1bb1da4c3eace7ad5b", "testharness" ], "mediacapture-fromelement/META.yml": [ @@ -651712,7 +651957,7 @@ "testharness" ], "mediacapture-streams/idlharness.https.window.js": [ - "5b255fca6b0b770ab6f849afe5d657c66052215a", + "594e1121b005ea3cd7ef1f30aa15fbed07dff1a4", "testharness" ], "mediasession/META.yml": [ @@ -661356,7 +661601,7 @@ "manual" ], "orientation-event/idlharness.https.window.js": [ - "ed8309d6480eaaec45e986a3391854d67b01ba2d", + "55cfed9276b480d7f70c616fa8d815f6ec925d66", "testharness" ], "orientation-event/ondeviceorientationabsolute.https.html": [ @@ -662324,7 +662569,7 @@ "support" ], "permissions/interfaces.any.js": [ - "b93453886930679c557a5c4a01651150b82670d9", + "ff0a969badace39c3c4466c4528e30c21355e132", "testharness" ], "permissions/test-background-fetch-permission.html": [ @@ -672692,7 +672937,7 @@ "testharness" ], "requestidlecallback/idlharness.window.js": [ - "2c9f6593208a4070d590fd81854ee78c5d20ce4d", + "69cd5a49b0432a65db9da267248a6f97d93cd0b9", "testharness" ], "requestidlecallback/resources/post_name_on_load.html": [ @@ -674264,7 +674509,7 @@ "testharness" ], "server-timing/idlharness.https.any.js": [ - "9c101e0f4cf2c5ef0196ac18342c8329755f794e", + "ded320f0f61f4de1132d5cfb76a7e74a16154f3c", "testharness" ], "server-timing/navigation_timing_idl.https.html": [ @@ -675736,7 +675981,7 @@ "testharness" ], "service-workers/service-worker/interfaces-sw.https.html": [ - "73ffb28b36ea38b7230a7042feb444fde0bcf2e9", + "7bff6ac107e3de0ae1207f477b9f940ad404cd21", "testharness" ], "service-workers/service-worker/interfaces-window.https.html": [ @@ -676676,7 +676921,7 @@ "support" ], "service-workers/service-worker/resources/interfaces-worker.sub.js": [ - "56bc8af445d5e7900b4573c35e6d680eff16c671", + "ac79ddc005688affe9acc67b83f43ef304f81c81", "support" ], "service-workers/service-worker/resources/invalid-blobtype-iframe.https.html": [ @@ -679252,7 +679497,7 @@ "testharness" ], "streams/writable-streams/aborting.any.js": [ - "ea47a55fa9ff61cdc2f0ac3caca1e98c7b2c719d", + "2f806464e1fdc40ab281062336f8b80a32c9d1ad", "testharness" ], "streams/writable-streams/bad-strategies.any.js": [ @@ -679264,7 +679509,7 @@ "testharness" ], "streams/writable-streams/brand-checks.any.js": [ - "66296ab3d356446b95b3b5aef30026a31a8eb092", + "17179e7936eda23a284e447bf9b877270016931d", "testharness" ], "streams/writable-streams/byte-length-queuing-strategy.any.js": [ @@ -679272,7 +679517,7 @@ "testharness" ], "streams/writable-streams/close.any.js": [ - "284bb16e1f5c6dca8e3657b85c42193f52ef3ac2", + "0762b83e5d1476c5e70d89957e784fc9d2f80cd0", "testharness" ], "streams/writable-streams/constructor.any.js": [ @@ -679296,7 +679541,7 @@ "testharness" ], "streams/writable-streams/properties.any.js": [ - "b991795a1898e9b1d479d1497009b889f0d786ce", + "81b40683c8b3cab4719ca53ac974c83548dca7ae", "testharness" ], "streams/writable-streams/reentrant-strategy.any.js": [ @@ -679783,6 +680028,10 @@ "40aa3461866cf4c32316d86216dcfe4298be7718", "testharness" ], + "svg/animations/spaces-at-end-of-path-data.html": [ + "235259beccadb2a7d52097918dbde91c07a49b5e", + "testharness" + ], "svg/animations/svgangle-animation-deg-to-grad.html": [ "7a8146336879a8dccaf8e663d7556e408a8e0048", "testharness" @@ -683239,6 +683488,14 @@ "b05a69f10b9e3614f7a588998ea06879df437da7", "testharness" ], + "svg/pservers/parsing/stop-color-invalid.svg": [ + "4eee5444867f6670155327d357dbe3feaea3b309", + "testharness" + ], + "svg/pservers/parsing/stop-color-valid.svg": [ + "80d6c23b83c35f6dfdbff49cce6fedd9066c77bd", + "testharness" + ], "svg/pservers/parsing/stop-opacity-computed.svg": [ "1ad1e98c5a84ebad5e0129164e0d5616b72e36fc", "testharness" @@ -689520,7 +689777,7 @@ "support" ], "tools/wptrunner/wptrunner/executors/executorwebdriver.py": [ - "898447df6f5b8059a209863f6b4f15f326ebd850", + "99d46108eb0ca8f21bed854a7c1fb3278e5e7351", "support" ], "tools/wptrunner/wptrunner/executors/executorwebkit.py": [ @@ -689736,7 +689993,7 @@ "support" ], "tools/wptrunner/wptrunner/webdriver_server.py": [ - "be991701434c3e693994ef4d274bd53f81a41439", + "8b711272c7befe890fab4824868118fc13275eca", "support" ], "tools/wptrunner/wptrunner/wptcommandline.py": [ @@ -695368,11 +695625,15 @@ "wdspec" ], "webdriver/tests/take_element_screenshot/__init__.py": [ - "cf3b21905b774d55e7aed660fd232d60a7f99973", + "9de8792460797f4a31ee50d112c7132a2c2714ad", "support" ], + "webdriver/tests/take_element_screenshot/iframe.py": [ + "d081a14cdeb56d43ee7d10e5b3ec23a53c98bedc", + "wdspec" + ], "webdriver/tests/take_element_screenshot/screenshot.py": [ - "35a1ffe75f042b6e2a995cf980ecaa19e97590e3", + "fd460b656ae307a289174f9180ecc9ed23f0da07", "wdspec" ], "webdriver/tests/take_element_screenshot/user_prompts.py": [ @@ -695380,11 +695641,15 @@ "wdspec" ], "webdriver/tests/take_screenshot/__init__.py": [ - "fe057a4932ef8202a685d4b580e6c49d67a40c1d", + "c07f8d167030d03abbb263ef08d8846bb7a71eba", "support" ], + "webdriver/tests/take_screenshot/iframe.py": [ + "5206f2fa1736f118e5a4b06906325da0e06158b3", + "wdspec" + ], "webdriver/tests/take_screenshot/screenshot.py": [ - "07879530120dfbf8203fe8c4827d2bf36fb3eedb", + "ca6e0272637d6b43413a733725299655858b4367", "wdspec" ], "webdriver/tests/take_screenshot/user_prompts.py": [ @@ -695528,7 +695793,7 @@ "support" ], "webgpu/framework/version.js": [ - "b9ec1b4f9f36069cd843e2f275723c9000a849fb", + "9be025609f36ae16b7395de98c355f6872a9d660", "support" ], "webgpu/runtime/wpt.js": [ @@ -695572,11 +695837,11 @@ "support" ], "webgpu/suites/cts/command_buffer/render/basic.spec.js": [ - "bb201dbe846a7113b32dbeb4b2c3cbe5ba39e8b5", + "83bb026d963d105e3e73ae118664d9951d246710", "support" ], "webgpu/suites/cts/command_buffer/render/rendering.spec.js": [ - "762285d1bcccc81f5b7c4a389cf16523451f5927", + "c8a7d7f5738b6efd199e96fadb937a64bd603d99", "support" ], "webgpu/suites/cts/examples.spec.js": [ @@ -701520,7 +701785,7 @@ "support" ], "workers/README.md": [ - "b78a05ebdbe81f7a5d46082ccfa2fed771fe63b1", + "58ee7cca1ab3e9856e380eaccde042d5700c2603", "support" ], "workers/SharedWorker-MessageEvent-source.any.js": [ @@ -702179,10 +702444,6 @@ "04c63a3a5f6d9bd3b71d94142f65a1825358b8ed", "testharness" ], - "workers/interfaces.worker.js": [ - "fc9f3606faee5aa65ceeae002e2c8398a4092109", - "testharness" - ], "workers/interfaces/DedicatedWorkerGlobalScope/EventTarget.worker.js": [ "954c46c07ecabc47c3c79dadc1052e13382f66e1", "testharness" 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 deleted file mode 100644 index e6e1f29e274..00000000000 --- a/tests/wpt/metadata/css/cssom-view/matchMedia-display-none-iframe.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[matchMedia-display-none-iframe.html] - expected: ERROR diff --git a/tests/wpt/metadata/dom/idlharness.any.js.ini b/tests/wpt/metadata/dom/idlharness.any.js.ini new file mode 100644 index 00000000000..8e43fa29136 --- /dev/null +++ b/tests/wpt/metadata/dom/idlharness.any.js.ini @@ -0,0 +1,131 @@ +[idlharness.any.worker.html] + [AbortController interface: existence and properties of interface prototype object's @@unscopables property] + expected: FAIL + + [Event interface: new CustomEvent("foo") must inherit property "srcElement" with the proper type] + expected: FAIL + + [Event interface: new Event("foo") must inherit property "composed" with the proper type] + expected: FAIL + + [EventTarget interface: new AbortController().signal must inherit property "addEventListener(DOMString, EventListener, [object Object\],[object Object\])" with the proper type] + expected: FAIL + + [Event interface: operation composedPath()] + expected: FAIL + + [AbortSignal must be primary interface of new AbortController().signal] + expected: FAIL + + [AbortController interface object name] + expected: FAIL + + [Event interface: new Event("foo") must inherit property "srcElement" with the proper type] + expected: FAIL + + [Event interface: attribute composed] + expected: FAIL + + [AbortSignal interface: existence and properties of interface prototype object's @@unscopables property] + expected: FAIL + + [AbortController interface: existence and properties of interface prototype object] + expected: FAIL + + [Stringification of new AbortController().signal] + expected: FAIL + + [AbortSignal interface: existence and properties of interface object] + expected: FAIL + + [CustomEvent interface: operation initCustomEvent(DOMString, boolean, boolean, any)] + expected: FAIL + + [EventTarget interface: new AbortController().signal must inherit property "removeEventListener(DOMString, EventListener, [object Object\],[object Object\])" with the proper type] + expected: FAIL + + [EventTarget interface: new AbortController().signal must inherit property "dispatchEvent(Event)" with the proper type] + expected: FAIL + + [Event interface: attribute srcElement] + expected: FAIL + + [EventTarget interface: calling addEventListener(DOMString, EventListener, [object Object\],[object Object\]) on new AbortController().signal with too few arguments must throw TypeError] + expected: FAIL + + [AbortSignal interface: new AbortController().signal must inherit property "aborted" with the proper type] + expected: FAIL + + [AbortSignal interface object name] + expected: FAIL + + [AbortSignal interface: existence and properties of interface prototype object] + expected: FAIL + + [Event interface: new CustomEvent("foo") must inherit property "composed" with the proper type] + expected: FAIL + + [Stringification of new AbortController()] + expected: FAIL + + [AbortController interface: new AbortController() must inherit property "signal" with the proper type] + expected: FAIL + + [AbortController interface: operation abort()] + expected: FAIL + + [AbortController interface: existence and properties of interface object] + expected: FAIL + + [AbortSignal interface: existence and properties of interface prototype object's "constructor" property] + expected: FAIL + + [AbortController interface: new AbortController() must inherit property "abort()" with the proper type] + expected: FAIL + + [AbortSignal interface: attribute aborted] + expected: FAIL + + [AbortController interface: attribute signal] + expected: FAIL + + [AbortSignal interface: new AbortController().signal must inherit property "onabort" with the proper type] + expected: FAIL + + [Event interface: new CustomEvent("foo") must inherit property "composedPath()" with the proper type] + expected: FAIL + + [AbortController interface: existence and properties of interface prototype object's "constructor" property] + expected: FAIL + + [EventTarget interface: calling removeEventListener(DOMString, EventListener, [object Object\],[object Object\]) on new AbortController().signal with too few arguments must throw TypeError] + expected: FAIL + + [AbortSignal interface: attribute onabort] + expected: FAIL + + [AbortController interface object length] + expected: FAIL + + [AbortSignal interface object length] + expected: FAIL + + [EventTarget interface: calling dispatchEvent(Event) on new AbortController().signal with too few arguments must throw TypeError] + expected: FAIL + + [Event interface: new Event("foo") must inherit property "composedPath()" with the proper type] + expected: FAIL + + [AbortController must be primary interface of new AbortController()] + expected: FAIL + + +[idlharness.any.sharedworker.html] + [idlharness] + expected: FAIL + + +[idlharness.any.serviceworker.html] + [idlharness] + expected: FAIL + diff --git a/tests/wpt/metadata/dom/idlharness.window.js.ini b/tests/wpt/metadata/dom/idlharness.window.js.ini new file mode 100644 index 00000000000..4731be73de9 --- /dev/null +++ b/tests/wpt/metadata/dom/idlharness.window.js.ini @@ -0,0 +1,543 @@ +[idlharness.window.html?include=Node] + [Node interface: calling isSameNode(Node) on document.querySelector("[id\]").attributes[0\] with too few arguments must throw TypeError] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "TEXT_NODE" with the proper type] + expected: FAIL + + [Node interface: calling removeChild(Node) on document.querySelector("[id\]").attributes[0\] with too few arguments must throw TypeError] + expected: FAIL + + [Node interface: calling isEqualNode(Node) on document.querySelector("[id\]").attributes[0\] with too few arguments must throw TypeError] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "lookupPrefix(DOMString)" with the proper type] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "nextSibling" with the proper type] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "isSameNode(Node)" with the proper type] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "nodeType" with the proper type] + expected: FAIL + + [Node interface: calling replaceChild(Node, Node) on document.querySelector("[id\]").attributes[0\] with too few arguments must throw TypeError] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "DOCUMENT_POSITION_FOLLOWING" with the proper type] + expected: FAIL + + [Node interface: calling getRootNode(GetRootNodeOptions) on document.querySelector("[id\]").attributes[0\] with too few arguments must throw TypeError] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "cloneNode(boolean)" with the proper type] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "ENTITY_NODE" with the proper type] + expected: FAIL + + [Node interface: calling contains(Node) on document.querySelector("[id\]").attributes[0\] with too few arguments must throw TypeError] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "CDATA_SECTION_NODE" with the proper type] + expected: FAIL + + [Node interface: calling cloneNode(boolean) on document.querySelector("[id\]").attributes[0\] with too few arguments must throw TypeError] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "appendChild(Node)" with the proper type] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "parentNode" with the proper type] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC" with the proper type] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "removeChild(Node)" with the proper type] + expected: FAIL + + [Node interface: element must inherit property "isConnected" with the proper type] + expected: FAIL + + [Node interface: document.createComment("abc") must inherit property "isConnected" with the proper type] + expected: FAIL + + [Node interface: calling lookupPrefix(DOMString) on document.querySelector("[id\]").attributes[0\] with too few arguments must throw TypeError] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "PROCESSING_INSTRUCTION_NODE" with the proper type] + expected: FAIL + + [Node interface: new Document() must inherit property "isConnected" with the proper type] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "baseURI" with the proper type] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "DOCUMENT_POSITION_DISCONNECTED" with the proper type] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "compareDocumentPosition(Node)" with the proper type] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "replaceChild(Node, Node)" with the proper type] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "DOCUMENT_POSITION_PRECEDING" with the proper type] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "isEqualNode(Node)" with the proper type] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "COMMENT_NODE" with the proper type] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "ATTRIBUTE_NODE" with the proper type] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "DOCUMENT_POSITION_CONTAINS" with the proper type] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "DOCUMENT_NODE" with the proper type] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "childNodes" with the proper type] + expected: FAIL + + [Node interface: document.createTextNode("abc") must inherit property "isConnected" with the proper type] + expected: FAIL + + [Node interface: document.doctype must inherit property "isConnected" with the proper type] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "parentElement" with the proper type] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "isDefaultNamespace(DOMString)" with the proper type] + expected: FAIL + + [Node interface: calling isDefaultNamespace(DOMString) on document.querySelector("[id\]").attributes[0\] with too few arguments must throw TypeError] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "ownerDocument" with the proper type] + expected: FAIL + + [Node interface: calling appendChild(Node) on document.querySelector("[id\]").attributes[0\] with too few arguments must throw TypeError] + expected: FAIL + + [Node interface: calling insertBefore(Node, Node) on document.querySelector("[id\]").attributes[0\] with too few arguments must throw TypeError] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "ELEMENT_NODE" with the proper type] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "DOCUMENT_POSITION_CONTAINED_BY" with the proper type] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "lookupNamespaceURI(DOMString)" with the proper type] + expected: FAIL + + [Node interface: document.createDocumentFragment() must inherit property "isConnected" with the proper type] + expected: FAIL + + [Node interface: calling lookupNamespaceURI(DOMString) on document.querySelector("[id\]").attributes[0\] with too few arguments must throw TypeError] + expected: FAIL + + [Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "isConnected" with the proper type] + expected: FAIL + + [Node interface: xmlDoc must inherit property "isConnected" with the proper type] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "firstChild" with the proper type] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "normalize()" with the proper type] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "DOCUMENT_FRAGMENT_NODE" with the proper type] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "contains(Node)" with the proper type] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "getRootNode(GetRootNodeOptions)" with the proper type] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "DOCUMENT_TYPE_NODE" with the proper type] + expected: FAIL + + [Node interface: attribute isConnected] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "hasChildNodes()" with the proper type] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "isConnected" with the proper type] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "lastChild" with the proper type] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "previousSibling" with the proper type] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "insertBefore(Node, Node)" with the proper type] + expected: FAIL + + [Node interface: calling compareDocumentPosition(Node) on document.querySelector("[id\]").attributes[0\] with too few arguments must throw TypeError] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "ENTITY_REFERENCE_NODE" with the proper type] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "NOTATION_NODE" with the proper type] + expected: FAIL + + +[idlharness.window.html?exclude=Node] + [Event interface: new CustomEvent("foo") must inherit property "srcElement" with the proper type] + expected: FAIL + + [EventTarget interface: new AbortController().signal must inherit property "addEventListener(DOMString, EventListener, [object Object\],[object Object\])" with the proper type] + expected: FAIL + + [Text interface: document.createTextNode("abc") must inherit property "assignedSlot" with the proper type] + expected: FAIL + + [AbortSignal must be primary interface of new AbortController().signal] + expected: FAIL + + [Element interface: element must inherit property "assignedSlot" with the proper type] + expected: FAIL + + [StaticRange interface: existence and properties of interface prototype object] + expected: FAIL + + [AbortController interface object name] + expected: FAIL + + [Event interface: attribute composed] + expected: FAIL + + [Element interface: operation after([object Object\],[object Object\])] + expected: FAIL + + [Text interface: attribute assignedSlot] + expected: FAIL + + [AbortSignal interface: existence and properties of interface prototype object's @@unscopables property] + expected: FAIL + + [DOMTokenList interface: iterable<DOMString>] + expected: FAIL + + [Document interface: existence and properties of interface prototype object's @@unscopables property] + expected: FAIL + + [AbortSignal interface: existence and properties of interface object] + expected: FAIL + + [Element interface: attribute shadowRoot] + expected: FAIL + + [Element interface: operation append([object Object\],[object Object\])] + expected: FAIL + + [StaticRange interface object name] + expected: FAIL + + [Document interface: attribute origin] + expected: FAIL + + [Document interface: operation append([object Object\],[object Object\])] + expected: FAIL + + [EventTarget interface: new AbortController().signal must inherit property "removeEventListener(DOMString, EventListener, [object Object\],[object Object\])" with the proper type] + expected: FAIL + + [EventTarget interface: new AbortController().signal must inherit property "dispatchEvent(Event)" with the proper type] + expected: FAIL + + [EventTarget interface: calling addEventListener(DOMString, EventListener, [object Object\],[object Object\]) on new AbortController().signal with too few arguments must throw TypeError] + expected: FAIL + + [AbstractRange interface: attribute startContainer] + expected: FAIL + + [AbortSignal interface object name] + expected: FAIL + + [Event interface: new CustomEvent("foo") must inherit property "composed" with the proper type] + expected: FAIL + + [DOMTokenList interface: document.body.classList must inherit property "supports(DOMString)" with the proper type] + expected: FAIL + + [StaticRange interface: existence and properties of interface prototype object's "constructor" property] + expected: FAIL + + [Element interface: operation attachShadow(ShadowRootInit)] + expected: FAIL + + [Event interface: new CustomEvent("foo") must inherit property "composedPath()" with the proper type] + expected: FAIL + + [AbortController interface: operation abort()] + expected: FAIL + + [AbortController interface: existence and properties of interface object] + expected: FAIL + + [CharacterData interface: operation replaceWith([object Object\],[object Object\])] + expected: FAIL + + [AbortController interface: attribute signal] + expected: FAIL + + [EventTarget interface: document.querySelector("[id\]").attributes[0\] must inherit property "dispatchEvent(Event)" with the proper type] + expected: FAIL + + [Element interface: calling attachShadow(ShadowRootInit) on element with too few arguments must throw TypeError] + expected: FAIL + + [EventTarget interface: calling removeEventListener(DOMString, EventListener, [object Object\],[object Object\]) on new AbortController().signal with too few arguments must throw TypeError] + expected: FAIL + + [DocumentType interface: operation replaceWith([object Object\],[object Object\])] + expected: FAIL + + [StaticRange interface: existence and properties of interface object] + expected: FAIL + + [Event interface: new Event("foo") must inherit property "composedPath()" with the proper type] + expected: FAIL + + [AbortSignal interface: attribute aborted] + expected: FAIL + + [AbstractRange interface: existence and properties of interface prototype object] + expected: FAIL + + [Event interface: operation composedPath()] + expected: FAIL + + [EventTarget interface: calling dispatchEvent(Event) on document.querySelector("[id\]").attributes[0\] with too few arguments must throw TypeError] + expected: FAIL + + [AbstractRange interface: attribute endContainer] + expected: FAIL + + [Event interface: new Event("foo") must inherit property "srcElement" with the proper type] + expected: FAIL + + [AbortController must be primary interface of new AbortController()] + expected: FAIL + + [AbortController interface: existence and properties of interface prototype object's @@unscopables property] + expected: FAIL + + [EventTarget interface: document.querySelector("[id\]").attributes[0\] must inherit property "removeEventListener(DOMString, EventListener, [object Object\],[object Object\])" with the proper type] + expected: FAIL + + [CharacterData interface: operation remove()] + expected: FAIL + + [Event interface: attribute srcElement] + expected: FAIL + + [Range interface: existence and properties of interface object] + expected: FAIL + + [CharacterData interface: existence and properties of interface prototype object's @@unscopables property] + expected: FAIL + + [Element interface: element must inherit property "attachShadow(ShadowRootInit)" with the proper type] + expected: FAIL + + [Element interface: element must inherit property "slot" with the proper type] + expected: FAIL + + [AbstractRange interface object length] + expected: FAIL + + [AbortController interface: new AbortController() must inherit property "signal" with the proper type] + expected: FAIL + + [DocumentType interface: operation before([object Object\],[object Object\])] + expected: FAIL + + [AbortSignal interface object length] + expected: FAIL + + [Window interface: attribute event] + expected: FAIL + + [AbortController interface: new AbortController() must inherit property "abort()" with the proper type] + expected: FAIL + + [AbstractRange interface: attribute collapsed] + expected: FAIL + + [AbstractRange interface: attribute startOffset] + expected: FAIL + + [Document interface: operation prepend([object Object\],[object Object\])] + expected: FAIL + + [DocumentType interface: existence and properties of interface prototype object's @@unscopables property] + expected: FAIL + + [AbortController interface object length] + expected: FAIL + + [Range interface: existence and properties of interface prototype object] + expected: FAIL + + [Element interface: operation before([object Object\],[object Object\])] + expected: FAIL + + [AbstractRange interface: existence and properties of interface prototype object's "constructor" property] + expected: FAIL + + [DOMTokenList interface: operation supports(DOMString)] + expected: FAIL + + [EventTarget interface: calling dispatchEvent(Event) on new AbortController().signal with too few arguments must throw TypeError] + expected: FAIL + + [AbstractRange interface: existence and properties of interface object] + expected: FAIL + + [AbortController interface: existence and properties of interface prototype object] + expected: FAIL + + [CustomEvent interface: operation initCustomEvent(DOMString, boolean, boolean, any)] + expected: FAIL + + [Element interface: attribute slot] + expected: FAIL + + [AbstractRange interface object name] + expected: FAIL + + [DocumentFragment interface: existence and properties of interface prototype object's @@unscopables property] + expected: FAIL + + [AbortSignal interface: new AbortController().signal must inherit property "aborted" with the proper type] + expected: FAIL + + [Element interface: operation prepend([object Object\],[object Object\])] + expected: FAIL + + [Event interface: document.createEvent("Event") must inherit property "composedPath()" with the proper type] + expected: FAIL + + [DOMTokenList interface: calling supports(DOMString) on document.body.classList with too few arguments must throw TypeError] + expected: FAIL + + [StaticRange interface object length] + expected: FAIL + + [DocumentType interface: operation after([object Object\],[object Object\])] + expected: FAIL + + [AbortSignal interface: existence and properties of interface prototype object's "constructor" property] + expected: FAIL + + [EventTarget interface: calling addEventListener(DOMString, EventListener, [object Object\],[object Object\]) on document.querySelector("[id\]").attributes[0\] with too few arguments must throw TypeError] + expected: FAIL + + [Document interface: xmlDoc must inherit property "origin" with the proper type] + expected: FAIL + + [AbortSignal interface: new AbortController().signal must inherit property "onabort" with the proper type] + expected: FAIL + + [AbortController interface: existence and properties of interface prototype object's "constructor" property] + expected: FAIL + + [AbortSignal interface: attribute onabort] + expected: FAIL + + [EventTarget interface: calling removeEventListener(DOMString, EventListener, [object Object\],[object Object\]) on document.querySelector("[id\]").attributes[0\] with too few arguments must throw TypeError] + expected: FAIL + + [AbortSignal interface: existence and properties of interface prototype object] + expected: FAIL + + [Event interface: new Event("foo") must inherit property "composed" with the proper type] + expected: FAIL + + [NodeFilter interface: existence and properties of interface object] + expected: FAIL + + [Element interface: attribute assignedSlot] + expected: FAIL + + [Element interface: operation remove()] + expected: FAIL + + [AbstractRange interface: existence and properties of interface prototype object's @@unscopables property] + expected: FAIL + + [Stringification of new AbortController().signal] + expected: FAIL + + [DocumentFragment interface: operation prepend([object Object\],[object Object\])] + expected: FAIL + + [DocumentFragment interface: operation append([object Object\],[object Object\])] + expected: FAIL + + [AbstractRange interface: attribute endOffset] + expected: FAIL + + [NodeList interface: iterable<Node>] + expected: FAIL + + [CharacterData interface: operation before([object Object\],[object Object\])] + expected: FAIL + + [EventTarget interface: document.querySelector("[id\]").attributes[0\] must inherit property "addEventListener(DOMString, EventListener, [object Object\],[object Object\])" with the proper type] + expected: FAIL + + [Stringification of new AbortController()] + expected: FAIL + + [CharacterData interface: operation after([object Object\],[object Object\])] + expected: FAIL + + [StaticRange interface: existence and properties of interface prototype object's @@unscopables property] + expected: FAIL + + [Event interface: document.createEvent("Event") must inherit property "composed" with the proper type] + expected: FAIL + + [Attr interface: existence and properties of interface object] + expected: FAIL + + [DocumentType interface: operation remove()] + expected: FAIL + + [Document interface: new Document() must inherit property "origin" with the proper type] + expected: FAIL + + [Element interface: existence and properties of interface prototype object's @@unscopables property] + expected: FAIL + + [Attr interface: existence and properties of interface prototype object] + expected: FAIL + + [Event interface: document.createEvent("Event") must inherit property "srcElement" with the proper type] + expected: FAIL + + [Element interface: operation replaceWith([object Object\],[object Object\])] + expected: FAIL + + [Element interface: element must inherit property "shadowRoot" with the proper type] + expected: FAIL + diff --git a/tests/wpt/metadata/dom/nodes/aria-element-reflection.tentative.html.ini b/tests/wpt/metadata/dom/nodes/aria-element-reflection.tentative.html.ini new file mode 100644 index 00000000000..606c3e6418e --- /dev/null +++ b/tests/wpt/metadata/dom/nodes/aria-element-reflection.tentative.html.ini @@ -0,0 +1,28 @@ +[aria-element-reflection.tentative.html] + [aria-activedescendant element reflection] + expected: FAIL + + [Deleting a reflected element should return null for the IDL attribute and cause the content attribute to become stale.] + expected: FAIL + + [If the content attribute is set directly, the IDL attribute getter always returns the first element whose ID matches the content attribute.] + expected: FAIL + + [Changing the ID of an element causes the content attribute to become out of sync.] + expected: FAIL + + [aria-errormessage] + expected: FAIL + + [Setting an element reference that crosses into a shadow tree is disallowed, but setting one that is in a shadow inclusive ancestor is allowed.] + expected: FAIL + + [Setting the IDL attribute to an element which is not the first element in DOM order with its ID causes the content attribute to be an empty string] + expected: FAIL + + [aria-details] + expected: FAIL + + [Reparenting an element into a descendant shadow scope nullifies the element reference.] + expected: FAIL + diff --git a/tests/wpt/metadata/fetch/content-type/response.window.js.ini b/tests/wpt/metadata/fetch/content-type/response.window.js.ini index 14a49ab586d..72cf300d494 100644 --- a/tests/wpt/metadata/fetch/content-type/response.window.js.ini +++ b/tests/wpt/metadata/fetch/content-type/response.window.js.ini @@ -315,18 +315,12 @@ [<iframe>: combined response Content-Type: text/html */*] expected: FAIL - [<iframe>: separate response Content-Type: text/html;x=" text/plain] + [<iframe>: separate response Content-Type: text/html */*] expected: FAIL - [<iframe>: separate response Content-Type: text/html;" \\" text/plain] + [<iframe>: separate response Content-Type: text/plain */*] expected: FAIL - [<iframe>: combined response Content-Type: text/html;" text/plain] - expected: FAIL - - [<iframe>: combined response Content-Type: */* text/html] - expected: FAIL - - [<iframe>: combined response Content-Type: text/html */*;charset=gbk] + [<iframe>: combined response Content-Type: text/html;" \\" text/plain] expected: FAIL diff --git a/tests/wpt/metadata/fetch/content-type/script.window.js.ini b/tests/wpt/metadata/fetch/content-type/script.window.js.ini index b4bec16ae8a..279734168dc 100644 --- a/tests/wpt/metadata/fetch/content-type/script.window.js.ini +++ b/tests/wpt/metadata/fetch/content-type/script.window.js.ini @@ -56,9 +56,6 @@ [separate text/javascript x/x] expected: FAIL - [separate text/javascript;charset=windows-1252 error text/javascript] - expected: FAIL - - [separate text/javascript; charset=windows-1252 text/javascript] + [separate text/javascript;charset=windows-1252 text/javascript] expected: FAIL diff --git a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini index 48331a02f78..87c807a49ff 100644 --- a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini +++ b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini @@ -11,9 +11,3 @@ [X-Content-Type-Options%3A%20nosniff%0C] expected: FAIL - [X-Content-Type-Options%3A%0D%0AX-Content-Type-Options%3A%20nosniff] - expected: FAIL - - [X-Content-Type-Options%3A%20'NosniFF'] - expected: FAIL - diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_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_5.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini deleted file mode 100644 index dc2e45516de..00000000000 --- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[traverse_the_history_5.html] - [Multiple history traversals, last would be aborted] - expected: FAIL - diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini index 16fa2c5cfc1..dec4c579137 100644 --- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini +++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini @@ -1,4 +1,5 @@ [creating_browsing_context_test_01.html] + expected: TIMEOUT [first argument: absolute url] - expected: FAIL + expected: TIMEOUT diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-innerwidth-innerheight.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-innerwidth-innerheight.html.ini index bf50d59df41..e02f179ec25 100644 --- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-innerwidth-innerheight.html.ini +++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-innerwidth-innerheight.html.ini @@ -1,5 +1,24 @@ [open-features-negative-innerwidth-innerheight.html] type: testharness + expected: TIMEOUT [HTML: window.open `features`: negative values for legacy `innerwidth`, `innerheight`] expected: FAIL + [features "innerheight=-404.5" should NOT set "height=404"] + expected: TIMEOUT + + [features "innerwidth=-404.5" should NOT set "width=404"] + expected: TIMEOUT + + [features "innerwidth=-404" should NOT set "width=404"] + expected: TIMEOUT + + [features "innerheight=-404e1" should NOT set "height=404"] + expected: TIMEOUT + + [features "innerheight=-404" should NOT set "height=404"] + expected: TIMEOUT + + [features "innerwidth=-404e1" should NOT set "width=404"] + expected: TIMEOUT + diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-screenx-screeny.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-screenx-screeny.html.ini index e150c9d848f..23eefb8eaf9 100644 --- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-screenx-screeny.html.ini +++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-screenx-screeny.html.ini @@ -1,5 +1,24 @@ [open-features-negative-screenx-screeny.html] type: testharness + expected: TIMEOUT [HTML: window.open `features`: negative values for legacy `screenx`, `screeny`] expected: FAIL + [features "screenx=-204" should NOT set "left=204"] + expected: TIMEOUT + + [features "screeny=-204" should NOT set "top=204"] + expected: TIMEOUT + + [features "screeny=-204.5" should NOT set "top=204"] + expected: TIMEOUT + + [features "screeny=-0" should NOT set "top=204"] + expected: TIMEOUT + + [features "screenx=-0" should NOT set "left=204"] + expected: TIMEOUT + + [features "screenx=-204.5" should NOT set "left=204"] + expected: TIMEOUT + diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-top-left.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-top-left.html.ini index ad8840fbb68..940516ddd33 100644 --- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-top-left.html.ini +++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-top-left.html.ini @@ -1,5 +1,24 @@ [open-features-negative-top-left.html] type: testharness + expected: TIMEOUT [HTML: window.open `features`: negative values for `top`, `left`] expected: FAIL + [features "top=-204" should NOT set "top=204"] + expected: TIMEOUT + + [features "top=-204.5" should NOT set "top=204"] + expected: TIMEOUT + + [features "left=-204" should NOT set "left=204"] + expected: TIMEOUT + + [features "top=-0" should NOT set "top=204"] + expected: TIMEOUT + + [features "left=-204.5" should NOT set "left=204"] + expected: TIMEOUT + + [features "left=-0" should NOT set "left=204"] + expected: TIMEOUT + diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-width-height.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-width-height.html.ini index d1ed9088b2b..9027336b453 100644 --- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-width-height.html.ini +++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-width-height.html.ini @@ -1,5 +1,24 @@ [open-features-negative-width-height.html] type: testharness + expected: TIMEOUT [HTML: window.open `features`: negative values for `width`, `height`] expected: FAIL + [features "height=-404" should NOT set "height=404"] + expected: TIMEOUT + + [features "height=-404e1" should NOT set "height=404"] + expected: TIMEOUT + + [features "height=-404.5" should NOT set "height=404"] + expected: TIMEOUT + + [features "width=-404" should NOT set "width=404"] + expected: TIMEOUT + + [features "width=-404e1" should NOT set "width=404"] + expected: TIMEOUT + + [features "width=-404.5" should NOT set "width=404"] + expected: TIMEOUT + diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-height.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-height.html.ini index a70e9dbad4d..4e44584b123 100644 --- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-height.html.ini +++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-height.html.ini @@ -1,32 +1,48 @@ [open-features-non-integer-height.html] type: testharness + expected: TIMEOUT [HTML: window.open `features`: non-integer values for feature `height`] expected: FAIL [features "height=405*3" should set "height=405"] - expected: FAIL + expected: TIMEOUT [features "height=405.32" should set "height=405"] - expected: FAIL + expected: TIMEOUT [features "height=405e1" should set "height=405"] - expected: FAIL + expected: TIMEOUT [features "height=405/5" should set "height=405"] - expected: FAIL + expected: TIMEOUT [features "height=405^4" should set "height=405"] - expected: FAIL + expected: TIMEOUT [features "height=405.5" should set "height=405"] - expected: FAIL + expected: TIMEOUT [features "height=405e-1" should set "height=405"] - expected: FAIL + expected: TIMEOUT [features "height=405 " should set "height=405"] - expected: FAIL + expected: TIMEOUT [features "height=405LLl" should set "height=405"] - expected: FAIL + expected: TIMEOUT + + [features "height=/404" should NOT set "height=404"] + expected: TIMEOUT + + [top=0,left=0,width=401,: absence of feature "height" should be treated same as "height=0"] + expected: TIMEOUT + + [top=0,left=0: absence of feature "height" should be treated same as "height=0"] + expected: TIMEOUT + + [features "height=_404" should NOT set "height=404"] + expected: TIMEOUT + + [features "height=L404" should NOT set "height=404"] + expected: TIMEOUT diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerheight.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerheight.html.ini index 779531b4a98..fcaeae5336d 100644 --- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerheight.html.ini +++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerheight.html.ini @@ -1,32 +1,42 @@ [open-features-non-integer-innerheight.html] type: testharness + expected: TIMEOUT [HTML: window.open `features`: non-integer values for legacy feature `innerheight`] expected: FAIL [features "innerheight=405e-1" should set "height=405"] - expected: FAIL + expected: TIMEOUT [features "innerheight=405LLl" should set "height=405"] - expected: FAIL + expected: TIMEOUT [features "innerheight=405^4" should set "height=405"] - expected: FAIL + expected: TIMEOUT [features "innerheight=405e1" should set "height=405"] - expected: FAIL + expected: TIMEOUT [features "innerheight=405 " should set "height=405"] - expected: FAIL + expected: TIMEOUT [features "innerheight=405/5" should set "height=405"] - expected: FAIL + expected: TIMEOUT [features "innerheight=405.32" should set "height=405"] - expected: FAIL + expected: TIMEOUT [features "innerheight=405.5" should set "height=405"] - expected: FAIL + expected: TIMEOUT [features "innerheight=405*3" should set "height=405"] - expected: FAIL + expected: TIMEOUT + + [features "innerheight=_404" should NOT set "height=404"] + expected: TIMEOUT + + [features "innerheight=L404" should NOT set "height=404"] + expected: TIMEOUT + + [features "innerheight=/404" should NOT set "height=404"] + expected: TIMEOUT diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerwidth.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerwidth.html.ini index 7a1b258d52e..42327fedd27 100644 --- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerwidth.html.ini +++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerwidth.html.ini @@ -1,32 +1,42 @@ [open-features-non-integer-innerwidth.html] type: testharness + expected: TIMEOUT [HTML: window.open `features`: non-integer values for legacy feature `innerwidth`] expected: FAIL [features "innerwidth=405e-1" should set "width=405"] - expected: FAIL + expected: TIMEOUT [features "innerwidth=405*3" should set "width=405"] - expected: FAIL + expected: TIMEOUT [features "innerwidth=405.5" should set "width=405"] - expected: FAIL + expected: TIMEOUT [features "innerwidth=405e1" should set "width=405"] - expected: FAIL + expected: TIMEOUT [features "innerwidth=405.32" should set "width=405"] - expected: FAIL + expected: TIMEOUT [features "innerwidth=405 " should set "width=405"] - expected: FAIL + expected: TIMEOUT [features "innerwidth=405LLl" should set "width=405"] - expected: FAIL + expected: TIMEOUT [features "innerwidth=405/5" should set "width=405"] - expected: FAIL + expected: TIMEOUT [features "innerwidth=405^4" should set "width=405"] - expected: FAIL + expected: TIMEOUT + + [features "innerwidth=/404" should NOT set "width=404"] + expected: TIMEOUT + + [features "innerwidth=_404" should NOT set "width=404"] + expected: TIMEOUT + + [features "innerwidth=L404" should NOT set "width=404"] + expected: TIMEOUT diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-left.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-left.html.ini index caba4124f0b..a8e4fe06618 100644 --- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-left.html.ini +++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-left.html.ini @@ -1,32 +1,42 @@ [open-features-non-integer-left.html] type: testharness + expected: TIMEOUT [HTML: window.open `features`: non-integer values for feature `left`] expected: FAIL [features "left=105e1" should set "left=105"] - expected: FAIL + expected: TIMEOUT [features "left=105 " should set "left=105"] - expected: FAIL + expected: TIMEOUT [features "left=105/5" should set "left=105"] - expected: FAIL + expected: TIMEOUT [features "left=105e-1" should set "left=105"] - expected: FAIL + expected: TIMEOUT [features "left=105^4" should set "left=105"] - expected: FAIL + expected: TIMEOUT [features "left=105LLl" should set "left=105"] - expected: FAIL + expected: TIMEOUT [features "left=105.32" should set "left=105"] - expected: FAIL + expected: TIMEOUT [features "left=105*3" should set "left=105"] - expected: FAIL + expected: TIMEOUT [features "left=105.5" should set "left=105"] - expected: FAIL + expected: TIMEOUT + + [features "left=L104" should NOT set "left=104"] + expected: TIMEOUT + + [features "left=/104" should NOT set "left=104"] + expected: TIMEOUT + + [features "left=_104" should NOT set "left=104"] + expected: TIMEOUT diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screenx.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screenx.html.ini index 9ace8a4cbdb..64a08faf0e6 100644 --- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screenx.html.ini +++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screenx.html.ini @@ -1,32 +1,42 @@ [open-features-non-integer-screenx.html] type: testharness + expected: TIMEOUT [HTML: window.open `features`: non-integer values for legacy feature `screenx`] expected: FAIL [features "screenx=105.5" should set "left=105"] - expected: FAIL + expected: TIMEOUT [features "screenx=105e1" should set "left=105"] - expected: FAIL + expected: TIMEOUT [features "screenx=105 " should set "left=105"] - expected: FAIL + expected: TIMEOUT [features "screenx=105*3" should set "left=105"] - expected: FAIL + expected: TIMEOUT [features "screenx=105e-1" should set "left=105"] - expected: FAIL + expected: TIMEOUT [features "screenx=105^4" should set "left=105"] - expected: FAIL + expected: TIMEOUT [features "screenx=105LLl" should set "left=105"] - expected: FAIL + expected: TIMEOUT [features "screenx=105/5" should set "left=105"] - expected: FAIL + expected: TIMEOUT [features "screenx=105.32" should set "left=105"] - expected: FAIL + expected: TIMEOUT + + [features "screenx=_104" should NOT set "left=104"] + expected: TIMEOUT + + [features "screenx=L104" should NOT set "left=104"] + expected: TIMEOUT + + [features "screenx=/104" should NOT set "left=104"] + expected: TIMEOUT diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screeny.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screeny.html.ini index a82bd0f981a..4f22ef4ef29 100644 --- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screeny.html.ini +++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screeny.html.ini @@ -1,32 +1,42 @@ [open-features-non-integer-screeny.html] type: testharness + expected: TIMEOUT [HTML: window.open `features`: non-integer values for legacy feature `screeny`] expected: FAIL [features "screeny=405^4" should set "height=405"] - expected: FAIL + expected: TIMEOUT [features "screeny=405e-1" should set "height=405"] - expected: FAIL + expected: TIMEOUT [features "screeny=405LLl" should set "height=405"] - expected: FAIL + expected: TIMEOUT [features "screeny=405e1" should set "height=405"] - expected: FAIL + expected: TIMEOUT [features "screeny=405 " should set "height=405"] - expected: FAIL + expected: TIMEOUT [features "screeny=405/5" should set "height=405"] - expected: FAIL + expected: TIMEOUT [features "screeny=405*3" should set "height=405"] - expected: FAIL + expected: TIMEOUT [features "screeny=405.32" should set "height=405"] - expected: FAIL + expected: TIMEOUT [features "screeny=405.5" should set "height=405"] - expected: FAIL + expected: TIMEOUT + + [features "screeny=_404" should NOT set "height=404"] + expected: TIMEOUT + + [features "screeny=L404" should NOT set "height=404"] + expected: TIMEOUT + + [features "screeny=/404" should NOT set "height=404"] + expected: TIMEOUT diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-width.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-width.html.ini index 28f93ee71b5..9d841e61bc0 100644 --- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-width.html.ini +++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-width.html.ini @@ -1,32 +1,48 @@ [open-features-non-integer-width.html] type: testharness + expected: TIMEOUT [HTML: window.open `features`: non-integer values for feature `width`] expected: FAIL [features "width=405^4" should set "width=405"] - expected: FAIL + expected: TIMEOUT [features "width=405.5" should set "width=405"] - expected: FAIL + expected: TIMEOUT [features "width=405e1" should set "width=405"] - expected: FAIL + expected: TIMEOUT [features "width=405 " should set "width=405"] - expected: FAIL + expected: TIMEOUT [features "width=405.32" should set "width=405"] - expected: FAIL + expected: TIMEOUT [features "width=405LLl" should set "width=405"] - expected: FAIL + expected: TIMEOUT [features "width=405*3" should set "width=405"] - expected: FAIL + expected: TIMEOUT [features "width=405e-1" should set "width=405"] - expected: FAIL + expected: TIMEOUT [features "width=405/5" should set "width=405"] - expected: FAIL + expected: TIMEOUT + + [top=0,left=0: absence of feature "width" should be treated same as "width=0"] + expected: TIMEOUT + + [features "width=_404" should NOT set "width=404"] + expected: TIMEOUT + + [top=0,left=0,height=401,: absence of feature "width" should be treated same as "width=0"] + expected: TIMEOUT + + [features "width=/404" should NOT set "width=404"] + expected: TIMEOUT + + [features "width=L404" should NOT set "width=404"] + expected: TIMEOUT diff --git a/tests/wpt/metadata/html/semantics/document-metadata/the-base-element/base_target_does_not_affect_iframe_src_navigation.html.ini b/tests/wpt/metadata/html/semantics/document-metadata/the-base-element/base_target_does_not_affect_iframe_src_navigation.html.ini new file mode 100644 index 00000000000..cf26762b950 --- /dev/null +++ b/tests/wpt/metadata/html/semantics/document-metadata/the-base-element/base_target_does_not_affect_iframe_src_navigation.html.ini @@ -0,0 +1,4 @@ +[base_target_does_not_affect_iframe_src_navigation.html] + [base_target_does_not_affect_iframe_src_navigation] + expected: FAIL + diff --git a/tests/wpt/metadata/html/semantics/document-metadata/the-base-element/base_target_does_not_affect_location_assignment.html.ini b/tests/wpt/metadata/html/semantics/document-metadata/the-base-element/base_target_does_not_affect_location_assignment.html.ini new file mode 100644 index 00000000000..6470ba6246c --- /dev/null +++ b/tests/wpt/metadata/html/semantics/document-metadata/the-base-element/base_target_does_not_affect_location_assignment.html.ini @@ -0,0 +1,4 @@ +[base_target_does_not_affect_location_assignment.html] + [base_target_does_not_affect_location_assignment] + expected: FAIL + diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini index 5f60c78e73c..b3bd9f4c289 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,6 +1,6 @@ [iframe_sandbox_popups_escaping-3.html] type: testharness - 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/syntax/parsing/DOMContentLoaded-defer.html.ini b/tests/wpt/metadata/html/syntax/parsing/DOMContentLoaded-defer.html.ini deleted file mode 100644 index a9677391662..00000000000 --- a/tests/wpt/metadata/html/syntax/parsing/DOMContentLoaded-defer.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[DOMContentLoaded-defer.html] - [The end: DOMContentLoaded and defer scripts] - expected: FAIL - diff --git a/tests/wpt/metadata/resource-timing/resource_TAO_origin.htm.ini b/tests/wpt/metadata/resource-timing/resource_TAO_origin.htm.ini index 5a549d938b6..5c59982f790 100644 --- a/tests/wpt/metadata/resource-timing/resource_TAO_origin.htm.ini +++ b/tests/wpt/metadata/resource-timing/resource_TAO_origin.htm.ini @@ -11,3 +11,6 @@ [The iframe should have one resource timing entry.] expected: FAIL + [responseEnd should not be 0 in timing-allow cross-origin request.] + expected: FAIL + diff --git a/tests/wpt/metadata/resource-timing/resource_TAO_zero.htm.ini b/tests/wpt/metadata/resource-timing/resource_TAO_zero.htm.ini index 494f0d4a752..aa36a14c6a6 100644 --- a/tests/wpt/metadata/resource-timing/resource_TAO_zero.htm.ini +++ b/tests/wpt/metadata/resource-timing/resource_TAO_zero.htm.ini @@ -20,3 +20,6 @@ [domainLookupStart should be 0 in cross-origin request.] expected: FAIL + [responseEnd should be greater than 0 in cross-origin request.] + 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/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini index 4c579c3a7b8..4a15eb13c69 100644 --- a/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini +++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini @@ -29,3 +29,9 @@ [X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[30\]\t1.9724091887474060e-1\t9.5236867666244507e-1\t7.5512775778770447e-1\t7.9289436569253091e-1\t3.8985999999999999e-3\n\t[60\]\t-2.2450675070285797e-1\t-5.8084785938262939e-1\t3.5634110867977142e-1\t6.1348441407448528e-1\t3.8985999999999999e-3\n\t[90\]\t-3.7808802723884583e-1\t-5.9811043739318848e-1\t2.2002241015434265e-1\t3.6786251568070089e-1\t3.8985999999999999e-3\n\t[120\]\t7.6881676912307739e-1\t9.4563448429107666e-1\t1.7681771516799927e-1\t1.8698315057805445e-1\t3.8985999999999999e-3\n\t[151\]\t5.4644601186737418e-4\t-4.1306272149085999e-2\t4.1852718160953373e-2\t1.0132291292202573e+0\t3.8985999999999999e-3\n\t...and 1419 more errors.\n\tMax AbsError of 2.0054797224906599e+28 at index of 20238.\n\t[20238\]\t-2.0054797224906599e+28\t-4.7574958205223083e-1\t2.0054797224906599e+28\t4.2154103716490195e+28\t3.8985999999999999e-3\n\tMax RelError of 4.2154103716490195e+28 at index of 20238.\n\t[20238\]\t-2.0054797224906599e+28\t-4.7574958205223083e-1\t2.0054797224906599e+28\t4.2154103716490195e+28\t3.8985999999999999e-3\n] expected: FAIL + [X SNR (-315.6690644748059 dB) is not greater than or equal to 65.737. Got -315.6690644748059.] + expected: FAIL + + [X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[30\]\t1.9724091887474060e-1\t9.5236867666244507e-1\t7.5512775778770447e-1\t7.9289436569253091e-1\t3.8985999999999999e-3\n\t[60\]\t-2.2450675070285797e-1\t-5.8084785938262939e-1\t3.5634110867977142e-1\t6.1348441407448528e-1\t3.8985999999999999e-3\n\t[90\]\t-3.7808802723884583e-1\t-5.9811043739318848e-1\t2.2002241015434265e-1\t3.6786251568070089e-1\t3.8985999999999999e-3\n\t[120\]\t7.6881676912307739e-1\t9.4563448429107666e-1\t1.7681771516799927e-1\t1.8698315057805445e-1\t3.8985999999999999e-3\n\t[151\]\t5.4644601186737418e-4\t-4.1306272149085999e-2\t4.1852718160953373e-2\t1.0132291292202573e+0\t3.8985999999999999e-3\n\t...and 1419 more errors.\n\tMax AbsError of 9.0185146037803418e+17 at index of 20238.\n\t[20238\]\t-9.0185146037803418e+17\t-4.7574958205223083e-1\t9.0185146037803418e+17\t1.8956432005420513e+18\t3.8985999999999999e-3\n\tMax RelError of 1.8956432005420513e+18 at index of 20238.\n\t[20238\]\t-9.0185146037803418e+17\t-4.7574958205223083e-1\t9.0185146037803418e+17\t1.8956432005420513e+18\t3.8985999999999999e-3\n] + expected: FAIL + diff --git a/tests/wpt/metadata/webdriver/tests/take_element_screenshot/iframe.py.ini b/tests/wpt/metadata/webdriver/tests/take_element_screenshot/iframe.py.ini new file mode 100644 index 00000000000..6a671eb554c --- /dev/null +++ b/tests/wpt/metadata/webdriver/tests/take_element_screenshot/iframe.py.ini @@ -0,0 +1,7 @@ +[iframe.py] + [test_source_origin[cross_origin\]] + expected: FAIL + + [test_source_origin[same_origin\]] + expected: FAIL + diff --git a/tests/wpt/metadata/webdriver/tests/take_screenshot/iframe.py.ini b/tests/wpt/metadata/webdriver/tests/take_screenshot/iframe.py.ini new file mode 100644 index 00000000000..47a61797028 --- /dev/null +++ b/tests/wpt/metadata/webdriver/tests/take_screenshot/iframe.py.ini @@ -0,0 +1,4 @@ +[iframe.py] + [test_source_origin[cross_origin\]] + expected: FAIL + 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/mozilla/meta/css/transition_calc_implicit.html.ini b/tests/wpt/mozilla/meta/css/transition_calc_implicit.html.ini deleted file mode 100644 index dbea4f293ad..00000000000 --- a/tests/wpt/mozilla/meta/css/transition_calc_implicit.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[transition_calc_implicit.html] - expected: TIMEOUT diff --git a/tests/wpt/web-platform-tests/.azure-pipelines.yml b/tests/wpt/web-platform-tests/.azure-pipelines.yml index 0776b1994f7..06fe7999246 100644 --- a/tests/wpt/web-platform-tests/.azure-pipelines.yml +++ b/tests/wpt/web-platform-tests/.azure-pipelines.yml @@ -305,7 +305,7 @@ jobs: - job: results_safari displayName: 'all tests: Safari' condition: | - or(eq(variables['Build.SourceBranch'], 'refs/heads/epochs/six_hourly'), + or(eq(variables['Build.SourceBranch'], 'refs/heads/epochs/daily'), and(eq(variables['Build.Reason'], 'Manual'), variables['run_all_safari'])) strategy: parallel: 5 # chosen to make runtime ~2h diff --git a/tests/wpt/web-platform-tests/audio-output/idlharness.https.window.js b/tests/wpt/web-platform-tests/audio-output/idlharness.https.window.js index f10e523bcdc..c13b167296d 100644 --- a/tests/wpt/web-platform-tests/audio-output/idlharness.https.window.js +++ b/tests/wpt/web-platform-tests/audio-output/idlharness.https.window.js @@ -5,20 +5,15 @@ 'use strict'; -promise_test(async () => { - const srcs = ['audio-output', 'dom', 'html']; - const [idl, dom, html] = await Promise.all( - srcs.map(i => fetch(`/interfaces/${i}.idl`).then(r => r.text()))); - - const idl_array = new IdlArray(); - idl_array.add_idls(idl); - idl_array.add_dependency_idls(html); - idl_array.add_dependency_idls(dom); - self.audio = document.createElement('audio'); - self.video = document.createElement('video'); - idl_array.add_objects({ - HTMLAudioElement: ['audio'], - HTMLVideoElement: ['video'] - }); - idl_array.test(); -}, 'Test IDL implementation of audio-output API'); +idl_test( + ['audio-output'], + ['html', 'dom'], + idl_array => { + self.audio = document.createElement('audio'); + self.video = document.createElement('video'); + idl_array.add_objects({ + HTMLAudioElement: ['audio'], + HTMLVideoElement: ['video'] + }); + } +); diff --git a/tests/wpt/web-platform-tests/beacon/idlharness.any.js b/tests/wpt/web-platform-tests/beacon/idlharness.any.js index 958daf4865d..bf267ab8bdc 100644 --- a/tests/wpt/web-platform-tests/beacon/idlharness.any.js +++ b/tests/wpt/web-platform-tests/beacon/idlharness.any.js @@ -3,15 +3,12 @@ // https://w3c.github.io/beacon/ -promise_test(async () => { - const idl = await fetch('/interfaces/beacon.idl').then(r => r.text()); - const html = await fetch('/interfaces/html.idl').then(r => r.text()); - - const idl_array = new IdlArray(); - idl_array.add_idls(idl); - idl_array.add_dependency_idls(html); - idl_array.add_objects({ - Navigator: ['navigator'], - }); - idl_array.test(); -}, 'beacon interfaces'); +idl_test( + ['beacon'], + ['html'], + idl_array => { + idl_array.add_objects({ + Navigator: ['navigator'], + }); + } +); diff --git a/tests/wpt/web-platform-tests/css/css-font-loading/font-face-reject.html b/tests/wpt/web-platform-tests/css/css-font-loading/font-face-reject.html new file mode 100644 index 00000000000..7b87a812132 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-font-loading/font-face-reject.html @@ -0,0 +1,18 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<link rel="author" title="Dominik Röttsches" href="drott@chromium.org"> +<link rel="help" href="https://drafts.csswg.org/css-font-loading/#font-face-load"> +<meta name="assert" content="Ensure that a UA triggered font load (through the use in the test div) leads to rejecting + the promise." /> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script> +promise_test(function(t) { + var testFontFace = new FontFace('TestFontFace', 'local("nonexistentfont-9a1a9f78-c8d4-11e9-af16-448a5b2c326f")'); + document.fonts.add(testFontFace); + return promise_rejects(t, 'NetworkError', testFontFace.loaded); +}) +</script> +<body> +<div style="font-family: TestFontFace;">a</div> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-inline/parsing/vertical-align-computed.html b/tests/wpt/web-platform-tests/css/css-inline/parsing/vertical-align-computed.html new file mode 100644 index 00000000000..24225084721 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-inline/parsing/vertical-align-computed.html @@ -0,0 +1,37 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>CSS Inline Layout: getComputedStyle().verticalAlign</title> +<link rel="help" href="https://www.w3.org/TR/CSS2/visudet.html#propdef-vertical-align"> +<link rel="help" href="https://drafts.csswg.org/css-inline/#propdef-vertical-align"> +<meta name="assert" content="vertical-align computed value is as specified, with lengths made absolute."> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/css/support/computed-testcommon.js"></script> +<style> + #target { + font-size: 40px; + } +</style> +</head> +<body> +<div id="target"></div> +<script> +test_computed_value("vertical-align", "baseline"); +test_computed_value("vertical-align", "sub"); +test_computed_value("vertical-align", "super"); +test_computed_value("vertical-align", "top"); +test_computed_value("vertical-align", "text-top"); +test_computed_value("vertical-align", "middle"); +test_computed_value("vertical-align", "bottom"); +test_computed_value("vertical-align", "text-bottom"); +test_computed_value("vertical-align", "-10px"); +test_computed_value("vertical-align", "20%"); +test_computed_value("vertical-align", "calc(20% + 10px)"); +test_computed_value("vertical-align", "calc(10px - 0.5em)", "-10px"); + +// TODO: Test against the CSS Inline Layout grammar when browsers support it. +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-inline/parsing/vertical-align-invalid.html b/tests/wpt/web-platform-tests/css/css-inline/parsing/vertical-align-invalid.html new file mode 100644 index 00000000000..0565eb4a68d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-inline/parsing/vertical-align-invalid.html @@ -0,0 +1,31 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>CSS Inline Layout: parsing vertical-align with valid values</title> +<link rel="help" href="https://www.w3.org/TR/CSS2/visudet.html#propdef-vertical-align"> +<link rel="help" href="https://drafts.csswg.org/css-inline/#propdef-vertical-align"> +<meta name="assert" content="vertical-align only supports the spec grammar."> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/css/support/parsing-testcommon.js"></script> +</head> +<body> +<script> +test_invalid_value("vertical-align", "none"); + +// Two baseline-source values +test_invalid_value("vertical-align", "first last"); +test_invalid_value("vertical-align", "first, last"); + +// Two baseline-shift values +test_invalid_value("vertical-align", "sub super"); +test_invalid_value("vertical-align", "super 10px"); +test_invalid_value("vertical-align", "20% sub"); + +// Two alignment-baseline values +test_invalid_value("vertical-align", "baseline middle"); +test_invalid_value("vertical-align", "text-top, bottom"); +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-inline/parsing/vertical-align-valid.html b/tests/wpt/web-platform-tests/css/css-inline/parsing/vertical-align-valid.html new file mode 100644 index 00000000000..d51c759dcc5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-inline/parsing/vertical-align-valid.html @@ -0,0 +1,31 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>CSS Inline Layout: parsing vertical-align with valid values</title> +<link rel="help" href="https://www.w3.org/TR/CSS2/visudet.html#propdef-vertical-align"> +<link rel="help" href="https://drafts.csswg.org/css-inline/#propdef-vertical-align"> +<meta name="assert" content="vertical-align supports the CSS 2 grammar 'baseline | sub | super | top | text-top | middle | bottom | text-bottom | <percentage> | <length>'."> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/css/support/parsing-testcommon.js"></script> +</head> +<body> +<script> +test_valid_value("vertical-align", "baseline"); +test_valid_value("vertical-align", "sub"); +test_valid_value("vertical-align", "super"); +test_valid_value("vertical-align", "top"); +test_valid_value("vertical-align", "text-top"); +test_valid_value("vertical-align", "middle"); +test_valid_value("vertical-align", "bottom"); +test_valid_value("vertical-align", "text-bottom"); +test_valid_value("vertical-align", "-10px"); +test_valid_value("vertical-align", "20%"); +test_valid_value("vertical-align", "0", "0px"); +test_valid_value("vertical-align", "calc(20% - 10px)"); + +// TODO: Test against the CSS Inline Layout grammar when browsers support it. +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-multicol/animation/column-count-interpolation.html b/tests/wpt/web-platform-tests/css/css-multicol/animation/column-count-interpolation.html new file mode 100644 index 00000000000..def34adc6c0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-multicol/animation/column-count-interpolation.html @@ -0,0 +1,68 @@ +<!DOCTYPE html> +<meta charset="UTF-8"> +<title>column-count interpolation</title> +<link rel="help" href="https://drafts.csswg.org/css-multicol-1/#cc"> +<meta name="assert" content="column-count supports animation by computed value"> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/css/support/interpolation-testcommon.js"></script> + +<style> +.parent { + column-count: 30; +} +.target { + column-count: 10; +} +</style> + +<body></body> + +<script> +test_interpolation({ + property: 'column-count', + from: neutralKeyframe, + to: '20', +}, [ + {at: -0.5, expect: '5'}, + {at: 0, expect: '10'}, + {at: 0.3, expect: '13'}, + {at: 0.7, expect: '17'}, + {at: 1, expect: '20'}, + {at: 1.5, expect: '25'}, +]); + +test_no_interpolation({ + property: 'column-count', + from: 'auto', + to: '20', +}); + +test_interpolation({ + property: 'column-count', + from: 'inherit', + to: '20', +}, [ + {at: -0.5, expect: '35'}, + {at: 0, expect: '30'}, + {at: 0.3, expect: '27'}, + {at: 0.7, expect: '23'}, + {at: 1, expect: '20'}, + {at: 1.5, expect: '15'}, +]); + +test_interpolation({ + property: 'column-count', + from: '10', + to: '1' +}, [ + {at: -0.5, expect: '15'}, + {at: 0, expect: '10'}, + {at: 0.3, expect: '7'}, + {at: 0.7, expect: '4'}, + // Only positive integers are valid + {at: 1, expect: '1'}, + {at: 1.5, expect: '1'} +]); +</script> diff --git a/tests/wpt/web-platform-tests/css/css-multicol/animation/column-rule-color-interpolation.html b/tests/wpt/web-platform-tests/css/css-multicol/animation/column-rule-color-interpolation.html new file mode 100644 index 00000000000..060c8416ffb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-multicol/animation/column-rule-color-interpolation.html @@ -0,0 +1,77 @@ +<!DOCTYPE html> +<meta charset="UTF-8"> +<title>column-rule-color interpolation</title> +<link rel="help" href="https://drafts.csswg.org/css-multicol-1/#crc"> +<meta name="assert" content="column-rule-color supports animation by computed value type"> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/css/support/interpolation-testcommon.js"></script> + +<style> +.parent { + column-count: 2; + column-rule-color: rgb(70, 70, 170); +} +.target { + column-count: 2; + color: rgb(70, 170, 70); + column-rule-color: rgb(170, 70, 70); +} +</style> + +<body></body> + +<script> +test_interpolation({ + property: 'column-rule-color', + from: neutralKeyframe, + to: 'rgb(70, 170, 70)', +}, [ + {at: -0.5, expect: 'rgb(220, 20, 70)'}, + {at: 0, expect: 'rgb(170, 70, 70)'}, + {at: 0.3, expect: 'rgb(140, 100, 70)'}, + {at: 0.6, expect: 'rgb(110, 130, 70)'}, + {at: 1, expect: 'rgb(70, 170, 70)'}, + {at: 1.5, expect: 'rgb(20, 220, 70)'}, +]); + +test_interpolation({ + property: 'column-rule-color', + from: 'initial', + to: 'rgb(70, 70, 170)', +}, [ + {at: -0.5, expect: 'rgb(70, 220, 20)'}, + {at: 0, expect: 'rgb(70, 170, 70)'}, + {at: 0.3, expect: 'rgb(70, 140, 100)'}, + {at: 0.6, expect: 'rgb(70, 110, 130)'}, + {at: 1, expect: 'rgb(70, 70, 170)'}, + {at: 1.5, expect: 'rgb(70, 20, 220)'}, +]); + +test_interpolation({ + property: 'column-rule-color', + from: 'inherit', + to: 'rgb(70, 170, 70)', +}, [ + {at: -0.5, expect: 'rgb(70, 20, 220)'}, + {at: 0, expect: 'rgb(70, 70, 170)'}, + {at: 0.3, expect: 'rgb(70, 100, 140)'}, + {at: 0.6, expect: 'rgb(70, 130, 110)'}, + {at: 1, expect: 'rgb(70, 170, 70)'}, + {at: 1.5, expect: 'rgb(70, 220, 20)'}, +]); + +test_interpolation({ + property: 'column-rule-color', + from: 'currentcolor', + to: 'rgb(170, 70, 70)', +}, [ + {at: -0.5, expect: 'rgb(20, 220, 70)'}, + {at: 0, expect: 'rgb(70, 170, 70)'}, + {at: 0.3, expect: 'rgb(100, 140, 70)'}, + {at: 0.6, expect: 'rgb(130, 110, 70)'}, + {at: 1, expect: 'rgb(170, 70, 70)'}, + {at: 1.5, expect: 'rgb(220, 20, 70)'}, +]); +</script> diff --git a/tests/wpt/web-platform-tests/css/css-multicol/animation/column-rule-width.html b/tests/wpt/web-platform-tests/css/css-multicol/animation/column-rule-width.html new file mode 100644 index 00000000000..d600d68ff1a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-multicol/animation/column-rule-width.html @@ -0,0 +1,101 @@ +<!DOCTYPE html> +<meta charset="UTF-8"> +<title>column-rule-width interpolation</title> +<link rel="help" href="https://drafts.csswg.org/css-multicol-1/#crw"> +<meta name="assert" content="column-rule-width supports animation by computed value type"> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/css/support/interpolation-testcommon.js"></script> + +<style> +.parent { + column-rule-width: 30px; +} +.target { + column-rule-width: 10px; +} +</style> + +<body></body> + +<script> +test_interpolation({ + property: 'column-rule-width', + from: neutralKeyframe, + to: '20px', +}, [ + {at: -0.3, expect: '7px'}, + {at: 0, expect: '10px'}, + {at: 0.3, expect: '13px'}, + {at: 0.6, expect: '16px'}, + {at: 1, expect: '20px'}, + {at: 1.5, expect: '25px'}, +]); + +test_interpolation({ + property: 'column-rule-width', + from: 'initial', + to: '20px', +}, [ + {at: -0.3, expect: '0px'}, + {at: 0, expect: '3px'}, + {at: 0.3, expect: '8.1px'}, + {at: 0.6, expect: '13.2px'}, + {at: 1, expect: '20px'}, + {at: 1.5, expect: '28.5px'}, +]); + +test_interpolation({ + property: 'column-rule-width', + from: 'inherit', + to: '20px', +}, [ + {at: -0.3, expect: '0px'}, + {at: 0, expect: '0px'}, + {at: 0.3, expect: '6px'}, + {at: 0.6, expect: '12px'}, + {at: 1, expect: '20px'}, + {at: 1.5, expect: '30px'}, +]); + +test_interpolation({ + property: 'column-rule-width', + from: 'unset', + to: '20px', +}, [ + {at: -0.3, expect: '0px'}, + {at: 0, expect: '3px'}, + {at: 0.3, expect: '8.1px'}, + {at: 0.6, expect: '13.2px'}, + {at: 1, expect: '20px'}, + {at: 1.5, expect: '28.5px'}, +]); + +test_interpolation({ + property: 'column-rule-width', + from: '0px', + to: '10px' +}, [ + {at: -0.3, expect: '0px'}, // CSS column-rule-width can't be negative. + {at: 0, expect: '0px'}, + {at: 0.3, expect: '3px'}, + {at: 0.6, expect: '6px'}, + {at: 1, expect: '10px'}, + {at: 1.5, expect: '15px'} +]); + +test_interpolation({ + property: 'column-rule-width', + from: '15px', + to: 'thick' +}, [ + {at: -2, expect: '35px'}, + {at: -0.3, expect: '18px'}, + {at: 0, expect: '15px'}, + {at: 0.3, expect: '12px'}, + {at: 0.6, expect: '9px'}, + {at: 1, expect: '5px'}, + {at: 1.5, expect: '0px'} +]); +</script> diff --git a/tests/wpt/web-platform-tests/css/css-multicol/animation/column-width-interpolation.html b/tests/wpt/web-platform-tests/css/css-multicol/animation/column-width-interpolation.html new file mode 100644 index 00000000000..fdb26353b49 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-multicol/animation/column-width-interpolation.html @@ -0,0 +1,91 @@ +<!DOCTYPE html> +<meta charset="UTF-8"> +<title>column-width interpolation</title> +<link rel="help" href="https://drafts.csswg.org/css-multicol-1/#cw"> +<meta name="assert" content="column-width supports animation by computed value type"> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/css/support/interpolation-testcommon.js"></script> + +<style> +.parent { + column-width: 30px; +} +.target { + font-size: 0px; /* column-width "specified values must be greater than 0", so use font-size to achieve 0px computed value. */ + display: inline-block; + column-width: 10px; +} +</style> + +<body> +<template id="target-template"> + <div><div class="transformed"></div></div> +</template> +</body> + +<script> +test_interpolation({ + property: 'column-width', + from: neutralKeyframe, + to: '20px', +}, [ + {at: -20, expect: '1em'}, // column-width does not accept negative values + {at: -1, expect: '1em'}, // column-width does not accept negative values + {at: -0.3, expect: '7px'}, + {at: 0, expect: '10px'}, + {at: 0.3, expect: '13px'}, + {at: 0.6, expect: '16px'}, + {at: 1, expect: '20px'}, + {at: 1.5, expect: '25px'}, +]); + +test_no_interpolation({ + property: 'column-width', + from: 'initial', + to: '20px', +}); + +test_interpolation({ + property: 'column-width', + from: 'inherit', + to: '20px', +}, [ + {at: -20, expect: '230px'}, + {at: -1, expect: '40px'}, + {at: -0.3, expect: '33px'}, + {at: 0, expect: '30px'}, + {at: 0.3, expect: '27px'}, + {at: 0.6, expect: '24px'}, + {at: 1, expect: '20px'}, + {at: 1.5, expect: '15px'}, +]); + +test_no_interpolation({ + property: 'column-width', + from: 'unset', + to: '20px', +}); + +test_interpolation({ + property: 'column-width', + from: '50px', + to: '100px', +}, [ + {at: -20, expect: '1em'}, // column-width does not accept negative values + {at: -1, expect: '1em'}, // column-width does not accept negative values + {at: -0.3, expect: '35px'}, + {at: 0, expect: '50px'}, + {at: 0.3, expect: '65px'}, + {at: 0.6, expect: '80px'}, + {at: 1, expect: '100px'}, + {at: 1.5, expect: '125px'}, +]); + +test_no_interpolation({ + property: 'column-width', + from: '50px', + to: 'auto', +}); +</script> diff --git a/tests/wpt/web-platform-tests/css/css-multicol/multicol-breaking-005-ref.html b/tests/wpt/web-platform-tests/css/css-multicol/multicol-breaking-005-ref.html new file mode 100644 index 00000000000..a22fda57c0b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-multicol/multicol-breaking-005-ref.html @@ -0,0 +1,100 @@ +<!DOCTYPE HTML> +<title>CSS Test Reference: breaking of a multicolumn</title> +<meta charset="utf-8"> +<link rel="author" title="L. David Baron" href="https://dbaron.org/"> +<link rel="author" title="Ting-Yu Lin" href="tlin@mozilla.com"> +<link rel="author" title="Mozilla" href="https://mozilla.org/"> +<style> + +.outer { + height: 200px; + width: 800px; + background: rgba(0, 0, 255, 0.3); + position: relative; +} + +.blueborders { + position: absolute; + top: 0; + left: 262px; /* 256px first column + (16px gap - 4px rule) / 2 */ + width: 268px; /* 256px second column + (16px gap - 4px rule) */ + height: 200px; + border-right: blue solid 4px; + border-left: blue solid 4px; +} + +.innerbg { + height: 100px; + width: 256px; + background: rgba(255, 0, 255, 0.3); + position: absolute; + top: 0; +} + +.inner { + height: 100px; + width: 120px; + font: 16px/1.25 sans-serif; + position: absolute; + top: 0; +} + +.lefthalf { + border-right: 2px solid fuchsia; + padding-right: 7px; +} + +.righthalf { + padding-left: 7px; +} + +</style> + +<div class="outer"> + <div class="blueborders"></div> + <div class="innerbg" style="left: 0"></div> + <div class="inner lefthalf" style="left: 0"> + AAAAA<br> + BBBBB<br> + CCCCC<br> + DDDDD<br> + EEEEE + </div> + <div class="inner righthalf" style="left: 129px"> + FFFFF<br> + GGGGG<br> + HHHHH<br> + IIIII<br> + JJJJJ + </div> + <div class="innerbg" style="left: 272px"></div> + <div class="inner lefthalf" style="left: 272px"> + KKKKK<br> + LLLLL<br> + MMMMM<br> + NNNNN<br> + OOOOO + </div> + <div class="inner righthalf" style="left: 401px"> + PPPPP<br> + QQQQQ<br> + RRRRR<br> + SSSSS<br> + TTTTT + </div> + <div class="innerbg" style="left: 544px"></div> + <div class="inner lefthalf" style="left: 544px"> + UUUUU<br> + VVVVV<br> + WWWWW<br> + XXXXX<br> + YYYYY + </div> + <div class="inner righthalf" style="left: 673px"> + ZZZZZ<br> + aaaaa<br> + bbbbb<br> + ccccc<br> + ddddd + </div> +</div> diff --git a/tests/wpt/web-platform-tests/css/css-multicol/multicol-breaking-005.html b/tests/wpt/web-platform-tests/css/css-multicol/multicol-breaking-005.html new file mode 100644 index 00000000000..18a1b78fc9a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-multicol/multicol-breaking-005.html @@ -0,0 +1,70 @@ +<!DOCTYPE HTML> +<title>CSS Test: breaking of a multicolumn</title> +<meta charset="utf-8"> +<link rel="author" title="L. David Baron" href="https://dbaron.org/"> +<link rel="author" title="Ting-Yu Lin" href="tlin@mozilla.com"> +<link rel="author" title="Mozilla" href="https://mozilla.org/"> +<link rel="help" href="https://drafts.csswg.org/css-multicol/#column-gaps-and-rules"> +<link rel="help" href="https://drafts.csswg.org/css-multicol/#cf"> +<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/2309"> +<link rel="match" href="multicol-breaking-005-ref.html"> +<style> + +.outer { + height: 200px; + width: 800px; + column-fill: balance; + column-count: 3; + column-rule: 4px solid blue; + column-gap: 16px; + background: rgba(0, 0, 255, 0.3); +} + +.inner { + column-count: 2; + column-fill: balance; + column-rule: 2px solid fuchsia; + column-gap: 16px; + background: rgba(255, 0, 255, 0.3); + font: 16px/1.25 sans-serif; +} + +</style> + +<!-- This test is similar to multicol-breaking-002.html, + but both outer and inner columns are balancing. The outer multi-column is + made explicitly taller than the inner columns' optimal balance height. --> +<div class="outer"> + <div class="inner" style="height: 300px"> + AAAAA<br> + BBBBB<br> + CCCCC<br> + DDDDD<br> + EEEEE<br> + FFFFF<br> + GGGGG<br> + HHHHH<br> + IIIII<br> + JJJJJ<br> + KKKKK<br> + LLLLL<br> + MMMMM<br> + NNNNN<br> + OOOOO<br> + PPPPP<br> + QQQQQ<br> + RRRRR<br> + SSSSS<br> + TTTTT<br> + UUUUU<br> + VVVVV<br> + WWWWW<br> + XXXXX<br> + YYYYY<br> + ZZZZZ<br> + aaaaa<br> + bbbbb<br> + ccccc<br> + ddddd + </div> +</div> diff --git a/tests/wpt/web-platform-tests/css/css-multicol/multicol-breaking-nobackground-005-ref.html b/tests/wpt/web-platform-tests/css/css-multicol/multicol-breaking-nobackground-005-ref.html new file mode 100644 index 00000000000..63296363bf9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-multicol/multicol-breaking-nobackground-005-ref.html @@ -0,0 +1,86 @@ +<!DOCTYPE HTML> +<title>CSS Test Reference: breaking of a multicolumn</title> +<meta charset="utf-8"> +<link rel="author" title="L. David Baron" href="https://dbaron.org/"> +<link rel="author" title="Ting-Yu Lin" href="tlin@mozilla.com"> +<link rel="author" title="Mozilla" href="https://mozilla.org/"> +<style> + +.outer { + height: 200px; + width: 800px; + background: rgba(0, 0, 255, 0.3); + position: relative; +} + +.innerbg { + height: 100px; + width: 256px; + background: rgba(255, 0, 255, 0.3); + position: absolute; + top: 0; +} + +.inner { + height: 100px; + width: 120px; + font: 16px/1.25 sans-serif; + position: absolute; + top: 0; +} + +.lefthalf { + border-right: 2px solid fuchsia; + padding-right: 7px; +} + +.righthalf { + padding-left: 7px; +} + +</style> + +<div class="outer"> + <div class="inner lefthalf" style="left: 0"> + AAAAA<br> + BBBBB<br> + CCCCC<br> + DDDDD<br> + EEEEE + </div> + <div class="inner righthalf" style="left: 129px"> + FFFFF<br> + GGGGG<br> + HHHHH<br> + IIIII<br> + JJJJJ + </div> + <div class="inner lefthalf" style="left: 272px"> + KKKKK<br> + LLLLL<br> + MMMMM<br> + NNNNN<br> + OOOOO + </div> + <div class="inner righthalf" style="left: 401px"> + PPPPP<br> + QQQQQ<br> + RRRRR<br> + SSSSS<br> + TTTTT + </div> + <div class="inner lefthalf" style="left: 544px"> + UUUUU<br> + VVVVV<br> + WWWWW<br> + XXXXX<br> + YYYYY + </div> + <div class="inner righthalf" style="left: 673px"> + ZZZZZ<br> + aaaaa<br> + bbbbb<br> + ccccc<br> + ddddd + </div> +</div> diff --git a/tests/wpt/web-platform-tests/css/css-multicol/multicol-breaking-nobackground-005.html b/tests/wpt/web-platform-tests/css/css-multicol/multicol-breaking-nobackground-005.html new file mode 100644 index 00000000000..2065949cc92 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-multicol/multicol-breaking-nobackground-005.html @@ -0,0 +1,68 @@ +<!DOCTYPE HTML> +<title>CSS Test: breaking of a multicolumn</title> +<meta charset="utf-8"> +<link rel="author" title="L. David Baron" href="https://dbaron.org/"> +<link rel="author" title="Ting-Yu Lin" href="tlin@mozilla.com"> +<link rel="author" title="Mozilla" href="https://mozilla.org/"> +<link rel="help" href="https://drafts.csswg.org/css-multicol/#column-gaps-and-rules"> +<link rel="help" href="https://drafts.csswg.org/css-multicol/#cf"> +<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/2309"> +<link rel="match" href="multicol-breaking-nobackground-005-ref.html"> +<style> + +.outer { + height: 200px; + width: 800px; + column-fill: balance; + column-count: 3; + column-gap: 16px; + background: rgba(0, 0, 255, 0.3); +} + +.inner { + column-count: 2; + column-fill: balance; + column-rule: 2px solid fuchsia; + column-gap: 16px; + font: 16px/1.25 sans-serif; +} + +</style> + +<!-- This test is similar to multicol-breaking-nobackground-002.html, + but both outer and inner columns are balancing. The outer multi-column is + made explicitly taller than the inner columns' optimal balance height. --> +<div class="outer"> + <div class="inner" style="height: 300px"> + AAAAA<br> + BBBBB<br> + CCCCC<br> + DDDDD<br> + EEEEE<br> + FFFFF<br> + GGGGG<br> + HHHHH<br> + IIIII<br> + JJJJJ<br> + KKKKK<br> + LLLLL<br> + MMMMM<br> + NNNNN<br> + OOOOO<br> + PPPPP<br> + QQQQQ<br> + RRRRR<br> + SSSSS<br> + TTTTT<br> + UUUUU<br> + VVVVV<br> + WWWWW<br> + XXXXX<br> + YYYYY<br> + ZZZZZ<br> + aaaaa<br> + bbbbb<br> + ccccc<br> + ddddd + </div> +</div> diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-block-computed.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-block-computed.html deleted file mode 100644 index b186e674ab7..00000000000 --- a/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-block-computed.html +++ /dev/null @@ -1,34 +0,0 @@ -<!DOCTYPE html> -<html> -<head> -<meta charset="utf-8"> -<title>CSS Scroll Snap: getComputedStyle().scrollMarginBlock</title> -<link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-margin-block"> -<meta name="assert" content="scroll-margin-block computed value is absolute length."> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="/css/support/computed-testcommon.js"></script> -</head> -<body> -<div id="target"></div> -<style> - #target { - font-size: 40px; - } -</style> -<script> -test_computed_value("scroll-margin-block-start", "10px"); -test_computed_value("scroll-margin-block-start", "calc(10px - 0.5em)", "-10px"); - - -test_computed_value("scroll-margin-block-end", "10px"); -test_computed_value("scroll-margin-block-end", "calc(10px - 0.5em)", "-10px"); - - -test_computed_value("scroll-margin-block", "10px"); -test_computed_value("scroll-margin-block", "calc(10px - 0.5em)", "-10px"); - -test_computed_value("scroll-margin-block", "1px 2px"); -</script> -</body> -</html> diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-inline-computed.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-block-inline-computed.html index d9854713b55..3bb0e740acf 100644 --- a/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-inline-computed.html +++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-block-inline-computed.html @@ -2,9 +2,9 @@ <html> <head> <meta charset="utf-8"> -<title>CSS Scroll Snap: getComputedStyle().scrollMarginInline</title> -<link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-margin-inline"> -<meta name="assert" content="scroll-margin-inline computed value is absolute length."> +<title>CSS Scroll Snap: getComputedStyle().scrollMarginBlock / scrollMarginInline</title> +<link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1/#margin-longhands-logical"> +<meta name="assert" content="scroll-margin-block, scroll-margin-inline computed value is absolute length."> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/css/support/computed-testcommon.js"></script> @@ -17,17 +17,25 @@ } </style> <script> +test_computed_value("scroll-margin-block-start", "10px"); +test_computed_value("scroll-margin-block-start", "calc(10px - 0.5em)", "-10px"); + +test_computed_value("scroll-margin-block-end", "10px"); +test_computed_value("scroll-margin-block-end", "calc(10px - 0.5em)", "-10px"); + test_computed_value("scroll-margin-inline-start", "10px"); test_computed_value("scroll-margin-inline-start", "calc(10px - 0.5em)", "-10px"); - test_computed_value("scroll-margin-inline-end", "10px"); test_computed_value("scroll-margin-inline-end", "calc(10px - 0.5em)", "-10px"); +test_computed_value("scroll-margin-block", "10px"); +test_computed_value("scroll-margin-block", "calc(10px - 0.5em)", "-10px"); +test_computed_value("scroll-margin-block", "1px 2px"); + test_computed_value("scroll-margin-inline", "10px"); test_computed_value("scroll-margin-inline", "calc(10px - 0.5em)", "-10px"); - test_computed_value("scroll-margin-inline", "1px 2px"); </script> </body> diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-inline-invalid.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-block-inline-invalid.html index eaeb97157a6..b8a70b0d489 100644 --- a/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-inline-invalid.html +++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-block-inline-invalid.html @@ -2,27 +2,41 @@ <html> <head> <meta charset="utf-8"> -<title>CSS Scroll Snap Test: scroll-margin-inline with invalid values</title> -<link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-margin-inline"> -<meta name="assert" content="scroll-margin-inline supports only the grammar '<length>{1,2}'."> +<title>CSS Scroll Snap Test: scroll-margin-block, scroll-margin-inline with invalid values</title> +<link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1/#margin-longhands-logical"> +<meta name="assert" content="scroll-margin-block, scroll-margin-inline support only the grammar '<length>{1,2}'."> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/css/support/parsing-testcommon.js"></script> </head> <body> <script> +test_invalid_value("scroll-margin-block-start", "auto"); +test_invalid_value("scroll-margin-block-start", "20%"); +test_invalid_value("scroll-margin-block-start", "-30%"); +test_invalid_value("scroll-margin-block-start", "1px 2px"); + +test_invalid_value("scroll-margin-block-end", "auto"); +test_invalid_value("scroll-margin-block-end", "20%"); +test_invalid_value("scroll-margin-block-end", "-30%"); +test_invalid_value("scroll-margin-block-end", "1px 2px"); + test_invalid_value("scroll-margin-inline-start", "auto"); test_invalid_value("scroll-margin-inline-start", "20%"); test_invalid_value("scroll-margin-inline-start", "-30%"); test_invalid_value("scroll-margin-inline-start", "1px 2px"); - test_invalid_value("scroll-margin-inline-end", "auto"); test_invalid_value("scroll-margin-inline-end", "20%"); test_invalid_value("scroll-margin-inline-end", "-30%"); test_invalid_value("scroll-margin-inline-end", "1px 2px"); +test_invalid_value("scroll-margin-block", "auto"); +test_invalid_value("scroll-margin-block", "20%"); +test_invalid_value("scroll-margin-block", "-30%"); +test_invalid_value("scroll-margin-block", "1px 2px 3px"); + test_invalid_value("scroll-margin-inline", "auto"); test_invalid_value("scroll-margin-inline", "20%"); test_invalid_value("scroll-margin-inline", "-30%"); diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-inline-valid.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-block-inline-valid.html index a29ede3d32f..e675eeb4270 100644 --- a/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-inline-valid.html +++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-block-inline-valid.html @@ -2,23 +2,32 @@ <html> <head> <meta charset="utf-8"> -<title>CSS Scroll Snap Test: scroll-margin-inline with valid values</title> -<link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-margin-inline"> -<meta name="assert" content="scroll-margin-inline supports the full grammar '<length>{1,2}'."> +<title>CSS Scroll Snap Test: scroll-margin-block, scroll-margin-inline with valid values</title> +<link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1/#margin-longhands-logical"> +<meta name="assert" content="scroll-margin-block, scroll-margin-inline support the full grammar '<length>{1,2}'."> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/css/support/parsing-testcommon.js"></script> </head> <body> <script> +test_valid_value("scroll-margin-block-start", "-10px"); +test_valid_value("scroll-margin-block-start", "calc(2em + 3ex)"); + +test_valid_value("scroll-margin-block-end", "-10px"); +test_valid_value("scroll-margin-block-end", "calc(2em + 3ex)"); + test_valid_value("scroll-margin-inline-start", "-10px"); test_valid_value("scroll-margin-inline-start", "calc(2em + 3ex)"); - test_valid_value("scroll-margin-inline-end", "-10px"); test_valid_value("scroll-margin-inline-end", "calc(2em + 3ex)"); +test_valid_value("scroll-margin-block", "-10px"); +test_valid_value("scroll-margin-block", "calc(2em + 3ex)"); +test_valid_value("scroll-margin-block", "1px 2px"); + test_valid_value("scroll-margin-inline", "-10px"); test_valid_value("scroll-margin-inline", "calc(2em + 3ex)"); test_valid_value("scroll-margin-inline", "1px 2px"); diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-block-invalid.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-block-invalid.html deleted file mode 100644 index 371c933aa0e..00000000000 --- a/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-block-invalid.html +++ /dev/null @@ -1,32 +0,0 @@ -<!DOCTYPE html> -<html> -<head> -<meta charset="utf-8"> -<title>CSS Scroll Snap Test: scroll-margin-block with invalid values</title> -<link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-margin-block"> -<meta name="assert" content="scroll-margin-block supports only the grammar '<length>{1,2}'."> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="/css/support/parsing-testcommon.js"></script> -</head> -<body> -<script> -test_invalid_value("scroll-margin-block-start", "auto"); -test_invalid_value("scroll-margin-block-start", "20%"); -test_invalid_value("scroll-margin-block-start", "-30%"); -test_invalid_value("scroll-margin-block-start", "1px 2px"); - - -test_invalid_value("scroll-margin-block-end", "auto"); -test_invalid_value("scroll-margin-block-end", "20%"); -test_invalid_value("scroll-margin-block-end", "-30%"); -test_invalid_value("scroll-margin-block-end", "1px 2px"); - - -test_invalid_value("scroll-margin-block", "auto"); -test_invalid_value("scroll-margin-block", "20%"); -test_invalid_value("scroll-margin-block", "-30%"); -test_invalid_value("scroll-margin-block", "1px 2px 3px"); -</script> -</body> -</html> diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-block-valid.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-block-valid.html deleted file mode 100644 index f4be8994f7c..00000000000 --- a/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-block-valid.html +++ /dev/null @@ -1,28 +0,0 @@ -<!DOCTYPE html> -<html> -<head> -<meta charset="utf-8"> -<title>CSS Scroll Snap Test: scroll-margin-block with valid values</title> -<link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-margin-block"> -<meta name="assert" content="scroll-margin-block supports the full grammar '<length>{1,2}'."> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="/css/support/parsing-testcommon.js"></script> -</head> -<body> -<script> -test_valid_value("scroll-margin-block-start", "-10px"); -test_valid_value("scroll-margin-block-start", "calc(2em + 3ex)"); - - -test_valid_value("scroll-margin-block-end", "-10px"); -test_valid_value("scroll-margin-block-end", "calc(2em + 3ex)"); - - -test_valid_value("scroll-margin-block", "-10px"); -test_valid_value("scroll-margin-block", "calc(2em + 3ex)"); - -test_valid_value("scroll-margin-block", "1px 2px"); -</script> -</body> -</html> diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-block-computed.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-block-computed.html deleted file mode 100644 index 2021818dd33..00000000000 --- a/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-block-computed.html +++ /dev/null @@ -1,48 +0,0 @@ -<!DOCTYPE html> -<html> -<head> -<meta charset="utf-8"> -<title>CSS Scroll Snap: getComputedStyle().scrollPaddingBlock</title> -<link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-padding-block"> -<meta name="assert" content="scroll-padding-block computed value is per side, either the keyword auto or a computed <length-percentage> value."> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="/css/support/computed-testcommon.js"></script> -</head> -<body> -<div id="target"></div> -<style> - #target { - font-size: 40px; - } -</style> -<script> -test_computed_value("scroll-padding-block-start", "auto"); -test_computed_value("scroll-padding-block-start", "10px"); -test_computed_value("scroll-padding-block-start", "20%"); -test_computed_value("scroll-padding-block-start", "calc(10px + 0.5em)", "30px"); -test_computed_value("scroll-padding-block-start", "calc(10px - 0.5em)", "0px"); -test_computed_value("scroll-padding-block-start", "calc(50% + 60px)"); - - -test_computed_value("scroll-padding-block-end", "auto"); -test_computed_value("scroll-padding-block-end", "10px"); -test_computed_value("scroll-padding-block-end", "20%"); -test_computed_value("scroll-padding-block-end", "calc(10px + 0.5em)", "30px"); -test_computed_value("scroll-padding-block-end", "calc(10px - 0.5em)", "0px"); -test_computed_value("scroll-padding-block-end", "calc(50% + 60px)"); - - -test_computed_value("scroll-padding-block", "auto"); -test_computed_value("scroll-padding-block", "10px"); -test_computed_value("scroll-padding-block", "20%"); -test_computed_value("scroll-padding-block", "calc(10px + 0.5em)", "30px"); -test_computed_value("scroll-padding-block", "calc(10px - 0.5em)", "0px"); -test_computed_value("scroll-padding-block", "calc(50% + 60px)"); - -test_computed_value("scroll-padding-block", "1px 2px"); -test_computed_value("scroll-padding-block", "1px auto"); -test_computed_value("scroll-padding-block", "auto auto", "auto"); -</script> -</body> -</html> diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-inline-computed.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-block-inline-computed.html index b70cf01b6fe..6a66110cda3 100644 --- a/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-inline-computed.html +++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-block-inline-computed.html @@ -2,9 +2,9 @@ <html> <head> <meta charset="utf-8"> -<title>CSS Scroll Snap: getComputedStyle().scrollPaddingInline</title> -<link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-padding-inline"> -<meta name="assert" content="scroll-padding-inline computed value is per side, either the keyword auto or a computed <length-percentage> value."> +<title>CSS Scroll Snap: getComputedStyle().scrollPaddingBlock / scrollPaddingInline</title> +<link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1/#padding-longhands-logical"> +<meta name="assert" content="scroll-padding-block, scroll-padding-inline computed value is per side, either the keyword auto or a computed <length-percentage> value."> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/css/support/computed-testcommon.js"></script> @@ -17,6 +17,20 @@ } </style> <script> +test_computed_value("scroll-padding-block-start", "auto"); +test_computed_value("scroll-padding-block-start", "10px"); +test_computed_value("scroll-padding-block-start", "20%"); +test_computed_value("scroll-padding-block-start", "calc(10px + 0.5em)", "30px"); +test_computed_value("scroll-padding-block-start", "calc(10px - 0.5em)", "0px"); +test_computed_value("scroll-padding-block-start", "calc(50% + 60px)"); + +test_computed_value("scroll-padding-block-end", "auto"); +test_computed_value("scroll-padding-block-end", "10px"); +test_computed_value("scroll-padding-block-end", "20%"); +test_computed_value("scroll-padding-block-end", "calc(10px + 0.5em)", "30px"); +test_computed_value("scroll-padding-block-end", "calc(10px - 0.5em)", "0px"); +test_computed_value("scroll-padding-block-end", "calc(50% + 60px)"); + test_computed_value("scroll-padding-inline-start", "auto"); test_computed_value("scroll-padding-inline-start", "10px"); test_computed_value("scroll-padding-inline-start", "20%"); @@ -24,7 +38,6 @@ test_computed_value("scroll-padding-inline-start", "calc(10px + 0.5em)", "30px") test_computed_value("scroll-padding-inline-start", "calc(10px - 0.5em)", "0px"); test_computed_value("scroll-padding-inline-start", "calc(50% + 60px)"); - test_computed_value("scroll-padding-inline-end", "auto"); test_computed_value("scroll-padding-inline-end", "10px"); test_computed_value("scroll-padding-inline-end", "20%"); @@ -33,13 +46,22 @@ test_computed_value("scroll-padding-inline-end", "calc(10px - 0.5em)", "0px"); test_computed_value("scroll-padding-inline-end", "calc(50% + 60px)"); +test_computed_value("scroll-padding-block", "auto"); +test_computed_value("scroll-padding-block", "10px"); +test_computed_value("scroll-padding-block", "20%"); +test_computed_value("scroll-padding-block", "calc(10px + 0.5em)", "30px"); +test_computed_value("scroll-padding-block", "calc(10px - 0.5em)", "0px"); +test_computed_value("scroll-padding-block", "calc(50% + 60px)"); +test_computed_value("scroll-padding-block", "1px 2px"); +test_computed_value("scroll-padding-block", "1px auto"); +test_computed_value("scroll-padding-block", "auto auto", "auto"); + test_computed_value("scroll-padding-inline", "auto"); test_computed_value("scroll-padding-inline", "10px"); test_computed_value("scroll-padding-inline", "20%"); test_computed_value("scroll-padding-inline", "calc(10px + 0.5em)", "30px"); test_computed_value("scroll-padding-inline", "calc(10px - 0.5em)", "0px"); test_computed_value("scroll-padding-inline", "calc(50% + 60px)"); - test_computed_value("scroll-padding-inline", "1px 2px"); test_computed_value("scroll-padding-inline", "1px auto"); test_computed_value("scroll-padding-inline", "auto auto", "auto"); diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-block-inline-invalid.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-block-inline-invalid.html new file mode 100644 index 00000000000..da995cfcc07 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-block-inline-invalid.html @@ -0,0 +1,54 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>CSS Scroll Snap Test: scroll-padding-block, scroll-padding-inline with invalid values</title> +<link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1/#padding-longhands-logical"> +<meta name="assert" content="scroll-padding-block, scroll-padding-inline supports only the grammar '[ auto | <length-percentage> ]{1,2}'."> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/css/support/parsing-testcommon.js"></script> +</head> +<body> +<script> +test_invalid_value("scroll-padding-block-start", "none"); +test_invalid_value("scroll-padding-block-start", "-10px"); +test_invalid_value("scroll-padding-block-start", "10px 20%"); +test_invalid_value("scroll-padding-block-start", "fit-content"); + +test_invalid_value("scroll-padding-block-end", "none"); +test_invalid_value("scroll-padding-block-end", "-10px"); +test_invalid_value("scroll-padding-block-end", "10px 20%"); +test_invalid_value("scroll-padding-block-end", "max-content"); + +test_invalid_value("scroll-padding-inline-start", "none"); +test_invalid_value("scroll-padding-inline-start", "-10px"); +test_invalid_value("scroll-padding-inline-start", "10px 20%"); +test_invalid_value("scroll-padding-inline-start", "min-content"); + +test_invalid_value("scroll-padding-inline-end", "none"); +test_invalid_value("scroll-padding-inline-end", "-10px"); +test_invalid_value("scroll-padding-inline-end", "10px 20%"); +test_invalid_value("scroll-padding-inline-end", "max-content"); + + +test_invalid_value("scroll-padding-block", "none"); +test_invalid_value("scroll-padding-block", "-10px"); +test_invalid_value("scroll-padding-block", "-20%"); +test_invalid_value("scroll-padding-block", "calc(auto)"); +test_invalid_value("scroll-padding-block", "10px 20px 30px 40px 50px"); +test_invalid_value("scroll-padding-block", "fit-content"); +test_invalid_value("scroll-padding-block", "max-content"); +test_invalid_value("scroll-padding-block", "min-content"); + +test_invalid_value("scroll-padding-inline", "none"); +test_invalid_value("scroll-padding-inline", "-10px"); +test_invalid_value("scroll-padding-inline", "-20%"); +test_invalid_value("scroll-padding-inline", "calc(auto)"); +test_invalid_value("scroll-padding-inline", "10px 20px 30px 40px 50px"); +test_invalid_value("scroll-padding-inline", "fit-content"); +test_invalid_value("scroll-padding-inline", "max-content"); +test_invalid_value("scroll-padding-inline", "min-content"); +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-inline-valid.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-block-inline-valid.html index 3fb9003585a..a932bb6393d 100644 --- a/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-inline-valid.html +++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-block-inline-valid.html @@ -2,22 +2,33 @@ <html> <head> <meta charset="utf-8"> -<title>CSS Scroll Snap Test: scroll-padding-inline with valid values</title> -<link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-padding-inline"> -<meta name="assert" content="scroll-padding-inline supports the full grammar '[ auto | <length-percentage> ]{1,2}'."> +<title>CSS Scroll Snap Test: scroll-padding-block, scroll-padding-inline with valid values</title> +<link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1/#padding-longhands-logical"> +<meta name="assert" content="scroll-padding-block, scroll-padding-inline supports the full grammar '[ auto | <length-percentage> ]{1,2}'."> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/css/support/parsing-testcommon.js"></script> </head> <body> <script> +test_valid_value("scroll-padding-block-start", "auto"); +test_valid_value("scroll-padding-block-start", "10px"); +test_valid_value("scroll-padding-block-start", "20%"); +test_valid_value("scroll-padding-block-start", "calc(2em + 3ex)"); +test_valid_value("scroll-padding-block-start", "calc(50% + 60px)"); + +test_valid_value("scroll-padding-block-end", "auto"); +test_valid_value("scroll-padding-block-end", "10px"); +test_valid_value("scroll-padding-block-end", "20%"); +test_valid_value("scroll-padding-block-end", "calc(2em + 3ex)"); +test_valid_value("scroll-padding-block-end", "calc(50% + 60px)"); + test_valid_value("scroll-padding-inline-start", "auto"); test_valid_value("scroll-padding-inline-start", "10px"); test_valid_value("scroll-padding-inline-start", "20%"); test_valid_value("scroll-padding-inline-start", "calc(2em + 3ex)"); test_valid_value("scroll-padding-inline-start", "calc(50% + 60px)"); - test_valid_value("scroll-padding-inline-end", "auto"); test_valid_value("scroll-padding-inline-end", "10px"); test_valid_value("scroll-padding-inline-end", "20%"); @@ -25,12 +36,20 @@ test_valid_value("scroll-padding-inline-end", "calc(2em + 3ex)"); test_valid_value("scroll-padding-inline-end", "calc(50% + 60px)"); +test_valid_value("scroll-padding-block", "auto"); +test_valid_value("scroll-padding-block", "10px"); +test_valid_value("scroll-padding-block", "20%"); +test_valid_value("scroll-padding-block", "calc(2em + 3ex)"); +test_valid_value("scroll-padding-block", "calc(50% + 60px)"); +test_valid_value("scroll-padding-block", "1px 2px"); +test_valid_value("scroll-padding-block", "1px auto"); +test_valid_value("scroll-padding-block", "auto auto", "auto"); + test_valid_value("scroll-padding-inline", "auto"); test_valid_value("scroll-padding-inline", "10px"); test_valid_value("scroll-padding-inline", "20%"); test_valid_value("scroll-padding-inline", "calc(2em + 3ex)"); test_valid_value("scroll-padding-inline", "calc(50% + 60px)"); - test_valid_value("scroll-padding-inline", "1px 2px"); test_valid_value("scroll-padding-inline", "1px auto"); test_valid_value("scroll-padding-inline", "auto auto", "auto"); diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-block-invalid.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-block-invalid.html deleted file mode 100644 index 206e6f5da89..00000000000 --- a/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-block-invalid.html +++ /dev/null @@ -1,29 +0,0 @@ -<!DOCTYPE html> -<html> -<head> -<meta charset="utf-8"> -<title>CSS Scroll Snap Test: scroll-padding-block with invalid values</title> -<link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-padding-block"> -<meta name="assert" content="scroll-padding-block supports only the grammar '[ auto | <length-percentage> ]{1,2}'."> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="/css/support/parsing-testcommon.js"></script> -</head> -<body> -<script> -test_invalid_value("scroll-padding-block-start", "none"); -test_invalid_value("scroll-padding-block-start", "-10px"); -test_invalid_value("scroll-padding-block-start", "10px 20%"); - - -test_invalid_value("scroll-padding-block-end", "none"); -test_invalid_value("scroll-padding-block-end", "-10px"); -test_invalid_value("scroll-padding-block-end", "10px 20%"); - - -test_invalid_value("scroll-padding-block", "none"); -test_invalid_value("scroll-padding-block", "-10px"); -test_invalid_value("scroll-padding-block", "10px 20px 30px 40px 50px"); -</script> -</body> -</html> diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-block-valid.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-block-valid.html deleted file mode 100644 index 79f675acd5b..00000000000 --- a/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-block-valid.html +++ /dev/null @@ -1,39 +0,0 @@ -<!DOCTYPE html> -<html> -<head> -<meta charset="utf-8"> -<title>CSS Scroll Snap Test: scroll-padding-block with valid values</title> -<link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-padding-block"> -<meta name="assert" content="scroll-padding-block supports the full grammar '[ auto | <length-percentage> ]{1,2}'."> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="/css/support/parsing-testcommon.js"></script> -</head> -<body> -<script> -test_valid_value("scroll-padding-block-start", "auto"); -test_valid_value("scroll-padding-block-start", "10px"); -test_valid_value("scroll-padding-block-start", "20%"); -test_valid_value("scroll-padding-block-start", "calc(2em + 3ex)"); -test_valid_value("scroll-padding-block-start", "calc(50% + 60px)"); - - -test_valid_value("scroll-padding-block-end", "auto"); -test_valid_value("scroll-padding-block-end", "10px"); -test_valid_value("scroll-padding-block-end", "20%"); -test_valid_value("scroll-padding-block-end", "calc(2em + 3ex)"); -test_valid_value("scroll-padding-block-end", "calc(50% + 60px)"); - - -test_valid_value("scroll-padding-block", "auto"); -test_valid_value("scroll-padding-block", "10px"); -test_valid_value("scroll-padding-block", "20%"); -test_valid_value("scroll-padding-block", "calc(2em + 3ex)"); -test_valid_value("scroll-padding-block", "calc(50% + 60px)"); - -test_valid_value("scroll-padding-block", "1px 2px"); -test_valid_value("scroll-padding-block", "1px auto"); -test_valid_value("scroll-padding-block", "auto auto", "auto"); -</script> -</body> -</html> diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-inline-invalid.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-inline-invalid.html deleted file mode 100644 index 0cf3fa7353f..00000000000 --- a/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-inline-invalid.html +++ /dev/null @@ -1,29 +0,0 @@ -<!DOCTYPE html> -<html> -<head> -<meta charset="utf-8"> -<title>CSS Scroll Snap Test: scroll-padding-inline with invalid values</title> -<link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-padding-inline"> -<meta name="assert" content="scroll-padding-inline supports only the grammar '[ auto | <length-percentage> ]{1,2}'."> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="/css/support/parsing-testcommon.js"></script> -</head> -<body> -<script> -test_invalid_value("scroll-padding-inline-start", "none"); -test_invalid_value("scroll-padding-inline-start", "-10px"); -test_invalid_value("scroll-padding-inline-start", "10px 20%"); - - -test_invalid_value("scroll-padding-inline-end", "none"); -test_invalid_value("scroll-padding-inline-end", "-10px"); -test_invalid_value("scroll-padding-inline-end", "10px 20%"); - - -test_invalid_value("scroll-padding-inline", "none"); -test_invalid_value("scroll-padding-inline", "-10px"); -test_invalid_value("scroll-padding-inline", "10px 20px 30px 40px 50px"); -</script> -</body> -</html> diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-invalid.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-invalid.html index e060fcdc0ec..c805ee2e55e 100644 --- a/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-invalid.html +++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-invalid.html @@ -15,30 +15,38 @@ test_invalid_value("scroll-padding-top", "20"); test_invalid_value("scroll-padding-top", "-20px"); test_invalid_value("scroll-padding-top", "none"); test_invalid_value("scroll-padding-top", "10px 20%"); +test_invalid_value("scroll-padding-top", "fit-content"); test_invalid_value("scroll-padding-right", "20"); test_invalid_value("scroll-padding-right", "-20px"); test_invalid_value("scroll-padding-right", "none"); test_invalid_value("scroll-padding-right", "10px 20%"); +test_invalid_value("scroll-padding-right", "max-content"); test_invalid_value("scroll-padding-bottom", "20"); test_invalid_value("scroll-padding-bottom", "-20px"); test_invalid_value("scroll-padding-bottom", "none"); test_invalid_value("scroll-padding-bottom", "10px 20%"); +test_invalid_value("scroll-padding-bottom", "min-content"); test_invalid_value("scroll-padding-left", "20"); test_invalid_value("scroll-padding-left", "-20px"); test_invalid_value("scroll-padding-left", "none"); test_invalid_value("scroll-padding-left", "10px 20%"); +test_invalid_value("scroll-padding-left", "fit-content"); test_invalid_value("scroll-padding", "20"); test_invalid_value("scroll-padding", "-20px"); test_invalid_value("scroll-padding", "none"); +test_invalid_value("scroll-padding", "calc(auto)"); test_invalid_value("scroll-padding", "10px 20px 30px 40px 50px"); +test_invalid_value("scroll-padding", "fit-content"); +test_invalid_value("scroll-padding", "max-content"); +test_invalid_value("scroll-padding", "min-content"); </script> </body> </html> diff --git a/tests/wpt/web-platform-tests/css/css-shapes/animation/shape-image-threshold-interpolation.html b/tests/wpt/web-platform-tests/css/css-shapes/animation/shape-image-threshold-interpolation.html new file mode 100644 index 00000000000..edac744592f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-shapes/animation/shape-image-threshold-interpolation.html @@ -0,0 +1,87 @@ +<!DOCTYPE html> +<meta charset="UTF-8"> +<title>shape-image-threshold interpolation</title> +<link rel="help" href="https://drafts.csswg.org/css-shapes/#shape-image-threshold-property"> +<meta name="assert" content="shape-image-threshold supports animation by computed value"> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/css/support/interpolation-testcommon.js"></script> + +<style> +.parent { + shape-image-threshold: 0.4; +} +.target { + shape-image-threshold: 0.6; +} +</style> + +<body></body> + +<script> +test_interpolation({ + property: 'shape-image-threshold', + from: neutralKeyframe, + to: '0.8', +}, [ + {at: -1.5, expect: '0.3'}, + {at: -0.5, expect: '0.5'}, + {at: 0, expect: '0.6'}, + {at: 0.5, expect: '0.7'}, + {at: 1, expect: '0.8'}, + {at: 1.5, expect: '0.9'}, +]); + +test_interpolation({ + property: 'shape-image-threshold', + from: 'initial', + to: '0.8', +}, [ + {at: -1.5, expect: '0'}, + {at: -0.5, expect: '0'}, + {at: 0, expect: '0'}, + {at: 0.5, expect: '0.4'}, + {at: 1, expect: '0.8'}, + {at: 1.5, expect: '1'}, +]); + +test_interpolation({ + property: 'shape-image-threshold', + from: 'inherit', + to: '0.8', +}, [ + {at: -1.5, expect: '0'}, + {at: -0.5, expect: '0.2'}, + {at: 0, expect: '0.4'}, + {at: 0.5, expect: '0.6'}, + {at: 1, expect: '0.8'}, + {at: 1.5, expect: '1'}, +]); + +test_interpolation({ + property: 'shape-image-threshold', + from: 'unset', + to: '0.8', +}, [ + {at: -1.5, expect: '0'}, + {at: -0.5, expect: '0'}, + {at: 0, expect: '0'}, + {at: 0.5, expect: '0.4'}, + {at: 1, expect: '0.8'}, + {at: 1.5, expect: '1'}, +]); + +test_interpolation({ + property: 'shape-image-threshold', + from: '0.5', + to: '1' +}, [ + {at: -1.5, expect: '0'}, + {at: -0.5, expect: '0.25'}, + {at: 0, expect: '0.5'}, + {at: 0.5, expect: '0.75'}, + {at: 1, expect: '1'}, + {at: 1.5, expect: '1'} +]); +</script> diff --git a/tests/wpt/web-platform-tests/css/css-shapes/animation/shape-margin-interpolation.html b/tests/wpt/web-platform-tests/css/css-shapes/animation/shape-margin-interpolation.html new file mode 100644 index 00000000000..48b3d0c4607 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-shapes/animation/shape-margin-interpolation.html @@ -0,0 +1,87 @@ +<!DOCTYPE html> +<meta charset="UTF-8"> +<title>shape-margin interpolation</title> +<link rel="help" href="https://drafts.csswg.org/css-shapes/#shape-margin-property"> +<meta name="assert" content="shape-margin supports animation by computed value"> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/css/support/interpolation-testcommon.js"></script> + +<style> +.parent { + shape-margin: 30px; +} +.target { + shape-margin: 10px; +} +</style> + +<body></body> + +<script> +test_interpolation({ + property: 'shape-margin', + from: neutralKeyframe, + to: '20px', +}, [ + {at: -0.3, expect: '7px'}, + {at: 0, expect: '10px'}, + {at: 0.3, expect: '13px'}, + {at: 0.6, expect: '16px'}, + {at: 1, expect: '20px'}, + {at: 1.5, expect: '25px'}, +]); + +test_interpolation({ + property: 'shape-margin', + from: 'initial', + to: '20px', +}, [ + {at: -0.3, expect: '0px'}, + {at: 0, expect: '0px'}, + {at: 0.3, expect: '6px'}, + {at: 0.6, expect: '12px'}, + {at: 1, expect: '20px'}, + {at: 1.5, expect: '30px'}, +]); + +test_interpolation({ + property: 'shape-margin', + from: 'inherit', + to: '20px', +}, [ + {at: -0.3, expect: '33px'}, + {at: 0, expect: '30px'}, + {at: 0.3, expect: '27px'}, + {at: 0.6, expect: '24px'}, + {at: 1, expect: '20px'}, + {at: 1.5, expect: '15px'}, +]); + +test_interpolation({ + property: 'shape-margin', + from: 'unset', + to: '20px', +}, [ + {at: -0.3, expect: '0px'}, + {at: 0, expect: '0px'}, + {at: 0.3, expect: '6px'}, + {at: 0.6, expect: '12px'}, + {at: 1, expect: '20px'}, + {at: 1.5, expect: '30px'}, +]); + +test_interpolation({ + property: 'shape-margin', + from: '0px', + to: '100px' +}, [ + {at: -0.3, expect: '0px'}, // CSS shape-margin can't be negative. + {at: 0, expect: '0px'}, + {at: 0.3, expect: '30px'}, + {at: 0.6, expect: '60px'}, + {at: 1, expect: '100px'}, + {at: 1.5, expect: '150px'}, +]); +</script> diff --git a/tests/wpt/web-platform-tests/css/css-shapes/animation/shape-outside-interpolation.html b/tests/wpt/web-platform-tests/css/css-shapes/animation/shape-outside-interpolation.html new file mode 100644 index 00000000000..3380acdba00 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-shapes/animation/shape-outside-interpolation.html @@ -0,0 +1,137 @@ +<!DOCTYPE html> +<meta charset="UTF-8"> +<title>shape-outside interpolation</title> +<link rel="help" href="https://drafts.csswg.org/css-shapes/#shape-outside-property"> +<meta name="assert" content="shape-outside supports animation as <basic-shape> or discrete"> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/css/support/interpolation-testcommon.js"></script> + +<style> +.parent { + shape-outside: circle(80% at 30% 10%); +} +.target { + shape-outside: circle(60% at 10% 30%); +} +</style> + +<body></body> + +<script> +/* TODO: add inset test once blend() works for it */ + +test_interpolation({ + property: 'shape-outside', + from: neutralKeyframe, + to: 'circle(40% at 20% 20%)', +}, [ + {at: -0.3, expect: 'circle(66% at 7% 33%)'}, + {at: 0, expect: 'circle(60% at 10% 30%)'}, + {at: 0.3, expect: 'circle(54% at 13% 27%)'}, + {at: 0.6, expect: 'circle(48% at 16% 24%)'}, + {at: 1, expect: 'circle(40% at 20% 20%)'}, + {at: 1.5, expect: 'circle(30% at 25% 15%)'}, +]); + +test_no_interpolation({ + property: 'shape-outside', + from: 'initial', + to: 'circle(40% at 20% 20%)', +}); + +test_interpolation({ + property: 'shape-outside', + from: 'inherit', + to: 'circle(40% at 20% 20%)', +}, [ + {at: -0.3, expect: 'circle(92% at 33% 7%)'}, + {at: 0, expect: 'circle(80% at 30% 10%)'}, + {at: 0.3, expect: 'circle(68% at 27% 13%)'}, + {at: 0.6, expect: 'circle(56% at 24% 16%)'}, + {at: 1, expect: 'circle(40% at 20% 20%)'}, + {at: 1.5, expect: 'circle(20% at 15% 25%)'}, +]); + +test_no_interpolation({ + property: 'shape-outside', + from: 'unset', + to: 'circle(40% at 20% 20%)', +}); + +test_interpolation({ + property: 'shape-outside', + from: 'circle(100% at 0% 0%)', + to: 'circle(50% at 25% 25%)', +}, [ + {at: -0.3, expect: 'circle(115% at -7.5% -7.5%)'}, + {at: 0, expect: 'circle(100% at 0% 0%)'}, + {at: 0.3, expect: 'circle(85% at 7.5% 7.5%)'}, + {at: 0.6, expect: 'circle(70% at 15% 15%)'}, + {at: 1, expect: 'circle(50% at 25% 25%)'}, + {at: 1.5, expect: 'circle(25% at 37.5% 37.5%)'} +]); + +test_interpolation({ + property: 'shape-outside', + from: 'ellipse(100% 100% at 0% 0%)', + to: 'ellipse(50% 50% at 25% 25%)', +}, [ + {at: -0.3, expect: 'ellipse(115% 115% at -7.5% -7.5%)'}, + {at: 0, expect: 'ellipse(100% 100% at 0% 0%)'}, + {at: 0.3, expect: 'ellipse(85% 85% at 7.5% 7.5%)'}, + {at: 0.6, expect: 'ellipse(70% 70% at 15% 15%)'}, + {at: 1, expect: 'ellipse(50% 50% at 25% 25%)'}, + {at: 1.5, expect: 'ellipse(25% 25% at 37.5% 37.5%)'} +]); + +test_interpolation({ + property: 'shape-outside', + from: 'polygon(nonzero, 0px 0px, 25px 25px, 50px 50px)', + to: 'polygon(nonzero, 25px 25px, 50px 50px, 75px 75px)', +}, [ + {at: -0.3, expect: 'polygon(nonzero, -7.5px -7.5px, 17.5px 17.5px, 42.5px 42.5px)'}, + {at: 0, expect: 'polygon(nonzero, 0px 0px, 25px 25px, 50px 50px)'}, + {at: 0.3, expect: 'polygon(nonzero, 7.5px 7.5px, 32.5px 32.5px, 57.5px 57.5px)'}, + {at: 0.6, expect: 'polygon(nonzero, 15px 15px, 40px 40px, 65px 65px)'}, + {at: 1, expect: 'polygon(nonzero, 25px 25px, 50px 50px, 75px 75px)'}, + {at: 1.5, expect: 'polygon(nonzero, 37.5px 37.5px, 62.5px 62.5px, 87.5px 87.5px)'} +]); + +test_no_interpolation({ + property: 'shape-outside', + from: 'polygon(evenodd, 0px 0px, 25px 25px, 50px 50px)', + to: 'polygon(nonzero, 25px 25px, 50px 50px, 75px 75px)', +}); + +test_interpolation({ + property: 'shape-outside', + from: 'inset(100%)', + to: 'inset(120%)', +}, [ + {at: -0.3, expect: 'inset(94%)'}, + {at: 0, expect: 'inset(100%)'}, + {at: 0.3, expect: 'inset(106%)'}, + {at: 0.6, expect: 'inset(112%)'}, + {at: 1, expect: 'inset(120%)'}, + {at: 1.5, expect: 'inset(130%)'}, +]); + +test_no_interpolation({ + property: 'shape-outside', + from: 'none', + to: 'ellipse(100% 100% at 0% 0%)', +}); + +// TODO: add intermediate keyframe tests when CSS shapes position computed values are cleaned up +test_interpolation({ + property: 'shape-outside', + from: 'circle(25% at right 5% bottom 15px)', + to: 'circle(45% at right 25% bottom 35px)', +}, [ + {at: 0.25, expect: 'circle(30% at 90% calc(-20px + 100%))'}, + {at: 0.5, expect: 'circle(35% at 85% calc(-25px + 100%))'}, + {at: 0.75, expect: 'circle(40% at 80% calc(-30px + 100%))'}, +]); +</script> diff --git a/tests/wpt/web-platform-tests/docs/running-tests/android_webview.md b/tests/wpt/web-platform-tests/docs/running-tests/android_webview.md new file mode 100644 index 00000000000..5d1cb26ecaf --- /dev/null +++ b/tests/wpt/web-platform-tests/docs/running-tests/android_webview.md @@ -0,0 +1,36 @@ +# Android WebView + +To run WPT on WebView on an Android device, some additional set-up is required. + +Currently, Android WebView support is experimental. + +* Please check [Chrome for Android](chrome_android) for the common + instructions for Android support first. + +* Install an up-to-date version of system webview shell: + * Go to + [chromium-browser-snapshots](https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html?prefix=Android/) + * Find the subdirectory with the highest number and click it. + * Download `chrome-android.zip` file and unzip it. + * Install `SystemWebViewShell.apk`. + * On emulator, system webview shell may already be installed by default. Then + you may need to remove the existing apk: + * Choose a userdebug build. + * Run an emulator with + [writable system partition from command line](https://chromium.googlesource.com/chromium/src/+/HEAD/docs/android_emulator.md/) + +* If you have an issue with ChromeDriver version, try removing + `_venv/bin/chromedriver` such that wpt runner can install a matching version + automatically. Failing that, please check your environment path and make + sure that no other ChromeDriver is used. + +Example command line: + +```bash +./wpt run --test-type=testharness android_webview <TESTS> +``` + +* Note that there is no support for channel or automatic installation. The test + will be run against the current WebView version installed on the device. + +* Reftests are not supported at the moment. diff --git a/tests/wpt/web-platform-tests/docs/running-tests/from-local-system.md b/tests/wpt/web-platform-tests/docs/running-tests/from-local-system.md index 97a6b9e940f..35c1905a0c5 100644 --- a/tests/wpt/web-platform-tests/docs/running-tests/from-local-system.md +++ b/tests/wpt/web-platform-tests/docs/running-tests/from-local-system.md @@ -144,6 +144,7 @@ Additional browser-specific documentation: chrome chrome_android + android_webview safari ``` diff --git a/tests/wpt/web-platform-tests/dom/idlharness.any.js b/tests/wpt/web-platform-tests/dom/idlharness.any.js new file mode 100644 index 00000000000..5119f9f9754 --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/idlharness.any.js @@ -0,0 +1,25 @@ +// META: global=!window,worker +// META: script=/resources/WebIDLParser.js +// META: script=/resources/idlharness.js +// META: timeout=long + +// Note: This test doesn't cover the Window context, see idlharness.window.js +// for that coverage and why it can't be merged into this test. + +'use strict'; + +idl_test( + ['dom'], + ['html'], + idl_array => { + idl_array.add_objects({ + EventTarget: ['new EventTarget()'], + Event: ['new Event("foo")'], + CustomEvent: ['new CustomEvent("foo")'], + AbortController: ['new AbortController()'], + AbortSignal: ['new AbortController().signal'], + }); + } +); + +done(); diff --git a/tests/wpt/web-platform-tests/dom/idlharness.window.js b/tests/wpt/web-platform-tests/dom/idlharness.window.js new file mode 100644 index 00000000000..7d87aeaa337 --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/idlharness.window.js @@ -0,0 +1,47 @@ +// META: script=/resources/WebIDLParser.js +// META: script=/resources/idlharness.js +// META: script=/common/subset-tests-by-key.js +// META: variant=?include=Node +// META: variant=?exclude=Node +// META: timeout=long + +// Note: This isn't merged into idlharness.any.js because of the use of variants, +// i.e., include=Node wouldn't make sense for workers. + +'use strict'; + +idl_test( + ['dom'], + ['html'], + idl_array => { + self.xmlDoc = document.implementation.createDocument(null, '', null); + self.detachedRange = document.createRange(); + detachedRange.detach(); + self.element = xmlDoc.createElementNS(null, 'test'); + element.setAttribute('bar', 'baz'); + + idl_array.add_objects({ + EventTarget: ['new EventTarget()'], + Event: ['document.createEvent("Event")', 'new Event("foo")'], + CustomEvent: ['new CustomEvent("foo")'], + AbortController: ['new AbortController()'], + AbortSignal: ['new AbortController().signal'], + Document: ['new Document()'], + XMLDocument: ['xmlDoc'], + DOMImplementation: ['document.implementation'], + DocumentFragment: ['document.createDocumentFragment()'], + DocumentType: ['document.doctype'], + Element: ['element'], + Attr: ['document.querySelector("[id]").attributes[0]'], + Text: ['document.createTextNode("abc")'], + ProcessingInstruction: ['xmlDoc.createProcessingInstruction("abc", "def")'], + Comment: ['document.createComment("abc")'], + Range: ['document.createRange()', 'detachedRange'], + NodeIterator: ['document.createNodeIterator(document.body, NodeFilter.SHOW_ALL, null, false)'], + TreeWalker: ['document.createTreeWalker(document.body, NodeFilter.SHOW_ALL, null, false)'], + NodeList: ['document.querySelectorAll("script")'], + HTMLCollection: ['document.body.children'], + DOMTokenList: ['document.body.classList'], + }); + } +); diff --git a/tests/wpt/web-platform-tests/dom/interfaces.html b/tests/wpt/web-platform-tests/dom/interfaces.html deleted file mode 100644 index 111608bcaec..00000000000 --- a/tests/wpt/web-platform-tests/dom/interfaces.html +++ /dev/null @@ -1,63 +0,0 @@ -<!doctype html> -<meta charset=utf-8> -<title>DOM IDL tests</title> -<meta name="timeout" content="long"> -<meta name="variant" content="?include=Node"> -<meta name="variant" content="?exclude=Node"> -<script src=/resources/testharness.js></script> -<script src=/resources/testharnessreport.js></script> -<script src=/common/subset-tests-by-key.js></script> -<script src=/resources/WebIDLParser.js></script> -<script src=/resources/idlharness.js></script> - -<h1>DOM IDL tests</h1> -<div id=log></div> -<script> -"use strict"; -var xmlDoc = document.implementation.createDocument(null, "", null); -var detachedRange = document.createRange(); -detachedRange.detach(); -var element = xmlDoc.createElementNS(null, "test"); -element.setAttribute("bar", "baz"); - -var idlArray = new IdlArray(); - -function doTest([html, dom]) { - idlArray.add_idls(dom); - idlArray.add_dependency_idls(html); - idlArray.add_objects({ - EventTarget: ['new EventTarget()'], - Event: ['document.createEvent("Event")', 'new Event("foo")'], - CustomEvent: ['new CustomEvent("foo")'], - AbortController: ['new AbortController()'], - AbortSignal: ['new AbortController().signal'], - Document: ['new Document()'], - XMLDocument: ['xmlDoc'], - DOMImplementation: ['document.implementation'], - DocumentFragment: ['document.createDocumentFragment()'], - DocumentType: ['document.doctype'], - Element: ['element'], - Attr: ['document.querySelector("[id]").attributes[0]'], - Text: ['document.createTextNode("abc")'], - ProcessingInstruction: ['xmlDoc.createProcessingInstruction("abc", "def")'], - Comment: ['document.createComment("abc")'], - Range: ['document.createRange()', 'detachedRange'], - NodeIterator: ['document.createNodeIterator(document.body, NodeFilter.SHOW_ALL, null, false)'], - TreeWalker: ['document.createTreeWalker(document.body, NodeFilter.SHOW_ALL, null, false)'], - NodeList: ['document.querySelectorAll("script")'], - HTMLCollection: ['document.body.children'], - DOMTokenList: ['document.body.classList'], - }); - idlArray.test(); -} - -function fetchText(url) { - return fetch(url).then((response) => response.text()); -} - -promise_test(function() { - return Promise.all(['/interfaces/html.idl', - '/interfaces/dom.idl'].map(fetchText)) - .then(doTest); -}, "Test driver"); -</script> diff --git a/tests/wpt/web-platform-tests/dom/nodes/aria-element-reflection.tentative.html b/tests/wpt/web-platform-tests/dom/nodes/aria-element-reflection.tentative.html new file mode 100644 index 00000000000..974727f92aa --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/nodes/aria-element-reflection.tentative.html @@ -0,0 +1,266 @@ +<!DOCTYPE HTML> +<html> + <head> + <meta charset="utf-8" /> + <title>Element Reflection for aria-activedescendant and aria-errormessage</title> + <link rel=help href="https://whatpr.org/html/3917/common-dom-interfaces.html#reflecting-content-attributes-in-idl-attributes:element"> + <link rel="author" title="Meredith Lane" href="meredithl@chromium.org"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + </head> + <div id="activedescendant" aria-activedescendant="x"></div> + + <div id="parent-listbox" role="listbox" aria-activedescendant="i1"> + <div role="option" id="i1">Item 1</div> + <div role="option" id="i2">Item 2</div> + </div> + + <script> + test(function(t) { + const ancestor = document.getElementById("parent-listbox"); + assert_equals(activedescendant.ariaActiveDescendantElement, null, + "invalid ID for relationship returns null"); + + const descendant1 = document.getElementById("i1"); + const descendant2 = document.getElementById("i2"); + + // Element reference should be set if the content attribute was included. + assert_equals(ancestor.getAttribute("aria-activedescendant"), "i1", "check content attribute after parsing."); + assert_equals(ancestor.ariaActiveDescendantElement, i1, "check idl attribute after parsing."); + + // If we set the content attribute, the element reference should reflect this. + ancestor.setAttribute("aria-activedescendant", "i2"); + assert_equals(ancestor.ariaActiveDescendantElement, descendant2, "setting the content attribute updates the element reference."); + + // Setting the element reference should be reflected in the content attribute. + ancestor.ariaActiveDescendantElement = descendant1; + assert_equals(ancestor.ariaActiveDescendantElement, descendant1, "getter should return the right element reference."); + assert_equals(ancestor.getAttribute("aria-activedescendant"), "i1", "content attribute should reflect the element reference."); + + // Both content and IDL attribute should be nullable. + ancestor.ariaActiveDescendantElement = null; + assert_equals(ancestor.ariaActiveDescendantElement, null); + assert_false(ancestor.hasAttribute("aria-activedescendant")); + assert_equals(ancestor.getAttribute("aria-activedescendant"), null, "nullifying the idl attribute removes the content attribute."); + + // Setting content attribute to non-existent or non compatible element should nullify the IDL attribute. + // Reset the element to an existant one. + ancestor.setAttribute("aria-activedescendant", "i1"); + assert_equals(ancestor.ariaActiveDescendantElement, i1, "reset attribute."); + + ancestor.setAttribute("aria-activedescendant", "non-existent-element"); + assert_equals(ancestor.getAttribute("aria-activedescendant"), "non-existent-element"); + assert_equals(ancestor.ariaActiveDescendantElement, null,"non-DOM content attribute should null the element reference"); + }, "aria-activedescendant element reflection"); + </script> + + <div id="parent-listbox-2" role="listbox" aria-activedescendant="option1"> + <div role="option" id="option1">Item 1</div> + <div role="option" id="option2">Item 2</div> + </div> + + <script> + test(function(t) { + const ancestor = document.getElementById("parent-listbox-2"); + const option1 = document.getElementById("option1"); + const option2 = document.getElementById("option2"); + assert_equals(ancestor.ariaActiveDescendantElement, option1); + + option1.removeAttribute("id"); + option2.setAttribute("id", "option1"); + const option2Duplicate = document.getElementById("option1"); + assert_equals(option2, option2Duplicate); + + assert_equals(ancestor.ariaActiveDescendantElement, option2); + }, "If the content attribute is set directly, the IDL attribute getter always returns the first element whose ID matches the content attribute."); + </script> + + <div id="blank-id-parent" role="listbox"> + <div role="option" id="multiple-id"></div> + <div role="option" id="multiple-id"></div> + </div> + + <script> + test(function(t) { + const ancestor = document.getElementById("blank-id-parent"); + + // Get second child of parent. This violates the setting of a reflected element + // as it will not be the first child of the parent with that ID, which should + // result in an empty string for the content attribute. + ancestor.ariaActiveDescendantElement = ancestor.children[1]; + assert_true(ancestor.hasAttribute("aria-activedescendant")); + assert_equals(ancestor.getAttribute("aria-activedescendant"), ""); + assert_equals(ancestor.ariaActiveDescendantElement, ancestor.children[1]); + }, "Setting the IDL attribute to an element which is not the first element in DOM order with its ID causes the content attribute to be an empty string"); + </script> + + <div id="outer-container"> + <p id="light-paragraph">Hello world!</p> + <span class="shadow-host"> + </span> + </div> + + <script> + test(function(t) { + const shadowElement = document.querySelector(".shadow-host"); + const shadow = shadowElement.attachShadow({mode: "open"}); + const link = document.createElement("a"); + shadow.appendChild(link); + + const lightPara = document.getElementById("light-paragraph"); + assert_equals(lightPara.ariaActiveDescendantElement, null); + + // The given element crosses a shadow dom boundary, so it cannot be + // set as an element reference. + lightPara.ariaActiveDescendantElement = link; + assert_equals(lightPara.ariaActiveDescendantElement, null); + + // The given element crosses a shadow dom boundary (upwards), so + // can be used as an element reference, but the content attribute + // should reflect the empty string. + link.ariaActiveDescendantElement = lightPara; + assert_equals(link.ariaActiveDescendantElement, lightPara); + assert_equals(link.getAttribute("aria-activedescendant"), ""); + }, "Setting an element reference that crosses into a shadow tree is disallowed, but setting one that is in a shadow inclusive ancestor is allowed."); + </script> + + <input id="startTime" ></input> + <span id="errorMessage">Invalid Time</span> + + <script> + test(function(t) { + const inputElement = document.getElementById("startTime"); + const errorMessage = document.getElementById("errorMessage"); + + inputElement.ariaErrorMessageElement = errorMessage; + assert_equals(inputElement.getAttribute("aria-errormessage"), "errorMessage"); + + inputElement.ariaErrorMessageElement = null; + assert_equals(inputElement.ariaErrorMessageElement, null, "blah"); + assert_false(inputElement.hasAttribute("aria-errormessage")); + + inputElement.setAttribute("aria-errormessage", "errorMessage"); + assert_equals(inputElement.ariaErrorMessageElement, errorMessage); + + }, "aria-errormessage"); + + </script> + + <label> + Password: + <input id="password-field" type="password" aria-details="pw"> + </label> + + <ul> + <li id="list-item-1">First description.</li> + <li id="list-item-2">Second description.</li> + </ul> + + <script> + + test(function(t) { + const inputElement = document.getElementById("password-field"); + const ul1 = document.getElementById("list-item-1"); + const ul2 = document.getElementById("list-item-2"); + + assert_equals(inputElement.ariaDetailsElement, null); + inputElement.ariaDetailsElement = ul1; + assert_equals(inputElement.getAttribute("aria-details"), "list-item-1"); + + inputElement.ariaDetailsElement = ul2; + assert_equals(inputElement.getAttribute("aria-details"), "list-item-2"); + }, "aria-details"); + </script> + + <div id="old-parent" role="listbox" aria-activedescendant="content-attr-element"> + <div role="option" id="content-attr-element">Item 1</div> + <div role="option" id="idl-attr-element">Item 2</div> + </div> + + <script> + + test(function(t) { + const deletionParent = document.getElementById("old-parent"); + + const descendant1 = document.getElementById("content-attr-element"); + const descendant2 = document.getElementById("idl-attr-element"); + + // Deleting an element set via the content attribute. + assert_equals(deletionParent.getAttribute("aria-activedescendant"), "content-attr-element"); + assert_equals(deletionParent.ariaActiveDescendantElement, descendant1); + + deletionParent.removeChild(descendant1); + assert_equals(deletionParent.getAttribute("aria-activedescendant"), "content-attr-element"); + assert_equals(deletionParent.ariaActiveDescendantElement, null); + + // Deleting an element set via the IDL attribute. + deletionParent.ariaActiveDescendantElement = descendant2; + assert_equals(deletionParent.getAttribute("aria-activedescendant"), "idl-attr-element"); + + deletionParent.removeChild(descendant2); + assert_equals(deletionParent.ariaActiveDescendantElement, null); + + // The content attribute will still reflect the id. + assert_equals(deletionParent.getAttribute("aria-activedescendant"), "idl-attr-element"); + }, "Deleting a reflected element should return null for the IDL attribute and cause the content attribute to become stale."); + </script> + + <div id="parent" role="listbox" aria-activedescendant="original"> + <div role="option" id="original">Item 1</div> + <div role="option" id="element-with-persistant-id">Item 2</div> + </div> + + <script> + test(function(t) { + const parentNode = document.getElementById("parent"); + const changingIdElement = document.getElementById("original"); + const persistantIDElement = document.getElementById("element-with-persistant-id"); + + assert_equals(parentNode.ariaActiveDescendantElement, changingIdElement); + + // Modify the id attribute. + changingIdElement.setAttribute("id", "new-id"); + + // The content attribute still reflects the old id, and we expect the + // Element reference to be null as there is no DOM node with id "original" + assert_equals(parentNode.getAttribute("aria-activedescendant"), "original"); + assert_equals(parentNode.ariaActiveDescendantElement, null, "Element set via content attribute with a changed id will return null on getting"); + + parentNode.ariaActiveDescendantElement = changingIdElement; + assert_equals(parentNode.getAttribute("aria-activedescendant"), "new-id"); + + // The explicitly set element takes precendance over the content attribute. + // This means that we still return the same element reference, but the + // content attribute reflects the old id. + changingIdElement.setAttribute("id", "newer-id"); + assert_equals(parentNode.ariaActiveDescendantElement, changingIdElement, "explicitly set element is still present even after the id has been changed"); + assert_equals(parentNode.getAttribute("aria-activedescendant"), "new-id", "content attribute reflects the id that was present upon explicitly setting the element reference."); + }, "Changing the ID of an element causes the content attribute to become out of sync."); + </script> + + <div id="light-parent" role="listbox"> + <div role="option" id="light-element">Hello world!</div> + </div> + <div id="shadowHost"></div> + + <script> + test(function(t) { + const shadowElement = document.getElementById("shadowHost"); + const shadowHost = shadowElement.attachShadow({mode: "open"}); + const lightParent = document.getElementById("light-parent"); + const optionElement = document.getElementById("light-element"); + + lightParent.ariaActiveDescendantElement = optionElement; + assert_equals(lightParent.ariaActiveDescendantElement, optionElement); + + // Move the referenced element into shadow DOM. + shadowHost.appendChild(optionElement); + assert_equals(lightParent.ariaActiveDescendantElement, null); + assert_equals(lightParent.getAttribute("aria-activedescendant"), "light-element"); + + // Move the referenced element back into light DOM. + lightParent.appendChild(optionElement); + assert_equals(lightParent.ariaActiveDescendantElement, optionElement); + }, "Reparenting an element into a descendant shadow scope nullifies the element reference."); + </script> +</html> diff --git a/tests/wpt/web-platform-tests/encrypted-media/idlharness.https.html b/tests/wpt/web-platform-tests/encrypted-media/idlharness.https.html index 6a2ae80a538..b501bde9d25 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/idlharness.https.html +++ b/tests/wpt/web-platform-tests/encrypted-media/idlharness.https.html @@ -22,16 +22,15 @@ <script> 'use strict'; - promise_test(async () => { - const idls = await fetch('/interfaces/encrypted-media.idl').then(r => r.text()); - const html = await fetch('/interfaces/html.idl').then(r => r.text()); - const dom = await fetch('/interfaces/dom.idl').then(r => r.text()); - var idl_array = new IdlArray(); - idl_array.add_idls(idls); - idl_array.add_dependency_idls(html); - idl_array.add_dependency_idls(dom); - idl_array.test(); - }, 'Test encrypted-media IDL'); + idl_test( + ['encrypted-media'], + ['html', 'dom'], + idl_array => { + idl_array.add_objects({ + Navigator: ['navigator'], + }); + } + ); </script> </body> </html> diff --git a/tests/wpt/web-platform-tests/event-timing/bufferbeforeonload.html b/tests/wpt/web-platform-tests/event-timing/bufferbeforeonload.html deleted file mode 100644 index 4b003a98f64..00000000000 --- a/tests/wpt/web-platform-tests/event-timing/bufferbeforeonload.html +++ /dev/null @@ -1,99 +0,0 @@ -<!DOCTYPE html> -<html> -<meta charset=utf-8 /> -<title>Event Timing: buffer long-latency events before onload</title> -<meta name="timeout" content="long"> -<button id='button' onmousedown='clickDelay()'>Generate a 'click' event</button> -<script src=/resources/testharness.js></script> -<script src=/resources/testharnessreport.js></script> -<script src=/resources/testdriver.js></script> -<script src=/resources/testdriver-vendor.js></script> - -<script src=resources/event-timing-test-utils.js></script> -<img src=resources/slow-image.py> - -<script> - let clickTimeMin; - let processingStartMin; - let onloadStart; - let firstClickStart = 0; - let firstClickEnd = 0; - function clickDelay() { - const onclickStart = performance.now(); - if (firstClickStart === 0) - firstClickStart = onclickStart; - while(performance.now() < onclickStart + 60) {} - if (firstClickEnd === 0) - firstClickEnd = performance.now(); - } - - function validateEntries(entries) { - const entriesBeforeOnload = entries.filter( - e => e.startTime < onloadStart); - assert_equals(entriesBeforeOnload.length, 1, - "Long latency events before onload should be buffered."); - const entry = entriesBeforeOnload[0]; - verifyClickEvent(entry, true); - - assert_greater_than_equal(entry.startTime, clickTimeMin, - "The entry's start time should be later than clickTimeMin."); - assert_greater_than_equal(entry.processingStart, processingStartMin, - "The entry should be processed later than processingStartMin."); - assert_less_than_equal(entry.processingStart, firstClickStart, - "The processingStart must be before firstClickStart.") - assert_greater_than_equal(entry.processingEnd, firstClickEnd, - "The processingEnd must be after firstClickEnd."); - - const entriesAfterOnload = entries.filter( - e => e.startTime >= onloadStart); - assert_equals(entriesAfterOnload.length, 1, - "Events after onload should still be buffered."); - } - - /* Timeline: - Begin Busy Loop - Click 1 arrives - End Busy Loop - (Dispatch and Process Click 1 - buffered) - Onload Event Fires - Begin Busy Loop - Click 2 arrives - End Busy Loop - (Dispatch and Process Click 2 - not buffered) - */ - async_test(function(t) { - if (!window.PerformanceEventTiming) - assert_unreached("PerformanceEventTiming is not supported"); - - clickTimeMin = performance.now(); - clickAndBlockMain('button'); - // Event handlers will be dispatched asynchronously, so this will be called - // before processing begins. - processingStartMin = performance.now(); - const bufferedEntries = []; - on_event(window, 'load', e => { - onloadStart = performance.now(); - // Register the observer after the page has been loaded - const observer = new PerformanceObserver(function (entryList, observer) { - entryList.getEntries().forEach(function(entry) { - assert_equals(entry.entryType, "event"); - if (entry.name === 'mousedown') { - bufferedEntries.push(entry); - } - if (bufferedEntries.length == 2) { - validateEntries(bufferedEntries) - observer.disconnect(); - t.done(); - } - }); - }) - observer.observe({ - type: "event", - buffered: true - }); - clickAndBlockMain('button'); - }); - }, "Event Timing: click, onload."); - -</script> -</html> diff --git a/tests/wpt/web-platform-tests/event-timing/click-timing.html b/tests/wpt/web-platform-tests/event-timing/click-timing.html new file mode 100644 index 00000000000..afe53bfc23c --- /dev/null +++ b/tests/wpt/web-platform-tests/event-timing/click-timing.html @@ -0,0 +1,64 @@ +<!DOCTYPE html> +<html> +<meta charset=utf-8 /> +<title>Event Timing: compare timing of two long clicks +</title> +<button id='button'>Generate a 'click' event</button> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<script src=/resources/testdriver.js></script> +<script src=/resources/testdriver-vendor.js></script> +<script src=resources/event-timing-test-utils.js></script> +<script> + /* Timeline: + Observer starts + Long click 1 + Long click 2 + Once two clicks have been received by observer, compare the timestamps. + */ + let timeBeforeFirstClick; + let timeAfterFirstClick; + let timeAfterSecondClick; + let observedEntries = []; + async_test(function(t) { + if (!window.PerformanceEventTiming) + assert_unreached("PerformanceEventTiming is not supported"); + + new PerformanceObserver(t.step_func(entryList => { + observedEntries = observedEntries.concat(entryList.getEntries().filter( + entry => entry.name === 'mousedown')); + if (observedEntries.length < 2) + return; + + assert_not_equals(timeBeforeFirstClick, undefined); + assert_not_equals(timeAfterFirstClick, undefined); + assert_not_equals(timeAfterSecondClick, undefined); + // First click. + verifyClickEvent(observedEntries[0]); + assert_between_exclusive(observedEntries[0].processingStart, + timeBeforeFirstClick, + timeAfterFirstClick, + "First click's processingStart"); + assert_greater_than(timeAfterFirstClick, observedEntries[0].startTime, + "timeAfterFirstClick should be later than first click's start time."); + + // Second click. + verifyClickEvent(observedEntries[1]); + assert_between_exclusive(observedEntries[1].processingStart, + timeAfterFirstClick, + timeAfterSecondClick, + "Second click's processingStart"); + assert_greater_than(timeAfterSecondClick, observedEntries[1].startTime, + "timeAfterSecondClick should be later than second click's start time."); + t.done(); + })).observe({type: 'event'}); + timeBeforeFirstClick = performance.now(); + clickAndBlockMain('button').then( () => { + timeAfterFirstClick = performance.now(); + clickAndBlockMain('button').then(() => { + timeAfterSecondClick = performance.now(); + }) + }); + }, "Event Timing: compare click timings."); +</script> +</html> diff --git a/tests/wpt/web-platform-tests/event-timing/observethenonload.html b/tests/wpt/web-platform-tests/event-timing/observethenonload.html deleted file mode 100644 index 8295aaf0412..00000000000 --- a/tests/wpt/web-platform-tests/event-timing/observethenonload.html +++ /dev/null @@ -1,97 +0,0 @@ -<!DOCTYPE html> -<html> -<meta charset=utf-8 /> -<title>Event Timing: Performance observers can observe long-latency events -</title> -<meta name="timeout" content="long"> -<button id='button'>Generate a 'click' event</button> -<script src=/resources/testharness.js></script> -<script src=/resources/testharnessreport.js></script> -<script src=/resources/testdriver.js></script> -<script src=/resources/testdriver-vendor.js></script> - -<script src=resources/event-timing-test-utils.js></script> -<img src=resources/slow-image.py> - -<script> - let timeBeforeFirstClick; - let timeAfterFirstClick; - let timeAfterSecondClick; - let onloadStart; - let observedEntries = []; - - function verifyObserverEntries(observedEntries) { - const entriesAfterFirstClick = observedEntries.filter( - e => e.startTime > timeAfterFirstClick); - assert_equals(entriesAfterFirstClick.length, 1, - 'There should be one event after timeAfterFirstClick.'); - const entry1 = entriesAfterFirstClick[0]; - verifyClickEvent(entry1); - assert_greater_than(entry1.processingStart, timeAfterFirstClick, - "entry1's processing start should be after timeAfterFirstClick"); - assert_less_than(entry1.processingStart, timeAfterSecondClick, - "entry1's processing start should be before timeAfterSecondClick."); - assert_greater_than(entry1.startTime, onloadStart, - "entry1's start time should be later than onloadStart."); - - const entriesBeforeFirstClick = - observedEntries.filter(e => e.startTime < timeAfterFirstClick); - assert_equals(entriesBeforeFirstClick.length, 1, - 'There should be one event before timeAfterFirstClick.' - ); - const entry2 = entriesBeforeFirstClick[0]; - verifyClickEvent(entry2); - assert_greater_than(entry2.processingStart, timeBeforeFirstClick, - "entry2's processing start should be after timeBeforeFirstClick"); - assert_less_than(entry2.processingStart, timeAfterFirstClick, - "entry2's processing start should be berfore timeAfterFirstClick."); - assert_greater_than(timeAfterFirstClick, entry2.startTime, - "timeAfterFirstClick should be later than entry2's start time."); - // This should happen before onLoad - assert_greater_than(onloadStart, entry2.startTime, - "Onload should be later than entry's start time."); - } - - /* Timeline: - Observer starts - Begin Busy Loop - Click 1 arrives - End Busy Loop - (Dispatch and Process Click 1 (buffered, observed)) - Onload Event Fires - Begin Busy Loop - Click 2 arrives - End Busy Loop - (Dispatch and Process Click 2 (buffered, observed)) - observer callback start - */ - async_test(function(t) { - if (!window.PerformanceEventTiming) - assert_unreached("PerformanceEventTiming is not supported"); - - const observerPromise = new Promise((resolve, reject) => { - new PerformanceObserver(function(entryList) { - observedEntries = observedEntries.concat(entryList.getEntries().filter( - entry => entry.name === 'mousedown')); - if (observedEntries.length < 2) return; - resolve(observedEntries); - }).observe({ type: 'event' , buffered: true}); - }); - timeBeforeFirstClick = performance.now(); - clickAndBlockMain('button').then( () => { - timeAfterFirstClick = performance.now(); - }); - on_event(window, 'load', function(e) { - onloadStart = performance.now(); - // After onload start and before registering observer. - const bufferPromise = clickAndBlockMain('button').then(wait); - Promise.all([observerPromise, bufferPromise]).then((results) => { - timeAfterSecondClick = performance.now(); - t.step(verifyObserverEntries.bind(null, results[0])); - t.done(); - }); - }); - }, "Event Timing: click, observer, onload, click."); - -</script> -</html> diff --git a/tests/wpt/web-platform-tests/event-timing/onloadthenobserve-firstInput.html b/tests/wpt/web-platform-tests/event-timing/onloadthenobserve-firstInput.html deleted file mode 100644 index 3cd80e2eba1..00000000000 --- a/tests/wpt/web-platform-tests/event-timing/onloadthenobserve-firstInput.html +++ /dev/null @@ -1,66 +0,0 @@ -<!DOCTYPE html> -<html> -<meta charset=utf-8 /> -<title>Event Timing: buffer long-latency events before onload</title> -<meta name="timeout" content="long"> -<button id='button'>Generate a 'click' event</button> -<script src=/resources/testharness.js></script> -<script src=/resources/testharnessreport.js></script> -<script src=/resources/testdriver.js></script> -<script src=/resources/testdriver-vendor.js></script> - -<script src=resources/event-timing-test-utils.js></script> - -<script> - /* Timeline: - Onload - PerformanceObserver is registered - Click 1 - Click 2 - PerformanceObserver should observe only one first-input entry. - (Dispatch and Process Click 2 - not buffered) - */ - async_test(function(t) { - if (!window.PerformanceEventTiming) - assert_unreached("PerformanceEventTiming is not supported"); - - let numFirstInputObserved = 0; - let numEventsObserved = 0; - let observedEventEntries = []; - - const event_observer_promise = new Promise((resolve, reject) => { - new PerformanceObserver(function(entryList) { - observedEventEntries = entryList.getEntries().filter( - entry => entry.name === 'mousedown'); - numEventsObserved += observedEventEntries.length; - if (numEventsObserved >= 2) { - // There should be 2 event entries. - assert_equals(numEventsObserved, 2, - "There should be 2 observed event entries."); - resolve(); - } - }).observe({ type: 'event' , buffered: true}); - }); - - const first_input_observer_promise = new Promise((resolve, reject) => { - new PerformanceObserver(function(entryList) { - assert_equals(entryList.getEntries().length, 1); - resolve(); - }).observe({ type: 'first-input' , buffered: true}); - }); - - on_event(window, 'load', function(e) { - const click_promise = clickAndBlockMain('button').then(() => { - clickAndBlockMain('button'); - }); - Promise.all( - [event_observer_promise, first_input_observer_promise, click_promise] - ).then(() => { - t.done(); - }); - }); - }, - "Event Timing: check first-input after onload, observer, click, click." - ); -</script> -</html> diff --git a/tests/wpt/web-platform-tests/event-timing/onloadthenobserve.html b/tests/wpt/web-platform-tests/event-timing/onloadthenobserve.html deleted file mode 100644 index 4365f4837bc..00000000000 --- a/tests/wpt/web-platform-tests/event-timing/onloadthenobserve.html +++ /dev/null @@ -1,80 +0,0 @@ -<!DOCTYPE html> -<html> -<meta charset=utf-8 /> -<title>Event Timing: long-latency events after onload and before observer -registration are lost -</title> -<meta name="timeout" content="long"> -<button id='button'>Generate a 'click' event</button> -<script src=/resources/testharness.js></script> -<script src=/resources/testharnessreport.js></script> -<script src=/resources/testdriver.js></script> -<script src=/resources/testdriver-vendor.js></script> - -<script src=resources/event-timing-test-utils.js></script> -<script> - let callbackTime; - let observerStart; - let processingStartMin; - - function verifyObserverEntries(observedEntries) { - // Verify observer entries. Should not include first click since we didn't - // buffered to true. - assert_equals(observedEntries.length, 1, "Long latency task after observer start should be observed."); - const entry = observedEntries[0]; - verifyClickEvent(entry); - assert_greater_than(entry.processingStart, processingStartMin, - "The entry's processing start should be later than processingStartMin."); - assert_greater_than(callbackTime, entry.processingStart, - "The callback time should be later than the entry's processing start."); - assert_greater_than(entry.startTime, observerStart, - "The entry's start time should be later than observer start."); - assert_greater_than(callbackTime, entry.startTime, - "The callback time should be later than entry's start time."); - } - - function startObserver(t) { - new PerformanceObserver(t.step_func_done((entryList, obs) => { - callbackTime = performance.now(); - const observedEntries = entryList.getEntries().filter( - entry => entry.name === 'mousedown'); - verifyObserverEntries(observedEntries); - })).observe({ type: 'event'}); - observerStart = performance.now(); - } - - /* Timeline: - Onload Event fires - Begin Busy Loop - Click 1 arrives - End Busy Loop - (Dispatch and Process Click 1 (not buffered, not observed)) - Observer start - Begin Busy Loop - Click 2 arrives - End Busy Loop - (Dispatch and Process Click 2 (not buffered, observed)) - */ - async_test(function(t) { - if (!window.PerformanceEventTiming) - assert_unreached("PerformanceEventTiming is not supported"); - - // Use a dummy observer to know when the first click has been dispatched. - const observerPromise = new Promise((resolve, reject) => { - new PerformanceObserver((entryList, observer) => { - resolve(); - observer.disconnect(); - }).observe({ entryTypes: ['event'] }); - }); - on_event(window, 'load', () => { - const clickPromise = clickAndBlockMain('button'); - Promise.all([observerPromise, clickPromise]).then(() => { - startObserver(t); - clickAndBlockMain('button'); - processingStartMin = performance.now(); - }); - }); - },"Event Timing: onload, click, observer, click."); - -</script> -</html> diff --git a/tests/wpt/web-platform-tests/geolocation-API/idlharness.window.js b/tests/wpt/web-platform-tests/geolocation-API/idlharness.window.js index f8c92c12135..fe4ac8895df 100644 --- a/tests/wpt/web-platform-tests/geolocation-API/idlharness.window.js +++ b/tests/wpt/web-platform-tests/geolocation-API/idlharness.window.js @@ -3,16 +3,15 @@ // https://www.w3.org/TR/geolocation-API/ -promise_test(async () => { - const idl = await fetch('/interfaces/geolocation-API.idl').then(r => r.text()); - const html = await fetch('/interfaces/html.idl').then(r => r.text()); - - const idl_array = new IdlArray(); - idl_array.add_idls(idl); - idl_array.add_dependency_idls(html); - idl_array.add_objects({ - Navigator: ["navigator"], - Geolocation: ["navigator.geolocation"] - }); - idl_array.test(); -}, 'geolocation-API interfaces'); +idl_test( + ['geolocation-API'], + ['html'], + idl_array => { + self.audio = document.createElement('audio'); + self.video = document.createElement('video'); + idl_array.add_objects({ + Navigator: ['navigator'], + Geolocation: ['navigator.geolocation'], + }); + } +); diff --git a/tests/wpt/web-platform-tests/html/dom/interfaces.worker.js b/tests/wpt/web-platform-tests/html/dom/interfaces.worker.js index f49198cd5c6..b720d54f3d9 100644 --- a/tests/wpt/web-platform-tests/html/dom/interfaces.worker.js +++ b/tests/wpt/web-platform-tests/html/dom/interfaces.worker.js @@ -8,6 +8,7 @@ idl_test( ["dom", "cssom", "touch-events", "uievents"], idlArray => { idlArray.add_objects({ + WorkerLocation: ['self.location'], WorkerNavigator: ['self.navigator'], WebSocket: ['new WebSocket("ws://foo")'], CloseEvent: ['new CloseEvent("close")'], diff --git a/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-base-element/base_target_does_not_affect_iframe_src_navigation.html b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-base-element/base_target_does_not_affect_iframe_src_navigation.html new file mode 100644 index 00000000000..b432698f210 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-base-element/base_target_does_not_affect_iframe_src_navigation.html @@ -0,0 +1,10 @@ +<base id="base" target="_blank"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<iframe id="i" src="about:blank"></iframe> +<script> +async_test(function(t) { + window.onmessage = () => t.done(); + i.src = "data:text/html,This should navigate the iframe<script>top.postMessage('done', '*');</sc" + "ript>"; +}); +</script> diff --git a/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-base-element/base_target_does_not_affect_location_assignment.html b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-base-element/base_target_does_not_affect_location_assignment.html new file mode 100644 index 00000000000..2914f1f77f5 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-base-element/base_target_does_not_affect_location_assignment.html @@ -0,0 +1,10 @@ +<base id="base" target="_blank"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<iframe id="i" src="about:blank"></iframe> +<script> +async_test(function(t) { + window.onmessage = () => t.done(); + i.contentWindow.location = "data:text/html,This should navigate the iframe<script>top.postMessage('done', '*');</sc" + "ript>"; +}); +</script> diff --git a/tests/wpt/web-platform-tests/inert/inert-retargeting-iframe.tentative.html b/tests/wpt/web-platform-tests/inert/inert-retargeting-iframe.tentative.html index c31cc88ccec..ddcb3ccb0d2 100644 --- a/tests/wpt/web-platform-tests/inert/inert-retargeting-iframe.tentative.html +++ b/tests/wpt/web-platform-tests/inert/inert-retargeting-iframe.tentative.html @@ -158,7 +158,7 @@ function expectEventsOn(events, element) { } element.addEventListener(event, f, { capture: true, once: true }); - setTimeout(() => { + step_timeout(() => { element.removeEventListener(event, f, { capture: true }); reject("did not get " + event + " on " + element.id); }, 1000); @@ -181,7 +181,7 @@ function unexpectEventsOn(events, element) { } element.addEventListener(event, f, { capture: true, once: true }); - setTimeout(() => { + step_timeout(() => { element.removeEventListener(event, f, { capture: true }); resolve(); }, 1000); diff --git a/tests/wpt/web-platform-tests/inert/inert-retargeting.tentative.html b/tests/wpt/web-platform-tests/inert/inert-retargeting.tentative.html index 6ef3b2a1b1b..2280cf5a5d1 100644 --- a/tests/wpt/web-platform-tests/inert/inert-retargeting.tentative.html +++ b/tests/wpt/web-platform-tests/inert/inert-retargeting.tentative.html @@ -159,7 +159,7 @@ function expectEventsOn(events, element) { } element.addEventListener(event, f, { capture: true, once: true }); - setTimeout(() => { + step_timeout(() => { element.removeEventListener(event, f, { capture: true }); reject("did not get " + event + " on " + element.id); }, 1000); @@ -182,7 +182,7 @@ function unexpectEventsOn(events, element) { } element.addEventListener(event, f, { capture: true, once: true }); - setTimeout(() => { + step_timeout(() => { element.removeEventListener(event, f, { capture: true }); resolve(); }, 1000); diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/reftest/reftest_fuzzy_chain_ini.html b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/reftest/reftest_fuzzy_chain_ini.html.ini index 69dc018f389..69dc018f389 100644 --- a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/reftest/reftest_fuzzy_chain_ini.html +++ b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/reftest/reftest_fuzzy_chain_ini.html.ini diff --git a/tests/wpt/web-platform-tests/interfaces/IndexedDB.idl b/tests/wpt/web-platform-tests/interfaces/IndexedDB.idl index f2625ebe53d..a8ef47e89ab 100644 --- a/tests/wpt/web-platform-tests/interfaces/IndexedDB.idl +++ b/tests/wpt/web-platform-tests/interfaces/IndexedDB.idl @@ -29,7 +29,7 @@ interface IDBOpenDBRequest : IDBRequest { }; [Exposed=(Window,Worker), - Constructor(DOMString type, optional IDBVersionChangeEventInit eventInitDict)] + Constructor(DOMString type, optional IDBVersionChangeEventInit eventInitDict = {})] interface IDBVersionChangeEvent : Event { readonly attribute unsigned long long oldVersion; readonly attribute unsigned long long? newVersion; @@ -70,8 +70,9 @@ interface IDBDatabase : EventTarget { optional IDBTransactionMode mode = "readonly"); void close(); - [NewObject] IDBObjectStore createObjectStore(DOMString name, - optional IDBObjectStoreParameters options); + [NewObject] IDBObjectStore createObjectStore( + DOMString name, + optional IDBObjectStoreParameters options = {}); void deleteObjectStore(DOMString name); // Event handlers: @@ -115,7 +116,7 @@ interface IDBObjectStore { [NewObject] IDBIndex createIndex(DOMString name, (DOMString or sequence<DOMString>) keyPath, - optional IDBIndexParameters options); + optional IDBIndexParameters options = {}); void deleteIndex(DOMString name); }; diff --git a/tests/wpt/web-platform-tests/interfaces/dedicated-workers.idl b/tests/wpt/web-platform-tests/interfaces/dedicated-workers.idl deleted file mode 100644 index 8d7255f2a56..00000000000 --- a/tests/wpt/web-platform-tests/interfaces/dedicated-workers.idl +++ /dev/null @@ -1,133 +0,0 @@ -// ----------------------------------------------------------------------------- -// DOM -// ----------------------------------------------------------------------------- -[Constructor(), Exposed=(Window,Worker)] -interface EventTarget { - void addEventListener(DOMString type, EventListener? callback, optional (AddEventListenerOptions or boolean) options); - void removeEventListener(DOMString type, EventListener? callback, optional (EventListenerOptions or boolean) options); - boolean dispatchEvent(Event event); -}; - -callback interface EventListener { - void handleEvent(Event event); -}; - -dictionary EventListenerOptions { - boolean capture = false; -}; - -dictionary AddEventListenerOptions : EventListenerOptions { - boolean passive = false; - boolean once = false; -}; - -// ----------------------------------------------------------------------------- -// HTML -// ----------------------------------------------------------------------------- -[TreatNonCallableAsNull] -callback EventHandlerNonNull = any (Event event); -typedef EventHandlerNonNull? EventHandler; - -[TreatNonCallableAsNull] -callback OnErrorEventHandlerNonNull = any ((Event or DOMString) event, optional DOMString source, optional unsigned long lineno, optional unsigned long column, optional any error); -typedef OnErrorEventHandlerNonNull? OnErrorEventHandler; - -[Exposed=Worker] -interface WorkerGlobalScope : EventTarget { - readonly attribute WorkerGlobalScope self; - readonly attribute WorkerLocation location; - readonly attribute WorkerNavigator navigator; - void importScripts(USVString... urls); - - attribute OnErrorEventHandler onerror; - attribute EventHandler onlanguagechange; - attribute EventHandler onoffline; - attribute EventHandler ononline; - attribute EventHandler onrejectionhandled; - attribute EventHandler onunhandledrejection; -}; - -[Global=(Worker,DedicatedWorker),Exposed=DedicatedWorker] -interface DedicatedWorkerGlobalScope : WorkerGlobalScope { - [Replaceable] readonly attribute DOMString name; - - void postMessage(any message, optional sequence<object> transfer = []); - - void close(); - - attribute EventHandler onmessage; - attribute EventHandler onmessageerror; -}; - -typedef (DOMString or Function) TimerHandler; - -[Exposed=(Window,Worker)] -interface mixin WindowOrWorkerGlobalScope { - [Replaceable] readonly attribute USVString origin; - - // base64 utility methods - DOMString btoa(DOMString data); - DOMString atob(DOMString data); - - // timers - long setTimeout(TimerHandler handler, optional long timeout = 0, any... arguments); - void clearTimeout(optional long handle = 0); - long setInterval(TimerHandler handler, optional long timeout = 0, any... arguments); - void clearInterval(optional long handle = 0); - - // ImageBitmap - Promise<ImageBitmap> createImageBitmap(ImageBitmapSource image, optional ImageBitmapOptions options); - Promise<ImageBitmap> createImageBitmap(ImageBitmapSource image, long sx, long sy, long sw, long sh, optional ImageBitmapOptions options); -}; -WorkerGlobalScope includes WindowOrWorkerGlobalScope; - -[Exposed=Worker] -interface WorkerNavigator {}; -WorkerNavigator includes NavigatorID; -WorkerNavigator includes NavigatorLanguage; -WorkerNavigator includes NavigatorOnLine; -WorkerNavigator includes NavigatorConcurrentHardware; - -[Exposed=(Window,Worker)] -interface mixin NavigatorID { - readonly attribute DOMString appCodeName; // constant "Mozilla" - readonly attribute DOMString appName; // constant "Netscape" - readonly attribute DOMString appVersion; - readonly attribute DOMString platform; - readonly attribute DOMString product; // constant "Gecko" - [Exposed=Window] readonly attribute DOMString productSub; - readonly attribute DOMString userAgent; - [Exposed=Window] readonly attribute DOMString vendor; - [Exposed=Window] readonly attribute DOMString vendorSub; // constant "" - - // also has additional members in a partial interface -}; - -[Exposed=(Window,Worker)] -interface mixin NavigatorLanguage { - readonly attribute DOMString language; - readonly attribute FrozenArray<DOMString> languages; -}; - -[Exposed=(Window,Worker)] -interface mixin NavigatorOnLine { - readonly attribute boolean onLine; -}; - -[Exposed=(Window,Worker)] -interface mixin NavigatorConcurrentHardware { - readonly attribute unsigned long long hardwareConcurrency; -}; - -[Exposed=Worker] -interface WorkerLocation { - stringifier readonly attribute USVString href; - readonly attribute USVString origin; - readonly attribute USVString protocol; - readonly attribute USVString host; - readonly attribute USVString hostname; - readonly attribute USVString port; - readonly attribute USVString pathname; - readonly attribute USVString search; - readonly attribute USVString hash; -}; diff --git a/tests/wpt/web-platform-tests/interfaces/input-events.idl b/tests/wpt/web-platform-tests/interfaces/input-events.idl index c10aa32bed0..5ddaae5b9d3 100644 --- a/tests/wpt/web-platform-tests/interfaces/input-events.idl +++ b/tests/wpt/web-platform-tests/interfaces/input-events.idl @@ -1,7 +1,7 @@ // GENERATED CONTENT - DO NOT EDIT // Content was automatically extracted by Reffy into reffy-reports // (https://github.com/tidoust/reffy-reports) -// Source: Input Events Level 1 (https://cdn.staticaly.com/gh/w3c/input-events/v1/index.html) +// Source: Input Events Level 2 (https://w3c.github.io/input-events/) partial interface InputEvent { readonly attribute DataTransfer? dataTransfer; diff --git a/tests/wpt/web-platform-tests/interfaces/requestidlecallback.idl b/tests/wpt/web-platform-tests/interfaces/requestidlecallback.idl index 812cc0ef815..c763b50bde7 100644 --- a/tests/wpt/web-platform-tests/interfaces/requestidlecallback.idl +++ b/tests/wpt/web-platform-tests/interfaces/requestidlecallback.idl @@ -4,7 +4,7 @@ // Source: Cooperative Scheduling of Background Tasks (https://w3c.github.io/requestidlecallback/) partial interface Window { - unsigned long requestIdleCallback(IdleRequestCallback callback, optional IdleRequestOptions options); + unsigned long requestIdleCallback(IdleRequestCallback callback, optional IdleRequestOptions options = {}); void cancelIdleCallback(unsigned long handle); }; diff --git a/tests/wpt/web-platform-tests/lint.whitelist b/tests/wpt/web-platform-tests/lint.whitelist index a6aa9466810..8ff3b818932 100644 --- a/tests/wpt/web-platform-tests/lint.whitelist +++ b/tests/wpt/web-platform-tests/lint.whitelist @@ -820,9 +820,6 @@ WEB-PLATFORM.TEST:signed-exchange/resources/*.sxg WEB-PLATFORM.TEST:signed-exchange/appcache/resources/*.sxg WEB-PLATFORM.TEST:signed-exchange/resources/generate-test-sxgs.sh -SET TIMEOUT: inert/inert-retargeting.tentative.html -SET TIMEOUT: inert/inert-retargeting-iframe.tentative.html - # https://github.com/web-platform-tests/wpt/issues/16455 MISSING DEPENDENCY: idle-detection/interceptor.https.html MISSING DEPENDENCY: sms/sms_provider.js diff --git a/tests/wpt/web-platform-tests/media-source/idlharness.window.js b/tests/wpt/web-platform-tests/media-source/idlharness.window.js index 28da56b32e6..9300f67fe04 100644 --- a/tests/wpt/web-platform-tests/media-source/idlharness.window.js +++ b/tests/wpt/web-platform-tests/media-source/idlharness.window.js @@ -1,5 +1,6 @@ // META: script=/resources/WebIDLParser.js // META: script=/resources/idlharness.js +// META: timeout=long // https://w3c.github.io/media-source/ @@ -9,8 +10,6 @@ idl_test( ['media-source'], ['dom', 'html', 'url'], async idl_array => { - self.audio = document.createElement('audio'); - self.video = document.createElement('video'); idl_array.add_objects({ MediaSource: ['mediaSource'], SourceBuffer: ['sourceBuffer'], diff --git a/tests/wpt/web-platform-tests/mediacapture-depth/idlharness.html b/tests/wpt/web-platform-tests/mediacapture-depth/idlharness.html index 1afc6e5a05b..963229aaca3 100644 --- a/tests/wpt/web-platform-tests/mediacapture-depth/idlharness.html +++ b/tests/wpt/web-platform-tests/mediacapture-depth/idlharness.html @@ -4,7 +4,7 @@ <head> <meta charset=utf-8> <title>Media Capture Depth Stream Extensions IDL test</title> - <link rel="help" href="See https://w3c.github.io/mediacapture-depth/"> + <link rel="help" href="https://w3c.github.io/mediacapture-depth/"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/resources/WebIDLParser.js"></script> @@ -15,15 +15,13 @@ <script> 'use strict'; - promise_test(async () => { - const idl = await fetch('/interfaces/mediacapture-depth.idl').then(r => r.text()); - const main = await fetch('/interfaces/mediacapture-streams.idl').then(r => r.text()); - - var idl_array = new IdlArray(); - idl_array.add_idls(idl); - idl_array.add_dependency_idls(main); - idl_array.test(); - }, 'mediacapture-depth interfaces'); + idl_test( + ['mediacapture-depth'], + ['mediacapture-streams'], + idl_array => { + // No objects, spec defines dictionaries only. + } + ); </script> <div id="log"></div> </body> diff --git a/tests/wpt/web-platform-tests/mediacapture-streams/idlharness.https.window.js b/tests/wpt/web-platform-tests/mediacapture-streams/idlharness.https.window.js index 5b255fca6b0..594e1121b00 100644 --- a/tests/wpt/web-platform-tests/mediacapture-streams/idlharness.https.window.js +++ b/tests/wpt/web-platform-tests/mediacapture-streams/idlharness.https.window.js @@ -5,50 +5,44 @@ // https://w3c.github.io/mediacapture-main/ - -promise_test(async () => { - const srcs = ['mediacapture-streams','dom','html']; - const [idl, dom, html] = await Promise.all( - srcs.map(i => fetch(`/interfaces/${i}.idl`).then(r => r.text()))); - - const idl_array = new IdlArray(); - idl_array.add_idls(idl); - idl_array.add_dependency_idls(html); - idl_array.add_dependency_idls(dom); - - const devices = []; - // Errors will be surfaced in idlharness.js's test_object below. - try { - const list = await navigator.mediaDevices.enumerateDevices(); - for (const item of list) { - switch (item.kind) { - case 'audioinput': - case 'videoinput': - case 'audiooutput': - self[item.kind] = item; - devices.push(item.kind); - default: - assert_unreached( - 'media.kind should be one of "audioinput", "videoinput", or "audiooutput".'); +idl_test( + ['mediacapture-streams'], + ['dom', 'html'], + async idl_array => { + const inputDevices = []; + const outputDevices = []; + try { + const list = await navigator.mediaDevices.enumerateDevices(); + for (const device of list) { + if (device.kind in self) { + continue; + } + assert_in_array(device.kind, ['audioinput', 'videoinput', 'audiooutput']); + self[device.kind] = device; + if (device.kind.endsWith('input')) { + inputDevices.push(device.kind); + } else { + outputDevices.push(device.kind); + } } - } - } catch (e) {} - - try { - self.stream = await navigator.mediaDevices.getUserMedia({audio: true}); - self.track = stream.getTracks()[0]; - self.trackEvent = new MediaStreamTrackEvent("type", { - track: track, + } catch (e) {} + + try { + self.stream = await navigator.mediaDevices.getUserMedia({audio: true}); + self.track = stream.getTracks()[0]; + self.trackEvent = new MediaStreamTrackEvent("type", { + track: track, + }); + } catch (e) {} + + idl_array.add_objects({ + InputDeviceInfo: inputDevices, + MediaStream: ['stream', 'new MediaStream()'], + Navigator: ['navigator'], + MediaDevices: ['navigator.mediaDevices'], + MediaDeviceInfo: outputDevices, + MediaStreamTrack: ['track'], + MediaStreamTrackEvent: ['trackEvent'], }); - } catch (e) { throw e} - - idl_array.add_objects({ - InputDeviceInfo: devices, - MediaStream: ['stream', 'new MediaStream()'], - Navigator: ['navigator'], - MediaDevices: ['navigator.mediaDevices'], - MediaStreamTrack: ['track'], - MediaStreamTrackEvent: ['trackEvent'], - }); - idl_array.test(); -}, 'mediacapture-streams interfaces.'); + } +); diff --git a/tests/wpt/web-platform-tests/orientation-event/idlharness.https.window.js b/tests/wpt/web-platform-tests/orientation-event/idlharness.https.window.js index ed8309d6480..55cfed9276b 100644 --- a/tests/wpt/web-platform-tests/orientation-event/idlharness.https.window.js +++ b/tests/wpt/web-platform-tests/orientation-event/idlharness.https.window.js @@ -5,19 +5,14 @@ 'use strict'; -promise_test(async () => { - const idl = await fetch('/interfaces/orientation-event.idl').then(r => r.text()); - const dom = await fetch('/interfaces/dom.idl').then(r => r.text()); - const html = await fetch('/interfaces/html.idl').then(r => r.text()); - - var idl_array = new IdlArray(); - idl_array.add_idls(idl); - idl_array.add_dependency_idls(html); - idl_array.add_dependency_idls(dom); - idl_array.add_objects({ - Window: ['window'], - DeviceOrientationEvent: ['new DeviceOrientationEvent("foo")'], - DeviceMotionEvent: ['new DeviceMotionEvent("foo")'], - }); - idl_array.test(); -}, 'orientation-event interfaces'); +idl_test( + ['orientation-event'], + ['html', 'dom'], + idl_array => { + idl_array.add_objects({ + Window: ['window'], + DeviceOrientationEvent: ['new DeviceOrientationEvent("foo")'], + DeviceMotionEvent: ['new DeviceMotionEvent("foo")'], + }); + } +); diff --git a/tests/wpt/web-platform-tests/permissions/interfaces.any.js b/tests/wpt/web-platform-tests/permissions/interfaces.any.js index b9345388693..ff0a969bada 100644 --- a/tests/wpt/web-platform-tests/permissions/interfaces.any.js +++ b/tests/wpt/web-platform-tests/permissions/interfaces.any.js @@ -1,41 +1,27 @@ // META: script=/resources/WebIDLParser.js // META: script=/resources/idlharness.js -"use strict"; - -if (self.importScripts) { - importScripts("/resources/testharness.js"); - importScripts("/resources/WebIDLParser.js", "/resources/idlharness.js"); -} - // https://w3c.github.io/permissions/#idl-index -promise_test(async () => { - const idl = await fetch("/interfaces/permissions.idl").then(r => r.text()); - const dom = await fetch("/interfaces/dom.idl").then(r => r.text()); - const html = await fetch("/interfaces/html.idl").then(r => r.text()); - - const idl_array = new IdlArray(); - idl_array.add_idls(idl); - idl_array.add_dependency_idls(dom); - idl_array.add_dependency_idls(html); - - try { - self.permissionStatus = await navigator.permissions.query({ name: "geolocation" }); - self.permissionStatus = await navigator.permissions.query({ name: "background-fetch" }); - } catch (e) { - // Will be surfaced in idlharness.js's test_object below. - } +"use strict"; - if (self.GLOBAL.isWorker()) { - idl_array.add_objects({ WorkerNavigator: ['navigator'] }); - } else { - idl_array.add_objects({ Navigator: ['navigator'] }); +idl_test( + ['permissions'], + ['html', 'dom'], + async idl_array => { + try { + self.permissionStatus = await navigator.permissions.query({ name: "geolocation" }); + } catch (e) {} + + if (self.GLOBAL.isWorker()) { + idl_array.add_objects({ WorkerNavigator: ['navigator'] }); + } else { + idl_array.add_objects({ Navigator: ['navigator'] }); + } + + idl_array.add_objects({ + Permissions: ['navigator.permissions'], + PermissionStatus: ['permissionStatus'] + }); } - - idl_array.add_objects({ - Permissions: ['navigator.permissions'], - PermissionStatus: ['permissionStatus'] - }); - idl_array.test(); -}, "Test IDL implementation of Permissions API"); +); diff --git a/tests/wpt/web-platform-tests/requestidlecallback/idlharness.window.js b/tests/wpt/web-platform-tests/requestidlecallback/idlharness.window.js index 2c9f6593208..69cd5a49b04 100644 --- a/tests/wpt/web-platform-tests/requestidlecallback/idlharness.window.js +++ b/tests/wpt/web-platform-tests/requestidlecallback/idlharness.window.js @@ -1,30 +1,24 @@ // META: script=/resources/WebIDLParser.js // META: script=/resources/idlharness.js -async_test(function() { - const srcs = ['requestidlecallback', 'html', 'dom']; - Promise.all(srcs.map(i => fetch(`/interfaces/${i}.idl`).then(r => r.text()))) - .then(([idl, html, dom]) => { - var idl_array = new IdlArray(); - idl_array.add_idls(idl); - idl_array.add_dependency_idls(html); - idl_array.add_dependency_idls(dom); - idl_array.add_objects({Window: ['window']}); +// https://w3c.github.io/requestidlecallback/ - let deadline; - const execIDLTest = this.step_func_done(function() { - idl_array.add_objects({IdleDeadline: [deadline]}); - idl_array.test(); - }); +'use strict'; - if (!window.requestIdleCallback) { - execIDLTest(); - } else { - const callback = this.step_func(d => { - deadline = d; - execIDLTest(); - }); - requestIdleCallback(callback, { timeout: 100 }); - } +idl_test( + ['requestidlecallback'], + ['html', 'dom'], + async idl_array => { + idl_array.add_objects({ + IdleDeadline: ['deadline'], + Window: ['window'], }); -}, 'IdleDeadline object setup'); + + await new Promise(resolve => { + requestIdleCallback(d => { + self.deadline = d; + resolve(); + }, { timeout: 100 }); + }); + } +); diff --git a/tests/wpt/web-platform-tests/server-timing/idlharness.https.any.js b/tests/wpt/web-platform-tests/server-timing/idlharness.https.any.js index 9c101e0f4cf..ded320f0f61 100644 --- a/tests/wpt/web-platform-tests/server-timing/idlharness.https.any.js +++ b/tests/wpt/web-platform-tests/server-timing/idlharness.https.any.js @@ -5,17 +5,12 @@ // https://w3c.github.io/server-timing/ -promise_test(async () => { - const idl = await fetch('/interfaces/server-timing.idl').then(r => r.text()); - const res = await fetch('/interfaces/resource-timing.idl').then(r => r.text()); - const perf = await fetch('/interfaces/performance-timeline.idl').then(r => r.text()); - - const idl_array = new IdlArray(); - idl_array.add_idls(idl); - idl_array.add_dependency_idls(res); - idl_array.add_dependency_idls(perf); - idl_array.add_objects({ - Performance: ['performance'], - }); - idl_array.test(); -}, 'Test server-timing IDL implementation'); +idl_test( + ['server-timing'], + ['resource-timing', 'performance-timeline'], + idl_array => { + idl_array.add_objects({ + Performance: ['performance'], + }); + } +); diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/interfaces-sw.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/interfaces-sw.https.html index 73ffb28b36e..7bff6ac107e 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/interfaces-sw.https.html +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/interfaces-sw.https.html @@ -7,7 +7,7 @@ 'use strict'; // NOTE: affected when 'resources/interfaces-worker.sub.js' srcs change: -// const srcs = ['dom', 'html', 'service-workers', 'dedicated-workers']; +// const srcs = ['dom', 'html', 'service-workers']; service_worker_test( 'resources/interfaces-worker.sub.js', 'Interfaces and attributes in ServiceWorkerGlobalScope'); diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/interfaces-worker.sub.js b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/interfaces-worker.sub.js index 56bc8af445d..ac79ddc0056 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/interfaces-worker.sub.js +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/interfaces-worker.sub.js @@ -5,8 +5,8 @@ importScripts('/resources/WebIDLParser.js'); importScripts('/resources/idlharness.js'); promise_test(async (t) => { - const srcs = ['dom', 'html', 'service-workers', 'dedicated-workers']; - const [dom, html, serviceWorkerIdl, dedicated] = await Promise.all( + const srcs = ['dom', 'html', 'service-workers']; + const [dom, html, serviceWorkerIdl] = await Promise.all( srcs.map(i => fetch(`/interfaces/${i}.idl`).then(r => r.text()))); var idlArray = new IdlArray(); @@ -24,7 +24,6 @@ promise_test(async (t) => { 'Cache', 'CacheStorage', ]}); - idlArray.add_dependency_idls(dedicated); idlArray.add_dependency_idls(dom); idlArray.add_dependency_idls(html); idlArray.add_objects({ diff --git a/tests/wpt/web-platform-tests/streams/writable-streams/aborting.any.js b/tests/wpt/web-platform-tests/streams/writable-streams/aborting.any.js index ea47a55fa9f..2f806464e1f 100644 --- a/tests/wpt/web-platform-tests/streams/writable-streams/aborting.any.js +++ b/tests/wpt/web-platform-tests/streams/writable-streams/aborting.any.js @@ -114,7 +114,8 @@ promise_test(() => { return writer.abort('a').then(value => { assert_equals(value, undefined, 'fulfillment value must be undefined'); }); -}, 'Fulfillment value of ws.abort() call must be undefined even if the underlying sink returns a non-undefined value'); +}, 'Fulfillment value of writer.abort() call must be undefined even if the underlying sink returns a non-undefined ' + + 'value'); promise_test(t => { const ws = new WritableStream({ diff --git a/tests/wpt/web-platform-tests/streams/writable-streams/brand-checks.any.js b/tests/wpt/web-platform-tests/streams/writable-streams/brand-checks.any.js index 66296ab3d35..17179e7936e 100644 --- a/tests/wpt/web-platform-tests/streams/writable-streams/brand-checks.any.js +++ b/tests/wpt/web-platform-tests/streams/writable-streams/brand-checks.any.js @@ -14,6 +14,7 @@ function fakeWS() { return Object.setPrototypeOf({ get locked() { return false; }, abort() { return Promise.resolve(); }, + close() { return Promise.resolve(); }, getWriter() { return fakeWSDefaultWriter(); } }, WritableStream.prototype); } @@ -64,6 +65,11 @@ promise_test(t => { [fakeWS(), realWSDefaultWriter(), realWSDefaultController(), undefined, null]); }, 'WritableStream.prototype.abort enforces a brand check'); +promise_test(t => { + return methodRejectsForAll(t, WritableStream.prototype, 'close', + [fakeWS(), realWSDefaultWriter(), realWSDefaultController(), undefined, null]); +}, 'WritableStream.prototype.close enforces a brand check'); + test(() => { methodThrowsForAll(WritableStream.prototype, 'getWriter', [fakeWS(), realWSDefaultWriter(), realWSDefaultController(), undefined, null]); diff --git a/tests/wpt/web-platform-tests/streams/writable-streams/close.any.js b/tests/wpt/web-platform-tests/streams/writable-streams/close.any.js index 284bb16e1f5..0762b83e5d1 100644 --- a/tests/wpt/web-platform-tests/streams/writable-streams/close.any.js +++ b/tests/wpt/web-platform-tests/streams/writable-streams/close.any.js @@ -20,7 +20,7 @@ promise_test(() => { const closePromise = writer.close(); return closePromise.then(value => assert_equals(value, undefined, 'fulfillment value must be undefined')); -}, 'fulfillment value of ws.close() call must be undefined even if the underlying sink returns a non-undefined ' + +}, 'fulfillment value of writer.close() call must be undefined even if the underlying sink returns a non-undefined ' + 'value'); promise_test(() => { @@ -411,3 +411,60 @@ promise_test(() => { return ready; }); }, 'ready promise should be initialised as fulfilled for a writer on a closed stream'); + +promise_test(() => { + const ws = new WritableStream(); + ws.close(); + const writer = ws.getWriter(); + return writer.closed; +}, 'close() on a writable stream should work'); + +promise_test(t => { + const ws = new WritableStream(); + ws.getWriter(); + return promise_rejects(t, new TypeError(), ws.close(), 'close should reject'); +}, 'close() on a locked stream should reject'); + +promise_test(t => { + const ws = new WritableStream({ + start(controller) { + controller.error(error1); + } + }); + return promise_rejects(t, error1, ws.close(), 'close should reject with error1'); +}, 'close() on an erroring stream should reject'); + +promise_test(t => { + const ws = new WritableStream({ + start(controller) { + controller.error(error1); + } + }); + const writer = ws.getWriter(); + return promise_rejects(t, error1, writer.closed, 'closed should reject with the error').then(() => { + writer.releaseLock(); + return promise_rejects(t, new TypeError(), ws.close(), 'close should reject'); + }); +}, 'close() on an errored stream should reject'); + +promise_test(t => { + const ws = new WritableStream(); + const writer = ws.getWriter(); + return writer.close().then(() => { + return promise_rejects(t, new TypeError(), ws.close(), 'close should reject'); + }); +}, 'close() on an closed stream should reject'); + +promise_test(t => { + const ws = new WritableStream({ + close() { + return new Promise(() => {}); + } + }); + + const writer = ws.getWriter(); + writer.close(); + writer.releaseLock(); + + return promise_rejects(t, new TypeError(), ws.close(), 'close should reject'); +}, 'close() on a stream with a pending close should reject'); diff --git a/tests/wpt/web-platform-tests/streams/writable-streams/properties.any.js b/tests/wpt/web-platform-tests/streams/writable-streams/properties.any.js index b991795a189..81b40683c8b 100644 --- a/tests/wpt/web-platform-tests/streams/writable-streams/properties.any.js +++ b/tests/wpt/web-platform-tests/streams/writable-streams/properties.any.js @@ -45,6 +45,10 @@ const expected = { type: 'method', length: 1 }, + close: { + type: 'method', + length: 0 + }, getWriter: { type: 'method', length: 0 diff --git a/tests/wpt/web-platform-tests/svg/animations/spaces-at-end-of-path-data.html b/tests/wpt/web-platform-tests/svg/animations/spaces-at-end-of-path-data.html new file mode 100644 index 00000000000..235259becca --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/animations/spaces-at-end-of-path-data.html @@ -0,0 +1,29 @@ +<!DOCTYPE html> + +<title>Allow trailing empty entry in value list</title> +<meta charset="utf-8"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<link rel="help" href="https://svgwg.org/specs/animations/#ValuesAttribute"> +<link rel="author" title="Edvard Thörnros" href="mailto:edvardt@opera.com"> + +<svg viewbox="0 0 100 100"> + <path fill="#1EB287"> + <animate attributeName="d" + dur="1s" + repeatCount="indefinite" + values="M 0,0 L 50, 0 L 100,100 Z; + M 100,0 L 0, 100 L 50, 0 Z; "/> + </path> +</svg> + +<script> + async_test(function(t) { + window.onload = t.step_func(function() { + window.requestAnimationFrame(t.step_func_done(function() { + let path = document.querySelector("path"); + assert_not_equals(window.getComputedStyle(path).d, "none"); + })); + }); + }); +</script> diff --git a/tests/wpt/web-platform-tests/svg/pservers/parsing/stop-color-invalid.svg b/tests/wpt/web-platform-tests/svg/pservers/parsing/stop-color-invalid.svg new file mode 100644 index 00000000000..4eee5444867 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/pservers/parsing/stop-color-invalid.svg @@ -0,0 +1,24 @@ +<svg xmlns="http://www.w3.org/2000/svg" xmlns:h="http://www.w3.org/1999/xhtml"> + <title>SVG Paint Servers: parsing stop-color with invalid values</title> + <metadata> + <h:link rel="help" href="https://svgwg.org/svg2-draft/pservers.html#StopColorProperty"/> + </metadata> + <g id="target" style="color: blue"></g> + <h:script src="/resources/testharness.js"/> + <h:script src="/resources/testharnessreport.js"/> + <h:script src="/css/support/parsing-testcommon.js"/> + <script><![CDATA[ + +test_invalid_value("stop-color", "auto"); +test_invalid_value("stop-color", "123"); +test_invalid_value("stop-color", "#12"); +test_invalid_value("stop-color", "#123456789"); +test_invalid_value("stop-color", "rgb"); +test_invalid_value("stop-color", "rgb(1)"); +test_invalid_value("stop-color", "rgb(1,2,3,4,5)"); +test_invalid_value("stop-color", "hsla(1,2,3,4,5)"); +test_invalid_value("stop-color", "rgb(10%, 20, 30%)"); +test_invalid_value("stop-color", "rgba(-2, 300, 400%, -0.5)"); + + ]]></script> +</svg> diff --git a/tests/wpt/web-platform-tests/svg/pservers/parsing/stop-color-valid.svg b/tests/wpt/web-platform-tests/svg/pservers/parsing/stop-color-valid.svg new file mode 100644 index 00000000000..80d6c23b83c --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/pservers/parsing/stop-color-valid.svg @@ -0,0 +1,24 @@ +<svg xmlns="http://www.w3.org/2000/svg" xmlns:h="http://www.w3.org/1999/xhtml"> + <title>SVG Paint Servers: parsing stop-color with valid values</title> + <metadata> + <h:link rel="help" href="https://svgwg.org/svg2-draft/pservers.html#StopColorProperty"/> + </metadata> + <g id="target" style="color: blue"></g> + <h:script src="/resources/testharness.js"/> + <h:script src="/resources/testharnessreport.js"/> + <h:script src="/css/support/parsing-testcommon.js"/> + <script><![CDATA[ + +test_valid_value("stop-color", "currentcolor"); +test_valid_value("stop-color", "white"); +test_valid_value("stop-color", "transparent"); +test_valid_value("stop-color", "rgb(255, 255, 255)"); +test_valid_value("stop-color", "#ffffff", "rgb(255, 255, 255)"); +test_valid_value("stop-color", "rgba(255, 255, 255, 1.0)", "rgb(255, 255, 255)"); +test_valid_value("stop-color", "rgba(255, 255, 255, 0.4)"); +test_valid_value("stop-color", "hsl(0deg, 100%, 100%)", "rgb(255, 255, 255)"); +test_valid_value("stop-color", "hsla(0deg, 100%, 100%, 1.0)", "rgb(255, 255, 255)"); +test_valid_value("stop-color", "hsla(0deg, 100%, 100%, 0.4)", "rgba(255, 255, 255, 0.4)"); + + ]]></script> +</svg> diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py index 898447df6f5..99d46108eb0 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py @@ -1,6 +1,7 @@ import json import os import socket +import sys import threading import time import traceback @@ -232,10 +233,14 @@ class WebDriverProtocol(Protocol): def teardown(self): self.logger.debug("Hanging up on WebDriver session") try: - self.webdriver.quit() - except Exception: - pass - del self.webdriver + self.webdriver.end() + except Exception as e: + message = str(getattr(e, "message", "")) + if message: + message += "\n" + message += traceback.format_exc(e) + self.logger.debug(message) + self.webdriver = None def is_alive(self): try: @@ -277,7 +282,10 @@ class WebDriverRun(object): # it can if self._run fails to set self.result due to raising self.result = False, ("INTERNAL-ERROR", "self._run didn't set a result") else: - self.result = False, ("EXTERNAL-TIMEOUT", None) + message = "Waiting on browser:\n" + # get a traceback for the current stack of the executor thread + message += "".join(traceback.format_stack(sys._current_frames()[executor.ident])) + self.result = False, ("EXTERNAL-TIMEOUT", message) return self.result diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/webdriver_server.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/webdriver_server.py index be991701434..8b711272c7b 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/webdriver_server.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/webdriver_server.py @@ -81,6 +81,7 @@ class WebDriverServer(object): self._proc.wait() def stop(self, force=False): + self.logger.debug("Stopping WebDriver") if self.is_alive: return self._proc.kill() return not self.is_alive diff --git a/tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/__init__.py b/tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/__init__.py index cf3b21905b7..9de87924607 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/__init__.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/__init__.py @@ -1,12 +1,12 @@ def element_rect(session, element): return session.execute_script(""" - let devicePixelRatio = window.devicePixelRatio; - let rect = arguments[0].getBoundingClientRect(); + let {devicePixelRatio} = window; + let {left, top, width, height} = arguments[0].getBoundingClientRect(); return { - x: Math.floor((rect.left + window.pageXOffset) * devicePixelRatio), - y: Math.floor((rect.top + window.pageYOffset) * devicePixelRatio), - width: Math.floor(rect.width * devicePixelRatio), - height: Math.floor(rect.height * devicePixelRatio), + x: Math.floor((left + window.pageXOffset) * devicePixelRatio), + y: Math.floor((top + window.pageYOffset) * devicePixelRatio), + width: Math.floor(width * devicePixelRatio), + height: Math.floor(height * devicePixelRatio), }; """, args=(element,)) diff --git a/tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/iframe.py b/tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/iframe.py new file mode 100644 index 00000000000..d081a14cdeb --- /dev/null +++ b/tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/iframe.py @@ -0,0 +1,54 @@ +import pytest + +from tests.support.asserts import assert_success +from tests.support.image import png_dimensions +from tests.support.inline import iframe, inline + +from . import element_rect + + +DEFAULT_CSS_STYLE = """ + <style> + div, iframe { + display: block; + border: 1px solid blue; + width: 10em; + height: 10em; + } + </style> +""" + +DEFAULT_CONTENT = "<div>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</div>" + + +def take_element_screenshot(session, element_id): + return session.transport.send( + "GET", + "session/{session_id}/element/{element_id}/screenshot".format( + session_id=session.session_id, + element_id=element_id, + ) + ) + + +@pytest.mark.parametrize("domain", ["", "alt"], ids=["same_origin", "cross_origin"]) +def test_source_origin(session, url, domain): + session.url = inline("""{0}{1}""".format(DEFAULT_CSS_STYLE, DEFAULT_CONTENT)) + element = session.find.css("div", all=False) + rect = element_rect(session, element) + + response = take_element_screenshot(session, element.id) + reference_screenshot = assert_success(response) + assert png_dimensions(reference_screenshot) == (rect["width"], rect["height"]) + + iframe_content = "<style>body {{ margin: 0; }}</style>{}".format(DEFAULT_CONTENT) + session.url = inline("""{0}{1}""".format( + DEFAULT_CSS_STYLE, iframe(iframe_content, domain=domain))) + frame_element = session.find.css("iframe", all=False) + frame_rect = element_rect(session, frame_element) + + response = take_element_screenshot(session, frame_element.id) + screenshot = assert_success(response) + assert png_dimensions(screenshot) == (frame_rect["width"], frame_rect["height"]) + + assert screenshot == reference_screenshot diff --git a/tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/screenshot.py b/tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/screenshot.py index 35a1ffe75f0..fd460b656ae 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/screenshot.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/screenshot.py @@ -1,4 +1,4 @@ -from tests.support.asserts import assert_error, assert_png, assert_success +from tests.support.asserts import assert_error, assert_success from tests.support.image import png_dimensions from tests.support.inline import inline @@ -35,7 +35,6 @@ def test_format_and_dimensions(session): rect = element_rect(session, element) response = take_element_screenshot(session, element.id) - value = assert_success(response) + screenshot = assert_success(response) - assert_png(value) - assert png_dimensions(value) == (rect["width"], rect["height"]) + assert png_dimensions(screenshot) == (rect["width"], rect["height"]) diff --git a/tests/wpt/web-platform-tests/webdriver/tests/take_screenshot/__init__.py b/tests/wpt/web-platform-tests/webdriver/tests/take_screenshot/__init__.py index fe057a4932e..c07f8d16703 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/take_screenshot/__init__.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/take_screenshot/__init__.py @@ -1,2 +1,9 @@ -def document_dimensions(session): - return tuple(session.execute_script("return [window.innerWidth, window.innerHeight];")) +def viewport_dimensions(session): + return tuple(session.execute_script(""" + let {devicePixelRatio, innerHeight, innerWidth} = window; + + return [ + Math.floor(innerWidth * devicePixelRatio), + Math.floor(innerHeight * devicePixelRatio) + ]; + """)) diff --git a/tests/wpt/web-platform-tests/webdriver/tests/take_screenshot/iframe.py b/tests/wpt/web-platform-tests/webdriver/tests/take_screenshot/iframe.py new file mode 100644 index 00000000000..5206f2fa173 --- /dev/null +++ b/tests/wpt/web-platform-tests/webdriver/tests/take_screenshot/iframe.py @@ -0,0 +1,45 @@ +import pytest + +from tests.support.asserts import assert_success +from tests.support.image import png_dimensions +from tests.support.inline import iframe, inline + +from . import viewport_dimensions + + +DEFAULT_CSS_STYLE = """ + <style> + div, iframe { + display: block; + border: 1px solid blue; + width: 10em; + height: 10em; + } + </style> +""" + +DEFAULT_CONTENT = "<div>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</div>" + + +def take_screenshot(session): + return session.transport.send( + "GET", "session/{session_id}/screenshot".format(**vars(session))) + + +@pytest.mark.parametrize("domain", ["", "alt"], ids=["same_origin", "cross_origin"]) +def test_source_origin(session, url, domain): + session.url = inline("""{0}{1}""".format(DEFAULT_CSS_STYLE, DEFAULT_CONTENT)) + + response = take_screenshot(session) + reference_screenshot = assert_success(response) + assert png_dimensions(reference_screenshot) == viewport_dimensions(session) + + iframe_content = "<style>body {{ margin: 0; }}</style>{}".format(DEFAULT_CONTENT) + session.url = inline("""{0}{1}""".format( + DEFAULT_CSS_STYLE, iframe(iframe_content, domain=domain))) + + response = take_screenshot(session) + screenshot = assert_success(response) + assert png_dimensions(screenshot) == viewport_dimensions(session) + + assert screenshot == reference_screenshot diff --git a/tests/wpt/web-platform-tests/webdriver/tests/take_screenshot/screenshot.py b/tests/wpt/web-platform-tests/webdriver/tests/take_screenshot/screenshot.py index 07879530120..ca6e0272637 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/take_screenshot/screenshot.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/take_screenshot/screenshot.py @@ -2,7 +2,7 @@ from tests.support.asserts import assert_error, assert_png, assert_success from tests.support.image import png_dimensions from tests.support.inline import inline -from . import document_dimensions +from . import viewport_dimensions def take_screenshot(session): @@ -22,4 +22,4 @@ def test_format_and_dimensions(session): value = assert_success(response) assert_png(value) - assert png_dimensions(value) == document_dimensions(session) + assert png_dimensions(value) == viewport_dimensions(session) diff --git a/tests/wpt/web-platform-tests/webgpu/framework/version.js b/tests/wpt/web-platform-tests/webgpu/framework/version.js index b9ec1b4f9f3..9be025609f3 100644 --- a/tests/wpt/web-platform-tests/webgpu/framework/version.js +++ b/tests/wpt/web-platform-tests/webgpu/framework/version.js @@ -1,3 +1,3 @@ // AUTO-GENERATED - DO NOT EDIT. See tools/gen_version. -export const version = '84ef21bec576c9272e64e08727dbdf75a2b0e9d8'; +export const version = 'f690ac56a3291801e817433f43877132bb531d5f'; diff --git a/tests/wpt/web-platform-tests/webgpu/suites/cts/command_buffer/render/basic.spec.js b/tests/wpt/web-platform-tests/webgpu/suites/cts/command_buffer/render/basic.spec.js index bb201dbe846..83bb026d963 100644 --- a/tests/wpt/web-platform-tests/webgpu/suites/cts/command_buffer/render/basic.spec.js +++ b/tests/wpt/web-platform-tests/webgpu/suites/cts/command_buffer/render/basic.spec.js @@ -22,7 +22,7 @@ g.test('clear', async t => { }, usage: GPUTextureUsage.COPY_SRC | GPUTextureUsage.OUTPUT_ATTACHMENT }); - const colorAttachmentView = colorAttachment.createDefaultView(); + const colorAttachmentView = colorAttachment.createView(); const encoder = t.device.createCommandEncoder({}); const pass = encoder.beginRenderPass({ colorAttachments: [{ diff --git a/tests/wpt/web-platform-tests/webgpu/suites/cts/command_buffer/render/rendering.spec.js b/tests/wpt/web-platform-tests/webgpu/suites/cts/command_buffer/render/rendering.spec.js index 762285d1bcc..c8a7d7f5738 100644 --- a/tests/wpt/web-platform-tests/webgpu/suites/cts/command_buffer/render/rendering.spec.js +++ b/tests/wpt/web-platform-tests/webgpu/suites/cts/command_buffer/render/rendering.spec.js @@ -20,7 +20,7 @@ g.test('fullscreen quad', async t => { }, usage: GPUTextureUsage.COPY_SRC | GPUTextureUsage.OUTPUT_ATTACHMENT }); - const colorAttachmentView = colorAttachment.createDefaultView(); + const colorAttachmentView = colorAttachment.createView(); const vertexModule = t.device.createShaderModule({ code: /* GLSL( diff --git a/tests/wpt/web-platform-tests/workers/README.md b/tests/wpt/web-platform-tests/workers/README.md index b78a05ebdbe..58ee7cca1ab 100644 --- a/tests/wpt/web-platform-tests/workers/README.md +++ b/tests/wpt/web-platform-tests/workers/README.md @@ -6,6 +6,9 @@ These are the workers (`Worker`, `SharedWorker`) tests for the See also [testharness.js API > Web Workers](https://web-platform-tests.org/writing-tests/testharness-api.html#web-workers). +Note that because workers are defined in the HTML Standard, the idlharness.js +tests are in [/html/dom]([/html/dom) instead of here. + ## Writing `*.any.js` The easiest and most recommended way to write tests for workers diff --git a/tests/wpt/web-platform-tests/workers/interfaces.worker.js b/tests/wpt/web-platform-tests/workers/interfaces.worker.js deleted file mode 100644 index fc9f3606fae..00000000000 --- a/tests/wpt/web-platform-tests/workers/interfaces.worker.js +++ /dev/null @@ -1,20 +0,0 @@ -"use strict"; - -importScripts("/resources/testharness.js"); -importScripts("/resources/WebIDLParser.js", "/resources/idlharness.js"); - -var request = new XMLHttpRequest(); -request.onload = function() { - var idlArray = new IdlArray(); - var idls = request.responseText; - idlArray.add_idls(idls); - idlArray.add_objects({ - DedicatedWorkerGlobalScope: ['self'], - WorkerNavigator: ['self.navigator'], - WorkerLocation: ['self.location'], - }); - idlArray.test(); - done(); -}; -request.open("GET", "/interfaces/dedicated-workers.idl"); -request.send(); |