diff options
90 files changed, 1854 insertions, 260 deletions
diff --git a/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini b/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini index a9e46713244..76b398963ae 100644 --- a/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini +++ b/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini @@ -7,7 +7,7 @@ expected: FAIL [Opening a blob URL in a new window immediately before revoking it works.] - expected: TIMEOUT + expected: FAIL [Opening a blob URL in a noopener about:blank window immediately before revoking it works.] expected: FAIL 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 4c1aa18e695..0bf3b469372 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 @@ -2,14 +2,8 @@ [Revoke blob URL after creating Request, will fetch] expected: FAIL - [Revoke blob URL after calling fetch, fetch should succeed] - expected: FAIL - [url-with-fetch.any.html] [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 5ee2889461a..714f683129b 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -205305,18 +205305,6 @@ {} ] ], - "mathml/presentation-markup/direction/direction-009.html": [ - [ - "mathml/presentation-markup/direction/direction-009.html", - [ - [ - "/mathml/presentation-markup/direction/direction-009-ref.html", - "==" - ] - ], - {} - ] - ], "mathml/presentation-markup/direction/direction-010.html": [ [ "mathml/presentation-markup/direction/direction-010.html", @@ -205821,6 +205809,18 @@ {} ] ], + "mathml/presentation-markup/tokens/ms-001.html": [ + [ + "mathml/presentation-markup/tokens/ms-001.html", + [ + [ + "/mathml/presentation-markup/tokens/ms-001-ref.html", + "==" + ] + ], + {} + ] + ], "mathml/relations/css-styling/color-001.html": [ [ "mathml/relations/css-styling/color-001.html", @@ -276990,9 +276990,6 @@ "mathml/presentation-markup/direction/direction-008-ref.html": [ [] ], - "mathml/presentation-markup/direction/direction-009-ref.html": [ - [] - ], "mathml/presentation-markup/direction/direction-010-ref.html": [ [] ], @@ -277125,6 +277122,9 @@ "mathml/presentation-markup/spaces/space-2-ref.html": [ [] ], + "mathml/presentation-markup/tokens/ms-001-ref.html": [ + [] + ], "mathml/relations/css-styling/color-001-ref.html": [ [] ], @@ -278814,9 +278814,15 @@ "portals/references/portals-rendering.html": [ [] ], + "portals/resources/blank-host.html": [ + [] + ], "portals/resources/eval-portal.html": [ [] ], + "portals/resources/open-blank-host.js": [ + [] + ], "portals/resources/portal-activate-data-portal.html": [ [] ], @@ -316547,7 +316553,9 @@ "cookies/http-state/path-tests.html": [ [ "cookies/http-state/path-tests.html", - {} + { + "timeout": "long" + } ] ], "cookies/http-state/value-tests.html": [ @@ -324243,6 +324251,12 @@ {} ] ], + "css/css-masking/animations/mask-position-interpolation.html": [ + [ + "css/css-masking/animations/mask-position-interpolation.html", + {} + ] + ], "css/css-masking/clip-path/interpolation.html": [ [ "css/css-masking/clip-path/interpolation.html", @@ -334205,6 +334219,18 @@ {} ] ], + "css/cssom-view/MediaQueryList-extends-EventTarget-interop.html": [ + [ + "css/cssom-view/MediaQueryList-extends-EventTarget-interop.html", + {} + ] + ], + "css/cssom-view/MediaQueryList-extends-EventTarget.html": [ + [ + "css/cssom-view/MediaQueryList-extends-EventTarget.html", + {} + ] + ], "css/cssom-view/MediaQueryListEvent.html": [ [ "css/cssom-view/MediaQueryListEvent.html", @@ -335348,7 +335374,9 @@ "css/cssom/idlharness.html": [ [ "css/cssom/idlharness.html", - {} + { + "timeout": "long" + } ] ], "css/cssom/inline-style-001.html": [ @@ -337392,6 +337420,12 @@ } ] ], + "dom/events/Event-dispatch-order-at-target.html": [ + [ + "dom/events/Event-dispatch-order-at-target.html", + {} + ] + ], "dom/events/Event-dispatch-order.html": [ [ "dom/events/Event-dispatch-order.html", @@ -362151,15 +362185,15 @@ {} ] ], - "html/semantics/embedded-content/the-iframe-element/iframe_sandbox_anchor_download_allow_downloads_without_user_activation.sub.tentative.html": [ + "html/semantics/embedded-content/the-iframe-element/iframe_sandbox_anchor_download_allow_downloads.sub.tentative.html": [ [ - "html/semantics/embedded-content/the-iframe-element/iframe_sandbox_anchor_download_allow_downloads_without_user_activation.sub.tentative.html", + "html/semantics/embedded-content/the-iframe-element/iframe_sandbox_anchor_download_allow_downloads.sub.tentative.html", {} ] ], - "html/semantics/embedded-content/the-iframe-element/iframe_sandbox_anchor_download_block_downloads_without_user_activation.sub.tentative.html": [ + "html/semantics/embedded-content/the-iframe-element/iframe_sandbox_anchor_download_block_downloads.sub.tentative.html": [ [ - "html/semantics/embedded-content/the-iframe-element/iframe_sandbox_anchor_download_block_downloads_without_user_activation.sub.tentative.html", + "html/semantics/embedded-content/the-iframe-element/iframe_sandbox_anchor_download_block_downloads.sub.tentative.html", {} ] ], @@ -362229,17 +362263,17 @@ {} ] ], - "html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_allow_downloads_without_user_activation.sub.tentative.html": [ + "html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_allow_downloads.sub.tentative.html": [ [ - "html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_allow_downloads_without_user_activation.sub.tentative.html", + "html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_allow_downloads.sub.tentative.html", { "timeout": "long" } ] ], - "html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_block_downloads_without_user_activation.sub.tentative.html": [ + "html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_block_downloads.sub.tentative.html": [ [ - "html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_block_downloads_without_user_activation.sub.tentative.html", + "html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_block_downloads.sub.tentative.html", {} ] ], @@ -364265,6 +364299,12 @@ {} ] ], + "html/semantics/interactive-elements/the-summary-element/anchor-with-inline-element.html": [ + [ + "html/semantics/interactive-elements/the-summary-element/anchor-with-inline-element.html", + {} + ] + ], "html/semantics/interactive-elements/the-summary-element/display-table-with-rt-crash.html": [ [ "html/semantics/interactive-elements/the-summary-element/display-table-with-rt-crash.html", @@ -369138,6 +369178,12 @@ {} ] ], + "html/webappapis/scripting/events/event-handler-handleEvent-ignored.html": [ + [ + "html/webappapis/scripting/events/event-handler-handleEvent-ignored.html", + {} + ] + ], "html/webappapis/scripting/events/event-handler-javascript.html": [ [ "html/webappapis/scripting/events/event-handler-javascript.html", @@ -371544,6 +371590,24 @@ {} ] ], + "layout-instability/clip-negative-bottom-margin.html": [ + [ + "layout-instability/clip-negative-bottom-margin.html", + {} + ] + ], + "layout-instability/composited-element-movement.html": [ + [ + "layout-instability/composited-element-movement.html", + {} + ] + ], + "layout-instability/fully-clipped-visual-rect.html": [ + [ + "layout-instability/fully-clipped-visual-rect.html", + {} + ] + ], "layout-instability/idlharness.window.js": [ [ "layout-instability/idlharness.window.html", @@ -371561,6 +371625,24 @@ } ] ], + "layout-instability/ignore-fixed-and-sticky.html": [ + [ + "layout-instability/ignore-fixed-and-sticky.html", + {} + ] + ], + "layout-instability/local-shift-without-viewport-shift.html": [ + [ + "layout-instability/local-shift-without-viewport-shift.html", + {} + ] + ], + "layout-instability/multi-clip-visual-rect.html": [ + [ + "layout-instability/multi-clip-visual-rect.html", + {} + ] + ], "layout-instability/observe-layout-shift.html": [ [ "layout-instability/observe-layout-shift.html", @@ -371569,12 +371651,42 @@ } ] ], + "layout-instability/partially-clipped-visual-rect.html": [ + [ + "layout-instability/partially-clipped-visual-rect.html", + {} + ] + ], "layout-instability/rtl-distance.html": [ [ "layout-instability/rtl-distance.html", {} ] ], + "layout-instability/shift-into-viewport.html": [ + [ + "layout-instability/shift-into-viewport.html", + {} + ] + ], + "layout-instability/shift-outside-viewport.html": [ + [ + "layout-instability/shift-outside-viewport.html", + {} + ] + ], + "layout-instability/shift-while-scrolled.html": [ + [ + "layout-instability/shift-while-scrolled.html", + {} + ] + ], + "layout-instability/shift-with-counterscroll.html": [ + [ + "layout-instability/shift-with-counterscroll.html", + {} + ] + ], "layout-instability/simple-block-movement.html": [ [ "layout-instability/simple-block-movement.html", @@ -389090,6 +389202,12 @@ } ] ], + "portals/about-blank-cannot-host.html": [ + [ + "portals/about-blank-cannot-host.html", + {} + ] + ], "portals/csp/frame-src.sub.html": [ [ "portals/csp/frame-src.sub.html", @@ -459929,7 +460047,7 @@ "support" ], ".github/workflows/epochs.yml": [ - "78aaf16d18a43c4baaf4512d067acc3b16c75e27", + "a93a1e8defb4fdeeb9f7740db1cc5c520aa07e5e", "support" ], ".github/workflows/manifest.yml": [ @@ -492345,7 +492463,7 @@ "testharness" ], "cookies/http-state/path-tests.html": [ - "b30d8362252c59b318b00669c0c542c78b429594", + "0a4794a4c0e5b108e46e90d2f05049fcd206a6eb", "testharness" ], "cookies/http-state/resources/all-tests.html.py-str": [ @@ -579205,7 +579323,7 @@ "testharness" ], "css/css-grid/parsing/grid-shorthand-valid.html": [ - "435959af25e0f03b8f53844f907430daa3d36d97", + "80ee50a6e273f1f4ae1a86e6a95fcc5a984d4f10", "testharness" ], "css/css-grid/parsing/grid-shorthand.html": [ @@ -579269,7 +579387,7 @@ "testharness" ], "css/css-grid/parsing/grid-template-shorthand-valid.html": [ - "042268f334816172b077edf341b1c091196f5197", + "8790627f4a6d13444d9232af6bca5af172149c54", "testharness" ], "css/css-grid/parsing/grid-template-shorthand.html": [ @@ -581620,6 +581738,10 @@ "e00170ed331bcbca450a4de5ef41c415cc88d2b9", "testharness" ], + "css/css-masking/animations/mask-position-interpolation.html": [ + "d832048ca37b2693218d1c2891d9cb3fa8ba8609", + "testharness" + ], "css/css-masking/clip-path-svg-content/clip-path-clip-nested-twice.svg": [ "269e8feed2d3c21774a7c94729c3551899ce4d92", "reftest" @@ -619173,11 +619295,19 @@ "testharness" ], "css/cssom-view/MediaQueryList-addListener-removeListener.html": [ - "5446e48e6cfcf20d5005ecfa4f75523f61ab83e2", + "1144e3a78322ceb7b49056c0530835bb2301fc30", + "testharness" + ], + "css/cssom-view/MediaQueryList-extends-EventTarget-interop.html": [ + "7dae2afbd723883ef2230ac47f68987ff6f03d08", + "testharness" + ], + "css/cssom-view/MediaQueryList-extends-EventTarget.html": [ + "34b6ef15c052ef8140973bd4d1e52b8c91b10832", "testharness" ], "css/cssom-view/MediaQueryListEvent.html": [ - "24cce3cc0973cf7478c92ce05137926ea0b78f77", + "0afa09f087a2de0d2d8fcf6c095688cb750f8d80", "testharness" ], "css/cssom-view/Screen-pixelDepth-Screen-colorDepth001.html": [ @@ -619397,7 +619527,7 @@ "testharness" ], "css/cssom-view/matchMedia.html": [ - "14df3d02425ddf32caa904cfcfe3d8e2fae0c803", + "0a94c9850c8fcc72eb01d0df929e914b71cf8a2c", "testharness" ], "css/cssom-view/mouseEvent.html": [ @@ -619477,7 +619607,7 @@ "support" ], "css/cssom-view/resources/matchMedia.js": [ - "8013699b7dee114da3313ccfba61d57e7e860e5b", + "8623a6597a0d88c683eaaf2cd7d7515bb0f2cd7c", "support" ], "css/cssom-view/screenLeftTop.html": [ @@ -620185,7 +620315,7 @@ "testharness" ], "css/cssom/idlharness.html": [ - "3204fb8c7e750d5b121c34ba068e070e7cbddc5a", + "ce13d30cfad18ca0d48298694ec2477a7d6d68b5", "testharness" ], "css/cssom/inline-style-001.html": [ @@ -634784,6 +634914,10 @@ "361006a7240496e9be747faca5056fe2a62a2cff", "testharness" ], + "dom/events/Event-dispatch-order-at-target.html": [ + "79673c32564cbe785858266d4737de6bd5f7bade", + "testharness" + ], "dom/events/Event-dispatch-order.html": [ "ca94434595c6ee19fb0f6982f56da0d005b4586c", "testharness" @@ -640061,7 +640195,7 @@ "testharness" ], "feature-policy/feature-policy-for-sandbox/resources/helper.js": [ - "9de8416535613fc1d46396953750cc9ab6a7990b", + "eec189871ff82d18c6e8a3cc86ccf9c08597ca42", "support" ], "feature-policy/feature-policy-for-sandbox/resources/opened_window.html": [ @@ -641977,7 +642111,7 @@ "testharness" ], "fetch/metadata/portal.tentative.https.sub.html": [ - "b9128944733b0301606a57087cb40c143d3cb99a", + "4e50b6b24b356dac6c6c7f5b7d17b7f4f01431c1", "testharness" ], "fetch/metadata/prefetch.tentative.https.sub.html": [ @@ -656752,11 +656886,11 @@ "042851bbb492365e9d176aff8d678feb645f1d18", "testharness" ], - "html/semantics/embedded-content/the-iframe-element/iframe_sandbox_anchor_download_allow_downloads_without_user_activation.sub.tentative.html": [ - "32409f220f0a273f165741e2d79ca60846d61648", + "html/semantics/embedded-content/the-iframe-element/iframe_sandbox_anchor_download_allow_downloads.sub.tentative.html": [ + "1e93cb5997df5c85a6b67d3b486ae441adfb33fd", "testharness" ], - "html/semantics/embedded-content/the-iframe-element/iframe_sandbox_anchor_download_block_downloads_without_user_activation.sub.tentative.html": [ + "html/semantics/embedded-content/the-iframe-element/iframe_sandbox_anchor_download_block_downloads.sub.tentative.html": [ "abd4d7c5e0d76d04cd678b00a153d5a8f10bddf7", "testharness" ], @@ -656804,11 +656938,11 @@ "12c4e0ca50236caacae89c76da3b81effd7b44be", "testharness" ], - "html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_allow_downloads_without_user_activation.sub.tentative.html": [ - "6af49b8d78ddf2acbad9e8fb875e8250c825cd33", + "html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_allow_downloads.sub.tentative.html": [ + "50e28f650c74ca734f63f970e61dfea77e7ab0bd", "testharness" ], - "html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_block_downloads_without_user_activation.sub.tentative.html": [ + "html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_block_downloads.sub.tentative.html": [ "9b9246c393ec9b4ee3b9762d6d06ea65ff0ff5d1", "testharness" ], @@ -657789,7 +657923,7 @@ "support" ], "html/semantics/forms/form-submission-0/resources/form-submission.py": [ - "467875453c9dc64aac51add3f4a617d941820972", + "b296ac44c57c658ca9e3189e9f79b0f80677acba", "support" ], "html/semantics/forms/form-submission-0/resources/targetted-form.js": [ @@ -657801,7 +657935,7 @@ "testharness" ], "html/semantics/forms/form-submission-0/submit-entity-body.html": [ - "f6f3858d4ff025cfbb2ba6b0745df51c6d39436b", + "be9c5f0696eda41b652c9653fee1a70a2304e8f5", "testharness" ], "html/semantics/forms/form-submission-0/submit-file.sub.html": [ @@ -659136,6 +659270,10 @@ "4a3693bd2dafe710b82054bfadd8bcaa97b16db5", "testharness" ], + "html/semantics/interactive-elements/the-summary-element/anchor-with-inline-element.html": [ + "ab200020b4f05321d4ee7c17c4a8f11c6f5931db", + "testharness" + ], "html/semantics/interactive-elements/the-summary-element/display-table-with-rt-crash.html": [ "57cc45478e03ce1cdbb755281b2f434b38582563", "testharness" @@ -663312,12 +663450,16 @@ "9b81d42ff729399d57e182abc8b8950cef503e12", "testharness" ], + "html/webappapis/scripting/events/event-handler-handleEvent-ignored.html": [ + "8039bac7adc137154d92173b29e7283baf6db22c", + "testharness" + ], "html/webappapis/scripting/events/event-handler-javascript.html": [ "657a37839d2f3ed78968d1f0739f8594aa391cda", "testharness" ], "html/webappapis/scripting/events/event-handler-onresize.html": [ - "8686716e19ac86748a1e9988767f073e2cd3348b", + "0e44e7272f02513c6de0c5aecc96f09005ad7396", "testharness" ], "html/webappapis/scripting/events/event-handler-processing-algorithm-error/document-synthetic-errorevent.html": [ @@ -665117,7 +665259,7 @@ "support" ], "interfaces/WebCryptoAPI.idl": [ - "0b515fc12e701b4b20c616e2ae4ce29f50a205b6", + "fecb3b72d3afea791a0f0648bcefa6dc014fe330", "support" ], "interfaces/WebIDL.idl": [ @@ -665589,7 +665731,7 @@ "support" ], "interfaces/web-nfc.idl": [ - "340dab647d6c5156ada9af62b77f419063aeefa7", + "455720c641e69af2e68b9c9a0eb2cbd740267e26", "support" ], "interfaces/web-share.idl": [ @@ -666272,14 +666414,42 @@ "dabc8068931ff3b15eb4b80481ed2102a7725a62", "testharness" ], + "layout-instability/clip-negative-bottom-margin.html": [ + "2c329d9fcd66d86bf8c350c2ee419e28ef6596f4", + "testharness" + ], + "layout-instability/composited-element-movement.html": [ + "c9906903358d8c2b94877f536e733320d0ada75b", + "testharness" + ], + "layout-instability/fully-clipped-visual-rect.html": [ + "bfd74a2407e2d91cdb2a13b86945b040aeb6dcca", + "testharness" + ], "layout-instability/idlharness.window.js": [ "7d97446a57808576722a823f604effa94bb95e76", "testharness" ], + "layout-instability/ignore-fixed-and-sticky.html": [ + "1b39dc9e6e9320a7932986d3a0063b7a4e556129", + "testharness" + ], + "layout-instability/local-shift-without-viewport-shift.html": [ + "37729f1c13c298b5a2d95c46b7a4f199d8943022", + "testharness" + ], + "layout-instability/multi-clip-visual-rect.html": [ + "36475d4c826c11807e9c0a7fbf4457c33c92c2c0", + "testharness" + ], "layout-instability/observe-layout-shift.html": [ "1c35fe2aa234c96fce8798e6a1c35362f418e6f1", "testharness" ], + "layout-instability/partially-clipped-visual-rect.html": [ + "3b18b98dd93312c37b9e2f25918df50266a09243", + "testharness" + ], "layout-instability/resources/slow-image.py": [ "ee7988c551f6429eea2b929af083ad30cbd5c73d", "support" @@ -666292,6 +666462,22 @@ "a6f0040e950649015119ecacc465e75303b5ff9b", "testharness" ], + "layout-instability/shift-into-viewport.html": [ + "6ace93ad54c2f6b173df060e39be097eca4b6867", + "testharness" + ], + "layout-instability/shift-outside-viewport.html": [ + "49242913760a76d124eac0eeb3de8bb4e8eb8a19", + "testharness" + ], + "layout-instability/shift-while-scrolled.html": [ + "88eeedea87782939d0191c64f7771e7e4f8828c3", + "testharness" + ], + "layout-instability/shift-with-counterscroll.html": [ + "8ad1a463443ef1b6b8b8ca06a9435157cb38a1f5", + "testharness" + ], "layout-instability/simple-block-movement.html": [ "0f9257e27ce5d553d8176f084e537e47b331416e", "testharness" @@ -666612,14 +666798,6 @@ "d94a036be00f404bd4d51350a85f70c180e9c776", "reftest" ], - "mathml/presentation-markup/direction/direction-009-ref.html": [ - "8b80b7e6bead29d97540896d5ac1ae14b46881f1", - "support" - ], - "mathml/presentation-markup/direction/direction-009.html": [ - "c0ca31d40a82e5af2e23a4c5dee83f9e2bb593cb", - "reftest" - ], "mathml/presentation-markup/direction/direction-010-ref.html": [ "4f595ed49f698a7a70392edb5e72dd1df8471368", "support" @@ -667128,6 +667306,14 @@ "f9354266a7c6c42a75519e9771eb2c61536ad8e5", "testharness" ], + "mathml/presentation-markup/tokens/ms-001-ref.html": [ + "bbd42a93eedbbabb7aff8fa1aa60f5c954e48210", + "support" + ], + "mathml/presentation-markup/tokens/ms-001.html": [ + "b0b03f225525ffacf1d8f73da03a3848b39e96f8", + "reftest" + ], "mathml/relations/css-styling/attribute-mapping-001.html": [ "3424e8c1a8cbb775a91839db6b3951dfe869af95", "testharness" @@ -680224,6 +680410,10 @@ "29134d490f7bdfb09255e190fe91576629057c78", "support" ], + "portals/about-blank-cannot-host.html": [ + "207d477697d823d6611b4d8dc6681b3e2fc90a73", + "testharness" + ], "portals/csp/frame-src.sub.html": [ "34f1474d4b37f6a867b858a0bfc88e03db48153a", "testharness" @@ -680269,7 +680459,7 @@ "testharness" ], "portals/portal-activate-data.html": [ - "38204edb2c3c2ac17aec54cedd3b6f9f6d42c698", + "b3b9223b5199df329e770f224161632c6ee5604a", "testharness" ], "portals/portal-activate-event-constructor.html": [ @@ -680301,7 +680491,7 @@ "testharness" ], "portals/portals-activate-resolution.html": [ - "44ccea3bc521e14f7c826f14c3e815494df65ae7", + "db77a990e532a3d1b88f57300094cbd60215d69d", "testharness" ], "portals/portals-activate-twice.html": [ @@ -680337,7 +680527,7 @@ "testharness" ], "portals/portals-navigate-after-adoption.html": [ - "083eeaa14821b5916fc452a8a09bfa6ed308c191", + "5ad30d7928a6c4eda0cbcb5afad9c29234b9a057", "testharness" ], "portals/portals-nested.html": [ @@ -680377,17 +680567,25 @@ "testharness" ], "portals/portals-set-src-after-activate.html": [ - "8da6b341840162dc7348b95cfed060c075a75135", + "70a16436a67f254372be5f861d83d9e9b66f895f", "testharness" ], "portals/references/portals-rendering.html": [ "4a8414ab5656593811772c3728e4ee83eb034457", "support" ], + "portals/resources/blank-host.html": [ + "d9f3a61eb8488ba78df7439ff612fa600ff53008", + "support" + ], "portals/resources/eval-portal.html": [ "98c2013915eae38bea2b8722bb8f80378ae894a0", "support" ], + "portals/resources/open-blank-host.js": [ + "f7580bd15212234c36b55a368efa0c729bd64e5b", + "support" + ], "portals/resources/portal-activate-data-portal.html": [ "f57e4b196be471783316a6749a58ebd4a5b962a7", "support" @@ -694233,7 +694431,7 @@ "support" ], "resources/chromium/sms_mock.js": [ - "bdfbc2052fa102a0e502937a610a9c64d79d1bbe", + "d8476cf37ad0edde630634e6821fdc68b7e69114", "support" ], "resources/chromium/string16.mojom.js": [ @@ -699553,7 +699751,7 @@ "testharness" ], "sms/interceptor.https.html": [ - "6da2d71c52a90f7d0906ea99397976cb6e1573e3", + "94f1951a1380290a7c30fdbf85cd512d9064b8e3", "testharness" ], "sms/resources/helper.js": [ @@ -699569,7 +699767,7 @@ "testharness" ], "sms/sms_receiver.idl": [ - "64048523f901f8509e85e4dc1ddc1f7c59ab3489", + "ca8cfdd798c8e7d85c8251ea08acb063fc25ae77", "support" ], "speech-api/META.yml": [ @@ -710417,7 +710615,7 @@ "support" ], "tools/wptrunner/wptrunner/browsers/servodriver.py": [ - "ea345efa44fd4ec57cde5abc90c92d998c4a6c73", + "2953de18174ef75d505db0b8d518fe3339f7065e", "support" ], "tools/wptrunner/wptrunner/browsers/webkit.py": [ diff --git a/tests/wpt/metadata/css/css-transforms/animation/perspective-interpolation.html.ini b/tests/wpt/metadata/css/css-transforms/animation/perspective-interpolation.html.ini index 03f2f3fe9d1..1193e3dfa5c 100644 --- a/tests/wpt/metadata/css/css-transforms/animation/perspective-interpolation.html.ini +++ b/tests/wpt/metadata/css/css-transforms/animation/perspective-interpolation.html.ini @@ -1,5 +1,5 @@ [perspective-interpolation.html] - expected: CRASH + expected: ERROR [ perspective interpolation] expected: FAIL diff --git a/tests/wpt/metadata/css/cssom-view/MediaQueryList-extends-EventTarget-interop.html.ini b/tests/wpt/metadata/css/cssom-view/MediaQueryList-extends-EventTarget-interop.html.ini new file mode 100644 index 00000000000..4b646ae6a9b --- /dev/null +++ b/tests/wpt/metadata/css/cssom-view/MediaQueryList-extends-EventTarget-interop.html.ini @@ -0,0 +1,4 @@ +[MediaQueryList-extends-EventTarget-interop.html] + [listeners are called in order they were added, ignoring capture parameter] + expected: FAIL + diff --git a/tests/wpt/metadata/dom/events/Event-dispatch-order-at-target.html.ini b/tests/wpt/metadata/dom/events/Event-dispatch-order-at-target.html.ini new file mode 100644 index 00000000000..38fe82e7126 --- /dev/null +++ b/tests/wpt/metadata/dom/events/Event-dispatch-order-at-target.html.ini @@ -0,0 +1,4 @@ +[Event-dispatch-order-at-target.html] + [Listeners are invoked in correct order (AT_TARGET phase)] + 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 81b7704b14e..7c6560d5882 100644 --- a/tests/wpt/metadata/fetch/content-type/response.window.js.ini +++ b/tests/wpt/metadata/fetch/content-type/response.window.js.ini @@ -309,15 +309,9 @@ [<iframe>: separate response Content-Type: */* text/html] expected: FAIL - [<iframe>: separate response Content-Type: text/plain */*] - expected: FAIL - [<iframe>: combined response Content-Type: text/html */*;charset=gbk] expected: FAIL - [<iframe>: combined response Content-Type: text/html;" text/plain] - expected: FAIL - [<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html] expected: FAIL @@ -327,3 +321,18 @@ [<iframe>: separate response Content-Type: text/html;" \\" text/plain] expected: FAIL + [<iframe>: combined response Content-Type: text/html */*] + expected: FAIL + + [<iframe>: separate response Content-Type: text/html;" text/plain] + expected: FAIL + + [<iframe>: separate response Content-Type: text/html;x=" text/plain] + expected: FAIL + + [<iframe>: combined response Content-Type: text/html;x=" text/plain] + expected: FAIL + + [<iframe>: separate response Content-Type: text/plain */*;charset=gbk] + 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 8d0261f22a0..5c001592859 100644 --- a/tests/wpt/metadata/fetch/content-type/script.window.js.ini +++ b/tests/wpt/metadata/fetch/content-type/script.window.js.ini @@ -56,6 +56,6 @@ [separate text/javascript x/x] expected: FAIL - [separate text/javascript; charset=windows-1252 text/javascript] + [separate text/javascript;charset=windows-1252 error text/javascript] expected: FAIL diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_3.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_3.html.ini new file mode 100644 index 00000000000..51f8272a6de --- /dev/null +++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_3.html.ini @@ -0,0 +1,4 @@ +[traverse_the_history_3.html] + [Multiple history traversals, last would be aborted] + expected: FAIL + diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini new file mode 100644 index 00000000000..385376c7321 --- /dev/null +++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini @@ -0,0 +1,4 @@ +[traverse_the_history_4.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 new file mode 100644 index 00000000000..16fa2c5cfc1 --- /dev/null +++ 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 @@ -0,0 +1,4 @@ +[creating_browsing_context_test_01.html] + [first argument: absolute url] + expected: FAIL + 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-top.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-top.html.ini index 10f617db69e..8540f53d8d6 100644 --- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-top.html.ini +++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-top.html.ini @@ -1,32 +1,42 @@ [open-features-non-integer-top.html] type: testharness + expected: TIMEOUT [HTML: window.open `features`: non-integer values for feature `top`] expected: FAIL [features "top=105/5" should set "top=105"] - expected: FAIL + expected: TIMEOUT [features "top=105*3" should set "top=105"] - expected: FAIL + expected: TIMEOUT [features "top=105LLl" should set "top=105"] - expected: FAIL + expected: TIMEOUT [features "top=105e-1" should set "top=105"] - expected: FAIL + expected: TIMEOUT [features "top=105.32" should set "top=105"] - expected: FAIL + expected: TIMEOUT [features "top=105e1" should set "top=105"] - expected: FAIL + expected: TIMEOUT [features "top=105 " should set "top=105"] - expected: FAIL + expected: TIMEOUT [features "top=105^4" should set "top=105"] - expected: FAIL + expected: TIMEOUT [features "top=105.5" should set "top=105"] - expected: FAIL + expected: TIMEOUT + + [features "top=/104" should NOT set "top=104"] + expected: TIMEOUT + + [features "top=_104" should NOT set "top=104"] + expected: TIMEOUT + + [features "top=L104" should NOT set "top=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-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/browsers/windows/embedded-opener-remove-frame.html.ini b/tests/wpt/metadata/html/browsers/windows/embedded-opener-remove-frame.html.ini index 442db3cb549..2532dceabac 100644 --- a/tests/wpt/metadata/html/browsers/windows/embedded-opener-remove-frame.html.ini +++ b/tests/wpt/metadata/html/browsers/windows/embedded-opener-remove-frame.html.ini @@ -1,4 +1,5 @@ [embedded-opener-remove-frame.html] + expected: CRASH [opener and "removed" embedded documents] expected: FAIL diff --git a/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini b/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini index 6b68e9094e4..d1ca01ebc5f 100644 --- a/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini +++ b/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini @@ -1,4 +1,5 @@ [supported-elements.html] + expected: TIMEOUT [Contenteditable element should support autofocus] expected: FAIL @@ -9,7 +10,7 @@ expected: FAIL [Area element should support autofocus] - expected: FAIL + expected: TIMEOUT [Host element with delegatesFocus should support autofocus] expected: FAIL diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_anchor_download_allow_downloads.sub.tentative.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_anchor_download_allow_downloads.sub.tentative.html.ini new file mode 100644 index 00000000000..30a7275385a --- /dev/null +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_anchor_download_allow_downloads.sub.tentative.html.ini @@ -0,0 +1,5 @@ +[iframe_sandbox_anchor_download_allow_downloads.sub.tentative.html] + expected: TIMEOUT + [<a download> triggered download in sandbox is allowed by allow-downloads.] + expected: TIMEOUT + diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_anchor_download_allow_downloads_without_user_activation.sub.tentative.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_anchor_download_allow_downloads_without_user_activation.sub.tentative.html.ini deleted file mode 100644 index 7d9c4f6072b..00000000000 --- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_anchor_download_allow_downloads_without_user_activation.sub.tentative.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[iframe_sandbox_anchor_download_allow_downloads_without_user_activation.sub.tentative.html] - expected: TIMEOUT - [<a download> triggered download in sandbox is allowed by allow-downloads-without-user-activation.] - expected: TIMEOUT - diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_allow_downloads.sub.tentative.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_allow_downloads.sub.tentative.html.ini new file mode 100644 index 00000000000..c98551372ad --- /dev/null +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_allow_downloads.sub.tentative.html.ini @@ -0,0 +1,5 @@ +[iframe_sandbox_navigation_download_allow_downloads.sub.tentative.html] + expected: TIMEOUT + [Navigation resulted download in sandbox is allowed by allow-downloads.] + expected: TIMEOUT + diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_allow_downloads_without_user_activation.sub.tentative.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_allow_downloads_without_user_activation.sub.tentative.html.ini deleted file mode 100644 index 609b809273a..00000000000 --- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_allow_downloads_without_user_activation.sub.tentative.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[iframe_sandbox_navigation_download_allow_downloads_without_user_activation.sub.tentative.html] - expected: TIMEOUT - [Navigation resulted download in sandbox is allowed by allow-downloads-without-user-activation.] - expected: TIMEOUT - diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini index fc37df7e3fa..f42f518d257 100644 --- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini @@ -1,6 +1,5 @@ [iframe_sandbox_popups_escaping-1.html] type: testharness - expected: TIMEOUT [Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used] - expected: TIMEOUT + expected: FAIL diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini index 9df1ac56f2a..3f7e3e9544f 100644 --- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini @@ -1,6 +1,5 @@ [iframe_sandbox_popups_nonescaping-1.html] type: testharness - expected: TIMEOUT [Check that popups from a sandboxed iframe do not escape the sandbox] - expected: NOTRUN + expected: FAIL diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini deleted file mode 100644 index 8cc42056d34..00000000000 --- a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini +++ /dev/null @@ -1,10 +0,0 @@ -[non-active-document.html] - [DOMParser] - expected: FAIL - - [createHTMLDocument] - expected: FAIL - - [<template>] - expected: FAIL - diff --git a/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-3.html.ini b/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-3.html.ini index 941d0dee0c8..df89cd21511 100644 --- a/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-3.html.ini +++ b/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-3.html.ini @@ -1,5 +1,5 @@ [form-double-submit-3.html] expected: ERROR [<button> should have the same double-submit protection as <input type=submit>] - expected: TIMEOUT + expected: FAIL diff --git a/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit.html.ini b/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit.html.ini index 47a7bbb7975..dce74c6dd71 100644 --- a/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit.html.ini +++ b/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit.html.ini @@ -1,5 +1,5 @@ [form-double-submit.html] expected: ERROR [default submit action should supersede onclick submit()] - expected: TIMEOUT + expected: FAIL diff --git a/tests/wpt/metadata/html/semantics/interactive-elements/the-details-element/toggleEvent.html.ini b/tests/wpt/metadata/html/semantics/interactive-elements/the-details-element/toggleEvent.html.ini deleted file mode 100644 index 9e522297c94..00000000000 --- a/tests/wpt/metadata/html/semantics/interactive-elements/the-details-element/toggleEvent.html.ini +++ /dev/null @@ -1,7 +0,0 @@ -[toggleEvent.html] - [Calling open twice on 'details' fires only one toggle event] - expected: FAIL - - [Setting open=true to opened 'details' element should not fire a toggle event at the 'details' element] - expected: FAIL - diff --git a/tests/wpt/metadata/html/semantics/interactive-elements/the-summary-element/anchor-with-inline-element.html.ini b/tests/wpt/metadata/html/semantics/interactive-elements/the-summary-element/anchor-with-inline-element.html.ini new file mode 100644 index 00000000000..bab4ff15d5b --- /dev/null +++ b/tests/wpt/metadata/html/semantics/interactive-elements/the-summary-element/anchor-with-inline-element.html.ini @@ -0,0 +1,8 @@ +[anchor-with-inline-element.html] + expected: TIMEOUT + [Clicking on anchor with embedded inline element should navigate instead of opening details] + expected: NOTRUN + + [Expected <a> containing <i> to navigate] + expected: NOTRUN + 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/webmessaging/with-ports/018.html.ini b/tests/wpt/metadata/webmessaging/with-ports/018.html.ini deleted file mode 100644 index 663a1f8fa30..00000000000 --- a/tests/wpt/metadata/webmessaging/with-ports/018.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[018.html] - expected: TIMEOUT - [origin of the script that invoked the method, javascript:] - expected: TIMEOUT - diff --git a/tests/wpt/metadata/webmessaging/without-ports/018.html.ini b/tests/wpt/metadata/webmessaging/without-ports/018.html.ini deleted file mode 100644 index 663a1f8fa30..00000000000 --- a/tests/wpt/metadata/webmessaging/without-ports/018.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[018.html] - expected: TIMEOUT - [origin of the script that invoked the method, javascript:] - expected: TIMEOUT - diff --git a/tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini b/tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini new file mode 100644 index 00000000000..80f9a4f15b8 --- /dev/null +++ b/tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini @@ -0,0 +1,2 @@ +[Worker-constructor.html] + expected: ERROR diff --git a/tests/wpt/web-platform-tests/.github/workflows/epochs.yml b/tests/wpt/web-platform-tests/.github/workflows/epochs.yml index 78aaf16d18a..a93a1e8defb 100644 --- a/tests/wpt/web-platform-tests/.github/workflows/epochs.yml +++ b/tests/wpt/web-platform-tests/.github/workflows/epochs.yml @@ -7,7 +7,7 @@ on: jobs: update: # Do not run this job on forks. - if: github.repository == "web-platform-tests/wpt" + if: github.repository == 'web-platform-tests/wpt' runs-on: ubuntu-18.04 steps: - name: Checkout diff --git a/tests/wpt/web-platform-tests/cookies/http-state/path-tests.html b/tests/wpt/web-platform-tests/cookies/http-state/path-tests.html index b30d8362252..0a4794a4c0e 100644 --- a/tests/wpt/web-platform-tests/cookies/http-state/path-tests.html +++ b/tests/wpt/web-platform-tests/cookies/http-state/path-tests.html @@ -4,6 +4,7 @@ <meta charset=utf-8> <title>Tests basic cookie setting functionality</title> <meta name=help href="https://tools.ietf.org/html/rfc6265#page-8"> + <meta name="timeout" content="long"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> diff --git a/tests/wpt/web-platform-tests/css/css-grid/parsing/grid-shorthand-valid.html b/tests/wpt/web-platform-tests/css/css-grid/parsing/grid-shorthand-valid.html index 435959af25e..80ee50a6e27 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/parsing/grid-shorthand-valid.html +++ b/tests/wpt/web-platform-tests/css/css-grid/parsing/grid-shorthand-valid.html @@ -14,6 +14,8 @@ <script> // <'grid-template'> values +test_valid_value("grid", 'none'); +test_valid_value("grid", 'none / none', 'none'); test_valid_value("grid", 'auto / auto'); test_valid_value("grid", 'none / [a] 0px'); test_valid_value("grid", 'none / [] 0px', 'none / 0px'); @@ -25,6 +27,30 @@ test_valid_value("grid", '[a] "a" 10px []', '[a] "a" 10px'); test_valid_value("grid", '"a" 10px'); test_valid_value("grid", '[] "a" 10px', '"a" 10px'); test_valid_value("grid", '[a] "a" 10px [a]'); +test_valid_value("grid", '"a"'); +test_valid_value("grid", '"a" auto', '"a"'); +test_valid_value("grid", '"a" / 10px'); +test_valid_value("grid", '"a" / 20%'); +test_valid_value("grid", '"a" / 5fr'); +test_valid_value("grid", '[a] "a"'); +test_valid_value("grid", '[a] "a" [a]'); +test_valid_value("grid", '[] "a"', '"a"'); +test_valid_value("grid", '"a" [] [] "b"', '"a" "b"'); +test_valid_value("grid", '"a" [] "b"', '"a" "b"'); +test_valid_value("grid", '"a" [a] [b] "b"', '"a" [a b] "b"'); +test_valid_value("grid", '"a" [a] "b"'); +test_valid_value("grid", '"a" / 0', '"a" / 0px'); +test_valid_value("grid", '"a" 10px / 10px'); +test_valid_value("grid", '"a" [a] "b" 10px'); +test_valid_value("grid", '"a" [a] "b" 10px [a]'); +test_valid_value("grid", '"a" [a] [a] "b" 10px', '"a" [a a] "b" 10px'); +test_valid_value("grid", '"a" [a] [] "b" 10px', '"a" [a] "b" 10px'); +test_valid_value("grid", '"a" 10px [a] "b" [a]'); +test_valid_value("grid", '"a" [a] "b" [a]'); +test_valid_value("grid", '[a] "a" [a] "b" [a]'); +test_valid_value("grid", '"a" "a" [a] "b" [a]'); +test_valid_value("grid", '"a" [a] "b" [a] / 0', '"a" [a] "b" [a] / 0px'); +test_valid_value("grid", '"a" "a" [a] [a] "b" / auto', '"a" "a" [a a] "b" / auto'); // FIXME: add more values to test full syntax diff --git a/tests/wpt/web-platform-tests/css/css-grid/parsing/grid-template-shorthand-valid.html b/tests/wpt/web-platform-tests/css/css-grid/parsing/grid-template-shorthand-valid.html index 042268f3348..8790627f4a6 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/parsing/grid-template-shorthand-valid.html +++ b/tests/wpt/web-platform-tests/css/css-grid/parsing/grid-template-shorthand-valid.html @@ -13,6 +13,8 @@ <body> <script> +test_valid_value("grid-template", 'none'); +test_valid_value("grid-template", 'none / none', 'none'); test_valid_value("grid-template", 'auto / auto'); test_valid_value("grid-template", 'none / [a] 0px'); test_valid_value("grid-template", 'none / [] 0px', 'none / 0px'); @@ -24,6 +26,30 @@ test_valid_value("grid-template", '[a] "a" 10px []', '[a] "a" 10px'); test_valid_value("grid-template", '"a" 10px'); test_valid_value("grid-template", '[] "a" 10px', '"a" 10px'); test_valid_value("grid-template", '[a] "a" 10px [a]'); +test_valid_value("grid-template", '"a"'); +test_valid_value("grid-template", '"a" auto', '"a"'); +test_valid_value("grid-template", '"a" / 10px'); +test_valid_value("grid-template", '"a" / 20%'); +test_valid_value("grid-template", '"a" / 5fr'); +test_valid_value("grid-template", '[a] "a"'); +test_valid_value("grid-template", '[a] "a" [a]'); +test_valid_value("grid-template", '[] "a"', '"a"'); +test_valid_value("grid-template", '"a" [] [] "b"', '"a" "b"'); +test_valid_value("grid-template", '"a" [] "b"', '"a" "b"'); +test_valid_value("grid-template", '"a" [a] [b] "b"', '"a" [a b] "b"'); +test_valid_value("grid-template", '"a" [a] "b"'); +test_valid_value("grid-template", '"a" / 0', '"a" / 0px'); +test_valid_value("grid-template", '"a" 10px / 10px'); +test_valid_value("grid-template", '"a" [a] "b" 10px'); +test_valid_value("grid-template", '"a" [a] "b" 10px [a]'); +test_valid_value("grid-template", '"a" [a] [a] "b" 10px', '"a" [a a] "b" 10px'); +test_valid_value("grid-template", '"a" [a] [] "b" 10px', '"a" [a] "b" 10px'); +test_valid_value("grid-template", '"a" 10px [a] "b" [a]'); +test_valid_value("grid-template", '"a" [a] "b" [a]'); +test_valid_value("grid-template", '[a] "a" [a] "b" [a]'); +test_valid_value("grid-template", '"a" "a" [a] "b" [a]'); +test_valid_value("grid-template", '"a" [a] "b" [a] / 0', '"a" [a] "b" [a] / 0px'); +test_valid_value("grid-template", '"a" "a" [a] [a] "b" / auto', '"a" "a" [a a] "b" / auto'); // FIXME: add more values to test full syntax diff --git a/tests/wpt/web-platform-tests/css/css-masking/animations/mask-position-interpolation.html b/tests/wpt/web-platform-tests/css/css-masking/animations/mask-position-interpolation.html new file mode 100644 index 00000000000..d832048ca37 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/animations/mask-position-interpolation.html @@ -0,0 +1,146 @@ +<!DOCTYPE html> +<meta charset="UTF-8"> +<meta charset="UTF-8"> +<title>mask-position-interpolation</title> +<link rel="help" href="https://drafts.fxtf.org/css-masking-1/#the-mask-position"> +<meta name="assert" content="mask-position supports animation"> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/css/support/interpolation-testcommon.js"></script> + +<style> +.container { + display: inline-block; + border: 2px solid black; +} +.parent { + mask-position: 30px 10px; +} +.target { + width: 120px; + height: 120px; + mask-position: 10px 30px; +} +</style> + +<body> +<template id="target-template"> + <div class="container"> + <div class="target"></div> + </div> +</template> +<script> +// neutral +test_interpolation({ + property: 'mask-position', + from: neutralKeyframe, + to: '20px 20px', +}, [ + {at: -0.25, expect: '7.5px 32.5px'}, + {at: 0, expect: '10px 30px'}, + {at: 0.25, expect: '12.5px 27.5px'}, + {at: 0.5, expect: '15px 25px'}, + {at: 0.75, expect: '17.5px 22.5px'}, + {at: 1, expect: '20px 20px'}, + {at: 1.25, expect: '22.5px 17.5px'}, +]); + +// initial +test_interpolation({ + property: 'mask-position', + from: 'initial', + to: '20px 20px', +}, [ + {at: -0.25, expect: 'calc(0% - 5px) calc(0% - 5px)'}, + {at: 0, expect: '0% 0%'}, + {at: 0.25, expect: 'calc(0% + 5px) calc(0% + 5px)'}, + {at: 0.5, expect: 'calc(0% + 10px) calc(0% + 10px)'}, + {at: 0.75, expect: 'calc(0% + 15px) calc(0% + 15px)'}, + {at: 1, expect: 'calc(0% + 20px) calc(0% + 20px)'}, + {at: 1.25, expect:'calc(0% + 25px) calc(0% + 25px)'}, +]); + +// inherit +test_interpolation({ + property: 'mask-position', + from: 'inherit', + to: '20px 20px', +}, [ + {at: -0.25, expect: '32.5px 7.5px'}, + {at: 0, expect: '30px 10px'}, + {at: 0.25, expect: '27.5px 12.5px'}, + {at: 0.5, expect: '25px 15px'}, + {at: 0.75, expect: '22.5px 17.5px'}, + {at: 1, expect: '20px 20px'}, + {at: 1.25, expect: '17.5px 22.5px'}, +]); + +// unset +test_interpolation({ + property: 'mask-position', + from: 'unset', + to: '20px 20px', +}, [ + {at: -0.25, expect: 'calc(0% - 5px) calc(0% - 5px)'}, + {at: 0, expect: '0% 0%'}, + {at: 0.25, expect: 'calc(0% + 5px) calc(0% + 5px)'}, + {at: 0.5, expect: 'calc(0% + 10px) calc(0% + 10px)'}, + {at: 0.75, expect: 'calc(0% + 15px) calc(0% + 15px)'}, + {at: 1, expect: 'calc(0% + 20px) calc(0% + 20px)'}, + {at: 1.25, expect:'calc(0% + 25px) calc(0% + 25px)'}, +]); + +// Test equal number of position values as background images. +test_interpolation({ + property: 'mask-position', + from: '0px 0px, 0px 0px, 0px 0px, 0px 0px', + to: '80px 80px, 80px 80px, 80px 80px, 80px 80px', +}, [ + {at: -0.25, expect: '-20px -20px, -20px -20px, -20px -20px, -20px -20px'}, + {at: 0, expect: ' 0px 0px, 0px 0px, 0px 0px, 0px 0px'}, + {at: 0.25, expect: ' 20px 20px, 20px 20px, 20px 20px, 20px 20px'}, + {at: 0.5, expect: ' 40px 40px, 40px 40px, 40px 40px, 40px 40px'}, + {at: 0.75, expect: ' 60px 60px, 60px 60px, 60px 60px, 60px 60px'}, + {at: 1, expect: ' 80px 80px, 80px 80px, 80px 80px, 80px 80px'}, + {at: 1.25, expect: '100px 100px, 100px 100px, 100px 100px, 100px 100px'}, +]); + +// Test single position value repeated over background images. +test_interpolation({ + property: 'mask-position', + from: 'top 0px left 0px', + to: 'left 80px top 80px', +}, [ + {at: -0.25, expect: '-20px -20px'}, + {at: 0, expect: ' 0px 0px'}, + {at: 0.25, expect: ' 20px 20px'}, + {at: 0.5, expect: ' 40px 40px'}, + {at: 0.75, expect: ' 60px 60px'}, + {at: 1, expect: ' 80px 80px'}, + {at: 1.25, expect: '100px 100px'}, +]); + +// Test mismatched numbers of position values. +test_interpolation({ + property: 'mask-position', + from: '0px 0px, 80px 0px', + to: '40px 40px, 80px 80px, 0px 80px', +}, [ + {at: -0.25, expect: + '-10px -10px, 80px -20px, 0px -20px, 90px -10px, -20px -20px, 100px -20px'}, + {at: 0, expect: + ' 0px 0px, 80px 0px, 0px 0px, 80px 0px, 0px 0px, 80px 0px'}, + {at: 0.25, expect: + ' 10px 10px, 80px 20px, 0px 20px, 70px 10px, 20px 20px, 60px 20px'}, + {at: 0.5, expect: + ' 20px 20px, 80px 40px, 0px 40px, 60px 20px, 40px 40px, 40px 40px'}, + {at: 0.75, expect: + ' 30px 30px, 80px 60px, 0px 60px, 50px 30px, 60px 60px, 20px 60px'}, + {at: 1, expect: + ' 40px 40px, 80px 80px, 0px 80px, 40px 40px, 80px 80px, 0px 80px'}, + {at: 1.25, expect: + ' 50px 50px, 80px 100px, 0px 100px, 30px 50px, 100px 100px, -20px 100px'}, +]); +</script> +</body> diff --git a/tests/wpt/web-platform-tests/css/cssom-view/MediaQueryList-addListener-removeListener.html b/tests/wpt/web-platform-tests/css/cssom-view/MediaQueryList-addListener-removeListener.html index 5446e48e6cf..1144e3a7832 100644 --- a/tests/wpt/web-platform-tests/css/cssom-view/MediaQueryList-addListener-removeListener.html +++ b/tests/wpt/web-platform-tests/css/cssom-view/MediaQueryList-addListener-removeListener.html @@ -3,7 +3,7 @@ <meta name="flags" content="dom"> <title>CSS Test: CSSOM View MediaQueryList::{add,remove}Listener</title> <link rel="author" title="Rune Lillesveen" href="mailto:rune@opera.com"> -<link rel="help" href="http://www.w3.org/TR/cssom-view/#the-mediaquerylist-interface"> +<link rel="help" href="https://www.w3.org/TR/cssom-view-1/#the-mediaquerylist-interface"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="resources/matchMedia.js"></script> @@ -11,12 +11,6 @@ <script> "use strict"; -test(function() { - const mql = window.matchMedia("all"); - assert_inherits(mql, "addListener"); - assert_equals(typeof mql.addListener, "function"); -}, "MediaQueryList::addListener is a function"); - promise_test(async t => { const iframe = await createIFrame(t, 200, 100); const heightMQL = iframe.contentWindow.matchMedia("(max-height: 50px)"); @@ -81,8 +75,7 @@ promise_test(async t => { triggerMQLEvent(mql); await waitForChangesReported(); - assert_equals(calls[0], "1st"); - assert_equals(calls[1], "2nd"); + assert_array_equals(calls, ["1st", "2nd"]); }, "listeners are called in order they were added"); promise_test(async t => { @@ -102,11 +95,48 @@ promise_test(async t => { assert_equals(called, 1); }, "listener that was added twice is called only once"); -test(function() { - const mql = window.matchMedia("all"); - assert_inherits(mql, "removeListener"); - assert_equals(typeof mql.removeListener, "function"); -}, "MediaQueryList::removeListener is a function"); +promise_test(async t => { + const iframe = await createIFrame(t, 100); + const media = `(min-width: 200px)`; + + const mql1 = iframe.contentWindow.matchMedia(media); + const mql2 = iframe.contentWindow.matchMedia(media); + const calls = []; + + mql2.addListener(() => { + calls.push("mql2"); + }); + + mql1.addListener(() => { + calls.push("mql1"); + }); + + iframe.width = "200"; // 100x100 => 200x100 + await waitForChangesReported(); + + assert_array_equals(calls, ["mql1", "mql2"]); +}, "listeners are called in order their MQLs were created"); + +promise_test(async t => { + const iframe = await createIFrame(t, 200); + const media = `(max-height: 150px)`; + + const mql1 = iframe.contentWindow.matchMedia(media); + const mql2 = iframe.contentWindow.matchMedia(media); + + let calls = 0; + const listener = () => { + calls++; + }; + + mql1.addListener(listener); + mql2.removeListener(listener); + + iframe.height = "50"; // 200x200 => 200x50 + await waitForChangesReported(); + + assert_equals(calls, 1); +}, "removing listener from one MQL doesn't remove it from all MQLs"); promise_test(async t => { const mql = await createMQL(t); diff --git a/tests/wpt/web-platform-tests/css/cssom-view/MediaQueryList-extends-EventTarget-interop.html b/tests/wpt/web-platform-tests/css/cssom-view/MediaQueryList-extends-EventTarget-interop.html new file mode 100644 index 00000000000..7dae2afbd72 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/cssom-view/MediaQueryList-extends-EventTarget-interop.html @@ -0,0 +1,168 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<meta name="flags" content="dom"> +<title>CSS Test: CSSOM View MediaQueryList extends EventTarget (interop)</title> +<link rel="help" href="https://www.w3.org/TR/cssom-view-1/#the-mediaquerylist-interface"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/matchMedia.js"></script> +<div id="log"></div> +<script> +"use strict"; + +test(() => { + const mql = window.matchMedia("all"); + + let receivedEvent; + mql.addListener(event => { + receivedEvent = event; + }); + + const dispatchedEvent = new Event("change"); + mql.dispatchEvent(dispatchedEvent); + + assert_equals(receivedEvent, dispatchedEvent); +}, "dispatchEvent triggers listener added with addListener"); + +promise_test(async t => { + const mql = await createMQL(t); + + let calls = 0; + const listener = { + handleEvent() { + calls++; + }, + }; + + mql.addListener(listener); + mql.addEventListener("change", listener); + + triggerMQLEvent(mql); + await waitForChangesReported(); + assert_equals(calls, 1, "triggerMQLEvent"); + + mql.dispatchEvent(new Event("change")); + assert_equals(calls, 2, "dispatchEvent"); +}, "listener added with addListener and addEventListener is called once"); + +promise_test(async t => { + const mql = await createMQL(t); + + let calls = 0; + const listener = () => { + calls++; + }; + + mql.addListener(listener); + mql.addEventListener("change", listener, true); + + triggerMQLEvent(mql); + await waitForChangesReported(); + assert_equals(calls, 2, "triggerMQLEvent"); + + mql.dispatchEvent(new Event("change")); + assert_equals(calls, 4, "dispatchEvent"); +}, "listener added with addListener and addEventListener (capture) is called twice"); + +promise_test(async t => { + const mql = await createMQL(t); + + let calls = 0; + const listener = { + handleEvent() { + calls++; + }, + }; + + mql.addListener(listener); + mql.removeEventListener("change", listener); + + triggerMQLEvent(mql); + await waitForChangesReported(); + assert_equals(calls, 0, "triggerMQLEvent"); + + mql.dispatchEvent(new Event("change")); + assert_equals(calls, 0, "dispatchEvent"); +}, "removeEventListener removes listener added with addListener"); + +promise_test(async t => { + const mql = await createMQL(t); + + let calls = 0; + const listener = () => { + calls++; + }; + + mql.addListener(listener); + mql.removeEventListener("change", listener, true); + + triggerMQLEvent(mql); + await waitForChangesReported(); + assert_equals(calls, 1, "triggerMQLEvent"); + + mql.dispatchEvent(new Event("change")); + assert_equals(calls, 2, "dispatchEvent"); +}, "removeEventListener (capture) doesn't remove listener added with addListener"); + +promise_test(async t => { + const mql = await createMQL(t); + + let calls = 0; + const listener = { + handleEvent() { + calls++; + }, + }; + + mql.addEventListener("change", listener); + mql.removeListener(listener); + + triggerMQLEvent(mql); + await waitForChangesReported(); + assert_equals(calls, 0, "triggerMQLEvent"); + + mql.dispatchEvent(new Event("change")); + assert_equals(calls, 0, "dispatchEvent"); +}, "removeListener removes listener added with addEventListener"); + +promise_test(async t => { + const mql = await createMQL(t); + + let calls = 0; + const listener = () => { + calls++; + }; + + mql.addEventListener("change", listener, true); + mql.removeListener(listener); + + triggerMQLEvent(mql); + await waitForChangesReported(); + assert_equals(calls, 1, "triggerMQLEvent"); + + mql.dispatchEvent(new Event("change")); + assert_equals(calls, 2, "dispatchEvent"); +}, "removeListener doesn't remove listener added with addEventListener (capture)"); + +promise_test(async t => { + const mql = await createMQL(t); + + let calls = []; + mql.addListener(() => { + calls.push("addListener"); + }); + mql.addEventListener("change", { + handleEvent() { + calls.push("addEventListener"); + }, + }, true); + + triggerMQLEvent(mql); + await waitForChangesReported(); + assert_array_equals(calls, ["addEventListener", "addListener"], "triggerMQLEvent"); + + calls = []; + mql.dispatchEvent(new Event("change")); + assert_array_equals(calls, ["addEventListener", "addListener"], "dispatchEvent"); +}, "listeners are called in order they were added, ignoring capture parameter"); +</script> diff --git a/tests/wpt/web-platform-tests/css/cssom-view/MediaQueryList-extends-EventTarget.html b/tests/wpt/web-platform-tests/css/cssom-view/MediaQueryList-extends-EventTarget.html new file mode 100644 index 00000000000..34b6ef15c05 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/cssom-view/MediaQueryList-extends-EventTarget.html @@ -0,0 +1,118 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<meta name="flags" content="dom"> +<title>CSS Test: CSSOM View MediaQueryList extends EventTarget</title> +<link rel="help" href="https://www.w3.org/TR/cssom-view-1/#the-mediaquerylist-interface"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/matchMedia.js"></script> +<div id="log"></div> +<script> +"use strict"; + +promise_test(async t => { + const mql = await createMQL(t); + + let _event; + mql.onchange = event => { + _event = event; + }; + + triggerMQLEvent(mql); + await waitForChangesReported(); + assert_equals(_event.media, mql.media); + assert_equals(_event.matches, mql.matches); +}, "onchange adds listener"); + +promise_test(async t => { + const mql = await createMQL(t); + + let calls = 0; + mql.onchange = () => { + calls++; + }; + + triggerMQLEvent(mql); + await waitForChangesReported(); + assert_equals(calls, 1); + + mql.onchange = null; + + triggerMQLEvent(mql); + await waitForChangesReported(); + assert_equals(calls, 1); +}, "onchange removes listener"); + +promise_test(async t => { + const mql = await createMQL(t); + + let calls = 0; + mql.addEventListener("change", { + handleEvent() { + calls++; + }, + }); + + triggerMQLEvent(mql); + await waitForChangesReported(); + assert_equals(calls, 1); +}, 'listeners for "change" type are called'); + +promise_test(async t => { + const mql = await createMQL(t); + mql.addEventListener("matches", t.unreached_func("should not be called")); + + triggerMQLEvent(mql); + await waitForChangesReported(); +}, 'listeners with different type are not called'); + +promise_test(async t => { + const mql = await createMQL(t); + + let calls = 0; + mql.addEventListener("change", { + handleEvent() { + calls++; + }, + }, {once: true}); + + triggerMQLEvent(mql); + await waitForChangesReported(); + assert_equals(calls, 1); + + triggerMQLEvent(mql); + await waitForChangesReported(); + assert_equals(calls, 1); +}, 'addEventListener "once" option is respected'); + +promise_test(async t => { + const mql = await createMQL(t); + const listener = t.unreached_func("should not be called"); + + mql.addEventListener("change", listener); + mql.removeEventListener("change", listener); + + triggerMQLEvent(mql); + await waitForChangesReported(); +}, "removeEventListener removes listener"); + +test(() => { + const mql = window.matchMedia("all"); + + let receivedEvent; + mql.addEventListener("custom", event => { + receivedEvent = event; + event.preventDefault(); + }, true); + + const dispatchedEvent = new CustomEvent("custom", { + cancelable: true, + detail: {}, + }); + + const defaultAction = mql.dispatchEvent(dispatchedEvent); + + assert_equals(receivedEvent, dispatchedEvent); + assert_false(defaultAction); +}, "dispatchEvent works as expected"); +</script> diff --git a/tests/wpt/web-platform-tests/css/cssom-view/MediaQueryListEvent.html b/tests/wpt/web-platform-tests/css/cssom-view/MediaQueryListEvent.html index 24cce3cc097..0afa09f087a 100644 --- a/tests/wpt/web-platform-tests/css/cssom-view/MediaQueryListEvent.html +++ b/tests/wpt/web-platform-tests/css/cssom-view/MediaQueryListEvent.html @@ -2,18 +2,19 @@ <meta charset="utf-8"> <meta name="flags" content="dom"> <title>CSS Test: CSSOM View MediaQueryListEvent</title> +<link rel="help" href="https://www.w3.org/TR/cssom-view-1/#mediaquerylistevent"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<link rel="help" href="https://drafts.csswg.org/cssom-view/#mediaquerylistevent"> +<script src="resources/matchMedia.js"></script> <div id="log"></div> <script> "use strict"; -test(t => { +test(() => { assert_equals(new MediaQueryListEvent("test").type, "test"); }, 'type can be different from "change"'); -test(t => { +test(() => { const event = new MediaQueryListEvent("change"); assert_equals(event.media, ""); @@ -22,7 +23,7 @@ test(t => { assert_false(event.cancelable); }, "init dictionary default values"); -test(t => { +test(() => { const event = new MediaQueryListEvent("change", { media: "test", matches: true, @@ -35,4 +36,55 @@ test(t => { assert_true(event.bubbles); assert_true(event.cancelable); }, "init dictionary overrides"); + +promise_test(async t => { + const mql = await createMQL(t); + + let _event; + mql.addListener(event => { + _event = event; + }); + + triggerMQLEvent(mql); + await waitForChangesReported(); + + assert_true(_event instanceof getWindow(mql).MediaQueryListEvent); + assert_equals(_event.type, "change"); + assert_false(_event.bubbles); + assert_false(_event.cancelable); +}, "argument of addListener"); + +promise_test(async t => { + const mql = await createMQL(t); + + let _event; + mql.onchange = event => { + _event = event; + }; + + triggerMQLEvent(mql); + await waitForChangesReported(); + + assert_true(_event instanceof getWindow(mql).MediaQueryListEvent); + assert_equals(_event.type, "change"); + assert_false(_event.bubbles); + assert_false(_event.cancelable); +}, "argument of onchange"); + +promise_test(async t => { + const mql = await createMQL(t); + + let _event; + mql.addEventListener("change", event => { + _event = event; + }); + + triggerMQLEvent(mql); + await waitForChangesReported(); + + assert_true(_event instanceof getWindow(mql).MediaQueryListEvent); + assert_equals(_event.type, "change"); + assert_false(_event.bubbles); + assert_false(_event.cancelable); +}, 'constructor of "change" event'); </script> diff --git a/tests/wpt/web-platform-tests/css/cssom-view/matchMedia.html b/tests/wpt/web-platform-tests/css/cssom-view/matchMedia.html index 14df3d02425..0a94c9850c8 100644 --- a/tests/wpt/web-platform-tests/css/cssom-view/matchMedia.html +++ b/tests/wpt/web-platform-tests/css/cssom-view/matchMedia.html @@ -3,9 +3,9 @@ <meta name="flags" content="dom"> <title>CSS Test: CSSOM View matchMedia and MediaQueryList</title> <link rel="author" title="Rune Lillesveen" href="mailto:rune@opera.com"> -<link rel="help" href="http://www.w3.org/TR/cssom-view/#dom-window-matchmedia"> -<link rel="help" href="http://www.w3.org/TR/cssom-view/#the-mediaquerylist-interface"> -<link rel="help" href="http://www.w3.org/TR/cssom-1/#serializing-media-queries"> +<link rel="help" href="https://www.w3.org/TR/cssom-view-1/#dom-window-matchmedia"> +<link rel="help" href="https://www.w3.org/TR/cssom-view-1/#the-mediaquerylist-interface"> +<link rel="help" href="https://www.w3.org/TR/cssom-1/#serializing-media-queries"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="resources/matchMedia.js"></script> diff --git a/tests/wpt/web-platform-tests/css/cssom-view/resources/matchMedia.js b/tests/wpt/web-platform-tests/css/cssom-view/resources/matchMedia.js index 8013699b7de..8623a6597a0 100644 --- a/tests/wpt/web-platform-tests/css/cssom-view/resources/matchMedia.js +++ b/tests/wpt/web-platform-tests/css/cssom-view/resources/matchMedia.js @@ -1,15 +1,20 @@ +"use strict"; + +{ +// private variables are defined with `const` so they don't leak outside this block statement const IFRAME_DEFAULT_SIZE = "200"; const iframes = new WeakMap(); -async function createMQL(t) { +// helpers are defined with `var` so they are globally accessible +var createMQL = async t => { const iframe = await createIFrame(t); const mql = iframe.contentWindow.matchMedia(`(max-width: ${IFRAME_DEFAULT_SIZE}px)`); assert_true(mql.matches, "MQL should match on newly created <iframe>"); iframes.set(mql, iframe); return mql; -} +}; -function createIFrame(t, width = IFRAME_DEFAULT_SIZE, height = width) { +var createIFrame = (t, width = IFRAME_DEFAULT_SIZE, height = width) => { assert_not_equals(document.body, null, "<body> element is missing"); const iframe = document.createElement("iframe"); @@ -30,16 +35,24 @@ function createIFrame(t, width = IFRAME_DEFAULT_SIZE, height = width) { document.body.appendChild(iframe); }); -} +}; -function triggerMQLEvent(mql) { +var triggerMQLEvent = mql => { const iframe = iframes.get(mql); assert_not_equals(iframe, undefined, "Passed MQL instance was not created with createMQL"); iframe.width = iframe.width === IFRAME_DEFAULT_SIZE ? "250" : IFRAME_DEFAULT_SIZE; -} +}; -function waitForChangesReported() { +var getWindow = mql => { + const iframe = iframes.get(mql); + assert_not_equals(iframe, undefined, "Passed MQL instance was not created with createMQL"); + return iframe.contentWindow; +}; + +var waitForChangesReported = () => { return new Promise(resolve => { step_timeout(resolve, 75); }); +}; + } diff --git a/tests/wpt/web-platform-tests/css/cssom/idlharness.html b/tests/wpt/web-platform-tests/css/cssom/idlharness.html index 3204fb8c7e7..ce13d30cfad 100644 --- a/tests/wpt/web-platform-tests/css/cssom/idlharness.html +++ b/tests/wpt/web-platform-tests/css/cssom/idlharness.html @@ -4,6 +4,7 @@ <title>CSSOM automated IDL tests</title> <link rel="author" title="Ms2ger" href="mailto:Ms2ger@gmail.com"> <link rel="help" href="https://drafts.csswg.org/cssom-1/#idl-index"> +<meta name="timeout" content="long"> <script src=/resources/testharness.js></script> <script src=/resources/testharnessreport.js></script> <script src=/resources/WebIDLParser.js></script> diff --git a/tests/wpt/web-platform-tests/dom/events/Event-dispatch-order-at-target.html b/tests/wpt/web-platform-tests/dom/events/Event-dispatch-order-at-target.html new file mode 100644 index 00000000000..79673c32564 --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/Event-dispatch-order-at-target.html @@ -0,0 +1,31 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>Listeners are invoked in correct order (AT_TARGET phase)</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<div id="log"></div> +<script> +"use strict"; + +test(() => { + const el = document.createElement("div"); + const expectedOrder = ["capturing", "bubbling"]; + + let actualOrder = []; + el.addEventListener("click", evt => { + assert_equals(evt.eventPhase, Event.AT_TARGET); + actualOrder.push("bubbling"); + }, false); + el.addEventListener("click", evt => { + assert_equals(evt.eventPhase, Event.AT_TARGET); + actualOrder.push("capturing"); + }, true); + + el.dispatchEvent(new Event("click", {bubbles: true})); + assert_array_equals(actualOrder, expectedOrder, "bubbles: true"); + + actualOrder = []; + el.dispatchEvent(new Event("click", {bubbles: false})); + assert_array_equals(actualOrder, expectedOrder, "bubbles: false"); +}, "Listeners are invoked in correct order (AT_TARGET phase)"); +</script> diff --git a/tests/wpt/web-platform-tests/feature-policy/feature-policy-for-sandbox/resources/helper.js b/tests/wpt/web-platform-tests/feature-policy/feature-policy-for-sandbox/resources/helper.js index 9de84165356..eec189871ff 100644 --- a/tests/wpt/web-platform-tests/feature-policy/feature-policy-for-sandbox/resources/helper.js +++ b/tests/wpt/web-platform-tests/feature-policy/feature-policy-for-sandbox/resources/helper.js @@ -7,7 +7,7 @@ const ignore_features_for_auxilary_context = ["popups", "scripts"]; // Feature-policies that represent specific sandbox flags. const sandbox_features = [ - "downloads-without-user-activation", "forms", "modals", "orientation-lock", + "downloads", "forms", "modals", "orientation-lock", "pointer-lock", "popups", "presentation", "scripts", "top-navigation"]; // TODO(ekaramad): Figure out different inheritance requirements for different diff --git a/tests/wpt/web-platform-tests/fetch/metadata/portal.tentative.https.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/portal.tentative.https.sub.html index b9128944733..4e50b6b24b3 100644 --- a/tests/wpt/web-platform-tests/fetch/metadata/portal.tentative.https.sub.html +++ b/tests/wpt/web-platform-tests/fetch/metadata/portal.tentative.https.sub.html @@ -12,6 +12,8 @@ function create_test(host, expectations) { async_test(t => { + assert_precondition("HTMLPortalElement" in window, "Portals are not supported."); + let p = document.createElement('portal'); p.addEventListener('message', t.step_func(e => { assert_header_equals(e.data, expectations, `{{host}} -> ${host} portal`); diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_anchor_download_allow_downloads_without_user_activation.sub.tentative.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_anchor_download_allow_downloads.sub.tentative.html index 32409f220f0..1e93cb5997d 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_anchor_download_allow_downloads_without_user_activation.sub.tentative.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_anchor_download_allow_downloads.sub.tentative.html @@ -1,6 +1,6 @@ <!DOCTYPE html> <meta charset="utf-8"> -<title><a download> triggered download in sandbox is allowed by allow-downloads-without-user-activation.</title> +<title><a download> triggered download in sandbox is allowed by allow-downloads.</title> <link rel="help" href="https://html.spec.whatwg.org/multipage/#attr-iframe-sandbox"> <link rel="help" href="https://html.spec.whatwg.org/multipage/#the-iframe-element"> <script src="/resources/testharness.js"></script> @@ -14,7 +14,7 @@ async_test(t => { const token = "{{$id:uuid()}}"; var iframe = document.createElement("iframe"); iframe.srcdoc = "<a>Download</a>"; - iframe.sandbox = "allow-same-origin allow-downloads-without-user-activation"; + iframe.sandbox = "allow-same-origin allow-downloads"; iframe.onload = t.step_func(function () { iframe.contentWindow.addEventListener( "unload", t.unreached_func("Unexpected navigation.")); @@ -26,6 +26,6 @@ async_test(t => { }); document.body.appendChild(iframe); -}, "<a download> triggered download in sandbox is allowed by allow-downloads-without-user-activation."); +}, "<a download> triggered download in sandbox is allowed by allow-downloads."); </script> </body> diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_anchor_download_block_downloads_without_user_activation.sub.tentative.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_anchor_download_block_downloads.sub.tentative.html index abd4d7c5e0d..abd4d7c5e0d 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_anchor_download_block_downloads_without_user_activation.sub.tentative.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_anchor_download_block_downloads.sub.tentative.html diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_allow_downloads_without_user_activation.sub.tentative.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_allow_downloads.sub.tentative.html index 6af49b8d78d..50e28f650c7 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_allow_downloads_without_user_activation.sub.tentative.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_allow_downloads.sub.tentative.html @@ -1,6 +1,6 @@ <!DOCTYPE html> <meta charset="utf-8"> -<title>Navigation resulted download in sandbox is allowed by allow-downloads-without-user-activation.</title> +<title>Navigation resulted download in sandbox is allowed by allow-downloads.</title> <meta name="timeout" content="long" /> <link rel="help" href="https://html.spec.whatwg.org/multipage/#attr-iframe-sandbox"> <link rel="help" href="https://html.spec.whatwg.org/multipage/#the-iframe-element"> @@ -15,7 +15,7 @@ async_test(t => { const token = "{{$id:uuid()}}"; var iframe = document.createElement("iframe"); iframe.srcdoc = "<a>Download</a>"; - iframe.sandbox = "allow-same-origin allow-downloads-without-user-activation"; + iframe.sandbox = "allow-same-origin allow-downloads"; iframe.onload = t.step_func(function () { iframe.contentWindow.addEventListener( "unload", t.unreached_func("Unexpected navigation.")); @@ -29,6 +29,6 @@ async_test(t => { }); document.body.appendChild(iframe); -}, "Navigation resulted download in sandbox is allowed by allow-downloads-without-user-activation."); +}, "Navigation resulted download in sandbox is allowed by allow-downloads."); </script> </body> diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_block_downloads_without_user_activation.sub.tentative.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_block_downloads.sub.tentative.html index 9b9246c393e..9b9246c393e 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_block_downloads_without_user_activation.sub.tentative.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_block_downloads.sub.tentative.html diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/resources/form-submission.py b/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/resources/form-submission.py index 467875453c9..b296ac44c57 100644 --- a/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/resources/form-submission.py +++ b/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/resources/form-submission.py @@ -6,5 +6,7 @@ def main(request, response): else: result = request.POST.first('foo') == 'bar' + result = result and request.url_parts.query == 'query=1' + return ([("Content-Type", "text/plain")], "OK" if result else "FAIL") diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/submit-entity-body.html b/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/submit-entity-body.html index f6f3858d4ff..be9c5f0696e 100644 --- a/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/submit-entity-body.html +++ b/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/submit-entity-body.html @@ -96,7 +96,7 @@ function run_simple_test() { var testframe = document.getElementById("testframe"); var testdocument = testframe.contentWindow.document; testdocument.body.innerHTML = - "<form id=testform method=post action=\"/html/semantics/forms/form-submission-0/resources/form-submission.py\" enctype=\"" + test_obj.enctype + "\">" + + "<form id=testform method=post action=\"/html/semantics/forms/form-submission-0/resources/form-submission.py?query=1\" enctype=\"" + test_obj.enctype + "\">" + test_obj.input + test_obj.submitelement + "</form>"; diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-summary-element/anchor-with-inline-element.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-summary-element/anchor-with-inline-element.html new file mode 100644 index 00000000000..ab200020b4f --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-summary-element/anchor-with-inline-element.html @@ -0,0 +1,77 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>summary element: clicking on anchor containing inline element</title> +<link rel="author" title="Yu Han" href="mailto:yuzhehan@chromium.org"> +<link rel="help" href="https://html.spec.whatwg.org/C/#the-summary-element"> +<link rel="help" href="https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-a-element"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<details id="details_i"> + <summary>Anchor text is wrapped with <i> tag <a href="#with_i_tag"><i id="with_i">permalink</i></a></summary> + <p>asdf</p> +</details> + +<details id="details_span"> + <summary>This one uses <span>. <a href="#with_span_tag"><span id="with_span">permalink</span></a></summary> + <p>asdf</p> +</details> + +<details id="details_svg"> + <summary> + <svg style="width: 100px;" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"> + <a href="#inside_svg_w_circle"> + <circle id="svg_circle" cx="50" cy="40" r="35"/> + </a> + <a href="#inside_svg_w_text"> + <text id="svg_text" x="50" y="90" text-anchor="middle"> + <circle> + </text> + </a> + </svg> + </summary> + <p>asdf</p> +</details> + +<script> +function testClickingOnInlineElement(detailsId, targetId, expected, testName) { + const details = document.getElementById(detailsId); + const target = document.getElementById(targetId); + const test = async_test(testName); + + const promise = new Promise((resolve, reject) => { + window.onhashchange = test.step_func_done(() => { + assert_false(details.open); + assert_true(location.hash === expected); + resolve(); + }); + }); + + if (target.click) { + target.click(); + } + else { + // svg element don't have click method + target.dispatchEvent(new MouseEvent('click', { + view: window, + bubbles: true, + cancelable: true + })); + } + return promise; +}; + +async function testAll() { + try { + await testClickingOnInlineElement("details_i", "with_i", "#with_i_tag", "Expected <a> containing <i> to navigate"); + await testClickingOnInlineElement("details_span", "with_span", "#with_span_tag", "Expected <a> containing <span> to navigate"); + await testClickingOnInlineElement("details_svg", "svg_circle", "#inside_svg_w_circle", "Expected <a>, inside svg, containing <circle> to navigate"); + await testClickingOnInlineElement("details_svg", "svg_text", "#inside_svg_w_text", "Expected <a>, inside svg, containing <text> to navigate"); + } catch (exception) { + assert_unreached("should NOT-THROW exception"); + } +}; + +var allTests = async_test("Clicking on anchor with embedded inline element should navigate instead of opening details"); +testAll().then(()=>{ allTests.done(); }); +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/webappapis/scripting/events/event-handler-handleEvent-ignored.html b/tests/wpt/web-platform-tests/html/webappapis/scripting/events/event-handler-handleEvent-ignored.html new file mode 100644 index 00000000000..8039bac7adc --- /dev/null +++ b/tests/wpt/web-platform-tests/html/webappapis/scripting/events/event-handler-handleEvent-ignored.html @@ -0,0 +1,38 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>"handleEvent" property of EventHandler should be ignored</title> +<link rel="help" href="https://html.spec.whatwg.org/#eventhandler"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<div id="log"></div> +<script> +"use strict"; + +test(t => { + const handler = Object.create(null, { + handleEvent: { + get: t.unreached_func('"handleEvent" property should not be looked up'), + }, + }); + + const el = document.createElement("div"); + el.onmouseenter = handler; + el.dispatchEvent(new MouseEvent("mouseenter")); +}, 'plain object "mouseenter" handler'); + +async_test(t => { + const handler = Object.create(Function.prototype, { + handleEvent: { + get: t.unreached_func('"handleEvent" property should not be looked up'), + }, + }); + assert_true(handler instanceof Function); + + window.onmessage = handler; + window.postMessage({}, "*"); + + step_timeout(() => { + t.done(); + }, 50); +}, 'non-callable "message" handler that is instance of Function'); +</script> diff --git a/tests/wpt/web-platform-tests/html/webappapis/scripting/events/event-handler-onresize.html b/tests/wpt/web-platform-tests/html/webappapis/scripting/events/event-handler-onresize.html index 8686716e19a..0e44e7272f0 100644 --- a/tests/wpt/web-platform-tests/html/webappapis/scripting/events/event-handler-onresize.html +++ b/tests/wpt/web-platform-tests/html/webappapis/scripting/events/event-handler-onresize.html @@ -6,7 +6,7 @@ <script src="/resources/testharnessreport.js"></script> <div id="log"></div> <script> -var t = async_test("body.onresize should set the window.onload handler") +var t = async_test("body.onresize should set the window.onresize handler") window.onresize = t.step_func(function() { assert_unreached("This handler should be overwritten.") }) diff --git a/tests/wpt/web-platform-tests/interfaces/WebCryptoAPI.idl b/tests/wpt/web-platform-tests/interfaces/WebCryptoAPI.idl index 0b515fc12e7..fecb3b72d3a 100644 --- a/tests/wpt/web-platform-tests/interfaces/WebCryptoAPI.idl +++ b/tests/wpt/web-platform-tests/interfaces/WebCryptoAPI.idl @@ -4,7 +4,7 @@ // Source: Web Cryptography API (https://w3c.github.io/webcrypto/Overview.html) partial interface mixin WindowOrWorkerGlobalScope { - readonly attribute Crypto crypto; + [SameObject] readonly attribute Crypto crypto; }; [Exposed=(Window,Worker)] @@ -160,7 +160,7 @@ dictionary RsaHashedImportParams : Algorithm { dictionary RsaPssParams : Algorithm { // The desired length of the random salt - [EnforceRange] required unsigned long saltLength; + required [EnforceRange] unsigned long saltLength; }; dictionary RsaOaepParams : Algorithm { @@ -206,7 +206,7 @@ dictionary AesCtrParams : Algorithm { required BufferSource counter; // The length, in bits, of the rightmost part of the counter block // that is incremented. - [EnforceRange] required octet length; + required [EnforceRange] octet length; }; dictionary AesKeyAlgorithm : KeyAlgorithm { @@ -216,12 +216,12 @@ dictionary AesKeyAlgorithm : KeyAlgorithm { dictionary AesKeyGenParams : Algorithm { // The length, in bits, of the key. - [EnforceRange] required unsigned short length; + required [EnforceRange] unsigned short length; }; dictionary AesDerivedKeyParams : Algorithm { // The length, in bits, of the key. - [EnforceRange] required unsigned short length; + required [EnforceRange] unsigned short length; }; dictionary AesCbcParams : Algorithm { @@ -272,6 +272,6 @@ dictionary HkdfParams : Algorithm { dictionary Pbkdf2Params : Algorithm { required BufferSource salt; - [EnforceRange] required unsigned long iterations; + required [EnforceRange] unsigned long iterations; required HashAlgorithmIdentifier hash; }; diff --git a/tests/wpt/web-platform-tests/interfaces/web-nfc.idl b/tests/wpt/web-platform-tests/interfaces/web-nfc.idl index 340dab647d6..455720c641e 100644 --- a/tests/wpt/web-platform-tests/interfaces/web-nfc.idl +++ b/tests/wpt/web-platform-tests/interfaces/web-nfc.idl @@ -85,7 +85,7 @@ enum NDEFPushTarget { }; dictionary NDEFScanOptions { - USVString id = ""; + USVString id; USVString recordType; USVString mediaType = ""; AbortSignal? signal; diff --git a/tests/wpt/web-platform-tests/layout-instability/clip-negative-bottom-margin.html b/tests/wpt/web-platform-tests/layout-instability/clip-negative-bottom-margin.html new file mode 100644 index 00000000000..2c329d9fcd6 --- /dev/null +++ b/tests/wpt/web-platform-tests/layout-instability/clip-negative-bottom-margin.html @@ -0,0 +1,36 @@ +<!DOCTYPE html> +<title>Layout Instability: clip with negative bottom margin</title> +<link rel="help" href="https://wicg.github.io/layout-instability/" /> +<style> + +#scroller { overflow: scroll; width: 200px; height: 500px; } +#space { height: 1000px; margin-bottom: -500px; } +#j { width: 150px; height: 150px; background: yellow; } + +</style> +<div id='scroller'> + <div id='space'></div> + <div id='j'></div> +</div> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/util.js"></script> +<script> + +promise_test(async () => { + const watcher = new ScoreWatcher; + + // Wait for the initial render to complete. + await waitForAnimationFrames(2); + + // Increase j's top margin by 100px. Since j is fully clipped by the scroller, + // this should not generate a shift. + document.querySelector("#j").style.marginTop = "100px"; + + await waitForAnimationFrames(3); + assert_equals(watcher.score, 0); +}, "Clip with negative bottom margin."); + +</script> + + diff --git a/tests/wpt/web-platform-tests/layout-instability/composited-element-movement.html b/tests/wpt/web-platform-tests/layout-instability/composited-element-movement.html new file mode 100644 index 00000000000..c9906903358 --- /dev/null +++ b/tests/wpt/web-platform-tests/layout-instability/composited-element-movement.html @@ -0,0 +1,52 @@ +<!DOCTYPE html> +<title>Layout Instability: element with compositing layer hint</title> +<link rel="help" href="https://wicg.github.io/layout-instability/" /> +<style> + +#shift { + position: relative; + width: 500px; + height: 200px; + background: yellow; +} +#container { + position: absolute; + width: 350px; + height: 400px; + right: 50px; + top: 100px; + background: #ccc; +} +.promote { will-change: transform; } + +</style> +<div id="container" class="promote"> + <div id="space"></div> + <div id="shift" class="promote"></div> +</div> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/util.js"></script> +<script> + +promise_test(async () => { + const watcher = new ScoreWatcher; + + // Wait for the initial render to complete. + await waitForAnimationFrames(2); + + // Induce a shift. + document.querySelector("#space").style = "height: 100px"; + + // #shift is 400x200 after viewport intersection with correct application of + // composited #container offset, and 100px lower after shifting, so impact + // region is 400 * (200 + 100). + const expectedScore = computeExpectedScore(400 * (200 + 100), 100); + + // Observer fires after the frame is painted. + assert_equals(watcher.score, 0); + await watcher.promise; + assert_equals(watcher.score, expectedScore); +}, "Element with compositing layer hint."); + +</script> diff --git a/tests/wpt/web-platform-tests/layout-instability/fully-clipped-visual-rect.html b/tests/wpt/web-platform-tests/layout-instability/fully-clipped-visual-rect.html new file mode 100644 index 00000000000..bfd74a2407e --- /dev/null +++ b/tests/wpt/web-platform-tests/layout-instability/fully-clipped-visual-rect.html @@ -0,0 +1,32 @@ +<!DOCTYPE html> +<title>Layout Instability: fully clipped visual rect</title> +<link rel="help" href="https://wicg.github.io/layout-instability/" /> +<style> + +body { margin: 0; } +#clip { width: 0px; height: 600px; overflow: hidden; } +#j { position: relative; width: 300px; height: 200px; } + +</style> +<div id='clip'><div id='j'></div></div> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/util.js"></script> +<script> + +promise_test(async () => { + const watcher = new ScoreWatcher; + + // Wait for the initial render to complete. + await waitForAnimationFrames(2); + + // Shift an element that is fully clipped by its container. + document.querySelector("#j").style.top = "200px"; + + await waitForAnimationFrames(3); + assert_equals(watcher.score, 0); +}, "Fully clipped visual rect."); + +</script> + + diff --git a/tests/wpt/web-platform-tests/layout-instability/ignore-fixed-and-sticky.html b/tests/wpt/web-platform-tests/layout-instability/ignore-fixed-and-sticky.html new file mode 100644 index 00000000000..1b39dc9e6e9 --- /dev/null +++ b/tests/wpt/web-platform-tests/layout-instability/ignore-fixed-and-sticky.html @@ -0,0 +1,52 @@ +<!DOCTYPE html> +<title>Layout Instability: ignore fixed and sticky positioning</title> +<link rel="help" href="https://wicg.github.io/layout-instability/" /> +<style> + +body { height: 2000px; } +#f1, #f2 { + position: fixed; + width: 300px; + height: 100px; + left: 100px; +} +#f1 { top: 0; } +#f2 { top: 150px; will-change: transform; } +#s1 { + position: sticky; + width: 200px; + height: 100px; + left: 450px; + top: 0; +} + +</style> +<div id='f1'>fixed</div> +<div id='f2'>fixed composited</div> +<div id='s1'>sticky</div> +normal + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/util.js"></script> +<script> + +promise_test(async () => { + const watcher = new ScoreWatcher; + + // Wait for the initial render to complete. + await waitForAnimationFrames(2); + + // Scroll down by 50px. + document.scrollingElement.scrollTop = 50; + + // Force a layout. + document.body.style.height = "2500px"; + + // No layout shift should occur as a result of the scroll-triggered + // repositioning of fixed and sticky elements. + await waitForAnimationFrames(3); + assert_equals(watcher.score, 0); +}, 'Ignore fixed and sticky.'); + +</script> diff --git a/tests/wpt/web-platform-tests/layout-instability/local-shift-without-viewport-shift.html b/tests/wpt/web-platform-tests/layout-instability/local-shift-without-viewport-shift.html new file mode 100644 index 00000000000..37729f1c13c --- /dev/null +++ b/tests/wpt/web-platform-tests/layout-instability/local-shift-without-viewport-shift.html @@ -0,0 +1,32 @@ +<!DOCTYPE html> +<title>Layout Instability: local shift without viewport shift</title> +<link rel="help" href="https://wicg.github.io/layout-instability/" /> +<style> + +#c { position: relative; width: 300px; height: 100px; transform: scale(0.1); } +#j { position: relative; width: 100px; height: 10px; } + +</style> +<div id='c'> + <div id='j'></div> +</div> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/util.js"></script> +<script> + +promise_test(async () => { + const watcher = new ScoreWatcher; + + // Wait for the initial render to complete. + await waitForAnimationFrames(2); + + document.querySelector("#j").style.top = "4px"; + + // Make sure no shift score is reported, since the element didn't move in the + // viewport. + await waitForAnimationFrames(3); + assert_equals(watcher.score, 0); +}, "Local shift without viewport shift."); + +</script> diff --git a/tests/wpt/web-platform-tests/layout-instability/multi-clip-visual-rect.html b/tests/wpt/web-platform-tests/layout-instability/multi-clip-visual-rect.html new file mode 100644 index 00000000000..36475d4c826 --- /dev/null +++ b/tests/wpt/web-platform-tests/layout-instability/multi-clip-visual-rect.html @@ -0,0 +1,36 @@ +<!DOCTYPE html> +<title>Layout Instability: multi clip visual rect</title> +<link rel="help" href="https://wicg.github.io/layout-instability/" /> +<style> + +body { margin: 0; } +#outer { width: 200px; height: 600px; overflow: hidden; } +#inner { width: 300px; height: 150px; overflow: hidden; } +#j { position: relative; width: 300px; height: 600px; } + +</style> +<div id='outer'><div id='inner'><div id='j'></div></div></div> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/util.js"></script> +<script> + +promise_test(async () => { + const watcher = new ScoreWatcher; + + // Wait for the initial render to complete. + await waitForAnimationFrames(2); + + document.querySelector("#j").style.top = "-200px"; + + // Note that, while the element moves up 200px, its visibility is + // clipped at 0px,150px height, so the additional 200px of vertical + // move distance is not included in the score. + // (clip width 200) * (clip height 150) + const expectedScore = computeExpectedScore(200 * 150, 200); + + await watcher.promise; + assert_equals(watcher.score, expectedScore); +}, "Multi clip visual rect."); + +</script> diff --git a/tests/wpt/web-platform-tests/layout-instability/partially-clipped-visual-rect.html b/tests/wpt/web-platform-tests/layout-instability/partially-clipped-visual-rect.html new file mode 100644 index 00000000000..3b18b98dd93 --- /dev/null +++ b/tests/wpt/web-platform-tests/layout-instability/partially-clipped-visual-rect.html @@ -0,0 +1,32 @@ +<!DOCTYPE html> +<title>Layout Instability: partially clipped visual rect</title> +<link rel="help" href="https://wicg.github.io/layout-instability/" /> +<style> + +body { margin: 0; } +#clip { width: 150px; height: 600px; overflow: hidden; } +#j { position: relative; width: 300px; height: 200px; } + +</style> +<div id='clip'><div id='j'></div></div> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/util.js"></script> +<script> + +promise_test(async () => { + const watcher = new ScoreWatcher; + + // Wait for the initial render to complete. + await waitForAnimationFrames(2); + + document.querySelector("#j").style.top = "200px"; + + // (clipped width 150px) * (height 200 + movement 200) + const expectedScore = computeExpectedScore(150 * (200 + 200), 200); + + await watcher.promise; + assert_equals(watcher.score, expectedScore); +}, "Partially clipped visual rect."); + +</script> diff --git a/tests/wpt/web-platform-tests/layout-instability/shift-into-viewport.html b/tests/wpt/web-platform-tests/layout-instability/shift-into-viewport.html new file mode 100644 index 00000000000..6ace93ad54c --- /dev/null +++ b/tests/wpt/web-platform-tests/layout-instability/shift-into-viewport.html @@ -0,0 +1,34 @@ +<!DOCTYPE html> +<title>Layout Instability: shift into viewport</title> +<link rel="help" href="https://wicg.github.io/layout-instability/" /> +<style> + +body { margin: 0; } +#j { position: relative; width: 600px; height: 200px; top: 600px; } + +</style> +<div id='j'></div> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/util.js"></script> +<script> + +promise_test(async () => { + const watcher = new ScoreWatcher; + + // Wait for the initial render to complete. + await waitForAnimationFrames(2); + + document.querySelector("#j").style.top = "400px"; + + // The element moves from outside the viewport to within the viewport, which + // should generate a shift. + // (width 600) * (height 0 + move 200) + const expectedScore = computeExpectedScore(600 * 200, 200); + + await watcher.promise; + assert_equals(watcher.score, expectedScore); +}, "Shift into viewport."); + +</script> + diff --git a/tests/wpt/web-platform-tests/layout-instability/shift-outside-viewport.html b/tests/wpt/web-platform-tests/layout-instability/shift-outside-viewport.html new file mode 100644 index 00000000000..49242913760 --- /dev/null +++ b/tests/wpt/web-platform-tests/layout-instability/shift-outside-viewport.html @@ -0,0 +1,32 @@ +<!DOCTYPE html> +<title>Layout Instability: shift outside viewport</title> +<link rel="help" href="https://wicg.github.io/layout-instability/" /> +<style> + +body { margin: 0; } +#j { position: relative; width: 600px; height: 200px; top: 600px; } + +</style> +<div id='j'></div> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/util.js"></script> +<script> + +promise_test(async () => { + const watcher = new ScoreWatcher; + + // Wait for the initial render to complete. + await waitForAnimationFrames(2); + + document.querySelector("#j").style.top = "800px"; + + // Since the element moves entirely outside of the viewport, it shouldn't + // generate a score. + await waitForAnimationFrames(3); + assert_equals(watcher.score, 0); +}, "Shift outside viewport."); + +</script> + + diff --git a/tests/wpt/web-platform-tests/layout-instability/shift-while-scrolled.html b/tests/wpt/web-platform-tests/layout-instability/shift-while-scrolled.html new file mode 100644 index 00000000000..88eeedea877 --- /dev/null +++ b/tests/wpt/web-platform-tests/layout-instability/shift-while-scrolled.html @@ -0,0 +1,37 @@ +<!DOCTYPE html> +<title>Layout Instability: shift while scrolled</title> +<link rel="help" href="https://wicg.github.io/layout-instability/" /> +<style> + +body { height: 2000px; margin: 0; } +#shift { position: relative; width: 300px; height: 200px; } + +</style> +<div id="shift"></div> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/util.js"></script> +<script> + +promise_test(async () => { + const watcher = new ScoreWatcher; + + // Wait for the initial render to complete. + await waitForAnimationFrames(2); + + // Scroll down by 100px. + document.scrollingElement.scrollTop = 100; + assert_equals(watcher.score, 0); + + // Generate a layout shift. + document.querySelector("#shift").style = "top: 60px"; + + // Impact region: width * (height - scrollTop + moveDistance) + const expectedScore = computeExpectedScore( + 300 * (200 - 100 + 60), 60); + + await watcher.promise; + assert_equals(watcher.score, expectedScore); +}, 'Layout shift with non-zero scroll offset.'); + +</script> diff --git a/tests/wpt/web-platform-tests/layout-instability/shift-with-counterscroll.html b/tests/wpt/web-platform-tests/layout-instability/shift-with-counterscroll.html new file mode 100644 index 00000000000..8ad1a463443 --- /dev/null +++ b/tests/wpt/web-platform-tests/layout-instability/shift-with-counterscroll.html @@ -0,0 +1,56 @@ +<!DOCTYPE html> +<title>Layout Instability: shift with counterscroll not counted</title> +<link rel="help" href="https://wicg.github.io/layout-instability/" /> +<style> + +#s { + overflow: scroll; + position: absolute; + left: 20px; + top: 20px; + width: 200px; + height: 200px; +} +#sp { + width: 170px; + height: 600px; +} +#ch { + position: relative; + background: yellow; + left: 10px; + top: 100px; + width: 150px; + height: 150px; +} + +</style> +<div id="s"> + <div id="sp"> + <div id="ch"></div> + </div> +</div> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/util.js"></script> +<script> + +promise_test(async () => { + const watcher = new ScoreWatcher; + + // Wait for the initial render to complete. + await waitForAnimationFrames(2); + + let scroller = document.querySelector("#s"); + let changer = document.querySelector("#ch"); + + changer.style.top = "200px"; + scroller.scrollTop = 100; + + await waitForAnimationFrames(3); + assert_equals(watcher.score, 0); +}, "Shift with counterscroll not counted."); + +</script> + + diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/direction/direction-009-ref.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/tokens/ms-001-ref.html index 8b80b7e6bea..bbd42a93eed 100644 --- a/tests/wpt/web-platform-tests/mathml/presentation-markup/direction/direction-009-ref.html +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/tokens/ms-001-ref.html @@ -2,7 +2,7 @@ <html> <head> <meta charset="utf-8"/> - <title>RTL ms lquote="X" rquote="p"</title> + <title>ms legacy lquote and rquote attributes (reference)</title> <link rel="stylesheet" type="text/css" href="/fonts/ahem.css" /> <style> math { @@ -14,7 +14,7 @@ <p> <math> - <ms lquote="p" rquote="X">É</ms> + <ms>X</ms> </math> </p> diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/direction/direction-009.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/tokens/ms-001.html index c0ca31d40a8..b0b03f22552 100644 --- a/tests/wpt/web-platform-tests/mathml/presentation-markup/direction/direction-009.html +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/tokens/ms-001.html @@ -2,12 +2,12 @@ <html> <head> <meta charset="utf-8"/> - <title>RTL ms lquote="X" rquote="p"</title> + <title>ms legacy lquote and rquote attributes</title> <link rel="help" href="https://mathml-refresh.github.io/mathml-core/#attributes-common-to-html-and-mathml-elements"> <link rel="help" href="https://mathml-refresh.github.io/mathml-core/#css-styling"> <link rel="help" href="https://mathml-refresh.github.io/mathml-core/#string-literal-ms"> - <meta name="assert" content="Verify that a RTL ms element renders the same as if its left and right quotes were switched."> - <link rel="match" href="direction-009-ref.html"> + <meta name="assert" content="Verify that legacy lquote and rquote attributes are ignored on the ms element."> + <link rel="match" href="ms-001-ref.html"> <link rel="stylesheet" type="text/css" href="/fonts/ahem.css" /> <style> math { @@ -18,13 +18,13 @@ <body> <p> - <math dir="rtl"> - <ms lquote="X" rquote="p">É</ms> + <math> + <ms lquote="É" rquote="p">X</ms> </math> </p> <script src="/mathml/support/feature-detection.js"></script> - <script>MathMLFeatureDetection.ensure_for_match_reftest("has_dir");</script> + <script>MathMLFeatureDetection.ensure_for_match_reftest("has_ms");</script> </body> </html> diff --git a/tests/wpt/web-platform-tests/portals/about-blank-cannot-host.html b/tests/wpt/web-platform-tests/portals/about-blank-cannot-host.html new file mode 100644 index 00000000000..207d477697d --- /dev/null +++ b/tests/wpt/web-platform-tests/portals/about-blank-cannot-host.html @@ -0,0 +1,17 @@ +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script> + +promise_test(async (t) => { + let hostWindow = window.open(); + assert_equals(hostWindow.location.href, "about:blank"); + + let portal = hostWindow.document.createElement("portal"); + portal.src = "resources/simple-portal.html"; + hostWindow.document.body.appendChild(portal); + + await promise_rejects(t, "InvalidStateError", portal.activate()); +}, "about:blank cannot host a portal"); + +</script> diff --git a/tests/wpt/web-platform-tests/portals/portal-activate-data.html b/tests/wpt/web-platform-tests/portals/portal-activate-data.html index 38204edb2c3..b3b9223b519 100644 --- a/tests/wpt/web-platform-tests/portals/portal-activate-data.html +++ b/tests/wpt/web-platform-tests/portals/portal-activate-data.html @@ -2,6 +2,7 @@ <title>Tests passing of data along with portal activation</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> +<script src="resources/open-blank-host.js"></script> <body> <canvas id="canvas"></canvas> <script> @@ -12,7 +13,7 @@ function nextMessage(target) { } async function openPortalAndActivate(logic, activateOptions) { - const w = window.open(); + const w = await openBlankPortalHost(); try { const portal = w.document.createElement('portal'); portal.src = new URL('resources/portal-activate-data-portal.html?logic=' + encodeURIComponent(logic), location.href); diff --git a/tests/wpt/web-platform-tests/portals/portals-activate-resolution.html b/tests/wpt/web-platform-tests/portals/portals-activate-resolution.html index 44ccea3bc52..db77a990e53 100644 --- a/tests/wpt/web-platform-tests/portals/portals-activate-resolution.html +++ b/tests/wpt/web-platform-tests/portals/portals-activate-resolution.html @@ -1,9 +1,10 @@ <!DOCTYPE html> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> +<script src="resources/open-blank-host.js"></script> <script> promise_test(async () => { - var win = window.open(); + var win = await openBlankPortalHost(); var portal = win.document.createElement("portal"); portal.src = new URL("resources/simple-portal.html", location.href) diff --git a/tests/wpt/web-platform-tests/portals/portals-navigate-after-adoption.html b/tests/wpt/web-platform-tests/portals/portals-navigate-after-adoption.html index 083eeaa1482..5ad30d7928a 100644 --- a/tests/wpt/web-platform-tests/portals/portals-navigate-after-adoption.html +++ b/tests/wpt/web-platform-tests/portals/portals-navigate-after-adoption.html @@ -1,6 +1,7 @@ <!DOCTYPE html> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> +<script src="resources/open-blank-host.js"></script> <script> function nextMessage(target) { return new Promise((resolve, reject) => { @@ -10,7 +11,7 @@ function nextMessage(target) { async function openPortalAndActivate(logic) { let {port1, port2} = new MessageChannel(); - const w = window.open(); + const w = await openBlankPortalHost(); try { const portal = w.document.createElement('portal'); portal.src = new URL('resources/eval-portal.html?logic=' + encodeURIComponent(logic), location.href); diff --git a/tests/wpt/web-platform-tests/portals/portals-set-src-after-activate.html b/tests/wpt/web-platform-tests/portals/portals-set-src-after-activate.html index 8da6b341840..70a16436a67 100644 --- a/tests/wpt/web-platform-tests/portals/portals-set-src-after-activate.html +++ b/tests/wpt/web-platform-tests/portals/portals-set-src-after-activate.html @@ -1,6 +1,7 @@ <!DOCTYPE html> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> +<script src="resources/open-blank-host.js"></script> <script> function nextMessage(target) { return new Promise((resolve, reject) => { @@ -9,7 +10,7 @@ function nextMessage(target) { } promise_test(async () => { - const w = window.open(); + const w = await openBlankPortalHost(); try { const portal = w.document.createElement('portal'); portal.src = new URL('resources/simple-portal-adopts-predecessor.html', location.href); diff --git a/tests/wpt/web-platform-tests/portals/resources/blank-host.html b/tests/wpt/web-platform-tests/portals/resources/blank-host.html new file mode 100644 index 00000000000..d9f3a61eb84 --- /dev/null +++ b/tests/wpt/web-platform-tests/portals/resources/blank-host.html @@ -0,0 +1,8 @@ +<!DOCTYPE html> +<!-- + This is a blank page used when a test needs a new window to host and activate + a portal. Tests cannot simply use window.open() without a URL as about:blank + may not host a portal. +--> +<body> +</body> diff --git a/tests/wpt/web-platform-tests/portals/resources/open-blank-host.js b/tests/wpt/web-platform-tests/portals/resources/open-blank-host.js new file mode 100644 index 00000000000..f7580bd1521 --- /dev/null +++ b/tests/wpt/web-platform-tests/portals/resources/open-blank-host.js @@ -0,0 +1,14 @@ +// Portal tests often need to create portals in a context other than the one +// in which the tests are running. This is because the host context may be +// discarded during the course of the test. + +// Opens a blank page for use as a portal host. +// Tests cannot simply use window.open() without a URL as about:blank may not +// host a portal. +async function openBlankPortalHost() { + let hostWindow = window.open('/portals/resources/blank-host.html'); + await new Promise((resolve) => { + hostWindow.addEventListener('load', resolve, {once: true}); + }); + return hostWindow; +} diff --git a/tests/wpt/web-platform-tests/resources/chromium/sms_mock.js b/tests/wpt/web-platform-tests/resources/chromium/sms_mock.js index bdfbc2052fa..d8476cf37ad 100644 --- a/tests/wpt/web-platform-tests/resources/chromium/sms_mock.js +++ b/tests/wpt/web-platform-tests/resources/chromium/sms_mock.js @@ -8,7 +8,7 @@ const SmsProvider = (() => { this.mojoReceiver_ = new blink.mojom.SmsReceiverReceiver(this); this.interceptor_ = new MojoInterfaceInterceptor( - blink.mojom.SmsReceiver.$interfaceName, "context", true) + blink.mojom.SmsReceiver.$interfaceName, "context", true); this.interceptor_.oninterfacerequest = (e) => { this.mojoReceiver_.$.bindHandle(e.handle); @@ -18,15 +18,16 @@ const SmsProvider = (() => { this.returnValues_ = {}; } - receive() { + async receive() { let call = this.returnValues_.receive ? this.returnValues_.receive.shift() : null; - if (!call) { - throw new Error("Unexpected call."); - } + if (!call) + return; return call(); } + async abort() {} + pushReturnValuesForTesting(callName, value) { this.returnValues_[callName] = this.returnValues_[callName] || []; this.returnValues_[callName].push(value); diff --git a/tests/wpt/web-platform-tests/sms/interceptor.https.html b/tests/wpt/web-platform-tests/sms/interceptor.https.html index 6da2d71c52a..94f1951a138 100644 --- a/tests/wpt/web-platform-tests/sms/interceptor.https.html +++ b/tests/wpt/web-platform-tests/sms/interceptor.https.html @@ -114,4 +114,21 @@ promise_test(async t => { } }, 'Deal with cancelled requests'); +promise_test(async t => { + const controller = new AbortController(); + const signal = controller.signal; + + controller.abort(); + await promise_rejects(t, 'AbortError', navigator.sms.receive({signal})); +}, 'Should abort request'); + +promise_test(async t => { + const controller = new AbortController(); + const signal = controller.signal; + + let error = navigator.sms.receive({signal}); + controller.abort(); + await promise_rejects(t, 'AbortError', error); +}, 'Should abort request even while request is in progress.'); + </script> diff --git a/tests/wpt/web-platform-tests/sms/sms_receiver.idl b/tests/wpt/web-platform-tests/sms/sms_receiver.idl index 64048523f90..ca8cfdd798c 100644 --- a/tests/wpt/web-platform-tests/sms/sms_receiver.idl +++ b/tests/wpt/web-platform-tests/sms/sms_receiver.idl @@ -13,7 +13,7 @@ interface SMS { }; dictionary SMSReceiverOptions { - // TODO(b/976401): Implement abort controller. + AbortSignal signal; }; [ diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/servodriver.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/servodriver.py index ea345efa44f..2953de18174 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/servodriver.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/servodriver.py @@ -163,9 +163,7 @@ class ServoWebDriverBrowser(Browser): command=" ".join(self.command)) def is_alive(self): - if self.runner: - return self.runner.is_running() - return False + return self.proc.poll() is None def cleanup(self): self.stop() |