diff options
author | bors-servo <lbergstrom+bors@mozilla.com> | 2019-07-06 11:49:30 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-07-06 11:49:30 -0400 |
commit | 9939c1ee07496fe6ab6d30781fb6be127f31efc6 (patch) | |
tree | 3c7cac089801eed3a72b0ed70ed3c4d872223e24 | |
parent | ba0628ae20cac54db22c820294f95859d0a99a97 (diff) | |
parent | c8e806d0effbe6242dd9934ea9482e48a2d401cc (diff) | |
download | servo-9939c1ee07496fe6ab6d30781fb6be127f31efc6.tar.gz servo-9939c1ee07496fe6ab6d30781fb6be127f31efc6.zip |
Auto merge of #23724 - servo-wpt-sync:wpt_update_06-07-2019, r=servo-wpt-sync
Sync WPT with upstream (06-07-2019)
Automated downstream sync of changes from upstream as of 06-07-2019.
[no-wpt-sync]
<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/23724)
<!-- Reviewable:end -->
93 files changed, 2115 insertions, 594 deletions
diff --git a/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini b/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini index 947e223fb28..3a3d15b8406 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 @@ -14,6 +14,9 @@ [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] [Untitled] @@ -34,3 +37,6 @@ [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 720c7b25a00..5f6e6770eca 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -133615,6 +133615,18 @@ {} ] ], + "css/css-paint-api/hidpi/canvas-transform.https.html": [ + [ + "css/css-paint-api/hidpi/canvas-transform.https.html", + [ + [ + "/css/css-paint-api/hidpi/canvas-transform-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-paint-api/hidpi/device-pixel-ratio.https.html": [ [ "css/css-paint-api/hidpi/device-pixel-ratio.https.html", @@ -135571,6 +135583,54 @@ {} ] ], + "css/css-pseudo/first-line-change-inline-color-nested.html": [ + [ + "css/css-pseudo/first-line-change-inline-color-nested.html", + [ + [ + "/css/css-pseudo/first-line-change-inline-color-nested-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-pseudo/first-line-change-inline-color.html": [ + [ + "css/css-pseudo/first-line-change-inline-color.html", + [ + [ + "/css/css-pseudo/first-line-change-inline-color-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-pseudo/first-line-on-ancestor-block.html": [ + [ + "css/css-pseudo/first-line-on-ancestor-block.html", + [ + [ + "/css/css-pseudo/first-line-on-ancestor-block-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-pseudo/first-line-with-out-of-flow.html": [ + [ + "css/css-pseudo/first-line-with-out-of-flow.html", + [ + [ + "/css/css-pseudo/first-line-with-out-of-flow-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-pseudo/marker-and-other-pseudo-elements.html": [ [ "css/css-pseudo/marker-and-other-pseudo-elements.html", @@ -149807,6 +149867,42 @@ {} ] ], + "css/css-text/white-space/white-space-pre-wrap-trailing-spaces-004.html": [ + [ + "css/css-text/white-space/white-space-pre-wrap-trailing-spaces-004.html", + [ + [ + "/css/css-text/white-space/reference/white-space-pre-wrap-trailing-spaces-004-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-text/white-space/white-space-pre-wrap-trailing-spaces-005.html": [ + [ + "css/css-text/white-space/white-space-pre-wrap-trailing-spaces-005.html", + [ + [ + "/css/css-text/white-space/reference/white-space-pre-wrap-trailing-spaces-004-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-text/white-space/white-space-pre-wrap-trailing-spaces-006.html": [ + [ + "css/css-text/white-space/white-space-pre-wrap-trailing-spaces-006.html", + [ + [ + "/css/css-text/white-space/reference/white-space-pre-wrap-trailing-spaces-004-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-text/white-space/white-space-wrap-after-nowrap-001.html": [ [ "css/css-text/white-space/white-space-wrap-after-nowrap-001.html", @@ -200533,6 +200629,18 @@ {} ] ], + "html/semantics/embedded-content/the-iframe-element/iframe-modify-scrolling-attr-to-yes.html": [ + [ + "html/semantics/embedded-content/the-iframe-element/iframe-modify-scrolling-attr-to-yes.html", + [ + [ + "/html/semantics/embedded-content/the-iframe-element/iframe-modify-scrolling-attr-to-yes-ref.html", + "==" + ] + ], + {} + ] + ], "html/semantics/embedded-content/the-iframe-element/iframe-with-base.html": [ [ "html/semantics/embedded-content/the-iframe-element/iframe-with-base.html", @@ -250168,6 +250276,9 @@ "css/css-paint-api/geometry-with-float-size-ref.html": [ [] ], + "css/css-paint-api/hidpi/canvas-transform-ref.html": [ + [] + ], "css/css-paint-api/hidpi/device-pixel-ratio-ref.html": [ [] ], @@ -250390,6 +250501,18 @@ "css/css-pseudo/first-line-and-placeholder-ref.html": [ [] ], + "css/css-pseudo/first-line-change-inline-color-nested-ref.html": [ + [] + ], + "css/css-pseudo/first-line-change-inline-color-ref.html": [ + [] + ], + "css/css-pseudo/first-line-on-ancestor-block-ref.html": [ + [] + ], + "css/css-pseudo/first-line-with-out-of-flow-ref.html": [ + [] + ], "css/css-pseudo/marker-and-other-pseudo-elements-ref.html": [ [] ], @@ -253540,6 +253663,9 @@ "css/css-text/white-space/reference/white-space-pre-wrap-trailing-spaces-003-ref.html": [ [] ], + "css/css-text/white-space/reference/white-space-pre-wrap-trailing-spaces-004-ref.html": [ + [] + ], "css/css-text/white-space/reference/white-space-wrap-after-nowrap-001-ref.html": [ [] ], @@ -269302,6 +269428,9 @@ "html/semantics/embedded-content/the-iframe-element/cross_origin_grandchild.html": [ [] ], + "html/semantics/embedded-content/the-iframe-element/iframe-modify-scrolling-attr-to-yes-ref.html": [ + [] + ], "html/semantics/embedded-content/the-iframe-element/iframe-with-base-ref.html": [ [] ], @@ -269359,6 +269488,9 @@ "html/semantics/embedded-content/the-iframe-element/support/iframe-trying-to-navigate-itself.html": [ [] ], + "html/semantics/embedded-content/the-iframe-element/support/iframe-which-content-height-equals-400px.html": [ + [] + ], "html/semantics/embedded-content/the-iframe-element/support/iframe_sandbox_001.htm": [ [] ], @@ -271219,9 +271351,6 @@ "infrastructure/metadata/infrastructure/server/title.any.js.ini": [ [] ], - "infrastructure/metadata/infrastructure/testdriver/actions/actionsWithKeyPressed.html.ini": [ - [] - ], "infrastructure/metadata/infrastructure/testdriver/actions/elementPosition.html.ini": [ [] ], @@ -273385,10 +273514,10 @@ "pointerevents/resources/pointerevent_fractional_coordinates-iframe.html": [ [] ], - "pointerevents/resources/pointerevent_mouse_pointercapture-iframe.html": [ + "pointerevents/resources/pointerevent_pointerId_scope-iframe.html": [ [] ], - "pointerevents/resources/pointerevent_pointerId_scope-iframe.html": [ + "pointerevents/resources/pointerevent_pointercapture-iframe.html": [ [] ], "pointerevents/resources/pointerevent_pointerrawupdate_in_pointerlock-iframe.html": [ @@ -278149,6 +278278,9 @@ "subresource-integrity/ed25519-style.css.headers": [ [] ], + "subresource-integrity/image.png": [ + [] + ], "subresource-integrity/script.js": [ [] ], @@ -301768,6 +301900,12 @@ {} ] ], + "animation-worklet/worklet-animation-animator-name.https.html": [ + [ + "animation-worklet/worklet-animation-animator-name.https.html", + {} + ] + ], "animation-worklet/worklet-animation-creation.https.html": [ [ "animation-worklet/worklet-animation-creation.https.html", @@ -308493,6 +308631,18 @@ {} ] ], + "css/css-animations/responsive/column-rule-color-001.html": [ + [ + "css/css-animations/responsive/column-rule-color-001.html", + {} + ] + ], + "css/css-animations/responsive/column-width-001.html": [ + [ + "css/css-animations/responsive/column-width-001.html", + {} + ] + ], "css/css-animations/style-animation-parsing.html": [ [ "css/css-animations/style-animation-parsing.html", @@ -313257,6 +313407,18 @@ {} ] ], + "css/css-masking/parsing/mask-position-invalid.html": [ + [ + "css/css-masking/parsing/mask-position-invalid.html", + {} + ] + ], + "css/css-masking/parsing/mask-position-valid.html": [ + [ + "css/css-masking/parsing/mask-position-valid.html", + {} + ] + ], "css/css-multicol/abspos-in-multicol-with-spanner-crash.html": [ [ "css/css-multicol/abspos-in-multicol-with-spanner-crash.html", @@ -322471,9 +322633,15 @@ {} ] ], - "css/cssom-view/scrollIntoView-direction-rtl.html": [ + "css/cssom-view/scrollIntoView-horizontal-tb-writing-mode-and-rtl-direction.html": [ + [ + "css/cssom-view/scrollIntoView-horizontal-tb-writing-mode-and-rtl-direction.html", + {} + ] + ], + "css/cssom-view/scrollIntoView-horizontal-tb-writing-mode.html": [ [ - "css/cssom-view/scrollIntoView-direction-rtl.html", + "css/cssom-view/scrollIntoView-horizontal-tb-writing-mode.html", {} ] ], @@ -322507,6 +322675,18 @@ {} ] ], + "css/cssom-view/scrollIntoView-vertical-lr-writing-mode-and-rtl-direction.html": [ + [ + "css/cssom-view/scrollIntoView-vertical-lr-writing-mode-and-rtl-direction.html", + {} + ] + ], + "css/cssom-view/scrollIntoView-vertical-lr-writing-mode.html": [ + [ + "css/cssom-view/scrollIntoView-vertical-lr-writing-mode.html", + {} + ] + ], "css/cssom-view/scrollIntoView-vertical-rl-writing-mode.html": [ [ "css/cssom-view/scrollIntoView-vertical-rl-writing-mode.html", @@ -357198,14 +357378,6 @@ {} ] ], - "infrastructure/testdriver/actions/actionsWithKeyPressed.html": [ - [ - "infrastructure/testdriver/actions/actionsWithKeyPressed.html", - { - "testdriver": true - } - ] - ], "infrastructure/testdriver/actions/elementPosition.html": [ [ "infrastructure/testdriver/actions/elementPosition.html", @@ -373743,14 +373915,6 @@ } ] ], - "pointerevents/pointerevent_mouse_pointercapture_in_frame.html": [ - [ - "pointerevents/pointerevent_mouse_pointercapture_in_frame.html", - { - "testdriver": true - } - ] - ], "pointerevents/pointerevent_on_event_handlers.html": [ [ "pointerevents/pointerevent_on_event_handlers.html", @@ -373765,6 +373929,14 @@ } ] ], + "pointerevents/pointerevent_pointercapture_in_frame.html": [ + [ + "pointerevents/pointerevent_pointercapture_in_frame.html", + { + "testdriver": true + } + ] + ], "pointerevents/pointerevent_pointerenter_does_not_bubble.html": [ [ "pointerevents/pointerevent_pointerenter_does_not_bubble.html", @@ -412985,6 +413157,12 @@ } ] ], + "xhr/sync-xhr-and-window-onload.html": [ + [ + "xhr/sync-xhr-and-window-onload.html", + {} + ] + ], "xhr/sync-xhr-supported-by-feature-policy.html": [ [ "xhr/sync-xhr-supported-by-feature-policy.html", @@ -441860,6 +442038,10 @@ "dba3aa8dc8dfa6f674477d9e71614b7b7288d9dd", "testharness" ], + "animation-worklet/worklet-animation-animator-name.https.html": [ + "bd886ccd02094c8b1eee1fb31a1700f940ba2cbd", + "testharness" + ], "animation-worklet/worklet-animation-cancel-ref.html": [ "d44927374703ef2b38d3ed0c9570609b62baec65", "support" @@ -529420,6 +529602,14 @@ "fb74d7fa7d062d60153d47913df9eb2b0c7267c8", "testharness" ], + "css/css-animations/responsive/column-rule-color-001.html": [ + "9953db43545990d9f6e0941ee89f10dc83e46438", + "testharness" + ], + "css/css-animations/responsive/column-width-001.html": [ + "7697eec324064dd6bd1fd75f16fdff5d3050315d", + "testharness" + ], "css/css-animations/style-animation-parsing.html": [ "792fda33ed8b0bacf355e62066ec05d54cc5c729", "testharness" @@ -554160,6 +554350,14 @@ "bd14dfd1b5c9acb697dc4f7afc21e1fb656a377a", "testharness" ], + "css/css-masking/parsing/mask-position-invalid.html": [ + "c246a1e795eea6a9e31fe1155d55ceb8532d6032", + "testharness" + ], + "css/css-masking/parsing/mask-position-valid.html": [ + "efdf55a0182ae701d459c1206b18ba74625e5f95", + "testharness" + ], "css/css-masking/test-mask-ref.html": [ "938235acbd36309fb969c55f161239bcd5ab969e", "support" @@ -556728,6 +556926,14 @@ "65477e4b3bf369d511113cbe81d04531281edc4c", "reftest" ], + "css/css-paint-api/hidpi/canvas-transform-ref.html": [ + "48d46e8e56109a87d9bf2c637f016c7ad52c0a5f", + "support" + ], + "css/css-paint-api/hidpi/canvas-transform.https.html": [ + "d160a8673c21d17e58ca20eb437c22cd76c97104", + "reftest" + ], "css/css-paint-api/hidpi/device-pixel-ratio-ref.html": [ "205cf8963bf639f8aae23457fa9b71d16c9c2c90", "support" @@ -558048,10 +558254,42 @@ "2db3480feb5928c6a39fbf6084cf07bec0ba4767", "reftest" ], + "css/css-pseudo/first-line-change-inline-color-nested-ref.html": [ + "84becd9a78d186ba3c0e658746fd56aef8039b74", + "support" + ], + "css/css-pseudo/first-line-change-inline-color-nested.html": [ + "4a58f1ea5b623ffa5acd2993be16de399cd24127", + "reftest" + ], + "css/css-pseudo/first-line-change-inline-color-ref.html": [ + "84becd9a78d186ba3c0e658746fd56aef8039b74", + "support" + ], + "css/css-pseudo/first-line-change-inline-color.html": [ + "2a5be916b01d5d12eec1a4e81d912d95c7036916", + "reftest" + ], "css/css-pseudo/first-line-first-letter-insert-crash.html": [ "17f035dedf1ef8df71918a1eacb01e1f0b80d46b", "testharness" ], + "css/css-pseudo/first-line-on-ancestor-block-ref.html": [ + "7193bf25eb88c5443457480f7ce27782acd9473a", + "support" + ], + "css/css-pseudo/first-line-on-ancestor-block.html": [ + "6b797107df80156b511b9dc58c5ee40d6114cfc4", + "reftest" + ], + "css/css-pseudo/first-line-with-out-of-flow-ref.html": [ + "7193bf25eb88c5443457480f7ce27782acd9473a", + "support" + ], + "css/css-pseudo/first-line-with-out-of-flow.html": [ + "798ecf8264e2ddb38257c6cb1174bcc069c6e6d1", + "reftest" + ], "css/css-pseudo/idlharness.html": [ "4c113fc9091fb773cabd77f1419fac9a2e99650b", "testharness" @@ -570312,6 +570550,10 @@ "1b50b667c03adae2db1f985e847b0106f9c6ad07", "support" ], + "css/css-text/white-space/reference/white-space-pre-wrap-trailing-spaces-004-ref.html": [ + "72e4642022af70b543990934c615471600b2bd46", + "support" + ], "css/css-text/white-space/reference/white-space-wrap-after-nowrap-001-ref.html": [ "80b2260cbbe6122e90c297ab1f2cd83917712030", "support" @@ -570540,6 +570782,18 @@ "15e47a7adba3d4fc5534eab8811e3c91518aa771", "reftest" ], + "css/css-text/white-space/white-space-pre-wrap-trailing-spaces-004.html": [ + "becd4638eb068b26c00851390e393026796d7675", + "reftest" + ], + "css/css-text/white-space/white-space-pre-wrap-trailing-spaces-005.html": [ + "f62e2e5c005d4043c02894eed87422fa6c59b824", + "reftest" + ], + "css/css-text/white-space/white-space-pre-wrap-trailing-spaces-006.html": [ + "820012e6ca10dec9065f7c5869c47b065b426033", + "reftest" + ], "css/css-text/white-space/white-space-wrap-after-nowrap-001.html": [ "a484f1cf9167e468063cf2205493b8e71a254470", "reftest" @@ -572185,7 +572439,7 @@ "testharness" ], "css/css-transforms/parsing/scale-parsing-valid.html": [ - "b9afbc848a3b5ff3033d070b4f080245e0d822c5", + "2ae12222f1361b6b0016ce235fad92d03b3bff45", "testharness" ], "css/css-transforms/parsing/transform-box-invalid.html": [ @@ -589544,8 +589798,12 @@ "cc67ce76ed9d432656b37c9c81a20e86d1bafc8d", "testharness" ], - "css/cssom-view/scrollIntoView-direction-rtl.html": [ - "fea92d1da5700ee0b1888941737cec9fbf9e98be", + "css/cssom-view/scrollIntoView-horizontal-tb-writing-mode-and-rtl-direction.html": [ + "3ef9d62a3654c5ab2dd061e34799053daeefc3a4", + "testharness" + ], + "css/cssom-view/scrollIntoView-horizontal-tb-writing-mode.html": [ + "49d5f5d8653260d7673268e5eb1e9491fed21f2b", "testharness" ], "css/cssom-view/scrollIntoView-scrollMargin.html": [ @@ -589568,8 +589826,16 @@ "7af5de5ff8aceb96867815354571314afd4cb07c", "testharness" ], + "css/cssom-view/scrollIntoView-vertical-lr-writing-mode-and-rtl-direction.html": [ + "3301141ee0115fc941240dc76b27d988032273ae", + "testharness" + ], + "css/cssom-view/scrollIntoView-vertical-lr-writing-mode.html": [ + "9242a49c0bca5b5a5f190c38f9eecac73f50844b", + "testharness" + ], "css/cssom-view/scrollIntoView-vertical-rl-writing-mode.html": [ - "56bcf214517d5220d53939fc25316ab5d6fe3da6", + "cec27f412c926ab087f2cd736e4c6a7d4efb4c99", "testharness" ], "css/cssom-view/scrollTop-display-change-ref.html": [ @@ -606753,7 +607019,7 @@ "testharness" ], "element-timing/buffer-before-onload.html": [ - "88a641bbb666816da9a636ed43d23c205bf0e8f9", + "68eeeefe15fdc587cdf0d4382f90c33ee3230290", "testharness" ], "element-timing/cross-origin-element.sub.html": [ @@ -609041,7 +609307,7 @@ "support" ], "event-timing/bufferbeforeonload.html": [ - "c91546ae41a499635573a2f7d7ea20b0283ca21f", + "c30c01aa96bb9bc835bb1ce93bff86f5e99789d7", "testharness" ], "event-timing/crossiframe.html": [ @@ -609057,15 +609323,15 @@ "manual" ], "event-timing/observethenonload.html": [ - "e1c36e302108b1bd886130c7df38d8e536dc4473", + "4145eae0a59a5da2fc5fbca95ee2721fc3b58b2b", "testharness" ], "event-timing/onloadthenobserve-firstInput.html": [ - "1422ceaa95582200ba1250dcdd53aec502b59856", + "4efdfbbf006cdd8577b4d11b668974bfe20aaa84", "testharness" ], "event-timing/onloadthenobserve.html": [ - "e2f9c932e6f5122af68ff84fd9495cf6fc216314", + "d97228577a187ddf10f5513697d9b0424aab4588", "testharness" ], "event-timing/only-observe-firstInput.html": [ @@ -609077,7 +609343,7 @@ "testharness" ], "event-timing/resources/crossiframe-childframe.html": [ - "7aa4ace73afad7878205736c02a81e863127bb43", + "ee9da6cad5411b477c3c11d6fc932ef132855bf7", "support" ], "event-timing/resources/event-timing-test-utils.js": [ @@ -611265,7 +611531,7 @@ "testharness" ], "fetch/corb/script-resource-with-nonsniffable-types.tentative.sub.html": [ - "e599bf26f9445e9e96ee98e4bbab2895e2283fe2", + "bf42d0eaf685d2d1bcdb3b9a0276daf2aae2268f", "testharness" ], "fetch/corb/style-css-mislabeled-as-html-nosniff.sub.html": [ @@ -625480,6 +625746,14 @@ "d245bf0b96451b3419e0e69bda86fe4859c9cbfe", "testharness" ], + "html/semantics/embedded-content/the-iframe-element/iframe-modify-scrolling-attr-to-yes-ref.html": [ + "3758ea2cab4096beccb3722a1cc534b71c662a64", + "support" + ], + "html/semantics/embedded-content/the-iframe-element/iframe-modify-scrolling-attr-to-yes.html": [ + "9d85aa543d2d1732b8534fcdfa62a42d11716586", + "reftest" + ], "html/semantics/embedded-content/the-iframe-element/iframe-nosrc.html": [ "57189a0b884d3a55e4bb2ba1a1d3aa83066c0eb3", "testharness" @@ -625828,6 +626102,10 @@ "6755d295aa179992b4cf958ee2ad8456e729677c", "support" ], + "html/semantics/embedded-content/the-iframe-element/support/iframe-which-content-height-equals-400px.html": [ + "bb3dbd31182e91f43c3caa0cb8bb7ffbad485177", + "support" + ], "html/semantics/embedded-content/the-iframe-element/support/iframe_sandbox_001.htm": [ "051ca5ecd78a17f499d3df76b0bd8f1b6a9dbade", "support" @@ -633284,10 +633562,6 @@ "cbae6b15410e13433c4a9fadd8c2a8cc5fbc4fdc", "support" ], - "infrastructure/metadata/infrastructure/testdriver/actions/actionsWithKeyPressed.html.ini": [ - "c83e8ff9261b78084f75fb584a8b5236cc28c3fd", - "support" - ], "infrastructure/metadata/infrastructure/testdriver/actions/elementPosition.html.ini": [ "49e4a40016e0eb2304a5e6e61b19556818c4ef3d", "support" @@ -633488,10 +633762,6 @@ "ea7973a62e0ee9cdc874879fd844b2309e944e61", "testharness" ], - "infrastructure/testdriver/actions/actionsWithKeyPressed.html": [ - "74e939f5fde4773aade6ce4f7bbee573e39ae8ec", - "testharness" - ], "infrastructure/testdriver/actions/elementPosition.html": [ "145852e7b51bd0cdc9e7b4ef5ebddcbf1c0235c5", "testharness" @@ -633629,7 +633899,7 @@ "support" ], "interfaces/WebIDL.idl": [ - "aa8d5bad16a971b09d74914865f7db3115c7d836", + "a9157a955904c29b362dc1527f66c531ef6429ca", "support" ], "interfaces/accelerometer.idl": [ @@ -634141,7 +634411,7 @@ "support" ], "interfaces/webxr.idl": [ - "c78683ef6bf6822b0320fe4c16bc9630a63884de", + "2c9eac510672513e611f565fc31d2c7d8a3820da", "support" ], "interfaces/worklets.idl": [ @@ -634613,11 +634883,11 @@ "testharness" ], "layout-instability/buffer-layout-shift.html": [ - "c1d0dc6d6eb971f39c913a78423aad046dd18a04", + "5d2e69f1ff2ab2f673f432b3b69d678ff1d9a218", "testharness" ], "layout-instability/observe-layout-shift.html": [ - "25e4950f6a7d830097781923e80d82f130cf23a5", + "1aa429b6b68df3872f2f1e8dbd591d8a171361ba", "testharness" ], "layout-instability/resources/slow-image.py": [ @@ -639245,15 +639515,15 @@ "testharness" ], "native-file-system/FileSystemBaseHandle-remove.tentative.window.js": [ - "5a8e67b8478caa022dccb10c14f64103e329e5c9", + "a4eb2871104f924347f9ec8791a6381313a54483", "testharness" ], "native-file-system/FileSystemDirectoryHandle-getDirectory.tentative.window.js": [ - "0f8c1b13fa01d6fb5c88455eac86c969b4d04c0a", + "2064fc46f05f5e30c14f77c14c5751b411d1c5e0", "testharness" ], "native-file-system/FileSystemDirectoryHandle-getFile.tentative.window.js": [ - "0b27027f4eddb752b465ccfa5b3843689eb280ea", + "473cad4c9c36660584c07d7b53dfc68c7f734cb4", "testharness" ], "native-file-system/FileSystemWriter.tentative.window.js": [ @@ -639269,7 +639539,7 @@ "support" ], "native-file-system/resources/test-helpers.js": [ - "e29927b85247d55d6dfd6d04838d3587158aadf2", + "56c93b597508a5be23da31c9a9cb89d3cb470aa7", "support" ], "navigation-timing/META.yml": [ @@ -647300,10 +647570,6 @@ "10b19f8474a95126302f824390302007a4f63fea", "testharness" ], - "pointerevents/pointerevent_mouse_pointercapture_in_frame.html": [ - "83b4c1becc48339f74948fd01bdf15dfd27f96c1", - "testharness" - ], "pointerevents/pointerevent_multiple_primary_pointers_boundary_events-manual.html": [ "eb758c70738760d217656244733755da3ee5f238", "manual" @@ -647320,6 +647586,10 @@ "a645033a247437604d6b1c4614079c9193c28e9d", "testharness" ], + "pointerevents/pointerevent_pointercapture_in_frame.html": [ + "a4107fd707a2ec4cb40d22fcad786db0b42471d6", + "testharness" + ], "pointerevents/pointerevent_pointerenter_does_not_bubble.html": [ "7d38de7446938de3715b19f4585d747a18912d77", "testharness" @@ -647572,14 +647842,14 @@ "5245a3f2e16bf13967187231db515433217912aa", "support" ], - "pointerevents/resources/pointerevent_mouse_pointercapture-iframe.html": [ - "817c6123cf96b0e966c04a48414725d794549c77", - "support" - ], "pointerevents/resources/pointerevent_pointerId_scope-iframe.html": [ "ab33560b35216ea0976d1c037650122d9336ae39", "support" ], + "pointerevents/resources/pointerevent_pointercapture-iframe.html": [ + "100756626987a95b242214a47704e87d5d7c2dc9", + "support" + ], "pointerevents/resources/pointerevent_pointerrawupdate_in_pointerlock-iframe.html": [ "505fc2cae40b80612fdd67ba98918aafad2f1b0a", "support" @@ -648073,7 +648343,7 @@ "testharness" ], "preload/subresource-integrity.html": [ - "08c7854a9ecff0c6510d7ce7752de8e601e1530a", + "52ec0f62bef04a618e650acfb75513a7c79683e2", "testharness" ], "presentation-api/META.yml": [ @@ -658161,7 +658431,7 @@ "support" ], "resources/sriharness.js": [ - "fe8ad2b4270c2f048a6a9eada153b1a1b2e90f1b", + "d30d483e3296979ddce16b6118170a3a6c696e80", "support" ], "resources/test/README.md": [ @@ -663992,6 +664262,10 @@ "d2997e562fadfd208d202ce3d60d11cd937ea779", "testharness" ], + "subresource-integrity/image.png": [ + "01c9666a8de9d5535615aff830810e5df4b2156f", + "support" + ], "subresource-integrity/script.js": [ "bfca1efbf3fb10fc98dd39600966fc97817586ee", "support" @@ -677069,7 +677343,7 @@ "testharness" ], "web-nfc/NFCWriter_push.https.html": [ - "5a14b4090afe7b7850a36129eb3f882ac1886267", + "0b804615930b12d1ac4d7bfc1b395e715de03778", "testharness" ], "web-nfc/NFCWriter_push_signal-manual.https.html": [ @@ -680257,7 +680531,7 @@ "testharness" ], "webrtc/RTCStats-helper.js": [ - "e91b40b6854f1cc6c59f7d81bf06a40e6dc0d31f", + "5cd7d2c9e0e1f6c5c10afe529be8489dec4dd5ad", "support" ], "webrtc/RTCTrackEvent-constructor.html": [ @@ -688268,6 +688542,10 @@ "d23fbb8c66def47e31ad01aa7a311064ba8fddbd", "testharness" ], + "xhr/sync-xhr-and-window-onload.html": [ + "3ba9e7ab2e8c772cfe4673b61ad8b4a4582d851d", + "testharness" + ], "xhr/sync-xhr-supported-by-feature-policy.html": [ "45588bf6af54b0136c72068544bc908378f286a2", "testharness" diff --git a/tests/wpt/metadata/css/css-animations/responsive/column-rule-color-001.html.ini b/tests/wpt/metadata/css/css-animations/responsive/column-rule-color-001.html.ini new file mode 100644 index 00000000000..8d962de6580 --- /dev/null +++ b/tests/wpt/metadata/css/css-animations/responsive/column-rule-color-001.html.ini @@ -0,0 +1,7 @@ +[column-rule-color-001.html] + [column-rule-color responds to inherited changes] + expected: FAIL + + [column-rule-color responds to currentColor changes] + expected: FAIL + diff --git a/tests/wpt/metadata/css/css-animations/responsive/column-width-001.html.ini b/tests/wpt/metadata/css/css-animations/responsive/column-width-001.html.ini new file mode 100644 index 00000000000..94ad1f446a4 --- /dev/null +++ b/tests/wpt/metadata/css/css-animations/responsive/column-width-001.html.ini @@ -0,0 +1,10 @@ +[column-width-001.html] + [column-width responds to font-size changes] + expected: FAIL + + [column-width clamps to 0px] + expected: FAIL + + [column-width responds to inherited changes] + expected: FAIL + diff --git a/tests/wpt/metadata/css/css-paint-api/hidpi/canvas-transform.https.html.ini b/tests/wpt/metadata/css/css-paint-api/hidpi/canvas-transform.https.html.ini new file mode 100644 index 00000000000..3950118e711 --- /dev/null +++ b/tests/wpt/metadata/css/css-paint-api/hidpi/canvas-transform.https.html.ini @@ -0,0 +1,2 @@ +[canvas-transform.https.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-text/white-space/white-space-pre-wrap-trailing-spaces-005.html.ini b/tests/wpt/metadata/css/css-text/white-space/white-space-pre-wrap-trailing-spaces-005.html.ini new file mode 100644 index 00000000000..3316960bcb6 --- /dev/null +++ b/tests/wpt/metadata/css/css-text/white-space/white-space-pre-wrap-trailing-spaces-005.html.ini @@ -0,0 +1,2 @@ +[white-space-pre-wrap-trailing-spaces-005.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-text/white-space/white-space-pre-wrap-trailing-spaces-006.html.ini b/tests/wpt/metadata/css/css-text/white-space/white-space-pre-wrap-trailing-spaces-006.html.ini new file mode 100644 index 00000000000..1e41a1d6e6b --- /dev/null +++ b/tests/wpt/metadata/css/css-text/white-space/white-space-pre-wrap-trailing-spaces-006.html.ini @@ -0,0 +1,2 @@ +[white-space-pre-wrap-trailing-spaces-006.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/cssom-view/scroll-behavior-smooth.html.ini b/tests/wpt/metadata/css/cssom-view/scroll-behavior-smooth.html.ini index ee754ce4aa3..e1a609649d6 100644 --- a/tests/wpt/metadata/css/cssom-view/scroll-behavior-smooth.html.ini +++ b/tests/wpt/metadata/css/cssom-view/scroll-behavior-smooth.html.ini @@ -3,9 +3,3 @@ [scroll-behavior: smooth on DIV element] expected: FAIL - [Smooth scrolling while doing history navigation.] - expected: FAIL - - [Instant scrolling while doing history navigation.] - expected: FAIL - diff --git a/tests/wpt/metadata/css/cssom-view/scrollIntoView-horizontal-tb-writing-mode-and-rtl-direction.html.ini b/tests/wpt/metadata/css/cssom-view/scrollIntoView-horizontal-tb-writing-mode-and-rtl-direction.html.ini new file mode 100644 index 00000000000..45087b59332 --- /dev/null +++ b/tests/wpt/metadata/css/cssom-view/scrollIntoView-horizontal-tb-writing-mode-and-rtl-direction.html.ini @@ -0,0 +1,28 @@ +[scrollIntoView-horizontal-tb-writing-mode-and-rtl-direction.html] + [scrollIntoView({"block":"center","inline":"center"})] + expected: FAIL + + [scrollIntoView({"block":"end","inline":"start"})] + expected: FAIL + + [scrollIntoView({"block":"start","inline":"center"})] + expected: FAIL + + [scrollIntoView({"block":"center","inline":"start"})] + expected: FAIL + + [scrollIntoView({"block":"start","inline":"start"})] + expected: FAIL + + [scrollIntoView({"block":"end","inline":"center"})] + expected: FAIL + + [scrollIntoView({"block":"end","inline":"end"})] + expected: FAIL + + [scrollIntoView({"block":"start","inline":"end"})] + expected: FAIL + + [scrollIntoView({"block":"center","inline":"end"})] + expected: FAIL + diff --git a/tests/wpt/metadata/css/cssom-view/scrollIntoView-horizontal-tb-writing-mode.html.ini b/tests/wpt/metadata/css/cssom-view/scrollIntoView-horizontal-tb-writing-mode.html.ini new file mode 100644 index 00000000000..33b162d7d1a --- /dev/null +++ b/tests/wpt/metadata/css/cssom-view/scrollIntoView-horizontal-tb-writing-mode.html.ini @@ -0,0 +1,28 @@ +[scrollIntoView-horizontal-tb-writing-mode.html] + [scrollIntoView({"block":"center","inline":"center"})] + expected: FAIL + + [scrollIntoView({"block":"end","inline":"start"})] + expected: FAIL + + [scrollIntoView({"block":"start","inline":"center"})] + expected: FAIL + + [scrollIntoView({"block":"center","inline":"start"})] + expected: FAIL + + [scrollIntoView({"block":"start","inline":"start"})] + expected: FAIL + + [scrollIntoView({"block":"end","inline":"center"})] + expected: FAIL + + [scrollIntoView({"block":"end","inline":"end"})] + expected: FAIL + + [scrollIntoView({"block":"start","inline":"end"})] + expected: FAIL + + [scrollIntoView({"block":"center","inline":"end"})] + expected: FAIL + diff --git a/tests/wpt/metadata/css/cssom-view/scrollIntoView-vertical-lr-writing-mode-and-rtl-direction.html.ini b/tests/wpt/metadata/css/cssom-view/scrollIntoView-vertical-lr-writing-mode-and-rtl-direction.html.ini new file mode 100644 index 00000000000..2144f1801a6 --- /dev/null +++ b/tests/wpt/metadata/css/cssom-view/scrollIntoView-vertical-lr-writing-mode-and-rtl-direction.html.ini @@ -0,0 +1,28 @@ +[scrollIntoView-vertical-lr-writing-mode-and-rtl-direction.html] + [scrollIntoView({"block":"center","inline":"center"})] + expected: FAIL + + [scrollIntoView({"block":"end","inline":"start"})] + expected: FAIL + + [scrollIntoView({"block":"start","inline":"center"})] + expected: FAIL + + [scrollIntoView({"block":"center","inline":"start"})] + expected: FAIL + + [scrollIntoView({"block":"start","inline":"start"})] + expected: FAIL + + [scrollIntoView({"block":"end","inline":"center"})] + expected: FAIL + + [scrollIntoView({"block":"end","inline":"end"})] + expected: FAIL + + [scrollIntoView({"block":"start","inline":"end"})] + expected: FAIL + + [scrollIntoView({"block":"center","inline":"end"})] + expected: FAIL + diff --git a/tests/wpt/metadata/css/cssom-view/scrollIntoView-vertical-lr-writing-mode.html.ini b/tests/wpt/metadata/css/cssom-view/scrollIntoView-vertical-lr-writing-mode.html.ini new file mode 100644 index 00000000000..3a8911a2ff1 --- /dev/null +++ b/tests/wpt/metadata/css/cssom-view/scrollIntoView-vertical-lr-writing-mode.html.ini @@ -0,0 +1,28 @@ +[scrollIntoView-vertical-lr-writing-mode.html] + [scrollIntoView({"block":"center","inline":"center"})] + expected: FAIL + + [scrollIntoView({"block":"end","inline":"start"})] + expected: FAIL + + [scrollIntoView({"block":"start","inline":"center"})] + expected: FAIL + + [scrollIntoView({"block":"center","inline":"start"})] + expected: FAIL + + [scrollIntoView({"block":"start","inline":"start"})] + expected: FAIL + + [scrollIntoView({"block":"end","inline":"center"})] + expected: FAIL + + [scrollIntoView({"block":"end","inline":"end"})] + expected: FAIL + + [scrollIntoView({"block":"start","inline":"end"})] + expected: FAIL + + [scrollIntoView({"block":"center","inline":"end"})] + expected: FAIL + diff --git a/tests/wpt/metadata/css/cssom-view/scrollIntoView-vertical-rl-writing-mode.html.ini b/tests/wpt/metadata/css/cssom-view/scrollIntoView-vertical-rl-writing-mode.html.ini index 477a200ff86..f2391864b18 100644 --- a/tests/wpt/metadata/css/cssom-view/scrollIntoView-vertical-rl-writing-mode.html.ini +++ b/tests/wpt/metadata/css/cssom-view/scrollIntoView-vertical-rl-writing-mode.html.ini @@ -26,3 +26,30 @@ [scrollIntoView({block: "end", inline: "end"})] expected: FAIL + [scrollIntoView({"block":"center","inline":"center"})] + expected: FAIL + + [scrollIntoView({"block":"end","inline":"start"})] + expected: FAIL + + [scrollIntoView({"block":"start","inline":"center"})] + expected: FAIL + + [scrollIntoView({"block":"center","inline":"start"})] + expected: FAIL + + [scrollIntoView({"block":"start","inline":"start"})] + expected: FAIL + + [scrollIntoView({"block":"end","inline":"center"})] + expected: FAIL + + [scrollIntoView({"block":"end","inline":"end"})] + expected: FAIL + + [scrollIntoView({"block":"start","inline":"end"})] + expected: FAIL + + [scrollIntoView({"block":"center","inline":"end"})] + 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 fc964dd4c81..c43efe3e325 100644 --- a/tests/wpt/metadata/fetch/content-type/response.window.js.ini +++ b/tests/wpt/metadata/fetch/content-type/response.window.js.ini @@ -321,12 +321,12 @@ [<iframe>: combined response Content-Type: text/html;" text/plain] expected: FAIL - [<iframe>: separate response Content-Type: text/html */*;charset=gbk] + [<iframe>: combined response Content-Type: text/html;" \\" text/plain] expected: FAIL - [<iframe>: separate response Content-Type: text/html;x=" text/plain] + [<iframe>: combined response Content-Type: */* text/html] expected: FAIL - [<iframe>: combined response Content-Type: text/html;" \\" text/plain] + [<iframe>: combined response Content-Type: text/html */*] 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 c7413d589dc..549976d3092 100644 --- a/tests/wpt/metadata/fetch/content-type/script.window.js.ini +++ b/tests/wpt/metadata/fetch/content-type/script.window.js.ini @@ -62,3 +62,6 @@ [separate text/javascript;charset=windows-1252 text/javascript] expected: FAIL + [separate text/javascript; charset=windows-1252 text/javascript] + expected: FAIL + diff --git a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini index 536384f36e1..b7052af5b5c 100644 --- a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini +++ b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini @@ -11,6 +11,6 @@ [X-Content-Type-Options%3A%20nosniff%0C] expected: FAIL - [X-Content-Type-Options%3A%20%2Cnosniff] + [X-Content-Type-Options%3A%0D%0AX-Content-Type-Options%3A%20nosniff] expected: FAIL diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini new file mode 100644 index 00000000000..87b07c3e670 --- /dev/null +++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini @@ -0,0 +1,4 @@ +[traverse_the_history_1.html] + [Multiple history traversals from the same task] + expected: FAIL + diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini new file mode 100644 index 00000000000..75d75b4cda2 --- /dev/null +++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini @@ -0,0 +1,4 @@ +[traverse_the_history_2.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_5.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini new file mode 100644 index 00000000000..dc2e45516de --- /dev/null +++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini @@ -0,0 +1,4 @@ +[traverse_the_history_5.html] + [Multiple history traversals, last would be aborted] + expected: FAIL + diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/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/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/syntax/parsing/DOMContentLoaded-defer.html.ini b/tests/wpt/metadata/html/syntax/parsing/DOMContentLoaded-defer.html.ini deleted file mode 100644 index a9677391662..00000000000 --- a/tests/wpt/metadata/html/syntax/parsing/DOMContentLoaded-defer.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[DOMContentLoaded-defer.html] - [The end: DOMContentLoaded and defer scripts] - expected: FAIL - diff --git a/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini index 496bad988c6..034d9baebfa 100644 --- a/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini +++ b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini @@ -1,4 +1,5 @@ [promise-rejection-events.html] + expected: TIMEOUT [delayed handling: delaying handling rejected promise created from createImageBitmap will cause both events to fire] expected: FAIL @@ -8,3 +9,6 @@ [no unhandledrejection/rejectionhandled: rejection handler attached synchronously to a promise created from createImageBitmap] expected: FAIL + [rejectionhandled is dispatched from a queued task, and not immediately] + expected: TIMEOUT + diff --git a/tests/wpt/metadata/resource-timing/resource_TAO_zero.htm.ini b/tests/wpt/metadata/resource-timing/resource_TAO_zero.htm.ini index 091a2791657..841d4050464 100644 --- a/tests/wpt/metadata/resource-timing/resource_TAO_zero.htm.ini +++ b/tests/wpt/metadata/resource-timing/resource_TAO_zero.htm.ini @@ -23,3 +23,6 @@ [domainLookupStart should be 0 in cross-origin request.] expected: FAIL + [responseEnd should be greater than 0 in cross-origin request.] + expected: FAIL + diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini index 2f3bb869b3d..ea84a790d53 100644 --- a/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini +++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini @@ -62,3 +62,9 @@ [X SNR (21.440582444964107 dB) is not greater than or equal to 65.737. Got 21.440582444964107.] expected: FAIL + [X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[30\]\t9.4836157560348511e-1\t9.5236867666244507e-1\t4.0071010589599609e-3\t4.2075103446311962e-3\t3.8985999999999999e-3\n\t[31\]\t9.2646563053131104e-1\t9.3139332532882690e-1\t4.9276947975158691e-3\t5.2906700783754857e-3\t3.8985999999999999e-3\n\t[32\]\t9.0087991952896118e-1\t9.0675884485244751e-1\t5.8789253234863281e-3\t6.4834496590358351e-3\t3.8985999999999999e-3\n\t[33\]\t8.7170630693435669e-1\t8.7856203317642212e-1\t6.8557262420654297e-3\t7.8033490899654511e-3\t3.8985999999999999e-3\n\t[34\]\t8.3906102180480957e-1\t8.4691369533538818e-1\t7.8526735305786133e-3\t9.2721059699818163e-3\t3.8985999999999999e-3\n\t...and 31037 more errors.\n\tMax AbsError of 9.8276454204897923e-1 at index of 39267.\n\t[39267\]\t-5.3834547930620147e-11\t-9.8276454210281372e-1\t9.8276454204897923e-1\t9.9999999994522137e-1\t3.8985999999999999e-3\n\tMax RelError of 3.3137802965303198e+0 at index of 1253.\n\t[1253\]\t-4.3022233992815018e-2\t-9.9732093513011932e-3\t3.3049024641513824e-2\t3.3137802965303198e+0\t3.8985999999999999e-3\n] + expected: FAIL + + [X SNR (21.440582478679808 dB) is not greater than or equal to 65.737. Got 21.440582478679808.] + expected: FAIL + diff --git a/tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini b/tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini deleted file mode 100644 index 80f9a4f15b8..00000000000 --- a/tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[Worker-constructor.html] - expected: ERROR diff --git a/tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini b/tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini index f584fce5df1..268949ced5c 100644 --- a/tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini +++ b/tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini @@ -1,5 +1,4 @@ [005.html] - expected: ERROR [dedicated worker in shared worker in dedicated worker] expected: FAIL diff --git a/tests/wpt/web-platform-tests/animation-worklet/worklet-animation-animator-name.https.html b/tests/wpt/web-platform-tests/animation-worklet/worklet-animation-animator-name.https.html new file mode 100644 index 00000000000..bd886ccd020 --- /dev/null +++ b/tests/wpt/web-platform-tests/animation-worklet/worklet-animation-animator-name.https.html @@ -0,0 +1,30 @@ +<!DOCTYPE html> + +<title>Worklet Animation's animator name should be accessible via animatorName property</title> +<link rel="help" href="https://drafts.css-houdini.org/css-animationworklet/"> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="common.js"></script> + +<script id="test_animator" type="text/worklet"> + class NoopAnimator { + animate(currentTime, effect) {} + } + registerAnimator('Tokyo', NoopAnimator); + registerAnimator('دزفول', NoopAnimator); +</script> + +<body></body> + +<script> +promise_test(async t => { + await runInAnimationWorklet(document.getElementById('test_animator').textContent); + + // An ascii name and a non-ascii one. + for (let name of ['Tokyo', 'دزفول']) { + const animation = new WorkletAnimation(name, new KeyframeEffect(document.body, {})); + assert_equals(name, animation.animatorName); + } +}, 'Verify that animatorName matches passed name'); +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-animations/responsive/column-rule-color-001.html b/tests/wpt/web-platform-tests/css/css-animations/responsive/column-rule-color-001.html new file mode 100644 index 00000000000..9953db43545 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-animations/responsive/column-rule-color-001.html @@ -0,0 +1,61 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>CSS Animations: column-rule-color animations respond to style changes</title> +<link rel="help" href="https://drafts.csswg.org/css-multicol-1/#crc"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<style> + .paused { + animation-duration: 4s; + animation-timing-function: linear; + animation-delay: -2s; + animation-play-state: paused; + } + #container { + color: rgb(80, 0, 0); + } + #first { + animation-name: first-anim; + color: rgb(60, 0, 0); + } + #second { + animation-name: second-anim; + } + @keyframes first-anim { + from { column-rule-color: currentColor; } + to { column-rule-color: rgb(0, 60, 0); } + } + @keyframes second-anim { + from { column-rule-color: inherit; } + to { column-rule-color: rgb(0, 0, 80); } + } +</style> +</head> +<body> +<div id="container"> + <div id="first" class="paused"></div> + <div id="second" class="paused"></div> +</div> +<script> +'use strict'; +var container = document.getElementById('container'); + +test(() => { + const first = document.getElementById('first'); + assert_equals(getComputedStyle(first).columnRuleColor, 'rgb(30, 30, 0)'); + first.style.color = 'rgb(0, 0, 60)'; + assert_equals(getComputedStyle(first).columnRuleColor, 'rgb(0, 30, 30)'); +}, 'column-rule-color responds to currentColor changes'); + +test(() => { + const container = document.getElementById('container'); + const second = document.getElementById('second'); + assert_equals(getComputedStyle(second).columnRuleColor, 'rgb(40, 0, 40)'); + container.style.columnRuleColor = 'rgb(0, 80, 0)'; + assert_equals(getComputedStyle(second).columnRuleColor, 'rgb(0, 40, 40)'); +}, 'column-rule-color responds to inherited changes'); +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-animations/responsive/column-width-001.html b/tests/wpt/web-platform-tests/css/css-animations/responsive/column-width-001.html new file mode 100644 index 00000000000..7697eec3240 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-animations/responsive/column-width-001.html @@ -0,0 +1,76 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>CSS Animations: column-width animations respond to style changes</title> +<link rel="help" href="https://drafts.csswg.org/css-multicol-1/#cw"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<style> + .paused { + animation-duration: 4s; + animation-timing-function: linear; + animation-delay: -2s; + animation-play-state: paused; + } + #container { + column-width: 40px; + font-size: 10px; + } + #first { + animation-name: first-anim; + } + #second { + animation-name: second-anim; + } + #third { + animation-name: third-anim; + } + @keyframes first-anim { + from { column-width: 3em; } + to { column-width: 5em; } + } + @keyframes second-anim { + from { column-width: 40px; } + to { column-width: calc(40px - 2em); } + } + @keyframes third-anim { + from { column-width: 20px; } + to { column-width: inherit; } + } +</style> +</head> +<body> +<div id="container"> + <div id="first" class="paused"></div> + <div id="second" class="paused"></div> + <div id="third" class="paused"></div> +</div> +<script> +'use strict'; +var container = document.getElementById('container'); + +test(() => { + const first = document.getElementById('first'); + assert_equals(getComputedStyle(first).columnWidth, '40px'); + first.style.fontSize = '20px'; + assert_equals(getComputedStyle(first).columnWidth, '80px'); +}, 'column-width responds to font-size changes'); + +test(() => { + const second = document.getElementById('second'); + assert_equals(getComputedStyle(second).columnWidth, '30px'); + second.style.fontSize = '90px'; + assert_equals(getComputedStyle(second).columnWidth, '0px'); +}, 'column-width clamps to 0px'); + +test(() => { + const container = document.getElementById('container'); + const third = document.getElementById('third'); + assert_equals(getComputedStyle(third).columnWidth, '30px'); + container.style.columnWidth = 'auto'; + assert_equals(getComputedStyle(third).columnWidth, 'auto'); +}, 'column-width responds to inherited changes'); +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-masking/parsing/mask-position-invalid.html b/tests/wpt/web-platform-tests/css/css-masking/parsing/mask-position-invalid.html new file mode 100644 index 00000000000..c246a1e795e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/parsing/mask-position-invalid.html @@ -0,0 +1,30 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>CSS Masking Module Level 1: parsing mask-position with invalid values</title> +<link rel="help" href="https://www.w3.org/TR/css-masking-1/#the-mask-position"> +<meta name="assert" content="mask-position supports only the '<position>#' grammar."> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/css/support/parsing-testcommon.js"></script> +</head> +<body> +<script> +test_invalid_value("mask-position", "auto"); +test_invalid_value("mask-position", "1px 2px 3px"); +test_invalid_value("mask-position", "left right"); +test_invalid_value("mask-position", "bottom 10%"); +test_invalid_value("mask-position", "bottom 10% top 20%"); + +test_invalid_value("mask-position", "center left 1px"); +test_invalid_value("mask-position", "center top 2px"); +test_invalid_value("mask-position", "right 3% center"); +test_invalid_value("mask-position", "left 4px top"); +test_invalid_value("mask-position", "right top 5px"); +test_invalid_value("mask-position", "bottom 6% center"); +test_invalid_value("mask-position", "bottom 7% left"); +test_invalid_value("mask-position", "bottom right 8%"); +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-masking/parsing/mask-position-valid.html b/tests/wpt/web-platform-tests/css/css-masking/parsing/mask-position-valid.html new file mode 100644 index 00000000000..efdf55a0182 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/parsing/mask-position-valid.html @@ -0,0 +1,35 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>CSS Masking Module Level 1: parsing mask-position with valid values</title> +<link rel="help" href="https://www.w3.org/TR/css-masking-1/#the-mask-position"> +<meta name="assert" content="mask-position supports the full '<position>#' grammar."> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/css/support/parsing-testcommon.js"></script> +</head> +<body> +<script> +test_valid_value("mask-position", "10%", "10% center"); +test_valid_value("mask-position", "right 30% top 60px"); +test_valid_value("mask-position", "-20% -30px"); +test_valid_value("mask-position", "30px center"); +test_valid_value("mask-position", "40px top"); +test_valid_value("mask-position", "bottom 10% right 20%", "right 20% bottom 10%"); +test_valid_value("mask-position", "bottom right", "right bottom"); +test_valid_value("mask-position", "center 50px"); +test_valid_value("mask-position", "center bottom"); +test_valid_value("mask-position", "center left", "left center"); +test_valid_value("mask-position", "left", "left center"); +test_valid_value("mask-position", "left bottom"); +test_valid_value("mask-position", "right 40%"); +test_valid_value("mask-position", "top", "center top"); +test_valid_value("mask-position", "top center", "center top"); +test_valid_value("mask-position", "center", "center center"); + +test_valid_value("mask-position", "bottom left, right 20%", "left bottom, right 20%"); +test_valid_value("mask-position", "top, center, left", "center top, center center, left center"); +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-paint-api/hidpi/canvas-transform-ref.html b/tests/wpt/web-platform-tests/css/css-paint-api/hidpi/canvas-transform-ref.html new file mode 100644 index 00000000000..48d46e8e561 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-paint-api/hidpi/canvas-transform-ref.html @@ -0,0 +1,22 @@ +<!DOCTYPE html> +<html> +<body> +<canvas id ="canvas" width="540" height="550"></canvas> +<script> +var canvas = document.getElementById('canvas'); +canvas.style.width = (canvas.width / devicePixelRatio) + 'px'; +canvas.style.height = (canvas.height / devicePixelRatio) + 'px'; +var ctx = canvas.getContext("2d"); +ctx.scale(devicePixelRatio, devicePixelRatio); +var fillW = 250; +var fillH = 50; +ctx.setTransform(devicePixelRatio, 0, 0, devicePixelRatio, 0, 100); +ctx.beginPath(); +ctx.rect(0, 0, fillW, fillH); +ctx.closePath(); +ctx.clip(); +ctx.fillStyle = 'green'; +ctx.fillRect(0, 0, fillW, fillH); +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-paint-api/hidpi/canvas-transform.https.html b/tests/wpt/web-platform-tests/css/css-paint-api/hidpi/canvas-transform.https.html new file mode 100644 index 00000000000..d160a8673c2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-paint-api/hidpi/canvas-transform.https.html @@ -0,0 +1,43 @@ +<!DOCTYPE html> +<html class="reftest-wait"> +<link rel="help" href="https://drafts.css-houdini.org/css-paint-api/#dom-css-paintworklet"> +<link rel="match" href="canvas-transform-ref.html"> +<style> +.container { + width: 270px; + height: 275px; +} + +#canvas-geometry { + background-image: paint(geometry); +} +</style> +<script src="/common/reftest-wait.js"></script> +<script src="/common/worklet-reftest.js"></script> +<body> +<div id="canvas-geometry" class="container"></div> + +<script id="code" type="text/worklet"> +// Regression test for crbug.com/970783. The canvas transform matrix should +// account for the devicePixelRatio, such that the clip bounds can be +// properly computed when applying clips. +registerPaint('geometry', class { + paint(ctx, geom) { + var fillW = 250; + var fillH = 50; + ctx.setTransform(devicePixelRatio, 0, 0, devicePixelRatio, 0, 100); + ctx.beginPath(); + ctx.rect(0, 0, fillW, fillH); + ctx.closePath(); + ctx.clip(); + ctx.fillStyle = 'green'; + ctx.fillRect(0, 0, fillW, fillH); + } +}); +</script> + +<script> + importWorkletAndTerminateTestAfterAsyncPaint(CSS.paintWorklet, document.getElementById('code').textContent); +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/first-line-change-inline-color-nested-ref.html b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-change-inline-color-nested-ref.html new file mode 100644 index 00000000000..84becd9a78d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-change-inline-color-nested-ref.html @@ -0,0 +1,2 @@ +<!DOCTYPE html> +<p style="color: blue">Blue <span style="color: green">This text should be green.</span> Blue</p> diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/first-line-change-inline-color-nested.html b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-change-inline-color-nested.html new file mode 100644 index 00000000000..4a58f1ea5b6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-change-inline-color-nested.html @@ -0,0 +1,23 @@ +<!DOCTYPE html> +<html class="reftest-wait"> +<link rel="help" href="https://drafts.csswg.org/css-pseudo-4/#first-line-pseudo"> +<link rel="match" href="first-line-change-inline-color-nested-ref.html"> +<style> + #block { color: green; } + #block::first-line { color: blue; } + .green { color: green; } +</style> +<div id="block"> + <div> + <p>Blue <span id="target"><span>This text should be green.</span></span> Blue</p> + </div> +</div> +<script> +requestAnimationFrame(() => { + requestAnimationFrame(() => { + target.className = 'green'; + document.documentElement.removeAttribute('class'); + }); +}); +</script> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/first-line-change-inline-color-ref.html b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-change-inline-color-ref.html new file mode 100644 index 00000000000..84becd9a78d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-change-inline-color-ref.html @@ -0,0 +1,2 @@ +<!DOCTYPE html> +<p style="color: blue">Blue <span style="color: green">This text should be green.</span> Blue</p> diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/first-line-change-inline-color.html b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-change-inline-color.html new file mode 100644 index 00000000000..2a5be916b01 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-change-inline-color.html @@ -0,0 +1,23 @@ +<!DOCTYPE html> +<html class="reftest-wait"> +<link rel="help" href="https://drafts.csswg.org/css-pseudo-4/#first-line-pseudo"> +<link rel="match" href="first-line-change-inline-color-ref.html"> +<style> + #block { color: green; } + #block::first-line { color: blue; } + .green { color: green; } +</style> +<div id="block"> + <div> + <p>Blue <span id="target">This text should be green.</span> Blue</p> + </div> +</div> +<script> +requestAnimationFrame(() => { + requestAnimationFrame(() => { + target.className = 'green'; + document.documentElement.removeAttribute('class'); + }); +}); +</script> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/first-line-on-ancestor-block-ref.html b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-on-ancestor-block-ref.html new file mode 100644 index 00000000000..7193bf25eb8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-on-ancestor-block-ref.html @@ -0,0 +1,5 @@ +<!DOCTYPE html> +<div> + <span style="color: green">This text should be green.</span><br> + <span style="color: blue">This text should be blue.</span> +</div> diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/first-line-on-ancestor-block.html b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-on-ancestor-block.html new file mode 100644 index 00000000000..6b797107df8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-on-ancestor-block.html @@ -0,0 +1,16 @@ +<!DOCTYPE html> +<link rel="help" href="https://drafts.csswg.org/css-pseudo-4/#first-line-pseudo"> +<link rel="match" href="first-line-on-ancestor-block-ref.html"> +<style> + #block::first-line { color: green; } +</style> +<div id="block"> + <div> + <div style="color: blue"> + <div> + <span><span>This text should be green.</span></span><br> + This text should be blue. + </div> + </div> + </div> +</div> diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/first-line-with-out-of-flow-ref.html b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-with-out-of-flow-ref.html new file mode 100644 index 00000000000..7193bf25eb8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-with-out-of-flow-ref.html @@ -0,0 +1,5 @@ +<!DOCTYPE html> +<div> + <span style="color: green">This text should be green.</span><br> + <span style="color: blue">This text should be blue.</span> +</div> diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/first-line-with-out-of-flow.html b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-with-out-of-flow.html new file mode 100644 index 00000000000..798ecf8264e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-with-out-of-flow.html @@ -0,0 +1,20 @@ +<!DOCTYPE html> +<link rel="help" href="https://drafts.csswg.org/css-pseudo-4/#first-line-pseudo"> +<link rel="match" href="first-line-with-out-of-flow-ref.html"> +<style> + #block::first-line { color: green; } +</style> +<div id="block"> + <div style="position: absolute"><br></div> + <div style="float: right"><br></div> + <div> + <div style="position: absolute"><br></div> + <div style="float: right"><br></div> + <div style="color: blue"> + <div> + <span><span>This text should be green.</span></span><br> + This text should be blue. + </div> + </div> + </div> +</div> diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/reference/white-space-pre-wrap-trailing-spaces-004-ref.html b/tests/wpt/web-platform-tests/css/css-text/white-space/reference/white-space-pre-wrap-trailing-spaces-004-ref.html new file mode 100644 index 00000000000..72e4642022a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/white-space/reference/white-space-pre-wrap-trailing-spaces-004-ref.html @@ -0,0 +1,15 @@ +<!doctype html> +<meta charset=utf-8> +<title>CSS test Reference</title> +<link rel="author" title="Javier Fernandez" href="mailto:jfernandez@igalia.com" /> + +<style> +div { + font: 25px/1 Ahem; + color: green; +} +</style> + +<p>This test passes if there is a green square and no red. + +<div>XX<br>XX</div> diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/white-space-pre-wrap-trailing-spaces-004.html b/tests/wpt/web-platform-tests/css/css-text/white-space/white-space-pre-wrap-trailing-spaces-004.html new file mode 100644 index 00000000000..becd4638eb0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/white-space/white-space-pre-wrap-trailing-spaces-004.html @@ -0,0 +1,21 @@ +<!doctype html> +<meta charset=utf-8> +<title>CSS Text test: hanging trailing spaces with white-space:pre-wrap</title> +<link rel="author" title="Javier Fernandez" href="mailto:jfernandez@igalia.com" /> +<link rel="help" href="https://drafts.csswg.org/css-text-3/#white-space-phase-2"> +<link rel="match" href="reference/white-space-pre-wrap-trailing-spaces-004-ref.html"> +<meta name="assert" content="Preserved white space at the end of the line is hanged when white-space is pre-wrap."> +<style> +div { + font: 25px/1 Ahem; + color: green; + background: red; + + width: 2ch; + white-space: pre-wrap; +} +</style> + +<p>This test passes if there is a green square and no red. +<div>XX<span> </span>XX</div> + diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/white-space-pre-wrap-trailing-spaces-005.html b/tests/wpt/web-platform-tests/css/css-text/white-space/white-space-pre-wrap-trailing-spaces-005.html new file mode 100644 index 00000000000..f62e2e5c005 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/white-space/white-space-pre-wrap-trailing-spaces-005.html @@ -0,0 +1,29 @@ +<!doctype html> +<meta charset=utf-8> +<title>CSS Text test: hanging trailing spaces with white-space:pre-wrap</title> +<link rel="author" title="Javier Fernandez" href="mailto:jfernandez@igalia.com" /> +<link rel="help" href="https://drafts.csswg.org/css-text-3/#white-space-phase-2"> +<link rel="match" href="reference/white-space-pre-wrap-trailing-spaces-004-ref.html"> +<meta name="assert" content="Preserved white space at the end of the line is hanged when white-space is pre-wrap."> +<style> +div { + font: 10px/1 Ahem; +} +.ref { + position: absolute; + color: red; + z-index: -1; +} +.ref span { color: green; } +.test { + color: green; + + width: 5ch; + white-space: pre-wrap; +} +</style> + +<p>This test passes if there is a green square and no red. +<div class="ref">XX<span>XXX</span><br>X<span>XX</span>X<span>X</span><br><span>XXXXX</span><br><span>XXXXX</span><br><span>XXXXX</span></div> +<div class="test">XX<span> </span><span>X X </span></div> + diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/white-space-pre-wrap-trailing-spaces-006.html b/tests/wpt/web-platform-tests/css/css-text/white-space/white-space-pre-wrap-trailing-spaces-006.html new file mode 100644 index 00000000000..820012e6ca1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/white-space/white-space-pre-wrap-trailing-spaces-006.html @@ -0,0 +1,29 @@ +<!doctype html> +<meta charset=utf-8> +<title>CSS Text test: hanging trailing spaces with white-space:pre-wrap</title> +<link rel="author" title="Javier Fernandez" href="mailto:jfernandez@igalia.com" /> +<link rel="help" href="https://drafts.csswg.org/css-text-3/#white-space-phase-2"> +<link rel="match" href="reference/white-space-pre-wrap-trailing-spaces-004-ref.html"> +<meta name="assert" content="Preserved white space at the end of the line is hanged when white-space is pre-wrap and any overflowing space is removed."> +<style> +div { + font: 25px/1 Ahem; +} +.ref { + position: absolute; + color: red; + z-index: -1; +} +.test span { background: red; } +.test { + color: green; + width: 2ch; + white-space: pre-wrap; +} +.test span { background: green; } +</style> + +<p>This test passes if there is a green square and no red. +<div class="ref">X<span>X</span><br>XX</div> +<div class="test">X<span>  </span><span> XX</span></div> + diff --git a/tests/wpt/web-platform-tests/css/css-transforms/parsing/scale-parsing-valid.html b/tests/wpt/web-platform-tests/css/css-transforms/parsing/scale-parsing-valid.html index b9afbc848a3..2ae12222f13 100644 --- a/tests/wpt/web-platform-tests/css/css-transforms/parsing/scale-parsing-valid.html +++ b/tests/wpt/web-platform-tests/css/css-transforms/parsing/scale-parsing-valid.html @@ -16,9 +16,11 @@ test_valid_value("scale", "none"); test_valid_value("scale", "1"); +test_valid_value("scale", "100"); test_valid_value("scale", "100 100", "100"); -test_valid_value("scale", "100 200"); +test_valid_value("scale", "100 100 1"); +test_valid_value("scale", "100 200"); test_valid_value("scale", "100 200 1"); test_valid_value("scale", "100 200 300"); </script> diff --git a/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-direction-rtl.html b/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-direction-rtl.html deleted file mode 100644 index fea92d1da57..00000000000 --- a/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-direction-rtl.html +++ /dev/null @@ -1,77 +0,0 @@ -<!DOCTYPE html> -<title>CSSOM View - scrollIntoView considers direction:rtl</title> -<meta charset="utf-8"> -<link rel="author" title="Cathie Chen" href="mailto:cathiechen@igalia.com"> -<link rel="help" href="https://drafts.csswg.org/cssom-view/#dom-element-scrollintoview"> -<link rel="help" href="https://drafts.csswg.org/cssom-view/#scroll-an-element"> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> - -<style> -.box { - float: left; - width: 200px; - height: 200px; -} -#scroller { - direction: rtl; - overflow-x: scroll; - width: 300px; - height: 215px; -} -#container{ - width: 600px; - height: 200px; -} -#target { - background-color: #ff0; -} -</style> -<body> -<div id="scroller"> - <div id="container"> - <div class="row"> - <div class="box"></div> - <div class="box" id="target"></div> - <div class="box"></div> - </div> - </div> -</div> - -<script> -// This page is direction: rtl and scroller is direction: rtl. -// So the the overflow direction is leftward, downward. The beginning edges are the top and right edges. -// And the ending edges are the bottom and left edges. -// Acording to the spec, x is min(0, max(x, element padding edge width - element scrolling area width)). -// So x is nonpositive and decreases leftward. - -var target = document.getElementById("target"); -var scroller = document.getElementById("scroller"); -var box_width = target.offsetWidth; -var scroller_width = scroller.offsetWidth; - -var leftEdge = -2*box_width + scroller_width; -var center = -(3*box_width - scroller_width)/2; -var rightEdge = - box_width; - -test(() => { - scroller.scrollTo(0, 0); - target.scrollIntoView({inline: "start"}); - assert_approx_equals(scroller.scrollLeft, rightEdge, 0.5, "start should be the right edge"); -}, `scrollIntoView({inline: "start"}), direction: rtl`); - -test(() => { - scroller.scrollTo(0, 0); - target.scrollIntoView({inline: "center"}); - assert_approx_equals(scroller.scrollLeft, center, 0.5, "should center the target"); -}, `scrollIntoView({inline: "center"}), direction: rtl`); - -test(() => { - scroller.scrollTo(0, 0); - target.scrollIntoView({inline: "end"}); - assert_approx_equals(scroller.scrollLeft, leftEdge, 0.5, "end should be the left edge"); -}, `scrollIntoView({inline: "end"}), direction: rtl`); -</script> - -</body> -</html> diff --git a/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-horizontal-tb-writing-mode-and-rtl-direction.html b/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-horizontal-tb-writing-mode-and-rtl-direction.html new file mode 100644 index 00000000000..3ef9d62a365 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-horizontal-tb-writing-mode-and-rtl-direction.html @@ -0,0 +1,111 @@ +<!DOCTYPE html> +<title>CSSOM View - scrollIntoView considers horizontal-tb and rtl direction</title> +<meta charset="utf-8"> +<link rel="author" title="Cathie Chen" href="mailto:cathiechen@igalia.com"> +<link rel="help" href="https://drafts.csswg.org/cssom-view/#dom-element-scrollintoview"> +<link rel="help" href="https://drafts.csswg.org/cssom-view/#scroll-an-element"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<style> +.box { + float: left; + width: 200px; + height: 200px; +} +#scroller { + direction: rtl; + overflow: scroll; + width: 300px; + height: 300px; +} +#container{ + width: 600px; + height: 600px; +} +#target { + background-color: #ff0; +} +</style> +<body> +<div id="scroller"> + <div id="container"> + <!-- ROW-1 --> + <div class="row"> + <div class="box"></div> + <div class="box"></div> + <div class="box"></div> + </div> + + <!-- ROW-2 --> + <div class="row"> + <div class="box"></div> + <div class="box" id="target"></div> + <div class="box"></div> + </div> + + <!-- ROW-3 --> + <div class="row"> + <div class="box"></div> + <div class="box"></div> + <div class="box"></div> + </div> + </div> +</div> + +<script> +// In horizontal-tb mode and rtl direction, X corresponds to the inline axis +// and is oriented leftward. Y corresponds to the block axis and is oriented +// downward. So the beginning edges are the top and right edges and the ending +// edges are the bottom and left edges. + +// According to the spec, x is min(0, max(x, element padding edge width - element scrolling area width)). +// So x is nonpositive and decreases leftward. + +// This assumes that the horizontal scrollbar is on the bottom side +// and the vertical scrollbar is on the left side. + +var target = document.getElementById("target"); +var scroller = document.getElementById("scroller"); +var scrollbar_width = scroller.offsetWidth - scroller.clientWidth; + +var scroller_width = scroller.offsetWidth; +var scroller_height = scroller.offsetHeight; +var box_width = target.offsetWidth; +var box_height = target.offsetHeight; + +var expectedX = { + inlineStart: -box_width, + inlineCenter: -((3*box_width - scroller_width)/2) - scrollbar_width/2, + inlineEnd: -(2*box_width - scroller_width) - scrollbar_width, +}; + +var expectedY = { + blockStart: box_height, + blockCenter: (3*box_height - scroller_height)/2 + scrollbar_width/2, + blockEnd: 2*box_height - scroller_height + scrollbar_width, +}; + +[ + [{block: "start", inline: "start"}, expectedX.inlineStart, expectedY.blockStart], + [{block: "start", inline: "center"}, expectedX.inlineCenter, expectedY.blockStart], + [{block: "start", inline: "end"}, expectedX.inlineEnd, expectedY.blockStart], + [{block: "center", inline: "start"}, expectedX.inlineStart, expectedY.blockCenter], + [{block: "center", inline: "center"}, expectedX.inlineCenter, expectedY.blockCenter], + [{block: "center", inline: "end"}, expectedX.inlineEnd, expectedY.blockCenter], + [{block: "end", inline: "start"}, expectedX.inlineStart, expectedY.blockEnd], + [{block: "end", inline: "center"}, expectedX.inlineCenter, expectedY.blockEnd], + [{block: "end", inline: "end"}, expectedX.inlineEnd, expectedY.blockEnd], +].forEach(([input, expectedX, expectedY]) => { + test(() => { + scroller.scrollTo(0, 0); + target.scrollIntoView(input); + assert_approx_equals(scroller.scrollLeft, expectedX, 0.5, "scrollX"); + assert_approx_equals(scroller.scrollTop, expectedY, 0.5, "scrollY"); + }, `scrollIntoView(${JSON.stringify(input)})`); +}) + +</script> + +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-horizontal-tb-writing-mode.html b/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-horizontal-tb-writing-mode.html new file mode 100644 index 00000000000..49d5f5d8653 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-horizontal-tb-writing-mode.html @@ -0,0 +1,106 @@ +<!DOCTYPE html> +<title>CSSOM View - scrollIntoView considers horizontal-tb writing mode</title> +<meta charset="utf-8"> +<link rel="author" title="Cathie Chen" href="mailto:cathiechen@igalia.com"> +<link rel="help" href="https://drafts.csswg.org/cssom-view/#dom-element-scrollintoview"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<style> +.box { + float: left; + width: 200px; + height: 200px; +} +#scroller { + overflow: scroll; + width: 300px; + height: 300px; +} +#container{ + width: 600px; + height: 600px; +} +#target { + background-color: #ff0; +} +</style> +<body> +<div id="scroller"> + <div id="container"> + <!-- ROW-1 --> + <div class="row"> + <div class="box"></div> + <div class="box"></div> + <div class="box"></div> + </div> + + <!-- ROW-2 --> + <div class="row"> + <div class="box"></div> + <div class="box" id="target"></div> + <div class="box"></div> + </div> + + <!-- ROW-3 --> + <div class="row"> + <div class="box"></div> + <div class="box"></div> + <div class="box"></div> + </div> + </div> +</div> + +<script> +// In horizontal-tb mode, X corresponds to the inline axis and is oriented +// rightward. Y corresponds to the block axis and is oriented downward. +// So the beginning edges are the top and left edges and the ending +// edges are the bottom and right edges. + +// This assumes that the horizontal scrollbar is on the bottom side and +// the vertical scrollbar is on the right side. + +var target = document.getElementById("target"); +var scroller = document.getElementById("scroller"); +var scrollbar_width = scroller.offsetWidth - scroller.clientWidth; + +var scroller_width = scroller.offsetWidth; +var scroller_height = scroller.offsetHeight; +var box_width = target.offsetWidth; +var box_height = target.offsetHeight; + +var expectedX = { + inlineStart: box_width, + inlineCenter: (3*box_width - scroller_width)/2 + scrollbar_width/2, + inlineEnd: 2*box_width - scroller_width + scrollbar_width, + }; + +var expectedY = { + blockStart: box_height, + blockCenter: (3*box_height - scroller_height)/2 + scrollbar_width/2, + blockEnd: 2*box_height - scroller_height + scrollbar_width, +}; + +[ + [{block: "start", inline: "start"}, expectedX.inlineStart, expectedY.blockStart], + [{block: "start", inline: "center"}, expectedX.inlineCenter, expectedY.blockStart], + [{block: "start", inline: "end"}, expectedX.inlineEnd, expectedY.blockStart], + [{block: "center", inline: "start"}, expectedX.inlineStart, expectedY.blockCenter], + [{block: "center", inline: "center"}, expectedX.inlineCenter, expectedY.blockCenter], + [{block: "center", inline: "end"}, expectedX.inlineEnd, expectedY.blockCenter], + [{block: "end", inline: "start"}, expectedX.inlineStart, expectedY.blockEnd], + [{block: "end", inline: "center"}, expectedX.inlineCenter, expectedY.blockEnd], + [{block: "end", inline: "end"}, expectedX.inlineEnd, expectedY.blockEnd], +].forEach(([input, expectedX, expectedY]) => { + test(() => { + scroller.scrollTo(0, 0); + target.scrollIntoView(input); + assert_approx_equals(scroller.scrollLeft, expectedX, 0.5, "scrollX"); + assert_approx_equals(scroller.scrollTop, expectedY, 0.5, "scrollY"); + }, `scrollIntoView(${JSON.stringify(input)})`); +}) + +</script> + +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-vertical-lr-writing-mode-and-rtl-direction.html b/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-vertical-lr-writing-mode-and-rtl-direction.html new file mode 100644 index 00000000000..3301141ee01 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-vertical-lr-writing-mode-and-rtl-direction.html @@ -0,0 +1,112 @@ +<!DOCTYPE html> +<title>CSSOM View - scrollIntoView considers vertical-lr and rtl direction</title> +<meta charset="utf-8"> +<link rel="author" title="Cathie Chen" href="mailto:cathiechen@igalia.com"> +<link rel="help" href="https://drafts.csswg.org/cssom-view/#dom-element-scrollintoview"> +<link rel="help" href="https://drafts.csswg.org/cssom-view/#scroll-an-element"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<style> +.box { + float: left; + width: 200px; + height: 200px; +} +#scroller { + writing-mode: vertical-lr; + direction: rtl; + overflow: scroll; + width: 300px; + height: 300px; +} +#container{ + width: 600px; + height: 600px; +} +#target { + background-color: #ff0; +} +</style> +<body> +<div id="scroller"> + <div id="container"> + <!-- ROW-1 --> + <div class="row"> + <div class="box"></div> + <div class="box"></div> + <div class="box"></div> + </div> + + <!-- ROW-2 --> + <div class="row"> + <div class="box"></div> + <div class="box" id="target"></div> + <div class="box"></div> + </div> + + <!-- ROW-3 --> + <div class="row"> + <div class="box"></div> + <div class="box"></div> + <div class="box"></div> + </div> + </div> +</div> + +<script> +// In vertical-lr mode and rtl direction, X corresponds to the block axis +// and is oriented rightward. Y corresponds to the inline axis and is oriented +// upward. So the beginning edges are the bottom and left edges and the ending +// edges are the top and right edges. + +// According to the spec, y be min(0, max(y, element padding edge height - element scrolling area height)). +// So y is nonpositive and decreases upward. + +// This assumes that the horizontal scrollbar +// is on the bottom side and the vertical scrollbar is on the right side. + +var target = document.getElementById("target"); +var scroller = document.getElementById("scroller"); +var scrollbar_width = scroller.offsetWidth - scroller.clientWidth; + +var scroller_width = scroller.offsetWidth; +var scroller_height = scroller.offsetHeight; +var box_width = target.offsetWidth; +var box_height = target.offsetHeight; + +var expectedX = { + blockStart: box_width, + blockCenter: (3*box_width - scroller_width)/2 + scrollbar_width/2, + blockEnd: 2*box_width - scroller_width + scrollbar_width, +}; + +var expectedY = { + inlineStart: -box_height, + inlineCenter: -((3*box_height - scroller_height)/2) - scrollbar_width/2, + inlineEnd: -(2*box_height - scroller_height) - scrollbar_width, +}; + +[ + [{block: "start", inline: "start"}, expectedX.blockStart, expectedY.inlineStart], + [{block: "start", inline: "center"}, expectedX.blockStart, expectedY.inlineCenter], + [{block: "start", inline: "end"}, expectedX.blockStart, expectedY.inlineEnd], + [{block: "center", inline: "start"}, expectedX.blockCenter, expectedY.inlineStart], + [{block: "center", inline: "center"}, expectedX.blockCenter, expectedY.inlineCenter], + [{block: "center", inline: "end"}, expectedX.blockCenter, expectedY.inlineEnd], + [{block: "end", inline: "start"}, expectedX.blockEnd, expectedY.inlineStart], + [{block: "end", inline: "center"}, expectedX.blockEnd, expectedY.inlineCenter], + [{block: "end", inline: "end"}, expectedX.blockEnd, expectedY.inlineEnd], +].forEach(([input, expectedX, expectedY]) => { + test(() => { + scroller.scrollTo(0, 0); + target.scrollIntoView(input); + assert_approx_equals(scroller.scrollLeft, expectedX, 0.5, "scrollX"); + assert_approx_equals(scroller.scrollTop, expectedY, 0.5, "scrollY"); + }, `scrollIntoView(${JSON.stringify(input)})`); +}) + +</script> + +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-vertical-lr-writing-mode.html b/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-vertical-lr-writing-mode.html new file mode 100644 index 00000000000..9242a49c0bc --- /dev/null +++ b/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-vertical-lr-writing-mode.html @@ -0,0 +1,107 @@ +<!DOCTYPE html> +<title>CSSOM View - scrollIntoView considers vertical-lr writing mode</title> +<meta charset="utf-8"> +<link rel="author" title="Cathie Chen" href="mailto:cathiechen@igalia.com"> +<link rel="help" href="https://drafts.csswg.org/cssom-view/#dom-element-scrollintoview"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<style> +.box { + float: left; + width: 200px; + height: 200px; +} +#scroller { + writing-mode: vertical-lr; + overflow: scroll; + width: 300px; + height: 300px; +} +#container{ + width: 600px; + height: 600px; +} +#target { + background-color: #ff0; +} +</style> +<body> +<div id="scroller"> + <div id="container"> + <!-- ROW-1 --> + <div class="row"> + <div class="box"></div> + <div class="box"></div> + <div class="box"></div> + </div> + + <!-- ROW-2 --> + <div class="row"> + <div class="box"></div> + <div class="box" id="target"></div> + <div class="box"></div> + </div> + + <!-- ROW-3 --> + <div class="row"> + <div class="box"></div> + <div class="box"></div> + <div class="box"></div> + </div> + </div> +</div> + +<script> +// In vertical-lr mode, X corresponds to the block axis and is oriented +// rightward. Y corresponds to the inline axis and is oriented downward. +// So the beginning edges are the top and left edges and the ending +// edges are the bottom and right edges. + +// This assumes that the horizontal scrollbar is on the bottom side and +// the vertical scrollbar is on the right side. + +var target = document.getElementById("target"); +var scroller = document.getElementById("scroller"); +var scrollbar_width = scroller.offsetWidth - scroller.clientWidth; + +var scroller_width = scroller.offsetWidth; +var scroller_height = scroller.offsetHeight; +var box_width = target.offsetWidth; +var box_height = target.offsetHeight; + +var expectedX = { + blockStart: box_width, + blockCenter: (3*box_width - scroller_width)/2 + (scrollbar_width/2), + blockEnd: (2*box_width) - scroller_width + scrollbar_width, +}; + +var expectedY = { + inlineStart: box_height, + inlineCenter: ((3*box_height - scroller_height)/2) + (scrollbar_width/2), + inlineEnd: ((2*box_height) - scroller_height) + scrollbar_width, +}; + +[ + [{block: "start", inline: "start"}, expectedX.blockStart, expectedY.inlineStart], + [{block: "start", inline: "center"}, expectedX.blockStart, expectedY.inlineCenter], + [{block: "start", inline: "end"}, expectedX.blockStart, expectedY.inlineEnd], + [{block: "center", inline: "start"}, expectedX.blockCenter, expectedY.inlineStart], + [{block: "center", inline: "center"}, expectedX.blockCenter, expectedY.inlineCenter], + [{block: "center", inline: "end"}, expectedX.blockCenter, expectedY.inlineEnd], + [{block: "end", inline: "start"}, expectedX.blockEnd, expectedY.inlineStart], + [{block: "end", inline: "center"}, expectedX.blockEnd, expectedY.inlineCenter], + [{block: "end", inline: "end"}, expectedX.blockEnd, expectedY.inlineEnd], +].forEach(([input, expectedX, expectedY]) => { + test(() => { + scroller.scrollTo(0, 0); + target.scrollIntoView(input); + assert_approx_equals(scroller.scrollLeft, expectedX, 0.5, "scrollX"); + assert_approx_equals(scroller.scrollTop, expectedY, 0.5, "scrollY"); + }, `scrollIntoView(${JSON.stringify(input)})`); +}) + +</script> + +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-vertical-rl-writing-mode.html b/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-vertical-rl-writing-mode.html index 56bcf214517..cec27f412c9 100644 --- a/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-vertical-rl-writing-mode.html +++ b/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-vertical-rl-writing-mode.html @@ -55,7 +55,11 @@ <script> // In vertical-rl mode, X corresponds to the block axis and is oriented // leftward. Y corresponds to the inline axis and is oriented downward. +// So the beginning edges are the top and right edges and the ending +// edges are the bottom and left edges. + // This assumes that the horizontal scrollbar is on the bottom side. + var target = document.getElementById("target"); var scroller = document.getElementById("scroller"); var scrollbar_width = scroller.offsetWidth - scroller.clientWidth; @@ -102,17 +106,6 @@ if(scroller.scrollLeft === 0) { }; } -// This formats dict as a string suitable as test name. -// format_value() is provided by testharness.js, -// which also preserves sign for -0. -function format_dict(dict) { - const props = []; - for (let prop in dict) { - props.push(`${prop}: ${format_value(dict[prop])}`); - } - return `{${props.join(", ")}}`; -} - [ [{block: "start", inline: "start"}, expectedX.blockStart, expectedY.inlineStart], [{block: "start", inline: "center"}, expectedX.blockStart, expectedY.inlineCenter], @@ -129,7 +122,7 @@ function format_dict(dict) { target.scrollIntoView(input); assert_approx_equals(scroller.scrollLeft, expectedX, 0.5, "scrollX"); assert_approx_equals(scroller.scrollTop, expectedY, 0.5, "scrollY"); - }, `scrollIntoView(${format_dict(input)})`); + }, `scrollIntoView(${JSON.stringify(input)})`); }) </script> diff --git a/tests/wpt/web-platform-tests/element-timing/buffer-before-onload.html b/tests/wpt/web-platform-tests/element-timing/buffer-before-onload.html index 88a641bbb66..68eeeefe15f 100644 --- a/tests/wpt/web-platform-tests/element-timing/buffer-before-onload.html +++ b/tests/wpt/web-platform-tests/element-timing/buffer-before-onload.html @@ -10,8 +10,7 @@ <script> /* In this test, a slow image is added to the frame to delay onload. The entry - for the other image should be available before onload, and thus delivered to - the performance timeline. + is available from the observer with the buffered flag set to true. */ async_test(function(t) { if (!window.PerformanceElementTiming) { @@ -23,18 +22,26 @@ img.setAttribute('elementtiming', 'my_image'); img.setAttribute('id', 'my_id'); document.body.appendChild(img); - window.onload = t.step_func_done( () => { - const entries = performance.getEntriesByType('element'); - assert_greater_than_equal(entries.length, 1); - assert_equals(performance.getEntries().filter(e => e.identifier === 'my_image').length, 1); - const entry = entries[0]; - const index = window.location.href.lastIndexOf('/'); - const pathname = window.location.href.substring(0, index) + - '/resources/square20.jpg'; - checkElement(entry, pathname, 'my_image', 'my_id', beforeRender, img); - checkNaturalSize(entry, 20, 20); + + // this PerformanceObserver should be notified about the previously + // buffered element entry + new PerformanceObserver(function (entryList, observer) { + assert_equals(entryList.getEntries().length, 1); + entryList.getEntries().forEach(function(entry) { + assert_equals(entry.entryType, "element"); + const index = window.location.href.lastIndexOf('/'); + const pathname = window.location.href.substring(0, index) + + '/resources/square20.jpg'; + checkElement(entry, pathname, 'my_image', 'my_id', beforeRender, img); + checkNaturalSize(entry, 20, 20); + observer.disconnect(); + t.done(); + }); + }).observe({ + type: "element", + buffered: true }); - }, "Element Timing: image loads before onload."); + }, "Element Timing: image loads before onload available from buffered flag."); </script> </body> diff --git a/tests/wpt/web-platform-tests/event-timing/bufferbeforeonload.html b/tests/wpt/web-platform-tests/event-timing/bufferbeforeonload.html index c91546ae41a..c30c01aa96b 100644 --- a/tests/wpt/web-platform-tests/event-timing/bufferbeforeonload.html +++ b/tests/wpt/web-platform-tests/event-timing/bufferbeforeonload.html @@ -27,9 +27,7 @@ firstClickEnd = performance.now(); } - function validateEntries() { - const entries = performance.getEntriesByName('mousedown', 'event'); - + function validateEntries(entries) { const entriesBeforeOnload = entries.filter( e => e.startTime < onloadStart); assert_equals(entriesBeforeOnload.length, 1, @@ -48,8 +46,8 @@ const entriesAfterOnload = entries.filter( e => e.startTime >= onloadStart); - assert_equals(entriesAfterOnload.length, 0, - "Events after onload shouldn't be buffered."); + assert_equals(entriesAfterOnload.length, 1, + "Events after onload should still be buffered."); } /* Timeline: @@ -66,24 +64,31 @@ async_test(function(t) { clickTimeMin = performance.now(); clickAndBlockMain('button'); - // Use a dummy observer to know when both clicks have been dispatched. - const observerPromise = new Promise((resolve, reject) => { - let entryCount = 0; - new PerformanceObserver(entryList => { - entryCount += entryList.getEntries().filter( - entry => entry.name === 'mousedown').length; - if (entryCount >= 2) - resolve(); - }).observe({ entryTypes: ['event'] }); - }); // Event handlers will be dispatched asynchronously, so this will be called // before processing begins. processingStartMin = performance.now(); + const bufferedEntries = []; on_event(window, 'load', e => { onloadStart = performance.now(); - const clickPromise = clickAndBlockMain('button'); - Promise.all([observerPromise, clickPromise]).then( - t.step_func_done(validateEntries)); + // Register the observer after the page has been loaded + const observer = new PerformanceObserver(function (entryList, observer) { + entryList.getEntries().forEach(function(entry) { + assert_equals(entry.entryType, "event"); + if (entry.name === 'mousedown') { + bufferedEntries.push(entry); + } + if (bufferedEntries.length == 2) { + validateEntries(bufferedEntries) + observer.disconnect(); + t.done(); + } + }); + }) + observer.observe({ + type: "event", + buffered: true + }); + clickAndBlockMain('button'); }); }, "Event Timing: click, onload."); diff --git a/tests/wpt/web-platform-tests/event-timing/observethenonload.html b/tests/wpt/web-platform-tests/event-timing/observethenonload.html index e1c36e30210..4145eae0a59 100644 --- a/tests/wpt/web-platform-tests/event-timing/observethenonload.html +++ b/tests/wpt/web-platform-tests/event-timing/observethenonload.html @@ -20,19 +20,6 @@ let onloadStart; let observedEntries = []; - function verifyBuffer(bufferedEntries) { - assert_equals(bufferedEntries.length, 1, - "Only events before onload should be buffered."); - const entry = bufferedEntries[0]; - assert_greater_than(onloadStart, entry.startTime, - "Onload should be later than entry's start time."); - assert_greater_than(entry.processingStart, timeBeforeFirstClick, - "The entry's processing start should be after timeBeforeFirstClick"); - assert_less_than(entry.processingStart, timeAfterFirstClick, - "The entry's processing start should be before timeAfterFirstClick."); - verifyClickEvent(entry, true); - } - function verifyObserverEntries(observedEntries) { const entriesAfterFirstClick = observedEntries.filter( e => e.startTime > timeAfterFirstClick); @@ -60,6 +47,9 @@ "entry2's processing start should be berfore timeAfterFirstClick."); assert_greater_than(timeAfterFirstClick, entry2.startTime, "timeAfterFirstClick should be later than entry2's start time."); + // This should happen before onLoad + assert_greater_than(onloadStart, entry2.startTime, + "Onload should be later than entry's start time."); } /* Timeline: @@ -82,7 +72,7 @@ entry => entry.name === 'mousedown')); if (observedEntries.length < 2) return; resolve(observedEntries); - }).observe({ entryTypes: ['event'] }); + }).observe({ type: 'event' , buffered: true}); }); timeBeforeFirstClick = performance.now(); clickAndBlockMain('button').then( () => { @@ -95,7 +85,6 @@ Promise.all([observerPromise, bufferPromise]).then((results) => { timeAfterSecondClick = performance.now(); t.step(verifyObserverEntries.bind(null, results[0])); - t.step(verifyBuffer.bind(null, performance.getEntriesByName('mousedown', 'event'))); t.done(); }); }); diff --git a/tests/wpt/web-platform-tests/event-timing/onloadthenobserve-firstInput.html b/tests/wpt/web-platform-tests/event-timing/onloadthenobserve-firstInput.html index 1422ceaa955..4efdfbbf006 100644 --- a/tests/wpt/web-platform-tests/event-timing/onloadthenobserve-firstInput.html +++ b/tests/wpt/web-platform-tests/event-timing/onloadthenobserve-firstInput.html @@ -23,30 +23,38 @@ async_test(function(t) { let numFirstInputObserved = 0; let numEventsObserved = 0; - new PerformanceObserver(t.step_func((entryList, obs) => { - const observedEntries = entryList.getEntries().filter( - entry => entry.name === 'mousedown'); - numEventsObserved += observedEntries.filter(entry => - entry.entryType == 'event').length; - numFirstInputObserved += observedEntries.filter(entry => - entry.entryType == 'firstInput').length; + let observedEventEntries = []; + + const event_observer_promise = new Promise((resolve, reject) => { + new PerformanceObserver(function(entryList) { + observedEventEntries = entryList.getEntries().filter( + entry => entry.name === 'mousedown'); + numEventsObserved += observedEventEntries.length; if (numEventsObserved >= 2) { - assert_equals(performance.getEntriesByType('event').length, 0, - "There should be no buffered event entries."); - assert_equals(performance.getEntriesByType('firstInput').length, 1, - "There should be a buffered firstInput entry."); - // There should be 2 event entries and one firstInput entry. + // There should be 2 event entries. assert_equals(numEventsObserved, 2, "There should be 2 observed event entries."); - assert_equals(numFirstInputObserved, 1, - "There should be only 1 observed firstInput entry."); - t.done(); + resolve(); } - })).observe({ entryTypes: ['event', 'firstInput'] }); - on_event(window, 'load', () => { - clickAndBlockMain('button').then(() => { + }).observe({ type: 'event' , buffered: true}); + }); + + const first_input_observer_promise = new Promise((resolve, reject) => { + new PerformanceObserver(function(entryList) { + assert_equals(entryList.getEntries().length, 1); + resolve(); + }).observe({ type: 'firstInput' , buffered: true}); + }); + + on_event(window, 'load', function(e) { + const click_promise = clickAndBlockMain('button').then(() => { clickAndBlockMain('button'); }); + Promise.all( + [event_observer_promise, first_input_observer_promise, click_promise] + ).then(() => { + t.done(); + }); }); }, "Event Timing: check firstInput after onload, observer, click, click." diff --git a/tests/wpt/web-platform-tests/event-timing/onloadthenobserve.html b/tests/wpt/web-platform-tests/event-timing/onloadthenobserve.html index e2f9c932e6f..d97228577a1 100644 --- a/tests/wpt/web-platform-tests/event-timing/onloadthenobserve.html +++ b/tests/wpt/web-platform-tests/event-timing/onloadthenobserve.html @@ -17,16 +17,9 @@ registration are lost let observerStart; let processingStartMin; - function verifyBufferAndObserverEntries(observedEntries) { - // Verify buffer entries - const bufferedEntries = performance.getEntriesByName('mousedown', 'event'); - const bufferedEntriesBeforeObserver = bufferedEntries.filter(e => e.startTime < - observerStart); - assert_equals(bufferedEntries.length, 0, - "Long latency events after onload should not be buffered." - ); - - // Verify observer entries + function verifyObserverEntries(observedEntries) { + // Verify observer entries. Should not include first click since we didn't + // buffered to true. assert_equals(observedEntries.length, 1, "Long latency task after observer start should be observed."); const entry = observedEntries[0]; verifyClickEvent(entry); @@ -45,8 +38,8 @@ registration are lost callbackTime = performance.now(); const observedEntries = entryList.getEntries().filter( entry => entry.name === 'mousedown'); - verifyBufferAndObserverEntries(observedEntries); - })).observe({ entryTypes: ['event'] }); + verifyObserverEntries(observedEntries); + })).observe({ type: 'event'}); observerStart = performance.now(); } diff --git a/tests/wpt/web-platform-tests/event-timing/resources/crossiframe-childframe.html b/tests/wpt/web-platform-tests/event-timing/resources/crossiframe-childframe.html index 7aa4ace73af..ee9da6cad54 100644 --- a/tests/wpt/web-platform-tests/event-timing/resources/crossiframe-childframe.html +++ b/tests/wpt/web-platform-tests/event-timing/resources/crossiframe-childframe.html @@ -2,7 +2,6 @@ <html> <script src=event-timing-test-utils.js></script> <button id='button_child_frame'>Generate a 'click' event</button> -<img src=slow-image.py> <script> const clickTimeMin = performance.now(); clickAndBlockMain('button_child_frame'); @@ -10,7 +9,7 @@ const observerPromise = new Promise((resolve, reject) => { new PerformanceObserver((entryList) => { resolve(entryList.getEntries().filter(entry => entry.name === 'mousedown')); - }).observe({ entryTypes: ['event'] }); + }).observe({ type:'event', buffered: true }); }); window.addEventListener('load', e => { observerPromise.then((observedEntries) => { diff --git a/tests/wpt/web-platform-tests/fetch/corb/script-resource-with-nonsniffable-types.tentative.sub.html b/tests/wpt/web-platform-tests/fetch/corb/script-resource-with-nonsniffable-types.tentative.sub.html index e599bf26f94..bf42d0eaf68 100644 --- a/tests/wpt/web-platform-tests/fetch/corb/script-resource-with-nonsniffable-types.tentative.sub.html +++ b/tests/wpt/web-platform-tests/fetch/corb/script-resource-with-nonsniffable-types.tentative.sub.html @@ -58,6 +58,7 @@ protected_mime_types = [ "application/x-protobuf", "application/x-www-form-urlencoded", "application/zip", + "multipart/byteranges", "text/event-stream", // TODO(lukasza): https://crbug.com/944162: Add application/pdf and // text/csv to the list of content types tested here (after diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe-modify-scrolling-attr-to-yes-ref.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe-modify-scrolling-attr-to-yes-ref.html new file mode 100644 index 00000000000..3758ea2cab4 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe-modify-scrolling-attr-to-yes-ref.html @@ -0,0 +1,7 @@ +<!DOCTYPE html> +<title>iframe with scrolling attr equals yes</title> +<link rel="author" title="Jinfeng Ma" href="mailto:majinfeng1@xiaomi.org"> + +<p>Test passes if you can see the scrollbars of the iframe displayed below.</p> +<iframe src="support/iframe-which-content-height-equals-400px.html" scrolling="yes" width="200px" height="100px"> +</iframe> diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe-modify-scrolling-attr-to-yes.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe-modify-scrolling-attr-to-yes.html new file mode 100644 index 00000000000..9d85aa543d2 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe-modify-scrolling-attr-to-yes.html @@ -0,0 +1,16 @@ +<!DOCTYPE html> +<title>modify iframe scrolling attr to yes</title> +<link rel="author" title="Jinfeng Ma" href="mailto:majinfeng1@xiaomi.org"> +<link rel="help" href="https://www.w3.org/TR/html401/present/frames.html#adef-scrolling"> +<link rel="match" href="iframe-modify-scrolling-attr-to-yes-ref.html"> + +<p>Test passes if you can see the scrollbars of the iframe displayed below.</p> +<iframe src="support/iframe-which-content-height-equals-400px.html" scrolling="no" width="200px" height="100px"> +</iframe> + +<script> + let iframe = document.querySelector("iframe"); + iframe.onload = function () { + iframe.scrolling = 'yes'; + }; +</script> diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/support/iframe-which-content-height-equals-400px.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/support/iframe-which-content-height-equals-400px.html new file mode 100644 index 00000000000..bb3dbd31182 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/support/iframe-which-content-height-equals-400px.html @@ -0,0 +1,4 @@ +<!DOCTYPE html> +<body style="width: 200px; height: 400px"> +iframe content +</body>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/actionsWithKeyPressed.html.ini b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/actionsWithKeyPressed.html.ini deleted file mode 100644 index c83e8ff9261..00000000000 --- a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/actionsWithKeyPressed.html.ini +++ /dev/null @@ -1,8 +0,0 @@ -[actionsWithKeyPressed.html] - expected: - if product == "safari": ERROR - - [TestDriver actions: actions with key pressed] - expected: - if product == "firefox": FAIL - if os == "mac" and product == "chrome": FAIL diff --git a/tests/wpt/web-platform-tests/infrastructure/testdriver/actions/actionsWithKeyPressed.html b/tests/wpt/web-platform-tests/infrastructure/testdriver/actions/actionsWithKeyPressed.html deleted file mode 100644 index 74e939f5fde..00000000000 --- a/tests/wpt/web-platform-tests/infrastructure/testdriver/actions/actionsWithKeyPressed.html +++ /dev/null @@ -1,67 +0,0 @@ -<!DOCTYPE html> -<meta charset="utf-8"> -<title>TestDriver actions: actions with key pressed</title> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="/resources/testdriver.js"></script> -<script src="/resources/testdriver-actions.js"></script> -<script src="/resources/testdriver-vendor.js"></script> - -<style> -div#test1, div#test2 { - position: fixed; - top: 0; - left: 0; - width: 100px; - height: 100px; - background-color: blue; -} - -div#test2 { - position: fixed; - top: 100px; - left: 0; - width: 100px; - height: 100px; - background-color: green; -} -</style> - -<div id="test1"> -</div> - -<div id="test2"> -</div> - -<script> -let keys = []; - -async_test(t => { - let test1 = document.getElementById("test1"); - let test2 = document.getElementById("test2"); - document.getElementById("test1").addEventListener("click", - e => {keys.push(e.getModifierState("Control"))}); - document.getElementById("test2").addEventListener("click", - e => {keys.push(e.getModifierState("Control"))}); - - let actions = new test_driver.Actions() - .keyDown("\uE009") - .addTick() - .pointerMove(0, 0, {origin: test1}) - .pointerDown() - .pointerUp() - .pointerMove(0, 0, {origin: test2}) - .pointerDown() - .pointerUp() - .addTick() - .keyUp("\uE009") - .addTick() - .pointerMove(0, 0, {origin: test1}) - .pointerDown() - .pointerUp(); - - actions.send() - .then(t.step_func_done(() => assert_array_equals(keys, [true, true, false]))) - .catch(e => t.step_func(() => assert_unreached("Actions sequence failed " + e))); -}); -</script> diff --git a/tests/wpt/web-platform-tests/interfaces/WebIDL.idl b/tests/wpt/web-platform-tests/interfaces/WebIDL.idl index aa8d5bad16a..a9157a95590 100644 --- a/tests/wpt/web-platform-tests/interfaces/WebIDL.idl +++ b/tests/wpt/web-platform-tests/interfaces/WebIDL.idl @@ -10,7 +10,8 @@ typedef (Int8Array or Int16Array or Int32Array or typedef (ArrayBufferView or ArrayBuffer) BufferSource; [ Exposed=(Window,Worker), - Constructor(optional DOMString message = "", optional DOMString name = "Error") + Constructor(optional DOMString message = "", optional DOMString name = "Error"), + Serializable ] interface DOMException { // but see below note about ECMAScript binding readonly attribute DOMString name; diff --git a/tests/wpt/web-platform-tests/interfaces/webxr.idl b/tests/wpt/web-platform-tests/interfaces/webxr.idl index c78683ef6bf..2c9eac51067 100644 --- a/tests/wpt/web-platform-tests/interfaces/webxr.idl +++ b/tests/wpt/web-platform-tests/interfaces/webxr.idl @@ -10,7 +10,7 @@ partial interface Navigator { [SecureContext, Exposed=Window] interface XR : EventTarget { // Methods Promise<void> supportsSession(XRSessionMode mode); - Promise<XRSession> requestSession(XRSessionMode mode); + Promise<XRSession> requestSession(XRSessionMode mode, optional XRSessionInit options); // Events attribute EventHandler ondevicechange; @@ -22,6 +22,11 @@ enum XRSessionMode { "immersive-ar" }; +dictionary XRSessionInit { + sequence<DOMString> requiredFeatures; + sequence<DOMString> optionalFeatures; +}; + enum XREnvironmentBlendMode { "opaque", "additive", @@ -239,13 +244,11 @@ dictionary XRSessionEventInit : EventInit { interface XRInputSourceEvent : Event { [SameObject] readonly attribute XRFrame frame; [SameObject] readonly attribute XRInputSource inputSource; - [SameObject] readonly attribute long? buttonIndex; }; dictionary XRInputSourceEventInit : EventInit { required XRFrame frame; required XRInputSource inputSource; - long? buttonIndex = null; }; [SecureContext, Exposed=Window, Constructor(DOMString type, XRInputSourcesChangeEventInit eventInitDict)] diff --git a/tests/wpt/web-platform-tests/layout-instability/buffer-layout-shift.html b/tests/wpt/web-platform-tests/layout-instability/buffer-layout-shift.html index c1d0dc6d6eb..5d2e69f1ff2 100644 --- a/tests/wpt/web-platform-tests/layout-instability/buffer-layout-shift.html +++ b/tests/wpt/web-platform-tests/layout-instability/buffer-layout-shift.html @@ -30,8 +30,11 @@ assert_greater_than_equal(entry.startTime, startTime) assert_less_than_equal(entry.startTime, endTime) assert_equals(entry.duration, 0.0); - // The layout shift value should be: 300 * (100 + 60) / viewport size. - assert_equals(entry.value, 300 * (100 + 60) / + const maxDimension = Math.max(document.documentElement.clientWidth, + document.documentElement.clientHeight); + // The layout shift value should be: + // 300 * (100 + 60) * (60 / maxDimension) / viewport size. + assert_equals(entry.value, 300 * (100 + 60) * (60 / maxDimension) / (document.documentElement.clientWidth * document.documentElement.clientHeight)); t.done(); } diff --git a/tests/wpt/web-platform-tests/layout-instability/observe-layout-shift.html b/tests/wpt/web-platform-tests/layout-instability/observe-layout-shift.html index 25e4950f6a7..1aa429b6b68 100644 --- a/tests/wpt/web-platform-tests/layout-instability/observe-layout-shift.html +++ b/tests/wpt/web-platform-tests/layout-instability/observe-layout-shift.html @@ -51,8 +51,11 @@ assert_greater_than_equal(entry.startTime, startTime) assert_less_than_equal(entry.startTime, endTime) assert_equals(entry.duration, 0.0); - // The layout shift value should be: 300 * (100 + 60) / viewport size. - assert_equals(entry.value, 300 * (100 + 60) / + const maxDimension = Math.max(document.documentElement.clientWidth, + document.documentElement.clientHeight); + // The layout shift value should be: + // 300 * (100 + 60) * (60 / maxDimension) / viewport size. + assert_equals(entry.value, 300 * (100 + 60) * (60 / maxDimension) / (document.documentElement.clientWidth * document.documentElement.clientHeight)); }) ); @@ -75,8 +78,11 @@ assert_greater_than_equal(entry.startTime, startTime) assert_less_than_equal(entry.startTime, endTime) assert_equals(entry.duration, 0.0); - // The layout shift value should be: 300 * (100 + 60) / viewport size. - assert_equals(entry.value, 300 * (100 + 60) / + const maxDimension = Math.max(document.documentElement.clientWidth, + document.documentElement.clientHeight); + // The layout shift value should be: + // 300 * (100 + 60) * (60 / maxDimension) / viewport size. + assert_equals(entry.value, 300 * (100 + 60) * (60 / maxDimension) / (document.documentElement.clientWidth * document.documentElement.clientHeight)); // We should see that there was a click input entry assert_equals(entry.hadRecentInput, true); diff --git a/tests/wpt/web-platform-tests/native-file-system/FileSystemBaseHandle-remove.tentative.window.js b/tests/wpt/web-platform-tests/native-file-system/FileSystemBaseHandle-remove.tentative.window.js index 5a8e67b8478..a4eb2871104 100644 --- a/tests/wpt/web-platform-tests/native-file-system/FileSystemBaseHandle-remove.tentative.window.js +++ b/tests/wpt/web-platform-tests/native-file-system/FileSystemBaseHandle-remove.tentative.window.js @@ -3,39 +3,74 @@ promise_test(async t => cleanupSandboxedFileSystem(), 'Cleanup to setup test environment'); promise_test(async t => { - const dir = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' }); - const handle = await createFileWithContents(t, 'file-to-remove', '12345', dir); - await createFileWithContents(t, 'file-to-keep', 'abc'); - await handle.remove(); + const root = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' }); + const handle = await createFileWithContents(t, 'file-to-remove', '12345', root); + await createFileWithContents(t, 'file-to-keep', 'abc', root); + await root.removeEntry('file-to-remove'); - assert_array_equals(await getSortedDirectoryEntries(dir), ['file-to-keep']); + assert_array_equals(await getSortedDirectoryEntries(root), ['file-to-keep']); await promise_rejects(t, 'NotFoundError', getFileContents(handle)); -}, 'remove() to remove a file'); +}, 'removeEntry() to remove a file'); promise_test(async t => { - const handle = await createFileWithContents(t, 'file-to-remove', '12345'); - await handle.remove(); + const root = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' }); + const handle = await createFileWithContents(t, 'file-to-remove', '12345', root); + await root.removeEntry('file-to-remove'); - await promise_rejects(t, 'NotFoundError', handle.remove()); -}, 'remove() on an already removed file should fail'); + await promise_rejects(t, 'NotFoundError', root.removeEntry('file-to-remove')); +}, 'removeEntry() on an already removed file should fail'); promise_test(async t => { const root = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' }); const dir = await root.getDirectory('dir-to-remove', { create: true }); - await createFileWithContents(t, 'file-to-keep', 'abc'); - await dir.remove(); + await createFileWithContents(t, 'file-to-keep', 'abc', root); + await root.removeEntry('dir-to-remove'); assert_array_equals(await getSortedDirectoryEntries(root), ['file-to-keep']); await promise_rejects(t, 'NotFoundError', getSortedDirectoryEntries(dir)); -}, 'remove() to remove an empty directory'); +}, 'removeEntry() to remove an empty directory'); promise_test(async t => { const root = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' }); const dir = await root.getDirectory('dir-to-remove', { create: true }); - t.add_cleanup(() => dir.removeRecursively()); + t.add_cleanup(() => root.removeEntry('dir-to-remove', { recursive: true })); await createEmptyFile(t, 'file-in-dir', dir); - await promise_rejects(t, 'InvalidModificationError', dir.remove()); + await promise_rejects(t, 'InvalidModificationError', root.removeEntry('dir-to-remove')); assert_array_equals(await getSortedDirectoryEntries(root), ['dir-to-remove/']); assert_array_equals(await getSortedDirectoryEntries(dir), ['file-in-dir']); -}, 'remove() on a non-empty directory should fail'); +}, 'removeEntry() on a non-empty directory should fail'); + +promise_test(async t => { + const root = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' }); + const dir = await createDirectory(t, 'dir', root); + await promise_rejects(t, 'NotFoundError', dir.removeEntry("")); +}, 'removeEntry() with empty name should fail'); + +promise_test(async t => { + const root = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' }); + const dir = await createDirectory(t, 'dir', root); + await promise_rejects(t, 'SecurityError', dir.removeEntry(kCurrentDirectory)); +}, `removeEntry() with "${kCurrentDirectory}" name should fail`); + +promise_test(async t => { + const root = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' }); + const dir = await createDirectory(t, 'dir', root); + await promise_rejects(t, 'SecurityError', dir.removeEntry(kParentDirectory)); +}, `removeEntry() with "${kParentDirectory}" name should fail`); + +promise_test(async t => { + const root = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' }); + + const dir_name = 'dir-name'; + const dir = await createDirectory(t, dir_name, root); + + const file_name = 'file-name'; + await createEmptyFile(t, file_name, dir); + + for (let i = 0; i < kPathSeparators.length; ++i) { + const path_with_separator = `${dir_name}${kPathSeparators[i]}${file_name}`; + await promise_rejects(t, 'SecurityError', root.removeEntry(path_with_separator), + `removeEntry() must reject names containing "${kPathSeparators[i]}"`); + } +}, 'removeEntry() with a path separator should fail.'); diff --git a/tests/wpt/web-platform-tests/native-file-system/FileSystemDirectoryHandle-getDirectory.tentative.window.js b/tests/wpt/web-platform-tests/native-file-system/FileSystemDirectoryHandle-getDirectory.tentative.window.js index 0f8c1b13fa0..2064fc46f05 100644 --- a/tests/wpt/web-platform-tests/native-file-system/FileSystemDirectoryHandle-getDirectory.tentative.window.js +++ b/tests/wpt/web-platform-tests/native-file-system/FileSystemDirectoryHandle-getDirectory.tentative.window.js @@ -10,7 +10,7 @@ promise_test(async t => { promise_test(async t => { const root = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' }); const handle = await root.getDirectory('non-existing-dir', { create: true }); - t.add_cleanup(() => handle.removeRecursively()); + t.add_cleanup(() => root.removeEntry('non-existing-dir', { recursive: true })); assert_false(handle.isFile); assert_true(handle.isDirectory); @@ -22,7 +22,7 @@ promise_test(async t => { promise_test(async t => { const root = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' }); const existing_handle = await root.getDirectory('dir-with-contents', { create: true }); - t.add_cleanup(() => existing_handle.removeRecursively()); + t.add_cleanup(() => root.removeEntry('dir-with-contents', { recursive: true })); const file_handle = await createEmptyFile(t, 'test-file', existing_handle); const handle = await root.getDirectory('dir-with-contents', { create: false }); @@ -36,7 +36,7 @@ promise_test(async t => { promise_test(async t => { const root = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' }); const existing_handle = await root.getDirectory('dir-with-contents', { create: true }); - t.add_cleanup(() => existing_handle.removeRecursively()); + t.add_cleanup(() => root.removeEntry('dir-with-contents', { recursive: true })); const file_handle = await existing_handle.getFile('test-file', { create: true }); const handle = await root.getDirectory('dir-with-contents', { create: true }); diff --git a/tests/wpt/web-platform-tests/native-file-system/FileSystemDirectoryHandle-getFile.tentative.window.js b/tests/wpt/web-platform-tests/native-file-system/FileSystemDirectoryHandle-getFile.tentative.window.js index 0b27027f4ed..473cad4c9c3 100644 --- a/tests/wpt/web-platform-tests/native-file-system/FileSystemDirectoryHandle-getFile.tentative.window.js +++ b/tests/wpt/web-platform-tests/native-file-system/FileSystemDirectoryHandle-getFile.tentative.window.js @@ -10,7 +10,7 @@ promise_test(async t => { promise_test(async t => { const dir = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' }); const handle = await dir.getFile('non-existing-file', { create: true }); - t.add_cleanup(() => handle.remove()); + t.add_cleanup(() => dir.removeEntry('non-existing-file')); assert_true(handle.isFile); assert_false(handle.isDirectory); @@ -48,7 +48,7 @@ promise_test(async t => { promise_test(async t => { const dir = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' }); const dir_handle = await dir.getDirectory('dir-name', { create: true }); - t.add_cleanup(() => dir_handle.removeRecursively()); + t.add_cleanup(() => dir.removeEntry('dir-name', { recursive: true })); await promise_rejects(t, 'TypeMismatchError', dir.getFile('dir-name')); }, 'getFile(create=false) when a directory already exists with the same name'); @@ -56,7 +56,7 @@ promise_test(async t => { promise_test(async t => { const dir = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' }); const dir_handle = await dir.getDirectory('dir-name', { create: true }); - t.add_cleanup(() => dir_handle.removeRecursively()); + t.add_cleanup(() => dir.removeEntry('dir-name', { recursive: true })); await promise_rejects(t, 'TypeMismatchError', dir.getFile('dir-name', { create: true })); }, 'getFile(create=true) when a directory already exists with the same name'); diff --git a/tests/wpt/web-platform-tests/native-file-system/resources/test-helpers.js b/tests/wpt/web-platform-tests/native-file-system/resources/test-helpers.js index e29927b8524..56c93b59750 100644 --- a/tests/wpt/web-platform-tests/native-file-system/resources/test-helpers.js +++ b/tests/wpt/web-platform-tests/native-file-system/resources/test-helpers.js @@ -15,12 +15,8 @@ if (navigator.userAgent.includes("Windows NT")) { async function cleanupSandboxedFileSystem() { const dir = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' }); - for await (let entry of dir.getEntries()) { - if (entry.isDirectory) - await entry.removeRecursively(); - else - await entry.remove(); - } + for await (let entry of dir.getEntries()) + dir.removeEntry(entry.name, { recursive: entry.isDirectory }); } async function getFileSize(handle) { @@ -60,7 +56,7 @@ async function createDirectory(test, name, parent) { const new_dir_handle = await parent_dir_handle.getDirectory(name, { create: true }); test.add_cleanup(async () => { try { - await new_dir_handle.removeRecursively(); + await parent_dir_handle.removeEntry(name, { recursive: true }); } catch (e) { // Ignore any errors when removing directories, as tests might // have already removed the directory. @@ -74,7 +70,7 @@ async function createEmptyFile(test, name, parent) { const handle = await dir.getFile(name, { create: true }); test.add_cleanup(async () => { try { - await handle.remove(); + await dir.removeEntry(name); } catch (e) { // Ignore any errors when removing files, as tests might already remove the file. } diff --git a/tests/wpt/web-platform-tests/pointerevents/pointerevent_mouse_pointercapture_in_frame.html b/tests/wpt/web-platform-tests/pointerevents/pointerevent_mouse_pointercapture_in_frame.html deleted file mode 100644 index 83b4c1becc4..00000000000 --- a/tests/wpt/web-platform-tests/pointerevents/pointerevent_mouse_pointercapture_in_frame.html +++ /dev/null @@ -1,143 +0,0 @@ -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="/resources/testdriver.js"></script> -<script src="/resources/testdriver-vendor.js"></script> -<script src="/resources/testdriver-actions.js"></script> -<style> -iframe { - width: 300px; - height: 300px; - top: 100px; - left: 100px; - border: 0; - position: absolute; - background: green; -} -#outerFrame { - width: 500px; - height: 500px; - background: blue; -} -</style> -<body id="outerFrame body" onload="run()"> -<div id='outerFrame'> -<iframe id='innerFrameElement' src="resources/pointerevent_mouse_pointercapture-iframe.html"></iframe> -</div> -</body> -<script> -var receivedEventList = []; -function handleEvent(event) { - receivedEventList.push(event.target.id + ' received ' + event.type); - - if (event.type == 'pointerdown') { - if (document.setPointerCaptureOnPointerDown) { - event.target.setPointerCapture(event.pointerId); - } - } - - if (event.type == "pointermove") { - if (document.releasePointerCaptureOnFirstMove && event.target.hasPointerCapture(event.pointerId)) - event.target.releasePointerCapture(event.pointerId); - } -}; - -document.testEventList = ['pointerup', 'pointerdown', 'pointermove', 'gotpointercapture', 'lostpointercapture']; -document.testEventList.forEach(function(eventName) { - document.getElementById('outerFrame').addEventListener(eventName, handleEvent); -}); - -document.setPointerCaptureOnPointerDown = false; -document.releasePointerCaptureOnFirstMove = false; - -function run() { - promise_test (async() => { - document.setPointerCaptureOnPointerDown = true; - receivedEventList = []; - expectedEventList = ["innerFrame received pointermove", - "innerFrame received pointerdown", - "innerFrame received gotpointercapture", - "innerFrame received pointermove", - "innerFrame received pointermove", - "innerFrame received pointerup", - "innerFrame received lostpointercapture"]; - await new test_driver.Actions() - .pointerMove(200, 200) - .pointerDown() - .pointerMove(150, 150) - .pointerMove(50, 50) - .pointerUp() - .send(); - assert_array_equals(receivedEventList, expectedEventList, "Received events: " + receivedEventList); - document.setPointerCaptureOnPointerDown = false; - }, "Test pointer capture event route across the same-origin frame: Mouse down at inner frame and set pointer capture."); - - - promise_test (async() => { - document.setPointerCaptureOnPointerDown = true; - receivedEventList = []; - expectedEventList = ["outerFrame received pointermove", - "outerFrame received pointerdown", - "outerFrame received gotpointercapture", - "outerFrame received pointermove", - "outerFrame received pointerup", - "outerFrame received lostpointercapture"]; - await new test_driver.Actions() - .pointerMove(25, 25) - .pointerDown() - .pointerMove(200, 200) - .pointerUp() - .send(); - assert_array_equals(receivedEventList, expectedEventList, "Received events: " + receivedEventList); - document.setPointerCaptureOnPointerDown = false; - }, "Test pointer capture event route across the same-origin frame: Mouse down at outer frame body and set pointer capture."); - - - promise_test (async() => { - document.setPointerCaptureOnPointerDown = true; - document.releasePointerCaptureOnFirstMove = true; - receivedEventList = []; - expectedEventList = ["innerFrame received pointermove", - "innerFrame received pointerdown", - "innerFrame received gotpointercapture", - "innerFrame received pointermove", - "innerFrame received lostpointercapture", - "innerFrameDocument received pointermove", - "innerFrameDocument received pointerup",]; - await new test_driver.Actions() - .pointerMove(200, 200) - .pointerDown() - .pointerMove(150, 150) - .pointerMove(50, 50) - .pointerUp() - .send(); - assert_array_equals(receivedEventList, expectedEventList, "Received events: " + receivedEventList); - document.releasePointerCaptureOnFirstMove = false; - document.setPointerCaptureOnPointerDown = false; - }, "Test pointer capture event route across the same-origin frame: Mouse down with set capture at inner frame, then release on next mouse move."); - - - promise_test (async() => { - document.setPointerCaptureOnPointerDown = true; - document.releasePointerCaptureOnFirstMove = true; - receivedEventList = []; - expectedEventList = ["outerFrame received pointermove", - "outerFrame received pointerdown", - "outerFrame received gotpointercapture", - "outerFrame received pointermove", - "outerFrame received lostpointercapture", - "innerFrame received pointermove", - "innerFrame received pointerup"]; - await new test_driver.Actions() - .pointerMove(50, 50) - .pointerDown() - .pointerMove(200, 200) - .pointerMove(250, 250) - .pointerUp() - .send(); - assert_array_equals(receivedEventList, expectedEventList, "Received events: " + receivedEventList); - document.releasePointerCaptureOnFirstMove = false; - document.setPointerCaptureOnPointerDown = false; - }, "Test pointercapture event route across the same-origin frame: Mouse down with set capture at outer frame, then release on next mouse move."); -} -</script> - diff --git a/tests/wpt/web-platform-tests/pointerevents/pointerevent_pointercapture_in_frame.html b/tests/wpt/web-platform-tests/pointerevents/pointerevent_pointercapture_in_frame.html new file mode 100644 index 00000000000..a4107fd707a --- /dev/null +++ b/tests/wpt/web-platform-tests/pointerevents/pointerevent_pointercapture_in_frame.html @@ -0,0 +1,160 @@ +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/resources/testdriver-actions.js"></script> +<script type="text/javascript" src="pointerevent_support.js"></script> +<style> +iframe { + width: 300px; + height: 300px; + top: 100px; + left: 100px; + border: 0; + position: absolute; + background: green; +} +#outerFrame { + width: 500px; + height: 500px; + background: blue; +} +body { + touch-action:none; +} +</style> +<body id="outerFrame body" onload="run()"> +<div id='outerFrame'> +<iframe id='innerFrameElement' src="resources/pointerevent_pointercapture-iframe.html"></iframe> +</div> +</body> +<script> +var receivedEventList = []; +var start_logging = false; +function handleEvent(event) { + if (event.type == 'pointerdown') { + start_logging = true; + if (document.setPointerCaptureOnPointerDown) { + event.target.setPointerCapture(event.pointerId); + } + } + + if (event.type == "pointermove") { + if (document.releasePointerCaptureOnFirstMove && event.target.hasPointerCapture(event.pointerId)) + event.target.releasePointerCapture(event.pointerId); + } + if (start_logging) + receivedEventList.push(event.target.id + ' received ' + event.type); +}; + +document.testEventList = ['pointerup', 'pointerdown', 'pointermove', 'gotpointercapture', 'lostpointercapture']; +document.testEventList.forEach(function(eventName) { + document.getElementById('outerFrame').addEventListener(eventName, handleEvent); +}); + +function Reset() { + document.setPointerCaptureOnPointerDown = false; + document.releasePointerCaptureOnFirstMove = false; + receivedEventList = []; + start_logging = false; +} + +function run() { + ALL_POINTERS.forEach(function(pointerType) { + promise_test (async() => { + Reset(); + document.setPointerCaptureOnPointerDown = true; + expectedEventList = ["innerFrame received pointerdown", + "innerFrame received gotpointercapture", + "innerFrame received pointermove", + "innerFrame received pointermove", + "innerFrame received pointerup", + "innerFrame received lostpointercapture"]; + var pointerId = pointerType + "Pointer1"; + await new test_driver.Actions() + .addPointer(pointerId, pointerType) + .pointerMove(200, 200) + .pointerDown() + .pointerMove(150, 150) + .pointerMove(50, 50) + .pointerUp() + .send(); + assert_array_equals(receivedEventList, expectedEventList, "Received events: " + receivedEventList); + document.setPointerCaptureOnPointerDown = false; + }, "Test " + pointerType + "pointer capture in same-origin frame: Pointer down at inner frame and set pointer capture."); + + promise_test (async() => { + Reset(); + document.setPointerCaptureOnPointerDown = true; + expectedEventList = ["outerFrame received pointerdown", + "outerFrame received gotpointercapture", + "outerFrame received pointermove", + "outerFrame received pointerup", + "outerFrame received lostpointercapture"]; + var pointerId = pointerType + "Pointer1"; + await new test_driver.Actions() + .addPointer(pointerId, pointerType) + .pointerMove(25, 25) + .pointerDown() + .pointerMove(200, 200) + .pointerUp() + .send(); + assert_array_equals(receivedEventList, expectedEventList, "Received events: " + receivedEventList); + document.setPointerCaptureOnPointerDown = false; + }, "Test " + pointerType + "pointer capture in same-origin frame: Pointer down at outer frame body and set pointer capture."); + + + promise_test (async() => { + Reset(); + document.setPointerCaptureOnPointerDown = true; + document.releasePointerCaptureOnFirstMove = true; + // Mouse event has the frame capture, so after pointer capture released, events are + // dispatched to innerFrameDocument. + expectedEventList = ["innerFrame received pointerdown", + "innerFrame received gotpointercapture", + "innerFrame received pointermove", + "innerFrame received lostpointercapture", + (pointerType == "touch" ? "outerFrame": "innerFrameDocument") + " received pointermove", + (pointerType == "touch" ? "outerFrame": "innerFrameDocument") + " received pointerup",]; + var pointerId = pointerType + "Pointer1"; + await new test_driver.Actions() + .addPointer(pointerId, pointerType) + .pointerMove(200, 200) + .pointerDown() + .pointerMove(150, 150) + .pointerMove(50, 50) + .pointerUp() + .send(); + assert_array_equals(receivedEventList, expectedEventList, "Received events: " + receivedEventList); + document.releasePointerCaptureOnFirstMove = false; + document.setPointerCaptureOnPointerDown = false; + }, "Test " + pointerType + "pointer capture in same-origin frame: Pointerdown with set capture at inner frame, then release on next pointermove."); + + + promise_test (async() => { + Reset(); + document.setPointerCaptureOnPointerDown = true; + document.releasePointerCaptureOnFirstMove = true; + expectedEventList = ["outerFrame received pointerdown", + "outerFrame received gotpointercapture", + "outerFrame received pointermove", + "outerFrame received lostpointercapture", + "innerFrame received pointermove", + "innerFrame received pointerup"]; + var pointerId = pointerType + "Pointer1"; + await new test_driver.Actions() + .addPointer(pointerId, pointerType) + .pointerMove(50, 50) + .pointerDown() + .pointerMove(200, 200) + .pointerMove(250, 250) + .pointerUp() + .send(); + assert_array_equals(receivedEventList, expectedEventList, "Received events: " + receivedEventList); + document.releasePointerCaptureOnFirstMove = false; + document.setPointerCaptureOnPointerDown = false; + }, "Test " + pointerType + "pointer capture in same-origin frame: Pointerdown with set capture at outer frame, then release on next pointermove."); + }); +} +</script> + diff --git a/tests/wpt/web-platform-tests/pointerevents/resources/pointerevent_mouse_pointercapture-iframe.html b/tests/wpt/web-platform-tests/pointerevents/resources/pointerevent_pointercapture-iframe.html index 817c6123cf9..10075662698 100644 --- a/tests/wpt/web-platform-tests/pointerevents/resources/pointerevent_mouse_pointercapture-iframe.html +++ b/tests/wpt/web-platform-tests/pointerevents/resources/pointerevent_pointercapture-iframe.html @@ -1,4 +1,9 @@ <html id='innerFrameDocument'> +<style> +body { + touch-action:none; +} +</style> <body id='innerFrame' style='height:500px; width: 500px; padding: 0; margin: 0;'> <script> top.document.testEventList.forEach(function(eventName) { @@ -6,4 +11,4 @@ }); </script> </body> -</html>
\ No newline at end of file +</html> diff --git a/tests/wpt/web-platform-tests/preload/subresource-integrity.html b/tests/wpt/web-platform-tests/preload/subresource-integrity.html index 08c7854a9ec..52ec0f62bef 100644 --- a/tests/wpt/web-platform-tests/preload/subresource-integrity.html +++ b/tests/wpt/web-platform-tests/preload/subresource-integrity.html @@ -27,6 +27,12 @@ sha384: 'sha384-wDAWxH4tOWBwAwHfBn9B7XuNmFxHTMeigAMwn0iVQ0zq3FtmYMLxihcGnU64CwcX', sha512: 'sha512-9wXDjd6Wq3H6nPAhI9zOvG7mJkUr03MTxaO+8ztTKnfJif42laL93Be/IF6YYZHHF4esitVYxiwpY2HSZX4l6w==' }, + { + destination: 'image', ext: '.png', supports_sri: false, + sha256: 'sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', + sha384: 'sha384-OLBgp1GsljhM2TJ+sbHjaiH9txEUvgdDTAzHv2P24donTt6/529l+9Ua0vFImLlb', + sha512: 'sha512-z4PhNX7vuL3xVChQ1m2AB9Yg5AULVxXcg/SpIdNs6c5H0NE8XYXysP+DGNKHfuwvY7kxvUdBeoGlODJ6+SfaPg==' + }, // TODO(domfarolino): Add more destinations. ]; diff --git a/tests/wpt/web-platform-tests/resources/sriharness.js b/tests/wpt/web-platform-tests/resources/sriharness.js index fe8ad2b4270..d30d483e329 100644 --- a/tests/wpt/web-platform-tests/resources/sriharness.js +++ b/tests/wpt/web-platform-tests/resources/sriharness.js @@ -34,6 +34,13 @@ SRIScriptTest.prototype.execute = function() { document.body.appendChild(e); }; +function set_extra_attributes(element, attrs) { + // Apply the rest of the attributes, if any. + for (const [attr_name, attr_val] of Object.entries(attrs)) { + element[attr_name] = attr_val; + } +} + function buildElementFromDestination(resource_url, destination, attrs) { // Assert: |destination| is a valid destination. let element; @@ -45,26 +52,24 @@ function buildElementFromDestination(resource_url, destination, attrs) { switch (destination) { case "script": element = document.createElement(destination); + set_extra_attributes(element, attrs); element.src = resource_url; break; case "style": element = document.createElement('link'); + set_extra_attributes(element, attrs); element.rel = 'stylesheet'; element.href = resource_url; break; case "image": element = document.createElement('img'); + set_extra_attributes(element, attrs); element.src = resource_url; break; default: assert_unreached("INVALID DESTINATION"); } - // Apply the rest of the attributes, if any. - for (const [attr_name, attr_val] of Object.entries(attrs)) { - element[attr_name] = attr_val; - } - return element; } diff --git a/tests/wpt/web-platform-tests/subresource-integrity/image.png b/tests/wpt/web-platform-tests/subresource-integrity/image.png Binary files differnew file mode 100644 index 00000000000..01c9666a8de --- /dev/null +++ b/tests/wpt/web-platform-tests/subresource-integrity/image.png diff --git a/tests/wpt/web-platform-tests/web-nfc/NFCWriter_push.https.html b/tests/wpt/web-platform-tests/web-nfc/NFCWriter_push.https.html index 5a14b4090af..0b804615930 100644 --- a/tests/wpt/web-platform-tests/web-nfc/NFCWriter_push.https.html +++ b/tests/wpt/web-platform-tests/web-nfc/NFCWriter_push.https.html @@ -132,7 +132,7 @@ promise_test(t => { const promises = []; invalid_signals.forEach(invalid_signal => { promises.push( - promise_rejects(t, 'TypeError', writer.push(test_text_data, { signal: invalid_signal }))); + promise_rejects(t, new TypeError(), writer.push(test_text_data, { signal: invalid_signal }))); }); return Promise.all(promises); }, "NFCWriter.push should fail if signal is not an AbortSignal."); diff --git a/tests/wpt/web-platform-tests/webrtc/RTCStats-helper.js b/tests/wpt/web-platform-tests/webrtc/RTCStats-helper.js index e91b40b6854..5cd7d2c9e0e 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCStats-helper.js +++ b/tests/wpt/web-platform-tests/webrtc/RTCStats-helper.js @@ -547,15 +547,17 @@ function validateMediaStreamTrackStats(statsReport, stats) { assert_optional_unsigned_int_field(stats, 'partialFramesLost'); assert_optional_unsigned_int_field(stats, 'fullFramesLost'); } else { - assert_number_field(stats, 'audioLevel'); - assert_optional_number_field(stats, 'totalAudioEnergy'); + if (stats['remoteSource']) { + assert_number_field(stats, 'audioLevel'); + assert_optional_number_field(stats, 'totalAudioEnergy'); + assert_optional_number_field(stats, 'totalSamplesDuration'); + } assert_optional_boolean_field(stats, 'voiceActivityFlag'); assert_optional_number_field(stats, 'echoReturnLoss'); assert_optional_number_field(stats, 'echoReturnLossEnhancement'); assert_optional_unsigned_int_field(stats, 'totalSamplesSent'); assert_optional_unsigned_int_field(stats, 'totalSamplesReceived'); - assert_optional_number_field(stats, 'totalSamplesDuration'); assert_optional_unsigned_int_field(stats, 'concealedSamples'); assert_optional_unsigned_int_field(stats, 'concealmentEvents'); assert_optional_number_field(stats, 'jitterBufferDelay'); diff --git a/tests/wpt/web-platform-tests/xhr/sync-xhr-and-window-onload.html b/tests/wpt/web-platform-tests/xhr/sync-xhr-and-window-onload.html new file mode 100644 index 00000000000..3ba9e7ab2e8 --- /dev/null +++ b/tests/wpt/web-platform-tests/xhr/sync-xhr-and-window-onload.html @@ -0,0 +1,25 @@ +<!doctype html> +<body> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script> +async_test((t) => { + let onloadIsCalled = false; + window.addEventListener('load', () => { + onloadIsCalled = true; + }, {once: true}); + document.addEventListener('readystatechange', t.step_func(() => { + if (document.readyState !== 'complete') { + return; + } + const xhr = new XMLHttpRequest(); + xhr.open('GET', 'resources/pass.txt', false /* async */); + xhr.send(); + assert_false(onloadIsCalled); + // The load event eventually arrives. + window.addEventListener('load', t.step_func_done(() => { + }), {once: 'true'}); + })); +}, 'sync XHR should not fire window.onload synchronously'); +</script> +</body> |