diff --git a/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini b/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini index 282ab0b2525..cdeaf7f7080 100644 --- a/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini +++ b/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini @@ -7,7 +7,7 @@ expected: FAIL [Opening a blob URL in a new window immediately before revoking it works.] - expected: FAIL + expected: TIMEOUT [Opening a blob URL in a noopener about:blank window immediately before revoking it works.] expected: TIMEOUT diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index a7f4cc2c288..7ba9ea9a8b9 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -21397,21 +21397,21 @@ ] ], "change-shipping-option-manual.https.html": [ - "2511fc5ea05152392d9257cacc07d1bc081f3fb6", + "6e97f2878afe60ac1004f8a0e85989c54461c8d2", [ null, {} ] ], "payment-request-event-manual.https.html": [ - "e595dd2160ff2bd4cb0701cb0786cf81385f4e75", + "9cd20354631b2277c17e543a4b30f81b90f0dbdb", [ null, {} ] ], "supports-shipping-contact-delegation-manual.https.html": [ - "939e5429262b039eef36029ada3033652b35daf5", + "e3074b4e5e58a6e5e3ac7b97e0ea40480c1b9bf3", [ null, {} @@ -135898,7 +135898,7 @@ "css-box": { "margin-trim": { "block-container-block-001.html": [ - "516a90cf652c39b55c9b31cb1c9c73f6c6e31e33", + "e31abec3678e39dd37339364a4c2977ed2adae30", [ null, [ @@ -135911,7 +135911,7 @@ ] ], "block-container-block-002.html": [ - "1f86d555bf777781932aceb43f623d2d9ac6961c", + "399141b17e4dcabf718ad5f8133b71caaa8b36d9", [ null, [ @@ -135924,7 +135924,7 @@ ] ], "block-container-block-end-001.html": [ - "e36a207fb6970e0bc4550e8410dfdad382cb41db", + "fcee65692ce94ac94dd3e8fbf6f5db4d18bdd6c9", [ null, [ @@ -135937,7 +135937,7 @@ ] ], "block-container-block-end-002.html": [ - "2859e104685af45f51eadf1e84b91583a773c183", + "42d559fbe927761b98ca8a47167ca15e5afb78bc", [ null, [ @@ -135950,7 +135950,7 @@ ] ], "block-container-block-start-001.html": [ - "2fecf07e644544516cc15e6d4f6c13e8c6f0f03f", + "c33c7f0abe5aa80c396f0050a47e4ea3c854e9dc", [ null, [ @@ -135963,7 +135963,7 @@ ] ], "block-container-block-start-002.html": [ - "6edbb54e942dbb265aa20b2bd6454c2366ab5677", + "339c990d10edbae71ba9d60707157b9d748aea5a", [ null, [ @@ -135975,8 +135975,21 @@ {} ] ], + "block-container-non-adjoining-item.html": [ + "215175418b834c74f99f66237aebdcd1b859776f", + [ + null, + [ + [ + "/css/css-box/margin-trim/block-container-non-adjoining-item-ref.html", + "==" + ] + ], + {} + ] + ], "block-container-replaced-block-end.html": [ - "6011d10de532c3f90e2644e36c43b3682dd867a1", + "0225460b7b71f163cb22eea1b7c9b275b258b89f", [ null, [ @@ -135989,7 +136002,7 @@ ] ], "block-container-replaced-block-start.html": [ - "c943fb16bbd8a0886de9f4f72ba7d9142279c742", + "10080c974f3b5a013f1a9cb87c55a85121058098", [ null, [ @@ -136002,7 +136015,319 @@ ] ], "block-container-replaced-block.html": [ - "54d701176ce6a8f36f1cb20f5e3be33acda26204", + "036066f6910e9e6043cc8ccb9267c56a861bef6e", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square-only.html", + "==" + ] + ], + {} + ] + ], + "flex-block-end-trimmed-only.html": [ + "0a99b3f308bb7f232a8295aa79ce40995ffd94c5", + [ + null, + [ + [ + "/css/css-box/margin-trim/flex-block-end-trimmed-only-ref.html", + "==" + ] + ], + {} + ] + ], + "flex-block-start-trimmed-only.html": [ + "5e867ea43d1ce873ac7984ce1a7271680540cf4c", + [ + null, + [ + [ + "/css/css-box/margin-trim/flex-block-start-trimmed-only-ref.html", + "==" + ] + ], + {} + ] + ], + "flex-block-trimmed-only.html": [ + "e73048282515e62bec6d9fc663df83b2ff8431c0", + [ + null, + [ + [ + "/css/css-box/margin-trim/flex-block-trimmed-only-ref.html", + "==" + ] + ], + {} + ] + ], + "flex-column-block-multiline.html": [ + "6536d7f00dfcbc7e6e80ad18731c0b69825176ce", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square-only.html", + "==" + ] + ], + {} + ] + ], + "flex-column-grow.html": [ + "62c55b2bfff07c019ea7e5292b0d81f407ca96be", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square-only.html", + "==" + ] + ], + {} + ] + ], + "flex-column-inline-multiline.html": [ + "25003aab08e8f383ac2fdd33963d5e5d5af9afd3", + [ + null, + [ + [ + "/css/css-box/margin-trim/flex-column-inline-multiline-ref.html", + "==" + ] + ], + {} + ] + ], + "flex-column-orthogonal-item.html": [ + "9f13e2ce71ca8255e1a16558633c45ecbd45cd73", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square-only.html", + "==" + ] + ], + {} + ] + ], + "flex-column-shrink.html": [ + "06395ff6d5e35cbe125f58bed7de482759a1ea70", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square-only.html", + "==" + ] + ], + {} + ] + ], + "flex-inline-end-trimmed-only.html": [ + "33451daf30a9d0035529c53d40a8f2316109de3f", + [ + null, + [ + [ + "/css/css-box/margin-trim/flex-inline-end-trimmed-only-ref.html", + "==" + ] + ], + {} + ] + ], + "flex-inline-start-trimmed-only.html": [ + "05cf112e66adc4b1364b789b5697e89c8d0eb594", + [ + null, + [ + [ + "/css/css-box/margin-trim/flex-inline-start-trimmed-only-ref.html", + "==" + ] + ], + {} + ] + ], + "flex-inline-trimmed-only.html": [ + "637dc485afed7d29238ccb1e4b24e3d6bbff08a1", + [ + null, + [ + [ + "/css/css-box/margin-trim/flex-inline-trimmed-only-ref.html", + "==" + ] + ], + {} + ] + ], + "flex-row-block-multiline.html": [ + "c8fc788ca266e655c725d82c5f23160fbc7b5282", + [ + null, + [ + [ + "/css/css-box/margin-trim/flex-row-block-multiline-ref.html", + "==" + ] + ], + {} + ] + ], + "flex-row-grow.html": [ + "64395461cfd714e37a8dec5ff339f8fc343d3b59", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square-only.html", + "==" + ] + ], + {} + ] + ], + "flex-row-inline-multiline.html": [ + "d563373d50a1cad7542d60f5ec3880a13c5c7347", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square-only.html", + "==" + ] + ], + {} + ] + ], + "flex-row-orthogonal-item.html": [ + "3facc7450caa965d47fb05cfad558136931b51fb", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square-only.html", + "==" + ] + ], + {} + ] + ], + "flex-row-shrink.html": [ + "172c946cb4a004aa0f6146f674d5f53ee48b9db4", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square-only.html", + "==" + ] + ], + {} + ] + ], + "flex-trim-all-margins.html": [ + "1c2eda8aa095978938005704200bf107a7716fb1", + [ + null, + [ + [ + "/css/css-box/margin-trim/flex-trim-all-margins-ref.html", + "==" + ] + ], + {} + ] + ], + "grid-block-end.html": [ + "ffbc374756c22872c05e6c19d2a296a3cc8f0a1a", + [ + null, + [ + [ + "/css/css-box/margin-trim/grid-block-end-ref.html", + "==" + ] + ], + {} + ] + ], + "grid-block-start.html": [ + "21d5447253581111503f95bb304107d0b70871d8", + [ + null, + [ + [ + "/css/css-box/margin-trim/grid-block-start-ref.html", + "==" + ] + ], + {} + ] + ], + "grid-block.html": [ + "6a4c3bbc9466db04dc06e0d880e7d505d3f5ae82", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square-only.html", + "==" + ] + ], + {} + ] + ], + "grid-inline-end.html": [ + "3754a9b50aa189c52f32def4ca2f739b089e4003", + [ + null, + [ + [ + "/css/css-box/margin-trim/grid-inline-end-ref.html", + "==" + ] + ], + {} + ] + ], + "grid-inline-start.html": [ + "e0f4c6d45467eed5ab4ba8d084c58632b231dd8e", + [ + null, + [ + [ + "/css/css-box/margin-trim/grid-inline-start-ref.html", + "==" + ] + ], + {} + ] + ], + "grid-inline.html": [ + "1ac228296afaa9e8ef8437af4f62719796db6329", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square-only.html", + "==" + ] + ], + {} + ] + ], + "grid-trim-ignores-collapsed-tracks.html": [ + "15768ea7aa91425b12d9dee0dacd0eb83bf0cc91", [ null, [ @@ -174079,7 +174404,7 @@ ] ], "font-colorization.html": [ - "076910a791c0b25a06352218c241fc1818be90ac", + "252d15fc5610ef6df5f73625b9dca56892565d83", [ null, [ @@ -271630,6 +271955,19 @@ {} ] ], + "ch-unit-018.html": [ + "d79fec7f498309a699981cd6dbaf533af533459e", + [ + null, + [ + [ + "/css/css-values/reference/ch-unit-016-ref.html", + "==" + ] + ], + {} + ] + ], "ex-calc-expression-001.html": [ "4eab829697f87606a64d60f360a04639e61ccabb", [ @@ -271683,7 +272021,7 @@ ] ], "ex-unit-004.html": [ - "46f9384e9f77b02344825bc1107700d097846c29", + "1edf97d4ead3f418c82400d56aa09f21622901af", [ null, [ @@ -271838,6 +272176,19 @@ {} ] ], + "ic-unit-015.html": [ + "3be22ecc20557b5084559d51ce18ea5268703680", + [ + null, + [ + [ + "/css/css-values/reference/ch-unit-016-ref.html", + "==" + ] + ], + {} + ] + ], "lh-unit-001.html": [ "f7a6fc9551b4524a41bdb97cb9293ff973cf3e52", [ @@ -276115,6 +276466,19 @@ {} ] ], + "view-transition-name-is-grouping.html": [ + "95739351f0fa508ba3449f104317812acbba89b6", + [ + null, + [ + [ + "/css/css-view-transitions/view-transition-name-is-grouping-ref.html", + "==" + ] + ], + {} + ] + ], "web-animations-api.html": [ "b9d62fabc6b3d485e73cdd4708923b4f9821949e", [ @@ -313158,6 +313522,32 @@ {} ] ], + "fallback-001.svg": [ + "e2788e5f93e4f13352a53a57e229f90d1b1011d4", + [ + null, + [ + [ + "/svg/pservers/reftests/reference/green-100x100.svg", + "==" + ] + ], + {} + ] + ], + "fallback-002.svg": [ + "6180cb2a96fb0a80c0b08e3a9000935b9360a73a", + [ + null, + [ + [ + "/svg/pservers/reftests/reference/green-100x100.svg", + "==" + ] + ], + {} + ] + ], "marker-path-001.svg": [ "7fb4adf4277321eb69e50fecb9018c1950aef4ca", [ @@ -318851,7 +319241,7 @@ [] ], "aes_gcm_vectors.js": [ - "72566ded62f1f9dac9ba5945fd8edeb6bb56fba4", + "bc406f8f0ef78e0759f1dd5b4a48892ce43fcde4", [] ], "rsa.js": [ @@ -318925,7 +319315,7 @@ }, "util": { "helpers.js": [ - "8874f731f8bbcf453c63d14d88fc3248d0291429", + "ee9d09d1251237dfd1bf8a3d4ade55d8b683bee5", [] ], "worker-report-crypto-subtle-presence.js": [ @@ -343025,7 +343415,7 @@ [] ], "cookie-helper.sub.js": [ - "1420779e0d5a13d8da9a242324143e2e6b043afa", + "ff33ecb6bd2c025c58ec07924b8ac99d8529a461", [] ], "cookie-test.js": [ @@ -363963,7 +364353,65 @@ "META.yml": [ "dde409360faf79a301c3ae3ea34a995d154d7bb4", [] - ] + ], + "margin-trim": { + "block-container-non-adjoining-item-ref.html": [ + "4affb87f11b2174047836baecc556734fd2e77b7", + [] + ], + "flex-block-end-trimmed-only-ref.html": [ + "514518243665d2225fda093931188c6d10b73219", + [] + ], + "flex-block-start-trimmed-only-ref.html": [ + "58a7e5ba31fb0d6cb39e552f29c5dba77eafe522", + [] + ], + "flex-block-trimmed-only-ref.html": [ + "f4cf4fec863f0d3ca86f18a231d6b1aabd48b211", + [] + ], + "flex-column-inline-multiline-ref.html": [ + "c4b36a91b7bfb0a4872a036626a50e0333317bfc", + [] + ], + "flex-inline-end-trimmed-only-ref.html": [ + "9fb945d00c99c0c16be88b9f5db31d0ac2e7490c", + [] + ], + "flex-inline-start-trimmed-only-ref.html": [ + "f7dc9ec5c5e63c271311ab5afc5ccbae3867d3a6", + [] + ], + "flex-inline-trimmed-only-ref.html": [ + "e262b903df597cc36c8ea93577c52080641ef671", + [] + ], + "flex-row-block-multiline-ref.html": [ + "8eb29f580618891f14f2c1ab33ce320c4f49b275", + [] + ], + "flex-trim-all-margins-ref.html": [ + "aebc1045d16f2777d2a32d09ca7e1e6f38065d75", + [] + ], + "grid-block-end-ref.html": [ + "0ada6451471ca1ec61f88b403bab0f40c393ef8e", + [] + ], + "grid-block-start-ref.html": [ + "486b64c74aa5b65e96416aeac0a7c88e3b4a7c2c", + [] + ], + "grid-inline-end-ref.html": [ + "e51a97faf8f91b41cf8596e053cbc66acaa2a158", + [] + ], + "grid-inline-start-ref.html": [ + "c35b1f5fe64eda18b695ae759be5d74c1202672b", + [] + ] + } }, "css-break": { "META.yml": [ @@ -369723,7 +370171,7 @@ [] ], "font-colorization-ref.html": [ - "55d3d341cb43f5c094fa1509ef7a0f1fba332cbc", + "b2c69198cc3643fa9997591e3333c91f6dc393fc", [] ], "font-default-01-ref.html": [ @@ -394758,6 +395206,10 @@ [] ] }, + "view-transition-name-is-grouping-ref.html": [ + "add20600f818ee118422c770c0a3f0cd367740b6", + [] + ], "web-animations-api-ref.html": [ "b97396c491f515885b0cfd1e778ea88cc9c8ea10", [] @@ -399335,7 +399787,7 @@ [] ], "interpolation-testcommon.js": [ - "002841cfead0f5c764bc34c47b9209522e35b017", + "aa8239ae928654b903dff5ae5a7e3e8c57826846", [] ], "numeric-testcommon.js": [ @@ -400514,7 +400966,7 @@ }, "scrolling": { "scroll_support.js": [ - "169393e4c3e4194548d8989bb3855d32e023ce24", + "847a9891d6a87ce3ac5ccfeb382e619f59992999", [] ] } @@ -401091,15 +401543,15 @@ [] ], "fontname.js": [ - "f4193a9bce7298473feb79b7c823d881f233267d", + "b42be89c66e1794ca301958af420b8b94338cebf", [] ], "fontsize.js": [ - "eb741b4f331dccdb831be9a20c31d6f4e29bab4f", + "bbaa6d8447844b33cd6b9e13da6bf20576d47c31", [] ], "forecolor.js": [ - "57deb5b434ae3a5610282f5182cf5ee2c3e98610", + "fde8364be234e224460f986636c76a42ed87a6fa", [] ], "formatblock.js": [ @@ -401179,7 +401631,7 @@ [] ], "multitest.js": [ - "9948c338b4071eeef68b41d3788693c6864b1e04", + "89f5eebdb666c896e0c549bf0683894d0b64e8f8", [] ], "outdent.js": [ @@ -404296,38 +404748,6 @@ "54961ae54bcb25ce95a461d7ccecfdd1414a6475", [] ], - "message-target-dedicated-worker.js": [ - "26ff23ef8ac65009c3c5efd4bdeda3970ae93910", - [] - ], - "message-target-service-worker.js": [ - "4a6174ae3b5539300954f6f36782a96a066b4889", - [] - ], - "message-target-shared-worker.js": [ - "6829c61d4cf9f32f4834ae09ffba1d614b0430a0", - [] - ], - "message-target.html": [ - "32c7f0c56c61d4d2f6e432dd3c38f8afe91f9762", - [] - ], - "message-target.js": [ - "191b4748ab5fc5c0e0416d1e96c476262c6cfe0d", - [] - ], - "messaging-blob-helpers.js": [ - "852f2e2d3213075ce738fbc2bb5ac4a1f4008ad6", - [] - ], - "messaging-helpers.js": [ - "55fc04ab817aeac2ccf13e716030264666b79d97", - [] - ], - "messaging-serialize-helpers.js": [ - "ada68f43db50683ec3350e243ebe8da6966e8196", - [] - ], "opaque-origin-sandbox.html": [ "f489f889b3cfbe7887c6c6dad04de79cd52cc76e", [] @@ -423237,6 +423657,10 @@ "93865b930da39216831b33d17bd1bdf0ecb72eed", [] ], + "early-hints-delay.h2.py": [ + "ba8796bc11a136fa9652fbf6b07612c929c1c9b0", + [] + ], "early-hints-helpers.sub.js": [ "3991e8fe9da479dd0f5b4cea537542ba948a8540", [] @@ -425978,7 +426402,7 @@ [] ], "app-can-make-payment.js": [ - "cd27bce02e0920167cf19fce4c150eeadcad949c", + "6b060dffb7848ea40529bd7cf8782f1b49c64c66", [] ], "app-change-payment-method.js": [ @@ -425994,7 +426418,7 @@ [] ], "app-simple.js": [ - "833a01f47e0c09ea306ebde565e72d2d2ed715e4", + "9e70c08246b5b534ea032b9275b0d82676b3c701", [] ], "app-supports-shipping-contact-delegation.js": [ @@ -426005,14 +426429,22 @@ "5b334d9c3aca0a974c9c32063c5b56d2214a89e2", [] ], + "can-make-payment-event-manifest.json": [ + "b31ea5ce08b59d8b227f8ad03555244e1f616b52", + [] + ], "change-payment-method-manual-manifest.json": [ - "8f33def77ba18987d0edbe941ce0da90c39b7cec", + "7a4f5d6f7e20d8abf03a4add842d1dad603c87a3", [] ], "change-shipping-address-manual-manifest.json": [ "08b034e825ca66488d61da8dc4f49e3f18323006", [] ], + "change-shipping-option-manual-manifest.json": [ + "2c023902b2a79b01fcaaf22315ecd284ff3896e8", + [] + ], "manifest.json": [ "875d74b66306ad17d29e3f75ad7d250ba74da20e", [] @@ -426027,10 +426459,18 @@ "1aea7000c1428e84f8e1d4ce1ccae63e97741122", [] ], + "payment-request-event-manual-manifest.json": [ + "f97229762ce388ff0695d56684099b9286326a29", + [] + ], "register-and-activate-service-worker.js": [ "fb54c5c06488f319b0b4152837cc6a1b530cab7a", [] ], + "supports-shipping-contact-delegation-manual-manifest.json": [ + "fd6bc89ef6d38e0cee82bfadcc697e36a2952070", + [] + ], "untrusted-event.js": [ "e067952cc3b7dd0eb74909001e49615e20a8f8b9", [] @@ -427101,7 +427541,7 @@ [] ], "prefetch-helper.js": [ - "cf0e0d583cd937664cee79d7c9fe0566f56f0288", + "367d4824c4174b65a77999bae70c26a779edb51e", [] ], "prefetch-info.py": [ @@ -429000,7 +429440,7 @@ } }, "resource-timing-level1.js": [ - "95b5cdfb1ed0ca2bbfd6b692ad565512218dd7a4", + "6167777fe68fa3d08534857b8a6e3d585bf8947a", [] ], "resources": { @@ -429184,6 +429624,14 @@ "7debc9ce3f6cb061be8ca37b73fcf9f2a5396389", [] ], + "header-delay.h2.py": [ + "be29e52b0e836ca0228b9e51cd22c31a0bb4c899", + [] + ], + "header-delay.py": [ + "a47a63e9814a78bd06e2f55922de27fe073da45f", + [] + ], "iframe-TAO-crossorigin-port.sub.html": [ "97d77fcc58a3bbd347a98e2cbd9fa6243a83838a", [] @@ -429497,7 +429945,7 @@ [] ], "mock-subapps.js": [ - "467d932465bb63b031e831b2f42f98ad2935d04f", + "ddbf27649e19954fd602b80aac17e1b5c19576be", [] ], "mock-textdetection.js": [ @@ -433990,10 +434438,14 @@ [] ], "helpers.js": [ - "de9fba2d1c48fbb6cdbfcba9e7a9aaf99f68e04a", + "99ba79234135f6dc8f2d92692ac23e8ea89b637a", [] ], "resources": { + "embedded_responder.js": [ + "0d563e6b30ccaf55229de06e5e1c0a846f5f4e4b", + [] + ], "hasStorageAccess-iframe.html": [ "d57c3961e54f6d599ffe13af4498470a2e49e636", [] @@ -434010,6 +434462,10 @@ "4880464a257c65e16d7a70471a31a571f8de4878", [] ], + "script-with-cookie-header.py": [ + "83129a55595e54225afd7e9161931d8e5f60f0c0", + [] + ], "set-cookie.py": [ "019697a4a8608943e0258664138ce9a7b6ae6876", [] @@ -435904,7 +436360,7 @@ [] ], "requirements_mypy.txt": [ - "7948c2035886a7c8223ac2c785d16526f19df650", + "7ee915ddb125b6e213425c965dd6482caa00f386", [] ], "requirements_pytest.txt": [ @@ -454260,6 +454716,36 @@ } ] ], + "back-forward-cache-open-transaction.window.js": [ + "41d70d597c7f95d858a6aa9372b278d7f5a3a5e5", + [ + "IndexedDB/back-forward-cache-open-transaction.window.html", + { + "script_metadata": [ + [ + "title", + "BFCache support test for page with open IndexedDB transaction" + ], + [ + "script", + "/common/dispatcher/dispatcher.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "script", + "/html/browsers/browsing-the-web/back-forward-cache/resources/rc-helper.js" + ], + [ + "script", + "/html/browsers/browsing-the-web/remote-context-helper/resources/remote-context-helper.js" + ] + ] + } + ] + ], "bigint_value.htm": [ "acdeebb76f50ae4cbee33a4654af25c270004bcc", [ @@ -487761,21 +488247,21 @@ ] ], "animation-delay-end-computed.html": [ - "bfb89d0267f5ad9a5ef7cb01e8ad6dc4b536a2fc", + "77f96706383df2fb9a25478b5b35807b67bedf2d", [ null, {} ] ], "animation-delay-end-invalid.html": [ - "bff31f3789a4fd9e8ff8be99e1af61882d46af62", + "7cabd4e8e54d96d7c3b36fc9473022cf530f664d", [ null, {} ] ], "animation-delay-end-valid.html": [ - "22ab9fe3b736c0a1f9c4415a223f12e254bbdc19", + "162c781bb010066bfb17e87f64932180abb472c8", [ null, {} @@ -487796,7 +488282,7 @@ ] ], "animation-delay-shorthand.html": [ - "f09f0a948ca94a183c818d27c6dda6b65a16e6fa", + "5c74a4d8e432ca41d02e5ec44330518f5162f457", [ null, {} @@ -487817,7 +488303,7 @@ ] ], "animation-delay-start-valid.html": [ - "22ab9fe3b736c0a1f9c4415a223f12e254bbdc19", + "f52286444edb71cdeb24bc57f8de8d566113730a", [ null, {} @@ -487963,6 +488449,55 @@ {} ] ], + "animation-range-end-computed.html": [ + "ff30fbfc3fb9cca723b2615ad908f149ee3375b8", + [ + null, + {} + ] + ], + "animation-range-end-invalid.html": [ + "c1f2800feeeed6222758bb262edd2cd425b34fb5", + [ + null, + {} + ] + ], + "animation-range-end-valid.html": [ + "b2aee359adc5eaf9a5c684a1109218950b79f70c", + [ + null, + {} + ] + ], + "animation-range-shorthand.html": [ + "dcccc2fc4dbae73342c4a5f357398a05132748a4", + [ + null, + {} + ] + ], + "animation-range-start-computed.html": [ + "e2d9498f41c9bc0ed8e967a52263a5bf87b99898", + [ + null, + {} + ] + ], + "animation-range-start-invalid.html": [ + "b2eaecc293a492694ba9e8aa644c2d3f7708a650", + [ + null, + {} + ] + ], + "animation-range-start-valid.html": [ + "1aea7e15729e071c5e12794209a78b4ebe39ea4d", + [ + null, + {} + ] + ], "animation-shorthand.html": [ "b981ad3ad6893c3305183c965be973eb369331c5", [ @@ -491079,7 +491614,7 @@ ] ], "content-visibility-035.html": [ - "bc84c28d4a362cc37755ec8886573d2a1f70f8ee", + "c2f62ca438b19bf6004ad46cd31a48ace05fd1a7", [ null, {} @@ -494080,7 +494615,7 @@ ] ], "font-variation-settings-composition.html": [ - "58f037415e23801fb2c540e5ae3b032cdd4ff0c8", + "e1ebfc283682c6d7cfcbab69c871324799c4ad04", [ null, {} @@ -494201,6 +494736,13 @@ {} ] ], + "font-shorthand-subproperties-reset.html": [ + "4ed91e8fd3d7a142c252b183e6d22291525b3464", + [ + null, + {} + ] + ], "font-size-relative-across-calc-ff-bug-001.html": [ "167de8888725ca55090ac80cda43cddb299b7c7d", [ @@ -498716,7 +499258,7 @@ ] ], "image-set-parsing.html": [ - "b9b335a287b8a3ed9194ac6a4d80ef6c94ab7ef3", + "868861b8add32ea7e7822383f04a4bb219dd747f", [ null, {} @@ -514820,14 +515362,14 @@ }, "css-view-transitions": { "duplicate-tag-rejects-capture.html": [ - "da340deccb3c52d173af94dcdec5883a3548c2e2", + "951294babc2731eb1f86c32bc90c0beab95d70e4", [ null, {} ] ], "duplicate-tag-rejects-start.html": [ - "f34c337e0c98e81859b4fba43dc2b4e06e41feb5", + "6c99d6426c04f553dea129f0c0f978aba1c33c24", [ null, {} @@ -514864,21 +515406,21 @@ ] ], "no-containment-on-new-element-mid-transition.html": [ - "551d2c41f789220984169771f3ccf8a0de029016", + "dc5ede4d8d34dd69a767d2f49871649b36b4ab75", [ null, {} ] ], "no-containment-on-new-element.html": [ - "46f576dbd564ec2f31e812f7e201bc0d6f8ef90f", + "57f148309b4a93bd007e43cb16ba280104fe02e0", [ null, {} ] ], "no-containment-on-old-element.html": [ - "8b21916019e1880212a9803d4205556ba402d169", + "b0af95bf6ceb5635e8dbaf1eb8caab4cec0d361e", [ null, {} @@ -514975,7 +515517,7 @@ ] ], "pseudo-computed-style-stays-in-sync-with-new-element.html": [ - "103dc31930ca9db862415952139b555d715cf5ab", + "576b7525cc67de0b6687e1d20cddc857bb45eb02", [ null, {} @@ -514989,7 +515531,7 @@ ] ], "ready_resolves_after_dom_before_raf.html": [ - "3bc1822314cb06e57e7fac789a2372884b62539c", + "40a2ad47670223d5f40ac5b8689e152bff8eba54", [ null, {} @@ -515003,7 +515545,7 @@ ] ], "synchronous-callback-skipped-before-run.html": [ - "d1ada87e9d6a92cef204a1198891170c62bb80ca", + "d6023a7fd202c2df7e377a7baeefcabc2e41c286", [ null, {} @@ -515017,14 +515559,14 @@ ] ], "transition-skipped-from-invalid-callback.html": [ - "0dd098cbdfaa598f820b72b808d25ff1eba10c8a", + "cf3853cd5705bb291a3f9fc2eb8c9fc6d1d1d3d6", [ null, {} ] ], "unset-and-initial-view-transition-name.html": [ - "4ff5c05316bd8d2c433bff359e3be220dce55da9", + "2715a5bb3346febd5eab526acb05bff6a8254cdc", [ null, {} @@ -520497,7 +521039,7 @@ ], "reactions": { "Animation.html": [ - "47eff97497c65e1324947d26825c1539677cb7d9", + "f8d3bb86ed78ac3d0a804d7bd56f0b97bd95d481", [ null, {} @@ -522760,6 +523302,15 @@ } ] ], + "scrollend-event-fired-for-mandatory-snap-point-after-load.html": [ + "a51069bc088fa4c8e3d1645e59a00545e95e64ec", + [ + null, + { + "testdriver": true + } + ] + ], "scrollend-event-fired-for-programmatic-scroll.html": [ "c6569e0bebbd9f8bc0fe91415acdbbae482b82dd", [ @@ -522817,7 +523368,7 @@ ] ], "scrollend-event-for-user-scroll.html": [ - "5146c5f719a1e4728a2c9aa0bdd54516ac1fe5c1", + "e9be7c98483b86b9a8a7ce29202ba96e837df371", [ null, { @@ -546096,7 +546647,7 @@ ] ], "authentication-redirection.any.js": [ - "b6376368116e76270d489493350e4226293bb8da", + "a0175e6d2a72da37501cde7e2350655b036df602", [ "fetch/api/credentials/authentication-redirection.any.html", { @@ -556764,14 +557315,14 @@ ] ], "FileSystemSyncAccessHandle-read-write.https.tentative.worker.js": [ - "cdefc78b6cb2115114accbd449e34766fbf0849b", + "8fa3799a67a4f1bb0fdc2c623638bb60d6ae2c3c", [ "fs/FileSystemSyncAccessHandle-read-write.https.tentative.worker.html", {} ] ], "FileSystemSyncAccessHandle-truncate.https.tentative.worker.js": [ - "921e0066c9023ee30810be46f3d1c4652c473c03", + "f2cd51ef1a1d9711343461888018a61600243885", [ "fs/FileSystemSyncAccessHandle-truncate.https.tentative.worker.html", {} @@ -614930,6 +615481,15 @@ } ] ], + "early-hints-response-time.h2.html": [ + "ac70b3d332e6540881d0e683f91e3493df7ef6f1", + [ + null, + { + "timeout": "long" + } + ] + ], "embed-object.h2.window.js": [ "82365fafddbb8df1ea80cecdf2d24db65e3ef379", [ @@ -624821,7 +625381,7 @@ ] ], "can-make-payment-event.https.html": [ - "941c206e3b36fc91175e414bf773dd54e5d7d982", + "776c68be43ad727b6f8108bb6dbbebd7ebec3196", [ null, { @@ -629377,6 +629937,50 @@ {} ] ], + "prefetch-cache.html": [ + "844b4d7be59b8f74a536267701ad54bb3e0e4caf", + [ + null, + {} + ] + ], + "prefetch-document.html": [ + "bdb12bd58a036a1f7429e362acb078f0d2f75d4b", + [ + null, + {} + ] + ], + "prefetch-events.html": [ + "7857b14f51466b88b78b12793268e48d021a8b6c", + [ + null, + { + "timeout": "long" + } + ] + ], + "prefetch-headers.html": [ + "0a475c7d7735cb535f24b62339fdd42d4d5443cb", + [ + null, + {} + ] + ], + "prefetch-load-event.html": [ + "c1cb75d52ea6db7b48d2c606619b69b3c03fbb3c", + [ + null, + {} + ] + ], + "prefetch-types.html": [ + "276439e5440b2157eb2bfaf6a2fbe8b4ec05b3ff", + [ + null, + {} + ] + ], "preload-connect-to-doc.html": [ "ba45f6f3f848068ee9120b89c41307af22d570d3", [ @@ -642428,7 +643032,7 @@ ] ], "notify.html": [ - "7f0e448540465fa56d7074aa2ad3f353aef8ceb9", + "dc2e268b8a11c331a866310dde3a48a91b3ba1c0", [ null, {} @@ -643065,6 +643669,20 @@ {} ] ], + "interim-response-times.h2.html": [ + "850ee7cb5f539b76ddfd9c1489915fa9ddaf7215", + [ + null, + {} + ] + ], + "interim-response-times.html": [ + "b922590d5d32c2b3899d82e4ea9297d54b6c7cc2", + [ + null, + {} + ] + ], "link-sequence-of-events.html": [ "be9db32cd92968a210f54a26ae14b6e93a8e836c", [ @@ -645528,7 +646146,7 @@ ] ], "animation-timeline-multiple.html": [ - "8ae37bf751982355ef89c3db2c491e4e68b27ba0", + "7eccdf89b6c20f26c219d6cc62f32c990ba38e17", [ null, {} @@ -645612,7 +646230,7 @@ ] ], "scroll-timeline-axis-writing-mode.html": [ - "90912bfc2270558d4810cd3a183d666c2118c32f", + "37b4dfdf549e52943c5e8a35683cc6a998442db4", [ null, {} @@ -645667,8 +646285,8 @@ {} ] ], - "scroll-timeline-name-tree-scoped.html": [ - "622a582cce9d2704139f5e7c7a363e00d7581e91", + "scroll-timeline-name-shadow.html": [ + "3d6a55883e023abcd220ed162edc7bd330ad5024", [ null, {} @@ -645710,7 +646328,7 @@ ] ], "scroll-timeline-shorthand.tentative.html": [ - "b340ff34ffe4e2ba0d93014ce114656ec3fb5373", + "c76ee9e22bb6cd945c61ca6591cf68ef5093af7f", [ null, {} @@ -645800,8 +646418,15 @@ {} ] ], - "view-timeline-name-tree-scoped.html": [ - "c216c345ed97a30b7f6892c802c14c8c3ffc4554", + "view-timeline-name-shadow.html": [ + "bf93d8c160d2f8f0490d6f83fb859a84ac6c1d09", + [ + null, + {} + ] + ], + "view-timeline-range-animation.html": [ + "32febb2f2b6666cf5530b6fe6f20527c494ba667", [ null, {} @@ -655471,6 +656096,32 @@ } ] ], + "requestStorageAccess-cross-origin-iframe-navigation.sub.https.window.js": [ + "5081bb4a9cb7ded381bfcc52716b013c508210a1", + [ + "storage-access-api/requestStorageAccess-cross-origin-iframe-navigation.sub.https.window.html", + { + "script_metadata": [ + [ + "script", + "helpers.js" + ], + [ + "script", + "/cookies/resources/cookie-helper.sub.js" + ], + [ + "script", + "/resources/testdriver.js" + ], + [ + "script", + "/resources/testdriver-vendor.js" + ] + ] + } + ] + ], "requestStorageAccess-cross-origin-iframe.sub.https.window.js": [ "38e3fd6d9abb47ccb6ba4b91609d903caf3ce364", [ @@ -655493,6 +656144,32 @@ } ] ], + "requestStorageAccess-cross-origin-sibling-iframes.sub.https.window.js": [ + "75ea90744ff11691b1a4c134c42bb755572c5381", + [ + "storage-access-api/requestStorageAccess-cross-origin-sibling-iframes.sub.https.window.html", + { + "script_metadata": [ + [ + "script", + "helpers.js" + ], + [ + "script", + "/cookies/resources/cookie-helper.sub.js" + ], + [ + "script", + "/resources/testdriver.js" + ], + [ + "script", + "/resources/testdriver-vendor.js" + ] + ] + } + ] + ], "requestStorageAccess-insecure.sub.window.js": [ "f845f0647ca001e7a5fe304816a055e2d70c28df", [ @@ -659716,7 +660393,7 @@ }, "subapps": { "add-error.tentative.https.html": [ - "c9db29b62de6599425f7157c3d50d956f1e69f48", + "3dafdcd5aca11819808c393a22bb15fcb14b4e1f", [ null, { @@ -659725,7 +660402,7 @@ ] ], "add-success.tentative.https.html": [ - "b2751adcb8fa0b68817d46687a5196fbd75f37b2", + "fee7c6605c626c68bc591ce885cadff7cd294ee8", [ null, { @@ -659766,14 +660443,14 @@ ] ], "list-success.tentative.https.html": [ - "0ee02230e805b1085a901a64e102182e48e5738f", + "d214b8ac14a7588c27c313f2ee6df1e138ccdb0c", [ null, {} ] ], "remove-error.tentative.https.html": [ - "05305c4fafc5db90d13db4f7ac65a6c10154e710", + "e447ccede5c53199789ef8c8defb80e18303311a", [ null, {} @@ -674691,7 +675368,7 @@ ] ], "audiocontext-sinkid-setsinkid.https.html": [ - "c4fbe41e921c5403077e23e1074194f3caaf4e26", + "61d2586bfb7d43a406fc661d31806c85c96904b0", [ null, {} @@ -679508,7 +680185,7 @@ ] ], "videoFrame-serialization.crossAgentCluster.https.html": [ - "5822cb8415e2202f39347793482216d1afe231b8", + "e07f61072dd41cdfa6280daaaf18239df43052d2", [ null, {} @@ -705924,29 +706601,14 @@ ] ], "xhr-authorization-redirect.any.js": [ - "e9a4db44f7238117cab3027d5d88859f83fc63fc", + "beed7c31d70616cd66634b48b64ca8ae8eeeeee4", [ "xhr/xhr-authorization-redirect.any.html", { "script_metadata": [ [ "global", - "window,worker" - ], - [ - "script", - "/common/get-host-info.sub.js" - ] - ] - } - ], - [ - "xhr/xhr-authorization-redirect.any.serviceworker.html", - { - "script_metadata": [ - [ - "global", - "window,worker" + "window,sharedworker,dedicatedworker" ], [ "script", @@ -705961,7 +706623,7 @@ "script_metadata": [ [ "global", - "window,worker" + "window,sharedworker,dedicatedworker" ], [ "script", @@ -705976,7 +706638,7 @@ "script_metadata": [ [ "global", - "window,worker" + "window,sharedworker,dedicatedworker" ], [ "script", diff --git a/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-001.html.ini b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-001.html.ini new file mode 100644 index 00000000000..0842d0b5727 --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-001.html.ini @@ -0,0 +1,3 @@ +[hit-test-floats-001.html] + [hit-test-floats-001] + expected: FAIL diff --git a/tests/wpt/metadata/css/CSS2/normal-flow/block-in-inline-hittest-float-002.html.ini b/tests/wpt/metadata/css/CSS2/normal-flow/block-in-inline-hittest-float-002.html.ini new file mode 100644 index 00000000000..3e5096beef3 --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/normal-flow/block-in-inline-hittest-float-002.html.ini @@ -0,0 +1,3 @@ +[block-in-inline-hittest-float-002.html] + [block-in-inline-hittest-float-002] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-animations/parsing/animation-delay-end-computed.html.ini b/tests/wpt/metadata/css/css-animations/parsing/animation-delay-end-computed.html.ini index 8e44295440a..6c025f1c5e7 100644 --- a/tests/wpt/metadata/css/css-animations/parsing/animation-delay-end-computed.html.ini +++ b/tests/wpt/metadata/css/css-animations/parsing/animation-delay-end-computed.html.ini @@ -40,3 +40,15 @@ [Property animation-delay-start value 'exit 1%, cover 2%, contain 100%'] expected: FAIL + + [Property animation-delay-end value 'initial'] + expected: FAIL + + [Property animation-delay-end value '-500ms'] + expected: FAIL + + [Property animation-delay-end value 'calc(2 * 3s)'] + expected: FAIL + + [Property animation-delay-end value '20s, 10s'] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-animations/parsing/animation-delay-end-valid.html.ini b/tests/wpt/metadata/css/css-animations/parsing/animation-delay-end-valid.html.ini index 7d2dc54a87b..b4afe67f574 100644 --- a/tests/wpt/metadata/css/css-animations/parsing/animation-delay-end-valid.html.ini +++ b/tests/wpt/metadata/css/css-animations/parsing/animation-delay-end-valid.html.ini @@ -37,3 +37,15 @@ [e.style['animation-delay-start'\] = "enter 42%" should set the property value] expected: FAIL + + [e.style['animation-delay-end'\] = "-5ms" should set the property value] + expected: FAIL + + [e.style['animation-delay-end'\] = "0s" should set the property value] + expected: FAIL + + [e.style['animation-delay-end'\] = "10s" should set the property value] + expected: FAIL + + [e.style['animation-delay-end'\] = "20s, 10s" should set the property value] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-animations/parsing/animation-range-end-computed.html.ini b/tests/wpt/metadata/css/css-animations/parsing/animation-range-end-computed.html.ini new file mode 100644 index 00000000000..07a502f1be5 --- /dev/null +++ b/tests/wpt/metadata/css/css-animations/parsing/animation-range-end-computed.html.ini @@ -0,0 +1,36 @@ +[animation-range-end-computed.html] + [Property animation-range-end value 'initial'] + expected: FAIL + + [Property animation-range-end value 'auto'] + expected: FAIL + + [Property animation-range-end value 'cover 0%'] + expected: FAIL + + [Property animation-range-end value 'COVER 0%'] + expected: FAIL + + [Property animation-range-end value 'cover 100%'] + expected: FAIL + + [Property animation-range-end value 'cover 120%'] + expected: FAIL + + [Property animation-range-end value 'cover 42%'] + expected: FAIL + + [Property animation-range-end value 'cover -42%'] + expected: FAIL + + [Property animation-range-end value 'contain 42%'] + expected: FAIL + + [Property animation-range-end value 'exit 42%'] + expected: FAIL + + [Property animation-range-end value 'exit calc(41% + 1%)'] + expected: FAIL + + [Property animation-range-end value 'exit 1%, cover 2%, contain 100%'] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-animations/parsing/animation-range-end-valid.html.ini b/tests/wpt/metadata/css/css-animations/parsing/animation-range-end-valid.html.ini new file mode 100644 index 00000000000..92e90bdaed7 --- /dev/null +++ b/tests/wpt/metadata/css/css-animations/parsing/animation-range-end-valid.html.ini @@ -0,0 +1,30 @@ +[animation-range-end-valid.html] + [e.style['animation-range-end'\] = "auto" should set the property value] + expected: FAIL + + [e.style['animation-range-end'\] = "cover 0%" should set the property value] + expected: FAIL + + [e.style['animation-range-end'\] = "cover 100%" should set the property value] + expected: FAIL + + [e.style['animation-range-end'\] = "cover 120%" should set the property value] + expected: FAIL + + [e.style['animation-range-end'\] = "cover 42%" should set the property value] + expected: FAIL + + [e.style['animation-range-end'\] = "cover -42%" should set the property value] + expected: FAIL + + [e.style['animation-range-end'\] = "contain 42%" should set the property value] + expected: FAIL + + [e.style['animation-range-end'\] = "exit 42%" should set the property value] + expected: FAIL + + [e.style['animation-range-end'\] = "exit 1%, cover 2%, contain 100%" should set the property value] + expected: FAIL + + [e.style['animation-range-end'\] = "enter 42%" should set the property value] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-animations/parsing/animation-range-shorthand.html.ini b/tests/wpt/metadata/css/css-animations/parsing/animation-range-shorthand.html.ini new file mode 100644 index 00000000000..d27e95b749e --- /dev/null +++ b/tests/wpt/metadata/css/css-animations/parsing/animation-range-shorthand.html.ini @@ -0,0 +1,90 @@ +[animation-range-shorthand.html] + [e.style['animation-range'\] = "cover" should set the property value] + expected: FAIL + + [e.style['animation-range'\] = "contain" should set the property value] + expected: FAIL + + [e.style['animation-range'\] = "enter" should set the property value] + expected: FAIL + + [e.style['animation-range'\] = "exit" should set the property value] + expected: FAIL + + [e.style['animation-range'\] = "enter, exit" should set the property value] + expected: FAIL + + [e.style['animation-range'\] = "enter 0% enter 100%" should set the property value] + expected: FAIL + + [e.style['animation-range'\] = "exit 0% exit 100%" should set the property value] + expected: FAIL + + [e.style['animation-range'\] = "cover 0% cover 100%" should set the property value] + expected: FAIL + + [e.style['animation-range'\] = "contain 0% contain 100%" should set the property value] + expected: FAIL + + [e.style['animation-range'\] = "cover 50%" should set the property value] + expected: FAIL + + [e.style['animation-range'\] = "contain 50%" should set the property value] + expected: FAIL + + [e.style['animation-range'\] = "enter 50%" should set the property value] + expected: FAIL + + [e.style['animation-range'\] = "exit 50%" should set the property value] + expected: FAIL + + [e.style['animation-range'\] = "enter 50% exit 50%" should set the property value] + expected: FAIL + + [e.style['animation-range'\] = "cover 50% enter 50%, contain 50% exit 50%" should set the property value] + expected: FAIL + + [e.style['animation-range'\] = "cover" should set animation-range-end] + expected: FAIL + + [e.style['animation-range'\] = "cover" should set animation-range-start] + expected: FAIL + + [e.style['animation-range'\] = "cover" should not set unrelated longhands] + expected: FAIL + + [e.style['animation-range'\] = "contain" should set animation-range-end] + expected: FAIL + + [e.style['animation-range'\] = "contain" should set animation-range-start] + expected: FAIL + + [e.style['animation-range'\] = "contain" should not set unrelated longhands] + expected: FAIL + + [e.style['animation-range'\] = "enter 10% exit 20%" should set animation-range-end] + expected: FAIL + + [e.style['animation-range'\] = "enter 10% exit 20%" should set animation-range-start] + expected: FAIL + + [e.style['animation-range'\] = "enter 10% exit 20%" should not set unrelated longhands] + expected: FAIL + + [e.style['animation-range'\] = "enter, exit" should set animation-range-end] + expected: FAIL + + [e.style['animation-range'\] = "enter, exit" should set animation-range-start] + expected: FAIL + + [e.style['animation-range'\] = "enter, exit" should not set unrelated longhands] + expected: FAIL + + [e.style['animation-range'\] = "enter 0%, exit" should set animation-range-end] + expected: FAIL + + [e.style['animation-range'\] = "enter 0%, exit" should set animation-range-start] + expected: FAIL + + [e.style['animation-range'\] = "enter 0%, exit" should not set unrelated longhands] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-animations/parsing/animation-range-start-computed.html.ini b/tests/wpt/metadata/css/css-animations/parsing/animation-range-start-computed.html.ini new file mode 100644 index 00000000000..8a79e77b727 --- /dev/null +++ b/tests/wpt/metadata/css/css-animations/parsing/animation-range-start-computed.html.ini @@ -0,0 +1,36 @@ +[animation-range-start-computed.html] + [Property animation-range-start value 'initial'] + expected: FAIL + + [Property animation-range-start value 'auto'] + expected: FAIL + + [Property animation-range-start value 'cover 0%'] + expected: FAIL + + [Property animation-range-start value 'COVER 0%'] + expected: FAIL + + [Property animation-range-start value 'cover 100%'] + expected: FAIL + + [Property animation-range-start value 'cover 120%'] + expected: FAIL + + [Property animation-range-start value 'cover 42%'] + expected: FAIL + + [Property animation-range-start value 'cover -42%'] + expected: FAIL + + [Property animation-range-start value 'contain 42%'] + expected: FAIL + + [Property animation-range-start value 'exit 42%'] + expected: FAIL + + [Property animation-range-start value 'exit calc(41% + 1%)'] + expected: FAIL + + [Property animation-range-start value 'exit 1%, cover 2%, contain 100%'] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-animations/parsing/animation-range-start-valid.html.ini b/tests/wpt/metadata/css/css-animations/parsing/animation-range-start-valid.html.ini new file mode 100644 index 00000000000..5494d27d6af --- /dev/null +++ b/tests/wpt/metadata/css/css-animations/parsing/animation-range-start-valid.html.ini @@ -0,0 +1,30 @@ +[animation-range-start-valid.html] + [e.style['animation-range-start'\] = "auto" should set the property value] + expected: FAIL + + [e.style['animation-range-start'\] = "cover 0%" should set the property value] + expected: FAIL + + [e.style['animation-range-start'\] = "cover 100%" should set the property value] + expected: FAIL + + [e.style['animation-range-start'\] = "cover 120%" should set the property value] + expected: FAIL + + [e.style['animation-range-start'\] = "cover 42%" should set the property value] + expected: FAIL + + [e.style['animation-range-start'\] = "cover -42%" should set the property value] + expected: FAIL + + [e.style['animation-range-start'\] = "contain 42%" should set the property value] + expected: FAIL + + [e.style['animation-range-start'\] = "exit 42%" should set the property value] + expected: FAIL + + [e.style['animation-range-start'\] = "exit 1%, cover 2%, contain 100%" should set the property value] + expected: FAIL + + [e.style['animation-range-start'\] = "enter 42%" should set the property value] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-color/animation/opacity-animation-ending-correctly-001.html.ini b/tests/wpt/metadata/css/css-color/animation/opacity-animation-ending-correctly-001.html.ini new file mode 100644 index 00000000000..304b1579ca4 --- /dev/null +++ b/tests/wpt/metadata/css/css-color/animation/opacity-animation-ending-correctly-001.html.ini @@ -0,0 +1,2 @@ +[opacity-animation-ending-correctly-001.html] + expected: TIMEOUT diff --git a/tests/wpt/metadata/css/css-flexbox/hittest-before-pseudo.html.ini b/tests/wpt/metadata/css/css-flexbox/hittest-before-pseudo.html.ini deleted file mode 100644 index 5b685485f3c..00000000000 --- a/tests/wpt/metadata/css/css-flexbox/hittest-before-pseudo.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[hittest-before-pseudo.html] - [Hit-testing text within a pseudo-element flex-item should return the flexbox as the hittest result.] - expected: FAIL diff --git a/tests/wpt/metadata/css/css-fonts/font-shorthand-subproperties-reset.html.ini b/tests/wpt/metadata/css/css-fonts/font-shorthand-subproperties-reset.html.ini new file mode 100644 index 00000000000..94c6da92bc6 --- /dev/null +++ b/tests/wpt/metadata/css/css-fonts/font-shorthand-subproperties-reset.html.ini @@ -0,0 +1,2 @@ +[font-shorthand-subproperties-reset.html] + expected: TIMEOUT diff --git a/tests/wpt/metadata/css/css-fonts/variations/at-font-face-font-matching.html.ini b/tests/wpt/metadata/css/css-fonts/variations/at-font-face-font-matching.html.ini index c8f6e89d8d7..14609d786d6 100644 --- a/tests/wpt/metadata/css/css-fonts/variations/at-font-face-font-matching.html.ini +++ b/tests/wpt/metadata/css/css-fonts/variations/at-font-face-font-matching.html.ini @@ -149,9 +149,6 @@ [Matching font-style: 'normal' should prefer 'normal' over 'oblique 0deg'] expected: FAIL - [Matching font-style: 'oblique 0deg' should prefer 'oblique 0deg' over 'oblique 5deg'] - expected: FAIL - [Matching font-style: 'oblique -20deg' should prefer 'oblique -20deg' over 'oblique -60deg -40deg'] expected: FAIL @@ -206,9 +203,6 @@ [Matching font-style: 'oblique 10deg' should prefer 'oblique 5deg' over 'oblique 15deg 20deg'] expected: FAIL - [Matching font-weight: '500' should prefer '500' over '450 460'] - expected: FAIL - [Matching font-weight: '399' should prefer '400' over '450 460'] expected: FAIL @@ -239,15 +233,9 @@ [Matching font-style: 'oblique -21deg' should prefer 'italic' over 'oblique 0deg'] expected: FAIL - [Matching font-style: 'oblique 20deg' should prefer 'oblique 0deg' over 'oblique -50deg -20deg'] - expected: FAIL - [Matching font-style: 'oblique 10deg' should prefer 'oblique 40deg 50deg' over 'italic'] expected: FAIL - [Matching font-style: 'oblique -20deg' should prefer 'italic' over 'oblique 0deg'] - expected: FAIL - [Matching font-style: 'normal' should prefer 'oblique 20deg 30deg' over 'oblique -50deg -20deg'] expected: FAIL @@ -275,9 +263,6 @@ [Matching font-weight: '400' should prefer '351 398' over '501 550'] expected: FAIL - [Matching font-weight: '430' should prefer '450 460' over '500'] - expected: FAIL - [Matching font-weight: '430' should prefer '400 425' over '350 399'] expected: FAIL @@ -302,8 +287,26 @@ [Matching font-style: 'oblique 21deg' should prefer 'italic' over 'oblique 0deg'] expected: FAIL - [Matching font-style: 'oblique -10deg' should prefer 'oblique -50deg -40deg' over 'italic'] + [Matching font-stretch: '110%' should prefer '105%' over '100%'] expected: FAIL - [Matching font-style: 'oblique -20deg' should prefer 'oblique -60deg -40deg' over 'oblique -10deg'] + [Matching font-stretch: '90%' should prefer '90% 100%' over '50% 80%'] + expected: FAIL + + [Matching font-style: 'italic' should prefer 'oblique 40deg 50deg' over 'oblique 5deg 10deg'] + expected: FAIL + + [Matching font-style: 'italic' should prefer 'oblique 0deg' over 'oblique -60deg -30deg'] + expected: FAIL + + [Matching font-style: 'oblique 20deg' should prefer 'oblique 30deg 60deg' over 'oblique 40deg 50deg'] + expected: FAIL + + [Matching font-style: 'oblique 20deg' should prefer 'oblique 40deg 50deg' over 'oblique 10deg'] + expected: FAIL + + [Matching font-style: 'oblique 10deg' should prefer 'oblique 10deg' over 'oblique 5deg'] + expected: FAIL + + [Matching font-style: 'oblique 10deg' should prefer 'oblique 15deg 20deg' over 'oblique 30deg 60deg'] expected: FAIL diff --git a/tests/wpt/metadata/css/css-transforms/transform-root-bg-002.html.ini b/tests/wpt/metadata/css/css-transforms/transform-root-bg-002.html.ini deleted file mode 100644 index 440732f996d..00000000000 --- a/tests/wpt/metadata/css/css-transforms/transform-root-bg-002.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[transform-root-bg-002.html] - expected: TIMEOUT diff --git a/tests/wpt/metadata/css/css-transforms/transform-scale-hittest.html.ini b/tests/wpt/metadata/css/css-transforms/transform-scale-hittest.html.ini index 3f9c5003739..4a1232b3c22 100644 --- a/tests/wpt/metadata/css/css-transforms/transform-scale-hittest.html.ini +++ b/tests/wpt/metadata/css/css-transforms/transform-scale-hittest.html.ini @@ -1,3 +1,6 @@ [transform-scale-hittest.html] [Hit test intersecting scaled box] expected: FAIL + + [Hit test within unscaled box] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-transitions/properties-value-001.html.ini b/tests/wpt/metadata/css/css-transitions/properties-value-001.html.ini index daa399d64cd..dba439bf82a 100644 --- a/tests/wpt/metadata/css/css-transitions/properties-value-001.html.ini +++ b/tests/wpt/metadata/css/css-transitions/properties-value-001.html.ini @@ -325,3 +325,153 @@ [padding-bottom length(em) / values] expected: FAIL + + [color color(rgba) / values] + expected: FAIL + + [font-size length(pt) / values] + expected: FAIL + + [font-size length(pc) / values] + expected: FAIL + + [font-size length(px) / values] + expected: FAIL + + [font-size length(em) / values] + expected: FAIL + + [font-size length(ex) / values] + expected: FAIL + + [font-size length(mm) / values] + expected: FAIL + + [font-size length(cm) / values] + expected: FAIL + + [font-size length(in) / values] + expected: FAIL + + [font-size percentage(%) / values] + expected: FAIL + + [font-weight font-weight(keyword) / values] + expected: FAIL + + [font-weight font-weight(numeric) / values] + expected: FAIL + + [line-height number(integer) / values] + expected: FAIL + + [line-height number(decimal) / values] + expected: FAIL + + [line-height length(pt) / values] + expected: FAIL + + [line-height length(pc) / values] + expected: FAIL + + [line-height length(px) / values] + expected: FAIL + + [line-height length(em) / values] + expected: FAIL + + [line-height length(ex) / values] + expected: FAIL + + [line-height length(mm) / values] + expected: FAIL + + [line-height length(cm) / values] + expected: FAIL + + [line-height length(in) / values] + expected: FAIL + + [line-height percentage(%) / values] + expected: FAIL + + [letter-spacing length(pt) / values] + expected: FAIL + + [letter-spacing length(pc) / values] + expected: FAIL + + [letter-spacing length(px) / values] + expected: FAIL + + [letter-spacing length(em) / values] + expected: FAIL + + [letter-spacing length(ex) / values] + expected: FAIL + + [letter-spacing length(mm) / values] + expected: FAIL + + [letter-spacing length(cm) / values] + expected: FAIL + + [letter-spacing length(in) / values] + expected: FAIL + + [word-spacing length(pt) / values] + expected: FAIL + + [word-spacing length(pc) / values] + expected: FAIL + + [word-spacing length(px) / values] + expected: FAIL + + [word-spacing length(em) / values] + expected: FAIL + + [word-spacing length(ex) / values] + expected: FAIL + + [word-spacing length(mm) / values] + expected: FAIL + + [word-spacing length(cm) / values] + expected: FAIL + + [word-spacing length(in) / values] + expected: FAIL + + [word-spacing percentage(%) / values] + expected: FAIL + + [text-indent length(pt) / values] + expected: FAIL + + [text-indent length(pc) / values] + expected: FAIL + + [text-indent length(px) / values] + expected: FAIL + + [text-indent length(em) / values] + expected: FAIL + + [text-indent length(ex) / values] + expected: FAIL + + [text-indent length(mm) / values] + expected: FAIL + + [text-indent length(cm) / values] + expected: FAIL + + [text-indent length(in) / values] + expected: FAIL + + [text-indent percentage(%) / values] + expected: FAIL + + [text-shadow shadow(shadow) / values] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-transitions/properties-value-inherit-001.html.ini b/tests/wpt/metadata/css/css-transitions/properties-value-inherit-001.html.ini index b0fdc6ab5f2..31367206c0d 100644 --- a/tests/wpt/metadata/css/css-transitions/properties-value-inherit-001.html.ini +++ b/tests/wpt/metadata/css/css-transitions/properties-value-inherit-001.html.ini @@ -56,129 +56,6 @@ [background-position length(px) / events] expected: FAIL - [background-color color(rgba) / events] - expected: FAIL - - [border-top-width length(pt) / events] - expected: FAIL - - [border-top-width length(pc) / events] - expected: FAIL - - [border-top-width length(px) / events] - expected: FAIL - - [border-top-width length(em) / events] - expected: FAIL - - [border-top-width length(ex) / events] - expected: FAIL - - [border-top-width length(mm) / events] - expected: FAIL - - [border-top-width length(cm) / events] - expected: FAIL - - [border-top-width length(in) / events] - expected: FAIL - - [border-right-width length(pt) / events] - expected: FAIL - - [border-right-width length(pc) / events] - expected: FAIL - - [border-right-width length(px) / events] - expected: FAIL - - [border-right-width length(em) / events] - expected: FAIL - - [border-right-width length(ex) / events] - expected: FAIL - - [border-right-width length(mm) / events] - expected: FAIL - - [border-right-width length(cm) / events] - expected: FAIL - - [border-right-width length(in) / events] - expected: FAIL - - [border-bottom-width length(pt) / events] - expected: FAIL - - [border-bottom-width length(pc) / events] - expected: FAIL - - [border-bottom-width length(px) / events] - expected: FAIL - - [border-bottom-width length(em) / events] - expected: FAIL - - [border-bottom-width length(ex) / events] - expected: FAIL - - [border-bottom-width length(mm) / events] - expected: FAIL - - [border-bottom-width length(cm) / events] - expected: FAIL - - [border-bottom-width length(in) / events] - expected: FAIL - - [border-left-width length(pt) / events] - expected: FAIL - - [border-left-width length(pc) / events] - expected: FAIL - - [border-left-width length(px) / events] - expected: FAIL - - [border-left-width length(em) / events] - expected: FAIL - - [border-left-width length(ex) / events] - expected: FAIL - - [border-left-width length(mm) / events] - expected: FAIL - - [border-left-width length(cm) / events] - expected: FAIL - - [border-left-width length(in) / events] - expected: FAIL - - [border-top-color color(rgba) / events] - expected: FAIL - - [border-right-color color(rgba) / events] - expected: FAIL - - [border-bottom-color color(rgba) / events] - expected: FAIL - - [border-left-color color(rgba) / events] - expected: FAIL - - [padding-bottom length(pt) / events] - expected: FAIL - - [padding-bottom length(pc) / events] - expected: FAIL - - [padding-bottom length(px) / events] - expected: FAIL - - [padding-bottom length(em) / events] - expected: FAIL - [padding-bottom length(ex) / events] expected: FAIL @@ -329,156 +206,6 @@ [margin-right length(mm) / events] expected: FAIL - [margin-right length(cm) / events] - expected: FAIL - - [margin-right length(in) / events] - expected: FAIL - - [margin-top length(pt) / events] - expected: FAIL - - [margin-top length(pc) / events] - expected: FAIL - - [margin-top length(px) / events] - expected: FAIL - - [margin-top length(em) / events] - expected: FAIL - - [margin-top length(ex) / events] - expected: FAIL - - [margin-top length(mm) / events] - expected: FAIL - - [margin-top length(cm) / events] - expected: FAIL - - [margin-top length(in) / events] - expected: FAIL - - [height length(pt) / events] - expected: FAIL - - [height length(pc) / events] - expected: FAIL - - [height length(px) / events] - expected: FAIL - - [height length(em) / events] - expected: FAIL - - [height length(ex) / events] - expected: FAIL - - [height length(mm) / events] - expected: FAIL - - [height length(cm) / events] - expected: FAIL - - [height length(in) / events] - expected: FAIL - - [height percentage(%) / events] - expected: FAIL - - [width length(pt) / events] - expected: FAIL - - [width length(pc) / events] - expected: FAIL - - [width length(px) / events] - expected: FAIL - - [width length(em) / events] - expected: FAIL - - [width length(ex) / events] - expected: FAIL - - [width length(mm) / events] - expected: FAIL - - [width length(cm) / events] - expected: FAIL - - [width length(in) / events] - expected: FAIL - - [width percentage(%) / events] - expected: FAIL - - [min-height length(pt) / events] - expected: FAIL - - [min-height length(pc) / events] - expected: FAIL - - [min-height length(px) / events] - expected: FAIL - - [min-height length(em) / events] - expected: FAIL - - [min-height length(ex) / events] - expected: FAIL - - [min-height length(mm) / events] - expected: FAIL - - [min-height length(cm) / events] - expected: FAIL - - [min-height length(in) / events] - expected: FAIL - - [min-height percentage(%) / events] - expected: FAIL - - [min-width length(pt) / events] - expected: FAIL - - [min-width length(pc) / events] - expected: FAIL - - [min-width length(px) / events] - expected: FAIL - - [min-width length(em) / events] - expected: FAIL - - [min-width length(ex) / events] - expected: FAIL - - [min-width length(mm) / events] - expected: FAIL - - [min-width length(cm) / events] - expected: FAIL - - [min-width length(in) / events] - expected: FAIL - - [min-width percentage(%) / events] - expected: FAIL - - [max-height length(pt) / events] - expected: FAIL - - [max-height length(pc) / events] - expected: FAIL - - [max-height length(px) / events] - expected: FAIL - - [max-height length(em) / events] - expected: FAIL - [color color(rgba) / events] expected: FAIL @@ -628,153 +355,3 @@ [text-shadow shadow(shadow) / events] expected: FAIL - - [max-height length(ex) / events] - expected: FAIL - - [max-height length(mm) / events] - expected: FAIL - - [max-height length(cm) / events] - expected: FAIL - - [max-height length(in) / events] - expected: FAIL - - [max-height percentage(%) / events] - expected: FAIL - - [max-width length(pt) / events] - expected: FAIL - - [max-width length(pc) / events] - expected: FAIL - - [max-width length(px) / events] - expected: FAIL - - [max-width length(em) / events] - expected: FAIL - - [max-width length(ex) / events] - expected: FAIL - - [max-width length(mm) / events] - expected: FAIL - - [max-width length(cm) / events] - expected: FAIL - - [max-width length(in) / events] - expected: FAIL - - [max-width percentage(%) / events] - expected: FAIL - - [top length(pt) / events] - expected: FAIL - - [top length(pc) / events] - expected: FAIL - - [top length(px) / events] - expected: FAIL - - [top length(em) / events] - expected: FAIL - - [top length(ex) / events] - expected: FAIL - - [top length(mm) / events] - expected: FAIL - - [top length(cm) / events] - expected: FAIL - - [top length(in) / events] - expected: FAIL - - [top percentage(%) / events] - expected: FAIL - - [right length(pt) / events] - expected: FAIL - - [right length(pc) / events] - expected: FAIL - - [right length(px) / events] - expected: FAIL - - [right length(em) / events] - expected: FAIL - - [right length(ex) / events] - expected: FAIL - - [right length(mm) / events] - expected: FAIL - - [right length(cm) / events] - expected: FAIL - - [right length(in) / events] - expected: FAIL - - [right percentage(%) / events] - expected: FAIL - - [bottom length(pt) / events] - expected: FAIL - - [bottom length(pc) / events] - expected: FAIL - - [bottom length(px) / events] - expected: FAIL - - [bottom length(em) / events] - expected: FAIL - - [bottom length(ex) / events] - expected: FAIL - - [bottom length(mm) / events] - expected: FAIL - - [bottom length(cm) / events] - expected: FAIL - - [bottom length(in) / events] - expected: FAIL - - [bottom percentage(%) / events] - expected: FAIL - - [left length(pt) / events] - expected: FAIL - - [left length(pc) / events] - expected: FAIL - - [left length(px) / events] - expected: FAIL - - [left length(em) / events] - expected: FAIL - - [left length(ex) / events] - expected: FAIL - - [left length(mm) / events] - expected: FAIL - - [left length(cm) / events] - expected: FAIL - - [left length(in) / events] - expected: FAIL - - [left percentage(%) / events] - expected: FAIL diff --git a/tests/wpt/metadata/css/css-transitions/properties-value-inherit-002.html.ini b/tests/wpt/metadata/css/css-transitions/properties-value-inherit-002.html.ini index d316d0d03ec..242ba44bbca 100644 --- a/tests/wpt/metadata/css/css-transitions/properties-value-inherit-002.html.ini +++ b/tests/wpt/metadata/css/css-transitions/properties-value-inherit-002.html.ini @@ -52,126 +52,3 @@ [background-position length(px) / events] expected: FAIL - - [background-color color(rgba) / values] - expected: FAIL - - [border-top-width length(pt) / values] - expected: FAIL - - [border-top-width length(pc) / values] - expected: FAIL - - [border-top-width length(px) / values] - expected: FAIL - - [border-top-width length(em) / values] - expected: FAIL - - [border-top-width length(ex) / values] - expected: FAIL - - [border-top-width length(mm) / values] - expected: FAIL - - [border-top-width length(cm) / values] - expected: FAIL - - [border-top-width length(in) / values] - expected: FAIL - - [border-right-width length(pt) / values] - expected: FAIL - - [border-right-width length(pc) / values] - expected: FAIL - - [border-right-width length(px) / values] - expected: FAIL - - [border-right-width length(em) / values] - expected: FAIL - - [border-right-width length(ex) / values] - expected: FAIL - - [border-right-width length(mm) / values] - expected: FAIL - - [border-right-width length(cm) / values] - expected: FAIL - - [border-right-width length(in) / values] - expected: FAIL - - [border-bottom-width length(pt) / values] - expected: FAIL - - [border-bottom-width length(pc) / values] - expected: FAIL - - [border-bottom-width length(px) / values] - expected: FAIL - - [border-bottom-width length(em) / values] - expected: FAIL - - [border-bottom-width length(ex) / values] - expected: FAIL - - [border-bottom-width length(mm) / values] - expected: FAIL - - [border-bottom-width length(cm) / values] - expected: FAIL - - [border-bottom-width length(in) / values] - expected: FAIL - - [border-left-width length(pt) / values] - expected: FAIL - - [border-left-width length(pc) / values] - expected: FAIL - - [border-left-width length(px) / values] - expected: FAIL - - [border-left-width length(em) / values] - expected: FAIL - - [border-left-width length(ex) / values] - expected: FAIL - - [border-left-width length(mm) / values] - expected: FAIL - - [border-left-width length(cm) / values] - expected: FAIL - - [border-left-width length(in) / values] - expected: FAIL - - [border-top-color color(rgba) / values] - expected: FAIL - - [border-right-color color(rgba) / values] - expected: FAIL - - [border-bottom-color color(rgba) / values] - expected: FAIL - - [border-left-color color(rgba) / values] - expected: FAIL - - [padding-bottom length(pt) / values] - expected: FAIL - - [padding-bottom length(pc) / values] - expected: FAIL - - [padding-bottom length(px) / values] - expected: FAIL - - [padding-bottom length(em) / values] - expected: FAIL diff --git a/tests/wpt/metadata/css/css-values/ch-unit-018.html.ini b/tests/wpt/metadata/css/css-values/ch-unit-018.html.ini new file mode 100644 index 00000000000..7de18ccaf61 --- /dev/null +++ b/tests/wpt/metadata/css/css-values/ch-unit-018.html.ini @@ -0,0 +1,2 @@ +[ch-unit-018.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-values/ic-unit-015.html.ini b/tests/wpt/metadata/css/css-values/ic-unit-015.html.ini new file mode 100644 index 00000000000..7f4ecb1646a --- /dev/null +++ b/tests/wpt/metadata/css/css-values/ic-unit-015.html.ini @@ -0,0 +1,2 @@ +[ic-unit-015.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/cssom-view/elementFromPoint-float-in-relative.html.ini b/tests/wpt/metadata/css/cssom-view/elementFromPoint-float-in-relative.html.ini deleted file mode 100644 index 7e9331b6bc2..00000000000 --- a/tests/wpt/metadata/css/cssom-view/elementFromPoint-float-in-relative.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[elementFromPoint-float-in-relative.html] - [elementFromPoint-float-in-relative] - expected: FAIL diff --git a/tests/wpt/metadata/css/cssom-view/elementFromPoint-list-001.html.ini b/tests/wpt/metadata/css/cssom-view/elementFromPoint-list-001.html.ini index 8ae9bae3500..d113fc3fbba 100644 --- a/tests/wpt/metadata/css/cssom-view/elementFromPoint-list-001.html.ini +++ b/tests/wpt/metadata/css/cssom-view/elementFromPoint-list-001.html.ini @@ -13,3 +13,12 @@ [
  • Outside 3
  • ] expected: FAIL + + [
  • Inside 3
  • ] + expected: FAIL + + [
  • Image Inside 1
  • ] + expected: FAIL + + [
  • Image Inside 2
  • ] + expected: FAIL diff --git a/tests/wpt/metadata/css/cssom-view/elementFromPoint-visibility-hidden-resizer.html.ini b/tests/wpt/metadata/css/cssom-view/elementFromPoint-visibility-hidden-resizer.html.ini new file mode 100644 index 00000000000..a6bca7ac372 --- /dev/null +++ b/tests/wpt/metadata/css/cssom-view/elementFromPoint-visibility-hidden-resizer.html.ini @@ -0,0 +1,3 @@ +[elementFromPoint-visibility-hidden-resizer.html] + [elementFromPoint on resizer area of an element with visibility:hidden] + expected: FAIL diff --git a/tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini b/tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini index ceb43099040..57cbb5a4948 100644 --- a/tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini +++ b/tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini @@ -17,3 +17,6 @@ [test some point of the element: bottom right corner] expected: FAIL + + [test some point of the element: top left corner] + expected: FAIL diff --git a/tests/wpt/metadata/css/cssom-view/elementsFromPoint-invalid-cases.html.ini b/tests/wpt/metadata/css/cssom-view/elementsFromPoint-invalid-cases.html.ini new file mode 100644 index 00000000000..a3496a40d07 --- /dev/null +++ b/tests/wpt/metadata/css/cssom-view/elementsFromPoint-invalid-cases.html.ini @@ -0,0 +1,3 @@ +[elementsFromPoint-invalid-cases.html] + [The root element is the last element returned for otherwise empty queries within the viewport] + expected: FAIL diff --git a/tests/wpt/metadata/fetch/content-length/parsing.window.js.ini b/tests/wpt/metadata/fetch/content-length/parsing.window.js.ini index dbe03dd880c..3285a4f15ac 100644 --- a/tests/wpt/metadata/fetch/content-length/parsing.window.js.ini +++ b/tests/wpt/metadata/fetch/content-length/parsing.window.js.ini @@ -76,9 +76,3 @@ [Input: "Content-Length: ". Expected: 42.] expected: FAIL - - [Input: "Content-Length: 42,42". Expected: 42.] - expected: FAIL - - [Input: "Content-Length: 42\\r\\nContent-Length: 42,42". Expected: 42.] - expected: FAIL diff --git a/tests/wpt/metadata/fetch/metadata/generated/css-images.sub.tentative.html.ini b/tests/wpt/metadata/fetch/metadata/generated/css-images.sub.tentative.html.ini index 36a410bfecb..f9de5391ad6 100644 --- a/tests/wpt/metadata/fetch/metadata/generated/css-images.sub.tentative.html.ini +++ b/tests/wpt/metadata/fetch/metadata/generated/css-images.sub.tentative.html.ini @@ -146,6 +146,3 @@ [list-style-image sec-fetch-site - HTTPS downgrade-upgrade] expected: FAIL - - [border-image sec-fetch-site - HTTPS downgrade (header not sent)] - 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 ba47e36f3af..736ff6130a5 100644 --- a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini +++ b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini @@ -7,6 +7,3 @@ [X-Content-Type-Options%3A%20nosniff%0C] expected: FAIL - - [X-Content-Type-Options%3A%20%2Cnosniff] - expected: FAIL diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/failure-check-sequence.https.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/failure-check-sequence.https.html.ini index 1d68034a37d..ab9ac6e835e 100644 --- a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/failure-check-sequence.https.html.ini +++ b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/failure-check-sequence.https.html.ini @@ -1,12 +1,13 @@ [failure-check-sequence.https.html] + expected: TIMEOUT [CSP check precedes COEP check - CSP header first] - expected: FAIL + expected: NOTRUN [COEP check precedes X-Frame-Options check] - expected: FAIL + expected: NOTRUN [CSP check precedes COEP check - COEP header first] - expected: FAIL + expected: NOTRUN [CSP check precedes X-Frame-Options check] - expected: FAIL + expected: TIMEOUT diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/navigate-to-unparseable-url.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/navigate-to-unparseable-url.html.ini index 27889a98fb5..9eb22957864 100644 --- a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/navigate-to-unparseable-url.html.ini +++ b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/navigate-to-unparseable-url.html.ini @@ -1,6 +1,7 @@ [navigate-to-unparseable-url.html] + expected: TIMEOUT [location.href setter throws a SyntaxError DOMException for unparseable URLs] - expected: FAIL + expected: TIMEOUT [ tag navigate fails for unparseable URLs] - expected: FAIL + expected: NOTRUN diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin.window.js.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin.window.js.ini deleted file mode 100644 index 7dc346632a4..00000000000 --- a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin.window.js.ini +++ /dev/null @@ -1,3 +0,0 @@ -[navigation-unload-same-origin.window.html] - [Same-origin navigation started from unload handler must be ignored] - expected: FAIL diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/a-click.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/a-click.html.ini deleted file mode 100644 index 60a4fa51f8a..00000000000 --- a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/a-click.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[a-click.html] - [aElement.click() before the load event must NOT replace] - expected: FAIL diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini new file mode 100644 index 00000000000..d6188c03424 --- /dev/null +++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini @@ -0,0 +1,3 @@ +[traverse_the_history_4.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..7a5fcb79165 --- /dev/null +++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini @@ -0,0 +1,3 @@ +[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/open-close/creating_browsing_context_test_01.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/open-close/creating_browsing_context_test_01.html.ini deleted file mode 100644 index 4b4820d1729..00000000000 --- a/tests/wpt/metadata/html/browsers/the-window-object/open-close/creating_browsing_context_test_01.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[creating_browsing_context_test_01.html] - [first argument: absolute url] - expected: FAIL diff --git a/tests/wpt/metadata/html/canvas/element/manual/image-smoothing/imagesmoothing.html.ini b/tests/wpt/metadata/html/canvas/element/manual/image-smoothing/imagesmoothing.html.ini new file mode 100644 index 00000000000..6298c4a8174 --- /dev/null +++ b/tests/wpt/metadata/html/canvas/element/manual/image-smoothing/imagesmoothing.html.ini @@ -0,0 +1,6 @@ +[imagesmoothing.html] + [Test that imageSmoothingEnabled = false (nearest-neighbor interpolation) works with fillRect and createPattern().] + expected: FAIL + + [Test that imageSmoothingEnabled = false (nearest-neighbor interpolation) works with stroke() and createPattern().] + expected: FAIL diff --git a/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/update-the-rendering.html.ini b/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/update-the-rendering.html.ini index 9b27c5c1957..add66c12f92 100644 --- a/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/update-the-rendering.html.ini +++ b/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/update-the-rendering.html.ini @@ -1,7 +1,6 @@ [update-the-rendering.html] - expected: TIMEOUT ["Flush autofocus candidates" should be happen after the first animation frame callbacks, and before a resize event in the next iteration of window event loop.] expected: TIMEOUT ["Flush autofocus candidates" should be happen before a scroll event and animation frame callbacks] - expected: TIMEOUT + expected: FAIL diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini index 25d9964f057..2d3fbf0f308 100644 --- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini @@ -1,4 +1,5 @@ [iframe_sandbox_popups_escaping-1.html] type: testharness + expected: TIMEOUT [Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used] - expected: FAIL + expected: TIMEOUT diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini index 6f7461b9472..f9138fb999a 100644 --- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini @@ -1,4 +1,5 @@ [iframe_sandbox_popups_nonescaping-1.html] type: testharness + expected: TIMEOUT [Check that popups from a sandboxed iframe do not escape the sandbox] - expected: FAIL + expected: NOTRUN diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini index d5fd800f09d..ff6467094b8 100644 --- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini @@ -1,4 +1,3 @@ [iframe_sandbox_popups_nonescaping-3.html] - expected: TIMEOUT [Check that popups from a sandboxed iframe do not escape the sandbox] - expected: NOTRUN + expected: FAIL diff --git a/tests/wpt/metadata/html/semantics/forms/form-submission-0/urlencoded2.window.js.ini b/tests/wpt/metadata/html/semantics/forms/form-submission-0/urlencoded2.window.js.ini index 579350c53fe..fcb728e0f9b 100644 --- a/tests/wpt/metadata/html/semantics/forms/form-submission-0/urlencoded2.window.js.ini +++ b/tests/wpt/metadata/html/semantics/forms/form-submission-0/urlencoded2.window.js.ini @@ -175,3 +175,6 @@ [application/x-www-form-urlencoded: backslash in value (normal form)] expected: FAIL + + [application/x-www-form-urlencoded: single quote in name (normal form)] + expected: FAIL diff --git a/tests/wpt/metadata/html/semantics/forms/textfieldselection/select-event.html.ini b/tests/wpt/metadata/html/semantics/forms/textfieldselection/select-event.html.ini new file mode 100644 index 00000000000..451846f45f4 --- /dev/null +++ b/tests/wpt/metadata/html/semantics/forms/textfieldselection/select-event.html.ini @@ -0,0 +1,3 @@ +[select-event.html] + [input type password: setRangeText() event queue] + expected: FAIL diff --git a/tests/wpt/metadata/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html.ini b/tests/wpt/metadata/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html.ini index 73807cb3cc1..cc18f512574 100644 --- a/tests/wpt/metadata/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html.ini +++ b/tests/wpt/metadata/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html.ini @@ -1,6 +1,5 @@ [htmlanchorelement_noopener.html] type: testharness - expected: TIMEOUT [Check that targeting of rel=noopener with a given name ignores an existing window with that name] expected: NOTRUN @@ -14,4 +13,4 @@ expected: FAIL [Check that rel=noopener with target=_self does a normal load] - expected: NOTRUN + expected: FAIL diff --git a/tests/wpt/metadata/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini b/tests/wpt/metadata/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini index 8845054116d..e55f8f2ce3c 100644 --- a/tests/wpt/metadata/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini +++ b/tests/wpt/metadata/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini @@ -3,3 +3,6 @@ expected: TIMEOUT [The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document] expected: TIMEOUT + + [The entry settings object while executing the compiled callback via Web IDL's invoke must be that of the node document] + expected: FAIL diff --git a/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry-different-function-realm.html.ini b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry-different-function-realm.html.ini index dbe1def99e3..7237f5792de 100644 --- a/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry-different-function-realm.html.ini +++ b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry-different-function-realm.html.ini @@ -1,9 +1,10 @@ [promise-job-entry-different-function-realm.html] + expected: TIMEOUT [Fulfillment handler on fulfilled promise] expected: FAIL [Rejection handler on pending-then-rejected promise] - expected: FAIL + expected: TIMEOUT [Thenable resolution] expected: FAIL @@ -12,4 +13,4 @@ expected: FAIL [Fulfillment handler on pending-then-fulfilled promise] - expected: FAIL + expected: TIMEOUT diff --git a/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html.ini b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html.ini index 8bcf3a07de4..31bfd644df0 100644 --- a/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html.ini +++ b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html.ini @@ -1,10 +1,9 @@ [promise-job-entry.html] - expected: TIMEOUT [Fulfillment handler on fulfilled promise] expected: FAIL [Rejection handler on pending-then-rejected promise] - expected: TIMEOUT + expected: FAIL [Sanity check: this all works as expected with no promises involved] expected: FAIL @@ -16,4 +15,4 @@ expected: FAIL [Fulfillment handler on pending-then-fulfilled promise] - expected: TIMEOUT + expected: FAIL diff --git a/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.dedicatedworker.html.ini b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.dedicatedworker.html.ini index 0c232fa74a6..9d6cc1c43db 100644 --- a/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.dedicatedworker.html.ini +++ b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.dedicatedworker.html.ini @@ -1,6 +1,5 @@ [promise-rejection-events.dedicatedworker.html] type: testharness - expected: TIMEOUT [microtask nesting: attaching a handler inside a combination of mutationObserverMicrotask + promise microtasks, all inside a postMessageTask] expected: FAIL @@ -17,7 +16,7 @@ expected: FAIL [delayed handling: delaying handling rejected promise created from createImageBitmap will cause both events to fire] - expected: TIMEOUT + expected: FAIL [unhandledrejection: from createImageBitmap which is UA triggered] 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 1d71471b73c..4a48dd15a9d 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,7 +1,6 @@ [promise-rejection-events.html] - expected: TIMEOUT [delayed handling: delaying handling rejected promise created from createImageBitmap will cause both events to fire] - expected: TIMEOUT + expected: FAIL [unhandledrejection: from createImageBitmap which is UA triggered] expected: FAIL diff --git a/tests/wpt/metadata/resource-timing/content-type-parsing.html.ini b/tests/wpt/metadata/resource-timing/content-type-parsing.html.ini index e3d3c3916cf..d8855aa5584 100644 --- a/tests/wpt/metadata/resource-timing/content-type-parsing.html.ini +++ b/tests/wpt/metadata/resource-timing/content-type-parsing.html.ini @@ -10,16 +10,16 @@ expected: FAIL [content-type 3 : text/plain;charset=gbk,text/html] - expected: TIMEOUT + expected: FAIL [content-type 4 : text/plain;charset=gbk,text/html;charset=windows-1254] - expected: NOTRUN + expected: FAIL [content-type 5 : text/plain;charset=gbk,text/plain] - expected: NOTRUN + expected: FAIL [content-type 6 : text/plain;charset=gbk,text/plain;charset=windows-1252] - expected: NOTRUN + expected: TIMEOUT [content-type 7 : text/html;charset=gbk,text/html;x=",text/plain] expected: NOTRUN diff --git a/tests/wpt/metadata/resource-timing/interim-response-times.h2.html.ini b/tests/wpt/metadata/resource-timing/interim-response-times.h2.html.ini new file mode 100644 index 00000000000..249721963bd --- /dev/null +++ b/tests/wpt/metadata/resource-timing/interim-response-times.h2.html.ini @@ -0,0 +1,15 @@ +[interim-response-times.h2.html] + [Fetch from same-origin with early hints, without Timing-Allow-Origin should expose interim response times] + expected: FAIL + + [Fetch from cross-origin with early hints, with Timing-Allow-Origin should expose interim response times] + expected: FAIL + + [Fetch from cross-origin with early hints, without Timing-Allow-Origin should not expose interim response times] + expected: FAIL + + [Fetch from same-origin without early hints, without Timing-Allow-Origin should not expose interim response times] + expected: FAIL + + [Fetch from cross-origin without early hints, with Timing-Allow-Origin should not expose interim response times] + expected: FAIL diff --git a/tests/wpt/metadata/resource-timing/interim-response-times.html.ini b/tests/wpt/metadata/resource-timing/interim-response-times.html.ini new file mode 100644 index 00000000000..efec5faa42f --- /dev/null +++ b/tests/wpt/metadata/resource-timing/interim-response-times.html.ini @@ -0,0 +1,15 @@ +[interim-response-times.html] + [Fetch from same-origin with early hints, without Timing-Allow-Origin should expose interim response times] + expected: FAIL + + [Fetch from cross-origin with early hints, with Timing-Allow-Origin should expose interim response times] + expected: FAIL + + [Fetch from cross-origin with early hints, without Timing-Allow-Origin should not expose interim response times] + expected: FAIL + + [Fetch from same-origin without early hints, without Timing-Allow-Origin should not expose interim response times] + expected: FAIL + + [Fetch from cross-origin without early hints, with Timing-Allow-Origin should not expose interim response times] + expected: FAIL diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audiocontext-interface/audiocontext-sinkid-setsinkid.https.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audiocontext-interface/audiocontext-sinkid-setsinkid.https.html.ini index ce022303d4f..f3aa918dcbe 100644 --- a/tests/wpt/metadata/webaudio/the-audio-api/the-audiocontext-interface/audiocontext-sinkid-setsinkid.https.html.ini +++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audiocontext-interface/audiocontext-sinkid-setsinkid.https.html.ini @@ -20,3 +20,6 @@ [setSinkId() should fail with InvalidStateError when calling from adetached document] expected: NOTRUN + + [pending setSinkId() should be rejected with InvalidStateError whenAudioContext is closed] + expected: NOTRUN diff --git a/tests/wpt/metadata/webstorage/localstorage-about-blank-3P-iframe-opens-3P-window.partitioned.tentative.html.ini b/tests/wpt/metadata/webstorage/localstorage-about-blank-3P-iframe-opens-3P-window.partitioned.tentative.html.ini new file mode 100644 index 00000000000..aa6c9e5b826 --- /dev/null +++ b/tests/wpt/metadata/webstorage/localstorage-about-blank-3P-iframe-opens-3P-window.partitioned.tentative.html.ini @@ -0,0 +1,4 @@ +[localstorage-about-blank-3P-iframe-opens-3P-window.partitioned.tentative.html] + expected: TIMEOUT + [StorageKey: test 3P about:blank window opened from a 3P iframe] + expected: TIMEOUT diff --git a/tests/wpt/metadata/workers/baseurl/alpha/sharedworker-in-worker.html.ini b/tests/wpt/metadata/workers/baseurl/alpha/sharedworker-in-worker.html.ini index 9b715377e1a..bbfb36bc188 100644 --- a/tests/wpt/metadata/workers/baseurl/alpha/sharedworker-in-worker.html.ini +++ b/tests/wpt/metadata/workers/baseurl/alpha/sharedworker-in-worker.html.ini @@ -1,3 +1,4 @@ [sharedworker-in-worker.html] + expected: ERROR [Base URL in workers: new SharedWorker()] expected: FAIL diff --git a/tests/wpt/mozilla/meta/css/stylesheet_media_queries.html.ini b/tests/wpt/mozilla/meta/css/stylesheet_media_queries.html.ini new file mode 100644 index 00000000000..77ca6b0688d --- /dev/null +++ b/tests/wpt/mozilla/meta/css/stylesheet_media_queries.html.ini @@ -0,0 +1,3 @@ +[stylesheet_media_queries.html] + [Media queries within stylesheets] + expected: FAIL diff --git a/tests/wpt/mozilla/meta/mozilla/scrollBy.html.ini b/tests/wpt/mozilla/meta/mozilla/scrollBy.html.ini deleted file mode 100644 index f78f699f620..00000000000 --- a/tests/wpt/mozilla/meta/mozilla/scrollBy.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[scrollBy.html] - [Ensure that the window.scrollBy function affects scroll position as expected] - expected: FAIL diff --git a/tests/wpt/web-platform-tests/IndexedDB/back-forward-cache-open-transaction.window.js b/tests/wpt/web-platform-tests/IndexedDB/back-forward-cache-open-transaction.window.js new file mode 100644 index 00000000000..41d70d597c7 --- /dev/null +++ b/tests/wpt/web-platform-tests/IndexedDB/back-forward-cache-open-transaction.window.js @@ -0,0 +1,36 @@ +// META: title=BFCache support test for page with open IndexedDB transaction +// META: script=/common/dispatcher/dispatcher.js +// META: script=/common/utils.js +// META: script=/html/browsers/browsing-the-web/back-forward-cache/resources/rc-helper.js +// META: script=/html/browsers/browsing-the-web/remote-context-helper/resources/remote-context-helper.js + +'use strict'; + +promise_test(async t => { + const rcHelper = new RemoteContextHelper(); + + // Open a window with noopener so that BFCache will work. + const rc1 = await rcHelper.addWindow( + /*config=*/ null, /*options=*/ {features: 'noopener'}); + + await rc1.executeScript(() => { + // Create an IndexedDB database and the object store named `store` as the + // test scope for the transaction later on. + const db = indexedDB.open(/*name=*/ 'test_idb', /*version=*/ 1); + db.onupgradeneeded = () => { + db.result.createObjectStore('store'); + }; + addEventListener('pagehide', () => { + let transaction = db.result.transaction(['store'], 'readwrite'); + let store = transaction.objectStore('store'); + store.put("key", "value"); + + // Queue a request to close the connection, while keeping the transaction + // open, so that the BFCache eligibility will be determined solely by the + // pending transaction. + db.result.close(); + }); + }); + + await assertBFCache(rc1, /*shouldRestoreFromBFCache=*/ true); +}); diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_gcm_vectors.js b/tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_gcm_vectors.js index 72566ded62f..bc406f8f0ef 100644 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_gcm_vectors.js +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_gcm_vectors.js @@ -246,7 +246,7 @@ function getTestVectors() { var failing = []; keyLengths.forEach(function(keyLength) { // First, make some tests for bad tag lengths - [24, 48, 72, 95, 129, 256].forEach(function(badTagLength) { + [24, 48, 72, 95, 129].forEach(function(badTagLength) { failing.push({ name: "AES-GCM " + keyLength.toString() + "-bit key, illegal tag length " + badTagLength.toString() + "-bits", keyBuffer: keyBytes[keyLength], diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/util/helpers.js b/tests/wpt/web-platform-tests/WebCryptoAPI/util/helpers.js index 8874f731f8b..ee9d09d1251 100644 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/util/helpers.js +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/util/helpers.js @@ -160,6 +160,7 @@ function assert_goodCryptoKey(key, algorithm, extractable, usages, kind) { assert_in_array(usage, correctUsages, "Has " + usage + " usage"); }); assert_equals(key.usages.length, usageCount, "usages property is correct"); + assert_equals(key[Symbol.toStringTag], 'CryptoKey', "has the expected Symbol.toStringTag"); } diff --git a/tests/wpt/web-platform-tests/cookies/resources/cookie-helper.sub.js b/tests/wpt/web-platform-tests/cookies/resources/cookie-helper.sub.js index 1420779e0d5..ff33ecb6bd2 100644 --- a/tests/wpt/web-platform-tests/cookies/resources/cookie-helper.sub.js +++ b/tests/wpt/web-platform-tests/cookies/resources/cookie-helper.sub.js @@ -41,11 +41,16 @@ function navigateTo(origin, url) { return origin + "/cookies/resources/navigate.html?location=" + encodeURIComponent(url); } +// Returns whether a cookie with name `name` with value `value` is in the cookie +// string (presumably obtained via document.cookie). +function cookieStringHasCookie(name, value, cookieString) { + return new RegExp(`(?:^|; )${name}=${value}(?:$|;)`).test(cookieString); +} + // Asserts that `document.cookie` contains or does not contain (according to // the value of |present|) a cookie named |name| with a value of |value|. function assert_dom_cookie(name, value, present) { - var re = new RegExp("(?:^|; )" + name + "=" + value + "(?:$|;)"); - assert_equals(re.test(document.cookie), present, "`" + name + "=" + value + "` in `document.cookie`"); + assert_equals(cookieStringHasCookie(name, value, document.cookie), present, "`" + name + "=" + value + "` in `document.cookie`"); } function assert_cookie(origin, obj, name, value, present) { diff --git a/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-delay-end-computed.html b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-delay-end-computed.html index bfb89d0267f..77f96706383 100644 --- a/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-delay-end-computed.html +++ b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-delay-end-computed.html @@ -1,12 +1,12 @@ - +
    diff --git a/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-delay-end-invalid.html b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-delay-end-invalid.html index bff31f3789a..7cabd4e8e54 100644 --- a/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-delay-end-invalid.html +++ b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-delay-end-invalid.html @@ -1,29 +1,29 @@ - + diff --git a/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-delay-end-valid.html b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-delay-end-valid.html index 22ab9fe3b73..162c781bb01 100644 --- a/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-delay-end-valid.html +++ b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-delay-end-valid.html @@ -1,26 +1,11 @@ - + diff --git a/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-delay-shorthand.html b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-delay-shorthand.html index f09f0a948ca..5c74a4d8e43 100644 --- a/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-delay-shorthand.html +++ b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-delay-shorthand.html @@ -5,10 +5,7 @@ - - diff --git a/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-delay-start-valid.html b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-delay-start-valid.html index 22ab9fe3b73..f52286444ed 100644 --- a/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-delay-start-valid.html +++ b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-delay-start-valid.html @@ -8,19 +8,4 @@ test_valid_value("animation-delay-start", "-5ms"); test_valid_value("animation-delay-start", "0s"); test_valid_value("animation-delay-start", "10s"); test_valid_value("animation-delay-start", "20s, 10s"); - -// https://drafts.csswg.org/scroll-animations-1/#view-timelines-ranges -test_valid_value("animation-delay-start", "cover 0%"); -test_valid_value("animation-delay-start", "cover 100%"); -test_valid_value("animation-delay-start", "cover 120%"); -test_valid_value("animation-delay-start", "cover 42%"); -test_valid_value("animation-delay-start", "cover -42%"); -test_valid_value("animation-delay-start", "contain 42%"); -test_valid_value("animation-delay-start", "exit 42%"); -test_valid_value("animation-delay-start", "exit 1%, cover 2%, contain 100%"); - -// There's an open issue in the spec about "enter" vs "entry". -// -// https://drafts.csswg.org/scroll-animations-1/#valdef-animation-timeline-range-entry -test_valid_value("animation-delay-start", "enter 42%"); diff --git a/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-range-end-computed.html b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-range-end-computed.html new file mode 100644 index 00000000000..ff30fbfc3fb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-range-end-computed.html @@ -0,0 +1,20 @@ + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-range-end-invalid.html b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-range-end-invalid.html new file mode 100644 index 00000000000..c1f2800feee --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-range-end-invalid.html @@ -0,0 +1,28 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-range-end-valid.html b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-range-end-valid.html new file mode 100644 index 00000000000..b2aee359adc --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-range-end-valid.html @@ -0,0 +1,22 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-range-shorthand.html b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-range-shorthand.html new file mode 100644 index 00000000000..dcccc2fc4db --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-range-shorthand.html @@ -0,0 +1,74 @@ + +animation-range shorthand + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-range-start-computed.html b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-range-start-computed.html new file mode 100644 index 00000000000..e2d9498f41c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-range-start-computed.html @@ -0,0 +1,20 @@ + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-range-start-invalid.html b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-range-start-invalid.html new file mode 100644 index 00000000000..b2eaecc293a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-range-start-invalid.html @@ -0,0 +1,21 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-range-start-valid.html b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-range-start-valid.html new file mode 100644 index 00000000000..1aea7e15729 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-range-start-valid.html @@ -0,0 +1,22 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-box/margin-trim/block-container-block-001.html b/tests/wpt/web-platform-tests/css/css-box/margin-trim/block-container-block-001.html index 516a90cf652..e31abec3678 100644 --- a/tests/wpt/web-platform-tests/css/css-box/margin-trim/block-container-block-001.html +++ b/tests/wpt/web-platform-tests/css/css-box/margin-trim/block-container-block-001.html @@ -1,7 +1,7 @@ -CSS margin-trim: block trim 001 +margin-trim: block-container-block-001 @@ -9,7 +9,7 @@ diff --git a/tests/wpt/web-platform-tests/css/css-box/margin-trim/block-container-block-002.html b/tests/wpt/web-platform-tests/css/css-box/margin-trim/block-container-block-002.html index 1f86d555bf7..399141b17e4 100644 --- a/tests/wpt/web-platform-tests/css/css-box/margin-trim/block-container-block-002.html +++ b/tests/wpt/web-platform-tests/css/css-box/margin-trim/block-container-block-002.html @@ -1,7 +1,7 @@ -CSS margin-trim: block trim 002 +margin-trim: block-container-block-002 @@ -9,7 +9,7 @@ diff --git a/tests/wpt/web-platform-tests/css/css-box/margin-trim/block-container-block-end-002.html b/tests/wpt/web-platform-tests/css/css-box/margin-trim/block-container-block-end-002.html index 2859e104685..42d559fbe92 100644 --- a/tests/wpt/web-platform-tests/css/css-box/margin-trim/block-container-block-end-002.html +++ b/tests/wpt/web-platform-tests/css/css-box/margin-trim/block-container-block-end-002.html @@ -1,14 +1,14 @@ -CSS margin-trim: block end trim 002 +margin-trim: block-container-block-end-002 diff --git a/tests/wpt/web-platform-tests/css/css-box/margin-trim/block-container-block-start-001.html b/tests/wpt/web-platform-tests/css/css-box/margin-trim/block-container-block-start-001.html index 2fecf07e644..c33c7f0abe5 100644 --- a/tests/wpt/web-platform-tests/css/css-box/margin-trim/block-container-block-start-001.html +++ b/tests/wpt/web-platform-tests/css/css-box/margin-trim/block-container-block-start-001.html @@ -1,7 +1,7 @@ -CSS margin-trim: block start trim 001 +margin-trim: block-container-block-start-001 @@ -9,7 +9,7 @@ diff --git a/tests/wpt/web-platform-tests/css/css-box/margin-trim/block-container-non-adjoining-item-ref.html b/tests/wpt/web-platform-tests/css/css-box/margin-trim/block-container-non-adjoining-item-ref.html new file mode 100644 index 00000000000..4affb87f11b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-box/margin-trim/block-container-non-adjoining-item-ref.html @@ -0,0 +1,28 @@ + + + +margin-trim: block-container-non-adjoining-item + + + + + + +
    +
    +
    +
    This text should be 100px below the green square.
    + + diff --git a/tests/wpt/web-platform-tests/css/css-box/margin-trim/block-container-non-adjoining-item.html b/tests/wpt/web-platform-tests/css/css-box/margin-trim/block-container-non-adjoining-item.html new file mode 100644 index 00000000000..215175418b8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-box/margin-trim/block-container-non-adjoining-item.html @@ -0,0 +1,32 @@ + + + +margin-trim: block-container-non-adjoining-item + + + + + + + +
    +
    +
    +
    This text should be 100px below the green square.
    + + diff --git a/tests/wpt/web-platform-tests/css/css-box/margin-trim/block-container-replaced-block-end.html b/tests/wpt/web-platform-tests/css/css-box/margin-trim/block-container-replaced-block-end.html index 6011d10de53..0225460b7b7 100644 --- a/tests/wpt/web-platform-tests/css/css-box/margin-trim/block-container-replaced-block-end.html +++ b/tests/wpt/web-platform-tests/css/css-box/margin-trim/block-container-replaced-block-end.html @@ -1,14 +1,14 @@ -CSS margin-trim: block container replaced block-end trim +margin-trim: block-container-replaced-block-end + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-block-end-trimmed-only.html b/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-block-end-trimmed-only.html new file mode 100644 index 00000000000..0a99b3f308b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-block-end-trimmed-only.html @@ -0,0 +1,33 @@ + + + +margin-trim: flex-block-end-trimmed-only + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-block-start-trimmed-only-ref.html b/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-block-start-trimmed-only-ref.html new file mode 100644 index 00000000000..58a7e5ba31f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-block-start-trimmed-only-ref.html @@ -0,0 +1,31 @@ + + + +margin-trim: flex-block-start-trimmed-only + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-block-start-trimmed-only.html b/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-block-start-trimmed-only.html new file mode 100644 index 00000000000..5e867ea43d1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-block-start-trimmed-only.html @@ -0,0 +1,33 @@ + + + +margin-trim: flex-block-start-trimmed-only + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-block-trimmed-only-ref.html b/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-block-trimmed-only-ref.html new file mode 100644 index 00000000000..f4cf4fec863 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-block-trimmed-only-ref.html @@ -0,0 +1,30 @@ + + + +margin-trim: flex-block-trimmed-only + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-block-trimmed-only.html b/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-block-trimmed-only.html new file mode 100644 index 00000000000..e7304828251 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-block-trimmed-only.html @@ -0,0 +1,33 @@ + + + +margin-trim: flex-block-trimmed-only + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-column-block-multiline.html b/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-column-block-multiline.html new file mode 100644 index 00000000000..6536d7f00df --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-column-block-multiline.html @@ -0,0 +1,41 @@ + + + +margin-trim: flex-column-block-multiline + + + + + + + +

    Test passes if there is a filled green square.

    + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-column-grow.html b/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-column-grow.html new file mode 100644 index 00000000000..62c55b2bfff --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-column-grow.html @@ -0,0 +1,33 @@ + + + +margin-trim: flex-column-grow + + + + + + + +

    Test passes if there is a filled green square.

    + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-column-inline-multiline-ref.html b/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-column-inline-multiline-ref.html new file mode 100644 index 00000000000..c4b36a91b7b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-column-inline-multiline-ref.html @@ -0,0 +1,33 @@ + + + +margin-trim: flex-column-inline-multiline + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-column-inline-multiline.html b/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-column-inline-multiline.html new file mode 100644 index 00000000000..25003aab08e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-column-inline-multiline.html @@ -0,0 +1,36 @@ + + + +margin-trim: flex-column-inline-multiline + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-column-orthogonal-item.html b/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-column-orthogonal-item.html new file mode 100644 index 00000000000..9f13e2ce71c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-column-orthogonal-item.html @@ -0,0 +1,39 @@ + + + +margin-trim: flex-column-orthogonal-item + + + + + + + +

    Test passes if there is a filled green square.

    + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-column-shrink.html b/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-column-shrink.html new file mode 100644 index 00000000000..06395ff6d5e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-column-shrink.html @@ -0,0 +1,33 @@ + + + +margin-trim: flex-column-shrink + + + + + + + +

    Test passes if there is a filled green square.

    + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-inline-end-trimmed-only-ref.html b/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-inline-end-trimmed-only-ref.html new file mode 100644 index 00000000000..9fb945d00c9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-inline-end-trimmed-only-ref.html @@ -0,0 +1,34 @@ + + + +margin-trim: flex-inline-end-trimmed-only + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-inline-end-trimmed-only.html b/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-inline-end-trimmed-only.html new file mode 100644 index 00000000000..33451daf30a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-inline-end-trimmed-only.html @@ -0,0 +1,33 @@ + + + +margin-trim: flex-inline-end-trimmed-only + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-inline-start-trimmed-only-ref.html b/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-inline-start-trimmed-only-ref.html new file mode 100644 index 00000000000..f7dc9ec5c5e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-inline-start-trimmed-only-ref.html @@ -0,0 +1,34 @@ + + + +margin-trim: flex-inline-start-trimmed-only + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-inline-start-trimmed-only.html b/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-inline-start-trimmed-only.html new file mode 100644 index 00000000000..05cf112e66a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-inline-start-trimmed-only.html @@ -0,0 +1,33 @@ + + + +margin-trim: flex-inline-start-trimmed-only + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-inline-trimmed-only-ref.html b/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-inline-trimmed-only-ref.html new file mode 100644 index 00000000000..e262b903df5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-inline-trimmed-only-ref.html @@ -0,0 +1,31 @@ + + + +margin-trim: flex-inline-trimmed-only + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-inline-trimmed-only.html b/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-inline-trimmed-only.html new file mode 100644 index 00000000000..637dc485afe --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-inline-trimmed-only.html @@ -0,0 +1,33 @@ + + + +margin-trim: flex-inline-trimmed-only + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-row-block-multiline-ref.html b/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-row-block-multiline-ref.html new file mode 100644 index 00000000000..8eb29f58061 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-row-block-multiline-ref.html @@ -0,0 +1,32 @@ + + + +margin-trim: flex-row-block-multiline + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-row-block-multiline.html b/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-row-block-multiline.html new file mode 100644 index 00000000000..c8fc788ca26 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-row-block-multiline.html @@ -0,0 +1,34 @@ + + + +margin-trim: flex-row-block-multiline + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-row-grow.html b/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-row-grow.html new file mode 100644 index 00000000000..64395461cfd --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-row-grow.html @@ -0,0 +1,31 @@ + + + +margin-trim: flex-row-grow + + + + + + + +

    Test passes if there is a filled green square.

    + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-row-inline-multiline.html b/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-row-inline-multiline.html new file mode 100644 index 00000000000..d563373d50a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-row-inline-multiline.html @@ -0,0 +1,39 @@ + + + +margin-trim: flex-row-inline-multiline + + + + + + + +

    Test passes if there is a filled green square.

    + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-row-orthogonal-item.html b/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-row-orthogonal-item.html new file mode 100644 index 00000000000..3facc7450ca --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-row-orthogonal-item.html @@ -0,0 +1,39 @@ + + + +margin-trim: flex-row-orthogonal-item + + + + + + + +

    Test passes if there is a filled green square.

    + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-row-shrink.html b/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-row-shrink.html new file mode 100644 index 00000000000..172c946cb4a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-row-shrink.html @@ -0,0 +1,31 @@ + + + +margin-trim: flex-row-shrink + + + + + + + +

    Test passes if there is a filled green square.

    + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-trim-all-margins-ref.html b/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-trim-all-margins-ref.html new file mode 100644 index 00000000000..aebc1045d16 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-trim-all-margins-ref.html @@ -0,0 +1,29 @@ + + + +margin-trim: flex-trim-all-margins + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-trim-all-margins.html b/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-trim-all-margins.html new file mode 100644 index 00000000000..1c2eda8aa09 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-box/margin-trim/flex-trim-all-margins.html @@ -0,0 +1,32 @@ + + + +margin-trim: flex-trim-all-margins + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-box/margin-trim/grid-block-end-ref.html b/tests/wpt/web-platform-tests/css/css-box/margin-trim/grid-block-end-ref.html new file mode 100644 index 00000000000..0ada6451471 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-box/margin-trim/grid-block-end-ref.html @@ -0,0 +1,29 @@ + + + +margin-trim: grid-block-end + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-box/margin-trim/grid-block-end.html b/tests/wpt/web-platform-tests/css/css-box/margin-trim/grid-block-end.html new file mode 100644 index 00000000000..ffbc374756c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-box/margin-trim/grid-block-end.html @@ -0,0 +1,33 @@ + + + +margin-trim: grid-block-end + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-box/margin-trim/grid-block-start-ref.html b/tests/wpt/web-platform-tests/css/css-box/margin-trim/grid-block-start-ref.html new file mode 100644 index 00000000000..486b64c74aa --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-box/margin-trim/grid-block-start-ref.html @@ -0,0 +1,33 @@ + + + +margin-trim: grid-block-start + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-box/margin-trim/grid-block-start.html b/tests/wpt/web-platform-tests/css/css-box/margin-trim/grid-block-start.html new file mode 100644 index 00000000000..21d54472535 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-box/margin-trim/grid-block-start.html @@ -0,0 +1,33 @@ + + + +margin-trim: grid-block-start + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-box/margin-trim/grid-block.html b/tests/wpt/web-platform-tests/css/css-box/margin-trim/grid-block.html new file mode 100644 index 00000000000..6a4c3bbc946 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-box/margin-trim/grid-block.html @@ -0,0 +1,38 @@ + + + +margin-trim: grid-block + + + + + + + +

    Test passes if there is a filled green square.

    + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-box/margin-trim/grid-inline-end-ref.html b/tests/wpt/web-platform-tests/css/css-box/margin-trim/grid-inline-end-ref.html new file mode 100644 index 00000000000..e51a97faf8f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-box/margin-trim/grid-inline-end-ref.html @@ -0,0 +1,31 @@ + + + +margin-trim: grid-inline-end + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-box/margin-trim/grid-inline-end.html b/tests/wpt/web-platform-tests/css/css-box/margin-trim/grid-inline-end.html new file mode 100644 index 00000000000..3754a9b50aa --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-box/margin-trim/grid-inline-end.html @@ -0,0 +1,33 @@ + + + +margin-trim: grid-inline-end + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-box/margin-trim/grid-inline-start-ref.html b/tests/wpt/web-platform-tests/css/css-box/margin-trim/grid-inline-start-ref.html new file mode 100644 index 00000000000..c35b1f5fe64 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-box/margin-trim/grid-inline-start-ref.html @@ -0,0 +1,35 @@ + + + +margin-trim: grid-inline-start + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-box/margin-trim/grid-inline-start.html b/tests/wpt/web-platform-tests/css/css-box/margin-trim/grid-inline-start.html new file mode 100644 index 00000000000..e0f4c6d4546 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-box/margin-trim/grid-inline-start.html @@ -0,0 +1,34 @@ + + + +margin-trim: grid-inline-start + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-box/margin-trim/grid-inline.html b/tests/wpt/web-platform-tests/css/css-box/margin-trim/grid-inline.html new file mode 100644 index 00000000000..1ac228296af --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-box/margin-trim/grid-inline.html @@ -0,0 +1,38 @@ + + + +margin-trim: grid-inline + + + + + + + +

    Test passes if there is a filled green square.

    + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-box/margin-trim/grid-trim-ignores-collapsed-tracks.html b/tests/wpt/web-platform-tests/css/css-box/margin-trim/grid-trim-ignores-collapsed-tracks.html new file mode 100644 index 00000000000..15768ea7aa9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-box/margin-trim/grid-trim-ignores-collapsed-tracks.html @@ -0,0 +1,34 @@ + + + +margin-trim: grid-trim-ignores-collapsed-tracks + + + + + + + +

    Test passes if there is a filled green square.

    + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-035.html b/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-035.html index bc84c28d4a3..c2f62ca438b 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-035.html +++ b/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-035.html @@ -10,7 +10,7 @@
    - +
    diff --git a/tests/wpt/web-platform-tests/css/css-fonts/animations/font-variation-settings-composition.html b/tests/wpt/web-platform-tests/css/css-fonts/animations/font-variation-settings-composition.html index 58f037415e2..e1ebfc28368 100644 --- a/tests/wpt/web-platform-tests/css/css-fonts/animations/font-variation-settings-composition.html +++ b/tests/wpt/web-platform-tests/css/css-fonts/animations/font-variation-settings-composition.html @@ -11,6 +11,14 @@ + +
    + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-images/image-set/image-set-parsing.html b/tests/wpt/web-platform-tests/css/css-images/image-set/image-set-parsing.html index b9b335a287b..868861b8add 100644 --- a/tests/wpt/web-platform-tests/css/css-images/image-set/image-set-parsing.html +++ b/tests/wpt/web-platform-tests/css/css-images/image-set/image-set-parsing.html @@ -11,6 +11,13 @@ function test_valid_value_variants(property, value, serializedValue) { if (!serializedValue) serializedValue = value; test_valid_value(property, value, serializedValue); + + // The '-webkit-' prefixed 'image-set' is expected to serialize to the same + // value as standard 'image-set'. + // https://drafts.csswg.org/css-images-4/#deprecated + // "Implementations must accept -webkit-image-set() as a parse-time alias of + // image-set(). (It’s a valid value, with identical arguments to image-set(), + // and is turned into image-set() during parsing.)" test_valid_value(property, "-webkit-" + value, serializedValue); } diff --git a/tests/wpt/web-platform-tests/css/css-values/ch-unit-018.html b/tests/wpt/web-platform-tests/css/css-values/ch-unit-018.html new file mode 100644 index 00000000000..d79fec7f498 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-values/ch-unit-018.html @@ -0,0 +1,35 @@ + + +CSS Values and Units Test: support for the ch unit + + + + + +

    The test passes if there are two blue rectangles of equal length.

    + +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-values/ex-unit-004.html b/tests/wpt/web-platform-tests/css/css-values/ex-unit-004.html index 46f9384e9f7..1edf97d4ead 100644 --- a/tests/wpt/web-platform-tests/css/css-values/ex-unit-004.html +++ b/tests/wpt/web-platform-tests/css/css-values/ex-unit-004.html @@ -10,6 +10,7 @@ @font-face { font-family: ExTestNoSpace; src: url(resources/ExTest-NoSpace.woff); + unicode-range: U+0021-00FF; } div { height: 10px; @@ -27,8 +28,8 @@ div {

    The test passes if there are two blue rectangles of equal length.

    diff --git a/tests/wpt/web-platform-tests/css/css-values/ic-unit-015.html b/tests/wpt/web-platform-tests/css/css-values/ic-unit-015.html new file mode 100644 index 00000000000..3be22ecc205 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-values/ic-unit-015.html @@ -0,0 +1,35 @@ + + +CSS Values and Units Test: support for the ic unit + + + + + +

    The test passes if there are two blue rectangles of equal length.

    + +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/duplicate-tag-rejects-capture.html b/tests/wpt/web-platform-tests/css/css-view-transitions/duplicate-tag-rejects-capture.html index da340deccb3..951294babc2 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/duplicate-tag-rejects-capture.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/duplicate-tag-rejects-capture.html @@ -32,15 +32,15 @@ promise_test(async t => { transition.ready.then(reject, () => {readyRejected = true;}); // The domUpdate promise resolves (since there is no callback). - let domUpdatedResolved = false; - transition.domUpdated.then(() => { - assert_true(readyRejected, "ready not rejected before domUpdated"); - domUpdatedResolved = true; + let updateCallbackDoneResolved = false; + transition.updateCallbackDone.then(() => { + assert_true(readyRejected, "ready not rejected before updateCallbackDone"); + updateCallbackDoneResolved = true; }, reject); // Finally finish resolves. transition.finished.then(() => { - assert_true(domUpdatedResolved, "domUpdated not resolved before finish"); + assert_true(updateCallbackDoneResolved, "updateCallbackDone not resolved before finish"); resolve(); }, reject); }); diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/duplicate-tag-rejects-start.html b/tests/wpt/web-platform-tests/css/css-view-transitions/duplicate-tag-rejects-start.html index f34c337e0c9..6c99d6426c0 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/duplicate-tag-rejects-start.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/duplicate-tag-rejects-start.html @@ -29,14 +29,14 @@ promise_test(async t => { second.style = "view-transition-name: target"; }); - // First domUpdated resolves since the callback runs successfully. - let domUpdatedResolved = false; - transition.domUpdated.then(() => { domUpdatedResolved = true; }, reject); + // First updateCallbackDone resolves since the callback runs successfully. + let updateCallbackDoneResolved = false; + transition.updateCallbackDone.then(() => { updateCallbackDoneResolved = true; }, reject); - // Then finished resolves since domUpdated was already resolved. + // Then finished resolves since updateCallbackDone was already resolved. let finishResolved = false; - transition.domUpdated.then(() => { - assert_true(domUpdatedResolved, "domUpdated not resolved before finish"); + transition.updateCallbackDone.then(() => { + assert_true(updateCallbackDoneResolved, "updateCallbackDone not resolved before finish"); finishResolved = true; }, reject); diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/no-containment-on-new-element-mid-transition.html b/tests/wpt/web-platform-tests/css/css-view-transitions/no-containment-on-new-element-mid-transition.html index 551d2c41f78..dc5ede4d8d3 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/no-containment-on-new-element-mid-transition.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/no-containment-on-new-element-mid-transition.html @@ -28,7 +28,7 @@ promise_test(async t => { assert_implements(document.startViewTransition, "Missing document.startViewTransition"); return new Promise(async (resolve, reject) => { let transition = document.startViewTransition(); - await transition.domUpdated; + await transition.updateCallbackDone; await transition.ready; transition.finished.then(resolve, reject); diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/no-containment-on-new-element.html b/tests/wpt/web-platform-tests/css/css-view-transitions/no-containment-on-new-element.html index 46f576dbd56..57f148309b4 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/no-containment-on-new-element.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/no-containment-on-new-element.html @@ -30,11 +30,11 @@ promise_test(async t => { let readyRejected = false; transition.ready.then(reject, () => { readyRejected = true; }); - let domUpdated = false; - transition.domUpdated.then(() => { domUpdated = true; }, reject); + let updateCallbackDone = false; + transition.updateCallbackDone.then(() => { updateCallbackDone = true; }, reject); transition.finished.then(() => { assert_true(readyRejected, "ready not rejected"); - assert_true(domUpdated, "dom not updated"); + assert_true(updateCallbackDone, "dom not updated"); if (window.getComputedStyle(first).contain == "none") resolve(); diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/no-containment-on-old-element.html b/tests/wpt/web-platform-tests/css/css-view-transitions/no-containment-on-old-element.html index 8b21916019e..b0af95bf6ce 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/no-containment-on-old-element.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/no-containment-on-old-element.html @@ -29,11 +29,11 @@ promise_test(async t => { let readyRejected = false; transition.ready.then(reject, () => { readyRejected = true; }); - let domUpdated = false; - transition.domUpdated.then(() => { domUpdated = true; }, reject); + let updateCallbackDone = false; + transition.updateCallbackDone.then(() => { updateCallbackDone = true; }, reject); transition.finished.then(() => { assert_true(readyRejected, "ready not rejected"); - assert_true(domUpdated, "dom not updated"); + assert_true(updateCallbackDone, "dom not updated"); if (window.getComputedStyle(first).contain == "paint") resolve(); diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/pseudo-computed-style-stays-in-sync-with-new-element.html b/tests/wpt/web-platform-tests/css/css-view-transitions/pseudo-computed-style-stays-in-sync-with-new-element.html index 103dc31930c..576b7525cc6 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/pseudo-computed-style-stays-in-sync-with-new-element.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/pseudo-computed-style-stays-in-sync-with-new-element.html @@ -24,7 +24,7 @@ promise_test(async t => { assert_implements(document.startViewTransition, "Missing document.startViewTransition"); return new Promise(async (resolve, reject) => { let transition = document.startViewTransition(); - await transition.domUpdated; + await transition.updateCallbackDone; await transition.ready; let viewbox = window.getComputedStyle( diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/ready_resolves_after_dom_before_raf.html b/tests/wpt/web-platform-tests/css/css-view-transitions/ready_resolves_after_dom_before_raf.html index 3bc1822314c..40a2ad47670 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/ready_resolves_after_dom_before_raf.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/ready_resolves_after_dom_before_raf.html @@ -33,7 +33,7 @@ promise_test(async t => { }); let dom_updated_resolved = false; - transition.domUpdated.then(() => { + transition.updateCallbackDone.then(() => { if (!dom_change_ran) reject(); // If there's a rAF before ready resolves, we fail. @@ -47,5 +47,5 @@ promise_test(async t => { resolve(); }); }); -}, "domUpdated resolves, then ready resolves with no rAF in between"); +}, "updateCallbackDone resolves, then ready resolves with no rAF in between"); diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/synchronous-callback-skipped-before-run.html b/tests/wpt/web-platform-tests/css/css-view-transitions/synchronous-callback-skipped-before-run.html index d1ada87e9d6..d6023a7fd20 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/synchronous-callback-skipped-before-run.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/synchronous-callback-skipped-before-run.html @@ -33,5 +33,5 @@ promise_test(async t => { else reject(); }); -}, "finished promise should be resolved if skipTransition() is invoked before a synchronous domUpdated callback is dispatched"); +}, "finished promise should be resolved if skipTransition() is invoked before a synchronous updateCallbackDone callback is dispatched"); diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/transition-skipped-from-invalid-callback.html b/tests/wpt/web-platform-tests/css/css-view-transitions/transition-skipped-from-invalid-callback.html index 0dd098cbdfa..cf3853cd570 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/transition-skipped-from-invalid-callback.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/transition-skipped-from-invalid-callback.html @@ -35,7 +35,7 @@ promise_test(async t => { transition.ready.then(reject, () => { readyRejected = true; }); let domUpdateRejected = false; - transition.domUpdated.then(reject, () => { domUpdateRejected = true; }); + transition.updateCallbackDone.then(reject, () => { domUpdateRejected = true; }); transition.finished.then(reject, () => { assert_true(readyRejected, "ready not rejected"); assert_true(domUpdateRejected, "dom update not rejected"); diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/unset-and-initial-view-transition-name.html b/tests/wpt/web-platform-tests/css/css-view-transitions/unset-and-initial-view-transition-name.html index 4ff5c05316b..2715a5bb334 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/unset-and-initial-view-transition-name.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/unset-and-initial-view-transition-name.html @@ -38,7 +38,7 @@ promise_test(async t => { assert_implements(document.startViewTransition, "Missing document.startViewTransition"); return new Promise(async (resolve, reject) => { let transition = document.startViewTransition(); - await transition.domUpdated; + await transition.updateCallbackDone; // Elements with view-transition-name: initial and unset don't have // containment. Because they are ignored they don't cause the transition to diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/view-transition-name-is-grouping-ref.html b/tests/wpt/web-platform-tests/css/css-view-transitions/view-transition-name-is-grouping-ref.html new file mode 100644 index 00000000000..add20600f81 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/view-transition-name-is-grouping-ref.html @@ -0,0 +1,22 @@ + + +View transitions: view-transition-name non-none value is a grouping value (ref) + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/view-transition-name-is-grouping.html b/tests/wpt/web-platform-tests/css/css-view-transitions/view-transition-name-is-grouping.html new file mode 100644 index 00000000000..95739351f0f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/view-transition-name-is-grouping.html @@ -0,0 +1,35 @@ + + +View transitions: view-transition-name non-none value is a grouping value + + + + + + +
    diff --git a/tests/wpt/web-platform-tests/css/support/interpolation-testcommon.js b/tests/wpt/web-platform-tests/css/support/interpolation-testcommon.js index 002841cfead..aa8239ae928 100644 --- a/tests/wpt/web-platform-tests/css/support/interpolation-testcommon.js +++ b/tests/wpt/web-platform-tests/css/support/interpolation-testcommon.js @@ -461,4 +461,5 @@ window.test_composition = test_composition; window.neutralKeyframe = neutralKeyframe; window.roundNumbers = roundNumbers; + window.normalizeValue = normalizeValue; })(); diff --git a/tests/wpt/web-platform-tests/custom-elements/reactions/Animation.html b/tests/wpt/web-platform-tests/custom-elements/reactions/Animation.html index 47eff97497c..f8d3bb86ed7 100644 --- a/tests/wpt/web-platform-tests/custom-elements/reactions/Animation.html +++ b/tests/wpt/web-platform-tests/custom-elements/reactions/Animation.html @@ -21,7 +21,7 @@ test(function () { document.body.appendChild(instance); assert_array_equals(element.takeLog().types(), ['constructed', 'connected']); - const animation = instance.animate([{'borderColor': 'rgb(0, 0, 255)'}]); + const animation = instance.animate([{'borderColor': 'rgb(0, 0, 255)'}], 1); animation.commitStyles(); const logEntries = element.takeLog(); @@ -35,7 +35,7 @@ test(function () { const instance = document.createElement(element.name); document.body.appendChild(instance); - let animation = instance.animate([{'borderColor': 'rgb(0, 0, 255)'}]); + let animation = instance.animate([{'borderColor': 'rgb(0, 0, 255)'}], 1); animation.commitStyles(); assert_array_equals(element.takeLog().types(), ['constructed', 'connected', 'attributeChanged']); @@ -55,7 +55,7 @@ test(function () { document.body.appendChild(instance); assert_array_equals(element.takeLog().types(), ['constructed', 'connected']); - const animation = instance.animate([{'borderColor': 'rgb(0, 0, 255)'}]); + const animation = instance.animate([{'borderColor': 'rgb(0, 0, 255)'}], 1); animation.commitStyles(); assert_array_equals(element.takeLog().types(), []); diff --git a/tests/wpt/web-platform-tests/dom/events/scrolling/scroll_support.js b/tests/wpt/web-platform-tests/dom/events/scrolling/scroll_support.js index 169393e4c3e..847a9891d6a 100644 --- a/tests/wpt/web-platform-tests/dom/events/scrolling/scroll_support.js +++ b/tests/wpt/web-platform-tests/dom/events/scrolling/scroll_support.js @@ -10,6 +10,20 @@ async function waitForScrollendEvent(test, target, timeoutMs = 500) { }); } +async function verifyScrollStopped(test, target_div) { + const unscaled_pause_time_in_ms = 100; + const x = target_div.scrollLeft; + const y = target_div.scrollTop; + return new Promise(resolve => { + test.step_timeout(() => { + assert_equals(x, target_div.scrollLeft); + assert_equals(y, target_div.scrollTop); + resolve(); + }, unscaled_pause_time_in_ms); + }); +} + + const MAX_FRAME = 700; const MAX_UNCHANGED_FRAMES = 20; @@ -44,6 +58,19 @@ function waitForCompositorCommit() { }); }); } +function waitForNextFrame() { + const startTime = performance.now(); + return new Promise(resolve => { + window.requestAnimationFrame((frameTime) => { + if (frameTime < startTime) { + window.requestAnimationFrame(resolve); + } else { + resolve(); + } + }); + }); +} + // TODO(crbug.com/1400399): Deprecate as frame rates may vary greatly in // different test environments. diff --git a/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-fired-for-mandatory-snap-point-after-load.html b/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-fired-for-mandatory-snap-point-after-load.html new file mode 100644 index 00000000000..a51069bc088 --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-fired-for-mandatory-snap-point-after-load.html @@ -0,0 +1,94 @@ + + + + + + + + + + + + scrollend + mandatory scroll snap test + + + + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-for-user-scroll.html b/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-for-user-scroll.html index 5146c5f719a..e9be7c98483 100644 --- a/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-for-user-scroll.html +++ b/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-for-user-scroll.html @@ -39,19 +39,6 @@ async function resetTargetScrollState(test) { } } -async function verifyScrollStopped(test) { - const unscaled_pause_time_in_ms = 100; - const x = target_div.scrollLeft; - const y = target_div.scrollTop; - return new Promise(resolve => { - test.step_timeout(() => { - assert_equals(x, target_div.scrollLeft); - assert_equals(y, target_div.scrollTop); - resolve(); - }, unscaled_pause_time_in_ms); - }); -} - async function verifyNoScrollendOnDocument(test) { const callback = test.unreached_func("window got unexpected scrollend event."); @@ -94,7 +81,7 @@ function runTest() { await targetScrollendPromise; assert_true(target_div.scrollTop > 0); - await verifyScrollStopped(t); + await verifyScrollStopped(t, target_div); }, 'Tests that the target_div gets scrollend event when touch dragging.'); promise_test(async (t) => { @@ -123,7 +110,7 @@ function runTest() { await targetScrollendPromise; assert_true(target_div.scrollTop > 0); - await verifyScrollStopped(t); + await verifyScrollStopped(t, target_div); }, 'Tests that the target_div gets scrollend event when clicking ' + 'scrollbar.'); @@ -154,7 +141,7 @@ function runTest() { await targetScrollendPromise; assert_true(target_div.scrollTop > 0); - await verifyScrollStopped(t); + await verifyScrollStopped(t, target_div); }, 'Tests that the target_div gets scrollend event when dragging the ' + 'scrollbar thumb.'); @@ -174,7 +161,7 @@ function runTest() { await targetScrollendPromise; assert_true(target_div.scrollTop > 0); - await verifyScrollStopped(t); + await verifyScrollStopped(t, target_div); }, 'Tests that the target_div gets scrollend event when mouse wheel ' + 'scrolling.'); @@ -190,7 +177,7 @@ function runTest() { await targetScrollendPromise; assert_true(target_div.scrollTop > 0); - await verifyScrollStopped(t); + await verifyScrollStopped(t, target_div); }, 'Tests that the target_div gets scrollend event when sending DOWN key ' + 'to the target.'); } diff --git a/tests/wpt/web-platform-tests/editing/data/fontname.js b/tests/wpt/web-platform-tests/editing/data/fontname.js index f4193a9bce7..b42be89c66e 100644 --- a/tests/wpt/web-platform-tests/editing/data/fontname.js +++ b/tests/wpt/web-platform-tests/editing/data/fontname.js @@ -704,5 +704,50 @@ var browserTests = [ [["stylewithcss","false"],["fontname","sans-serif"]], "fo[ob]ar", [true,true], - {"stylewithcss":[false,true,"",false,false,""],"fontname":[false,false,"monospace",false,false,"sans-serif"]}] + {"stylewithcss":[false,true,"",false,false,""],"fontname":[false,false,"monospace",false,false,"sans-serif"]}], + +// If contents of are entirely selected, it should be reused. +["[abc]", + [["styleWithCSS","false"],["fontName","monospace"]], + ["[abc]", + "[abc]"], + [true,true], + {}], +["[abc]", + [["styleWithCSS","false"],["fontName","monospace"]], + ["[abc]", + "[abc]"], + [true,true], + {}], +["[abc]", + [["styleWithCSS","false"],["fontName","monospace"]], + ["[abc]", + "[abc]", + "[abc]", + "[abc]", + "[abc]", + "[abc]"], + [true,true], + {}], +// but don't split existing if partially selected. +["[a]bc", + [["styleWithCSS","false"],["fontName","monospace"]], + "[a]bc", + [true,true], + {}], +["ab[c]", + [["styleWithCSS","false"],["fontName","monospace"]], + "ab[c]", + [true,true], + {}], +["[a]bc", + [["styleWithCSS","false"],["fontName","monospace"]], + "[a]bc", + [true,true], + {}], +["ab[c]", + [["styleWithCSS","false"],["fontName","monospace"]], + "ab[c]", + [true,true], + {}], ] diff --git a/tests/wpt/web-platform-tests/editing/data/fontsize.js b/tests/wpt/web-platform-tests/editing/data/fontsize.js index eb741b4f331..bbaa6d84478 100644 --- a/tests/wpt/web-platform-tests/editing/data/fontsize.js +++ b/tests/wpt/web-platform-tests/editing/data/fontsize.js @@ -779,5 +779,50 @@ var browserTests = [ [["stylewithcss","false"],["fontsize","4"]], "fo[ob]ar", [true,true], - {"stylewithcss":[false,true,"",false,false,""],"fontsize":[false,false,"6",false,false,"4"]}] + {"stylewithcss":[false,true,"",false,false,""],"fontsize":[false,false,"6",false,false,"4"]}], + +// If contents of are entirely selected, it should be reused. +["[abc]", + [["styleWithCSS","false"],["fontSize","7"]], + ["[abc]", + "[abc]"], + [true,true], + {}], +["[abc]", + [["styleWithCSS","false"],["fontSize","7"]], + ["[abc]", + "[abc]"], + [true,true], + {}], +["[abc]", + [["styleWithCSS","false"],["fontSize","7"]], + ["[abc]", + "[abc]", + "[abc]", + "[abc]", + "[abc]", + "[abc]"], + [true,true], + {}], +// but don't split existing if partially selected. +["[a]bc", + [["styleWithCSS","false"],["fontSize","7"]], + "[a]bc", + [true,true], + {}], +["ab[c]", + [["styleWithCSS","false"],["fontSize","7"]], + "ab[c]", + [true,true], + {}], +["[a]bc", + [["styleWithCSS","false"],["fontSize","7"]], + "[a]bc", + [true,true], + {}], +["ab[c]", + [["styleWithCSS","false"],["fontSize","7"]], + "ab[c]", + [true,true], + {}], ] diff --git a/tests/wpt/web-platform-tests/editing/data/forecolor.js b/tests/wpt/web-platform-tests/editing/data/forecolor.js index 57deb5b434a..fde8364be23 100644 --- a/tests/wpt/web-platform-tests/editing/data/forecolor.js +++ b/tests/wpt/web-platform-tests/editing/data/forecolor.js @@ -734,5 +734,50 @@ var browserTests = [ [["stylewithcss","false"],["forecolor","#0000FF"]], "fo[ob]ar", [true,true], - {"stylewithcss":[false,true,"",false,false,""],"forecolor":[true,false,"rgb(165, 42, 42)",false,false,"rgb(0, 0, 255)"]}] + {"stylewithcss":[false,true,"",false,false,""],"forecolor":[true,false,"rgb(165, 42, 42)",false,false,"rgb(0, 0, 255)"]}], + +// If contents of are entirely selected, it should be reused. +["[abc]", + [["styleWithCSS","false"],["foreColor","#ff0000"]], + ["[abc]", + "[abc]"], + [true,true], + {}], +["[abc]", + [["styleWithCSS","false"],["foreColor","#ff0000"]], + ["[abc]", + "[abc]"], + [true,true], + {}], +["[abc]", + [["styleWithCSS","false"],["foreColor","#ff0000"]], + ["[abc]", + "[abc]", + "[abc]", + "[abc]", + "[abc]", + "[abc]"], + [true,true], + {}], +// but don't split existing if partially selected. +["[a]bc", + [["styleWithCSS","false"],["foreColor","#ff0000"]], + "[a]bc", + [true,true], + {}], +["ab[c]", + [["styleWithCSS","false"],["foreColor","#ff0000"]], + "ab[c]", + [true,true], + {}], +["[a]bc", + [["styleWithCSS","false"],["foreColor","#ff0000"]], + "[a]bc", + [true,true], + {}], +["ab[c]", + [["styleWithCSS","false"],["foreColor","#ff0000"]], + "ab[c]", + [true,true], + {}], ] diff --git a/tests/wpt/web-platform-tests/editing/data/multitest.js b/tests/wpt/web-platform-tests/editing/data/multitest.js index 9948c338b40..89f5eebdb66 100644 --- a/tests/wpt/web-platform-tests/editing/data/multitest.js +++ b/tests/wpt/web-platform-tests/editing/data/multitest.js @@ -2062,12 +2062,12 @@ var browserTests = [ {"fontsize":[false,false,"3",false,false,"2"],"subscript":[false,false,"",false,true,""],"inserttext":[false,false,"",false,false,""]}], ["foo[]bar", [["subscript",""],["fontsize","3"],["inserttext","a"]], - "fooa[]bar", + "fooa[]bar", // should be outer-most element [true,true,true], {"subscript":[false,false,"",false,true,""],"fontsize":[false,false,"3",false,false,"3"],"inserttext":[false,false,"",false,false,""]}], ["foo[]bar", [["fontsize","3"],["subscript",""],["inserttext","a"]], - "fooa[]bar", + "fooa[]bar", // should be outer-most element [true,true,true], {"fontsize":[false,false,"3",false,false,"3"],"subscript":[false,false,"",false,true,""],"inserttext":[false,false,"",false,false,""]}], ["foo[]bar", @@ -2177,12 +2177,12 @@ var browserTests = [ {"delete":[false,false,"",false,false,""],"inserttext":[false,false,"",false,false,""]}], ["foo[bar]baz", [["delete",""],["inserttext","a"]], - "fooa[]baz", + "fooa[]baz", // should be outer-most element [true,true], {"delete":[false,false,"",false,false,""],"inserttext":[false,false,"",false,false,""]}], ["foo[bar]baz", [["delete",""],["inserttext","a"]], - "fooa[]baz", + "fooa[]baz", // should be outer-most element [true,true], {"delete":[false,false,"",false,false,""],"inserttext":[false,false,"",false,false,""]}], ["foo[bar]baz", @@ -2397,12 +2397,12 @@ var browserTests = [ {"delete":[false,false,"",false,false,""],"inserttext":[false,false,"",false,false,""]}], ["foo[barbaz]", [["delete",""],["inserttext","a"]], - "fooa[]", + "fooa[]", // should be outer-most element [true,true], {"delete":[false,false,"",false,false,""],"inserttext":[false,false,"",false,false,""]}], ["foo[barbaz]", [["delete",""],["inserttext","a"]], - "fooa[]", + "fooa[]", // should be outer-most element [true,true], {"delete":[false,false,"",false,false,""],"inserttext":[false,false,"",false,false,""]}], ["foo[barbaz]", @@ -2866,4 +2866,72 @@ var browserTests = [ "a[]"], [true,true,true], {}], + +// element may be taller than parent inline elements. Therefore, for +// applying background color to new text, element should be put inner- +// most. +["abc[]ef", + [["stylewithcss","false"],["fontSize","4"],["backColor","#00dddd"],["insertText","d"]], + ["abcdef", + "abcdef", + "abcdef"], + [true,true,true,true], + {}], +["abc[]ef", + [["stylewithcss","false"],["foreColor","#ff0000"],["backColor","#00dddd"],["insertText","d"]], + ["abcdef", + "abcdef", + "abcdef"], + [true,true,true,true], + {}], +["abc[]ef", + [["stylewithcss","false"],["fontName","monospace"],["backColor","#00dddd"],["insertText","d"]], + ["abcdef", + "abcdef", + "abcdef"], + [true,true,true,true], + {}], +["abc[]ef", + [["stylewithcss","false"],["backColor","#00dddd"],["fontSize","4"],["insertText","d"]], + ["abcdef", + "abcdef", + "abcdef"], + [true,true,true,true], + {}], +["abc[]ef", + [["stylewithcss","false"],["backColor","#00dddd"],["foreColor","#ff0000"],["insertText","d"]], + ["abcdef", + "abcdef", + "abcdef"], + [true,true,true,true], + {}], +["abc[]ef", + [["stylewithcss","false"],["backColor","#00dddd"],["fontName","monospace"],["insertText","d"]], + ["abcdef", + "abcdef", + "abcdef"], + [true,true,true,true], + {}], +["abc[]ef", + [["stylewithcss","false"],["fontName","monospace"],["foreColor","#ff0000"],["fontSize","7"],["backColor","#00dddd"],["insertText","d"]], + ["abc[d]ef", + "abc[d]ef", + "abc[d]ef", + "abc[d]ef", + "abc[d]ef", + "abc[d]ef", + "abc[d]ef", + "abc[d]ef", + "abc[d]ef", + "abc[d]ef", + "abc[d]ef", + "abc[d]ef", + "abc[d]ef", + "abc[d]ef", + "abc[d]ef", + "abc[d]ef", + "abc[d]ef", + "abc[d]ef"], + [true,true,true,true,true,true], + {}], ] diff --git a/tests/wpt/web-platform-tests/fetch/api/credentials/authentication-redirection.any.js b/tests/wpt/web-platform-tests/fetch/api/credentials/authentication-redirection.any.js index b6376368116..a0175e6d2a7 100644 --- a/tests/wpt/web-platform-tests/fetch/api/credentials/authentication-redirection.any.js +++ b/tests/wpt/web-platform-tests/fetch/api/credentials/authentication-redirection.any.js @@ -21,6 +21,6 @@ promise_test(async test => { }, "getAuthorizationHeaderValue - same origin redirection"); promise_test(async (test) => { - const result = await getAuthorizationHeaderValue(get_host_info().HTTP_REMOTE_ORIGIN + "/fetch/api/resources/redirect.py?allow_headers=Authorization&location=" + encodeURIComponent(get_host_info().HTTP_ORIGIN + "/fetch/api/resources/dump-authorization-header.py")); + const result = await getAuthorizationHeaderValue(get_host_info().HTTPS_REMOTE_ORIGIN + "/fetch/api/resources/redirect.py?allow_headers=Authorization&location=" + encodeURIComponent(get_host_info().HTTPS_ORIGIN + "/fetch/api/resources/dump-authorization-header.py")); assert_equals(result, "none"); }, "getAuthorizationHeaderValue - cross origin redirection"); diff --git a/tests/wpt/web-platform-tests/file-system-access/resources/message-target-dedicated-worker.js b/tests/wpt/web-platform-tests/file-system-access/resources/message-target-dedicated-worker.js deleted file mode 100644 index 26ff23ef8ac..00000000000 --- a/tests/wpt/web-platform-tests/file-system-access/resources/message-target-dedicated-worker.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -importScripts( - 'test-helpers.js', - 'messaging-serialize-helpers.js', - 'message-target.js' -); - -add_message_event_handlers(/*receiver=*/self, /*target=*/self); diff --git a/tests/wpt/web-platform-tests/file-system-access/resources/message-target-service-worker.js b/tests/wpt/web-platform-tests/file-system-access/resources/message-target-service-worker.js deleted file mode 100644 index 4a6174ae3b5..00000000000 --- a/tests/wpt/web-platform-tests/file-system-access/resources/message-target-service-worker.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -importScripts( - 'test-helpers.js', - 'messaging-serialize-helpers.js', - 'message-target.js' -); - -add_message_event_handlers(/*receiver=*/self); \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/file-system-access/resources/message-target-shared-worker.js b/tests/wpt/web-platform-tests/file-system-access/resources/message-target-shared-worker.js deleted file mode 100644 index 6829c61d4cf..00000000000 --- a/tests/wpt/web-platform-tests/file-system-access/resources/message-target-shared-worker.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict'; - -importScripts( - 'test-helpers.js', - 'messaging-serialize-helpers.js', - 'message-target.js' -); - -self.addEventListener('connect', connect_event => { - const message_port = connect_event.ports[0]; - add_message_event_handlers( - /*receiver=*/message_port, /*target=*/message_port); - message_port.start(); -}); \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/file-system-access/resources/message-target.html b/tests/wpt/web-platform-tests/file-system-access/resources/message-target.html deleted file mode 100644 index 32c7f0c56c6..00000000000 --- a/tests/wpt/web-platform-tests/file-system-access/resources/message-target.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/file-system-access/resources/message-target.js b/tests/wpt/web-platform-tests/file-system-access/resources/message-target.js deleted file mode 100644 index 191b4748ab5..00000000000 --- a/tests/wpt/web-platform-tests/file-system-access/resources/message-target.js +++ /dev/null @@ -1,157 +0,0 @@ -'use strict'; - -// This script depends on the following scripts: -// /file-system-access/resources/messaging-helpers.js -// /file-system-access/resources/test-helpers.js - -// add_message_event_handlers() is the helper function used to setup all -// message targets, including iframes and workers. -// -// Adds a message event handler and a message error handler to |receiver|. -// The 'data' property from received MessageEvents must include a 'type' -// property. The 'type' selects the test logic to run. Most message type -// handlers use postMessage() to respond to the sender with test results. -// The sender then validates the test results after receiving the response. -// -// Both |target| and |target_origin| are optional. |target| is used -// to send message responses back to the sender. When omitted, the -// 'source' from received MessageEvents is used instead. -// -// For window messaging, |target_origin| specifies the origin to receive -// responses. Most window tests use '*' for the |target_origin|. Worker -// and message port tests must use undefined for |target_origin| to avoid -// exceptions. -function add_message_event_handlers(receiver, target, target_origin) { - receiver.addEventListener('message', async function (message_event) { - const message_data = message_event.data; - - // Reply to the sender using the 'source' from the received MessageEvent. - let message_source = message_event.source; - if (message_source === null) { - // However, some message senders, like DedicatedWorkers, don't include - // a source. Fallback to the target when the source is null. - message_source = target; - } - - try { - switch (message_data.type) { - case 'receive-message-port': - // Receive a MessagePort to use as a message target for testing. - add_message_event_handlers( - /*receiver=*/message_data.message_port, - /*target=*/message_data.message_port); - message_data.message_port.start(); - break; - - case 'create-broadcast-channel': - // Create a BroadcastChannel to use as a message target for testing. - const broadcast_channel = - new BroadcastChannel(message_data.broadcast_channel_name); - add_message_event_handlers( - /*receiver=*/broadcast_channel, - /*target=*/broadcast_channel); - message_source.postMessage( - { type: 'broadcast-channel-created' }, - { targetOrigin: target_origin }); - break; - - case 'receive-file-system-handles': - // Receive a list of cloned FileSystemFileHandles. Access the - // properties of each FileSystemFileHandle by serializing the - // handle to a JavaScript object. Then respond with the serialized - // results, enabling the sender to verify that the cloned handle - // produced the expected property values from this execution context. - const serialized_handles = []; - const cloned_handles = message_data.cloned_handles; - for (let i = 0; i < cloned_handles.length; ++i) { - const serialized = await serialize_handle(cloned_handles[i]); - serialized_handles.push(serialized); - } - message_source.postMessage({ - type: 'receive-serialized-file-system-handles', - serialized_handles, - // Respond with the cloned handles to create new clones for - // the sender to verify. - cloned_handles, - }, { targetOrigin: target_origin }); - break; - - case 'receive-serialized-file-system-handles': - // Do nothing. This message is meant for test runner validation. - // Other message targets may receive this message while testing - // broadcast channels. - break; - - case 'create-file': - // Create a new file and then respond to the sender with it. - const directory = await navigator.storage.getDirectory(); - const file_handle = - await directory.getFileHandle('temp-file', { create: true }); - message_source.postMessage( - { type: 'receive-file', file_handle }, - { targetOrigin: target_origin }); - break; - - case 'create-directory': - // Create a new directory and then respond to the sender with it. - const parent_directory = await navigator.storage.getDirectory(); - const directory_handle = - await parent_directory.getDirectoryHandle('temp-directory', - { create: true }); - message_source.postMessage( - { type: 'receive-directory', directory_handle }, - { targetOrigin: target_origin }); - break; - - case 'create-sync-access-handle': - // Receive a file and create a sync access handle out of it. Report - // success to the sender. - let success = true; - try { - const access_handle = await message_data.file_handle.createSyncAccessHandle(); - access_handle.close(); - } catch (error) { - success = false; - } - - message_source.postMessage( - { type: 'receive-sync-access-handle-result', success }, - { targetOrigin: target_origin }); - break; - - default: - throw `Unknown message type: '${message_data.type}'`; - } - } catch (error) { - // Respond with an error to trigger a failure in the sender's - // test runner. - message_source.postMessage(`ERROR: ${error}`, - { targetOrigin: target_origin }); - } - }); - - receiver.addEventListener('messageerror', async function (message_event) { - // Select the target for message responses (see comment in 'message' event - // listener above). - let message_source = message_event.source; - if (message_source === null) { - message_source = target; - } - - try { - // Respond with the MessageEvent's property values, enabling the sender - // to verify results. - const serialized_message_error_event = - serialize_message_error_event(message_event); - message_source.postMessage({ - type: 'serialized-message-error', - serialized_message_error_event - }, { targetOrigin: target_origin }); - } catch (error) { - // Respond with an error to trigger a failure in the sender's - // test runner. - message_source.postMessage(`ERROR: ${error}`, - { targetOrigin: target_origin }); - } - }); -} diff --git a/tests/wpt/web-platform-tests/file-system-access/resources/messaging-blob-helpers.js b/tests/wpt/web-platform-tests/file-system-access/resources/messaging-blob-helpers.js deleted file mode 100644 index 852f2e2d321..00000000000 --- a/tests/wpt/web-platform-tests/file-system-access/resources/messaging-blob-helpers.js +++ /dev/null @@ -1,51 +0,0 @@ -'use strict'; - -// Creates a blob URL with the contents of 'message-target.html'. Use the -// blob as an iframe src or a window.open() URL, which creates a same origin -// message target. -async function create_message_target_blob_url(test) { - const html = await create_message_target_html_without_subresources(test); - const blob = new Blob([html], { type: 'text/html' }); - return URL.createObjectURL(blob); -} - -// Creates a data URI with the contents of 'message-target.html'. Use the -// data URI as an iframe src, which creates a cross origin message target. -async function create_message_target_data_uri(test) { - const iframe_html = - await create_message_target_html_without_subresources(test); - return `data:text/html,${encodeURIComponent(iframe_html)}`; -} - -// Constructs a version of 'message-target.html' without any subresources. -// Enables the creation of blob URLs, data URIs and iframe srcdocs re-using -// the contents of 'message-target.html'. -async function create_message_target_html_without_subresources(test) { - const test_helpers_script = await fetch_text('resources/test-helpers.js'); - - const messaging_helpers_script = - await fetch_text('resources/messaging-helpers.js'); - - const messaging_serialize_helpers_script = - await fetch_text('resources/messaging-serialize-helpers.js'); - - const message_target_script = - await fetch_text('resources/message-target.js'); - - // Get the inline script code from 'message-target.html'. - const iframe = await add_iframe(test, { src: 'resources/message-target.html' }); - const iframe_script = - iframe.contentWindow.document.getElementById('inline_script').outerHTML; - iframe.remove(); - - return '' + - `` + - `` + - `` + - `${iframe_script}`; -} - -async function fetch_text(url) { - const response = await fetch(url); - return await response.text(); -} diff --git a/tests/wpt/web-platform-tests/file-system-access/resources/messaging-helpers.js b/tests/wpt/web-platform-tests/file-system-access/resources/messaging-helpers.js deleted file mode 100644 index 55fc04ab817..00000000000 --- a/tests/wpt/web-platform-tests/file-system-access/resources/messaging-helpers.js +++ /dev/null @@ -1,187 +0,0 @@ -'use strict'; - -// This script depends on the following script: -// /file-system-access/resources/test-helpers.js -// /service-workers/service-worker/resources/test-helpers.sub.js - -// Define the URL constants used for each type of message target, including -// iframes and workers. -const kDocumentMessageTarget = 'resources/message-target.html'; -const kSharedWorkerMessageTarget = 'resources/message-target-shared-worker.js'; -const kServiceWorkerMessageTarget = - 'resources/message-target-service-worker.js'; -const kDedicatedWorkerMessageTarget = - 'resources/message-target-dedicated-worker.js'; - -function create_dedicated_worker(test, url) { - const dedicated_worker = new Worker(url); - test.add_cleanup(() => { - dedicated_worker.terminate(); - }); - return dedicated_worker; -} - -async function create_service_worker(test, script_url, scope) { - const registration = await service_worker_unregister_and_register( - test, script_url, scope); - test.add_cleanup(() => { - return registration.unregister(); - }); - return registration; -} - -// Creates an iframe and waits to receive a message from the iframe. -// Valid |options| include src, srcdoc and sandbox, which mirror the -// corresponding iframe element properties. -async function add_iframe(test, options) { - const iframe = document.createElement('iframe'); - - if (options.sandbox !== undefined) { - iframe.sandbox = options.sandbox; - } - - if (options.src !== undefined) { - iframe.src = options.src; - } - - if (options.srcdoc !== undefined) { - iframe.srcdoc = options.srcdoc; - } - - document.body.appendChild(iframe); - test.add_cleanup(() => { - iframe.remove(); - }); - - await wait_for_loaded_message(self); - return iframe; -} - -// Creates a child window using window.open() and waits to receive a message -// from the child window. -async function open_window(test, url) { - const child_window = window.open(url); - test.add_cleanup(() => { - child_window.close(); - }); - await wait_for_loaded_message(self); - return child_window; -} - -// Wait until |receiver| gets a message event with the data set to 'LOADED'. -// The postMessage() tests use messaging instead of the loaded event because -// cross-origin child windows from window.open() do not dispatch the loaded -// event to the parent window. -async function wait_for_loaded_message(receiver) { - const message_promise = new Promise((resolve, reject) => { - receiver.addEventListener('message', message_event => { - if (message_event.data === 'LOADED') { - resolve(); - } else { - reject('The message target must receive a "LOADED" message response.'); - } - }); - }); - await message_promise; -} - -// Sets up a new message channel. Sends one port to |target| and then returns -// the other port. -function create_message_channel(target, target_origin) { - const message_channel = new MessageChannel(); - - const message_data = - { type: 'receive-message-port', message_port: message_channel.port2 }; - target.postMessage( - message_data, - { - transfer: [message_channel.port2], - targetOrigin: target_origin - }); - message_channel.port1.start(); - return message_channel.port1; -} - -// Creates a variety of different FileSystemFileHandles for testing. -async function create_file_system_handles(test, root) { - // Create some files to use with postMessage(). - const empty_file = await createEmptyFile(test, 'empty-file', root); - const first_file = await createFileWithContents( - test, 'first-file-with-contents', 'first-text-content', root); - const second_file = await createFileWithContents( - test, 'second-file-with-contents', 'second-text-content', root); - - // Create an empty directory to use with postMessage(). - const empty_directory = await createDirectory(test, 'empty-directory', root); - - // Create a directory containing both files and subdirectories to use - // with postMessage(). - const directory_with_files = - await createDirectory(test, 'directory-with-files', root); - await createFileWithContents(test, 'first-file-in-directory', - 'first-directory-text-content', directory_with_files); - await createFileWithContents(test, 'second-file-in-directory', - 'second-directory-text-content', directory_with_files); - const subdirectory = - await createDirectory(test, 'subdirectory', directory_with_files); - await createFileWithContents(test, 'first-file-in-subdirectory', - 'first-subdirectory-text-content', subdirectory); - - return [ - empty_file, - first_file, - second_file, - // Include the same FileSystemFileHandle twice. - second_file, - empty_directory, - // Include the Same FileSystemDirectoryHandle object twice. - empty_directory, - directory_with_files - ]; -} - -// Tests sending an array of FileSystemHandles to |target| with postMessage(). -// The array includes both FileSystemFileHandles and FileSystemDirectoryHandles. -// After receiving the message, |target| accesses all cloned handles by -// serializing the properties of each handle to a JavaScript object. -// -// |target| then responds with the resulting array of serialized handles. The -// response also includes the array of cloned handles, which creates more -// clones. After receiving the response, this test runner verifies that both -// the serialized handles and the cloned handles contain the expected properties. -async function do_post_message_test( - test, root_dir, receiver, target, target_origin) { - // Create and send the handles to |target|. - const handles = - await create_file_system_handles(test, root_dir, target, target_origin); - target.postMessage( - { type: 'receive-file-system-handles', cloned_handles: handles }, - { targetOrigin: target_origin }); - - // Wait for |target| to respond with results. - const event_watcher = new EventWatcher(test, receiver, 'message'); - const message_event = await event_watcher.wait_for('message'); - const response = message_event.data; - - assert_equals(response.type, 'receive-serialized-file-system-handles', - 'The test runner must receive a "serialized-file-system-handles" ' + - `message response. Actual response: ${response}`); - - // Verify the results. - const expected_serialized_handles = await serialize_handles(handles); - - assert_equals_serialized_handles( - response.serialized_handles, expected_serialized_handles); - - await assert_equals_cloned_handles(response.cloned_handles, handles); -} - -// Runs the same test as do_post_message_test(), but uses a MessagePort. -// This test starts by establishing a message channel between the test runner -// and |target|. Afterwards, the test sends FileSystemHandles through the -// message port channel. -async function do_message_port_test(test, root_dir, target, target_origin) { - const message_port = create_message_channel(target, target_origin); - await do_post_message_test( - test, root_dir, /*receiver=*/ message_port, /*target=*/ message_port); -} diff --git a/tests/wpt/web-platform-tests/file-system-access/resources/messaging-serialize-helpers.js b/tests/wpt/web-platform-tests/file-system-access/resources/messaging-serialize-helpers.js deleted file mode 100644 index ada68f43db5..00000000000 --- a/tests/wpt/web-platform-tests/file-system-access/resources/messaging-serialize-helpers.js +++ /dev/null @@ -1,230 +0,0 @@ -'use strict'; - -// This script depends on the following script: -// /file-system-access/resources/test-helpers.js - -// Serializes an array of FileSystemHandles where each element can be either a -// FileSystemFileHandle or FileSystemDirectoryHandle. -async function serialize_handles(handle_array) { - const serialized_handle_array = []; - for (let i = 0; i < handle_array.length; ++i) { - serialized_handle_array.push(await serialize_handle(handle_array[i])); - } - return serialized_handle_array; -} - -// Serializes either a FileSystemFileHandle or FileSystemDirectoryHandle. -async function serialize_handle(handle) { - switch (handle.kind) { - case 'directory': - return await serialize_file_system_directory_handle(handle); - case 'file': - return await serialize_file_system_file_handle(handle); - default: - throw 'Object is not a FileSystemFileHandle or ' + - `FileSystemDirectoryHandle ${handle}`; - } -} - -// Creates a dictionary for a FileSystemHandle base, which contains -// serialized properties shared by both FileSystemFileHandle and -// FileSystemDirectoryHandle. -async function serialize_file_system_handle(handle) { - const read_permission = - await handle.queryPermission({ mode: 'read' }); - - const write_permission = - await handle.queryPermission({ mode: 'readwrite' }) - - return { - kind: handle.kind, - name: handle.name, - read_permission, - write_permission - }; -} - -// Create a dictionary with each property value in FileSystemFileHandle. -// Also, reads the contents of the file to include with the returned -// dictionary. Example output: -// { -// kind: "file", -// name: "example-file-name" -// read_permission: "granted", -// write_permission: "granted", -// contents: "example-file-contents" -// } -async function serialize_file_system_file_handle(file_handle) { - const contents = await getFileContents(file_handle); - - const serialized_file_system_handle = - await serialize_file_system_handle(file_handle); - - return Object.assign(serialized_file_system_handle, { contents }); -} - -// Create a dictionary with each property value in FileSystemDirectoryHandle. -// Example output: -// { -// kind: "directory", -// name: "example-directory-name" -// read_permission: "granted", -// write_permission: "granted", -// files: [, ...] -// directories: [, ...] -// } -async function serialize_file_system_directory_handle(directory_handle) { - // Serialize the contents of the directory. - const serialized_files = []; - const serialized_directories = []; - for await (const child_handle of directory_handle.values()) { - const serialized_child_handle = await serialize_handle(child_handle); - if (child_handle.kind === "directory") { - serialized_directories.push(serialized_child_handle); - } else { - serialized_files.push(serialized_child_handle); - } - } - - // Order the serialized contents of the directory by name. - serialized_files.sort((left, right) => { - return left.name.localeCompare(right.name); - }); - serialized_directories.sort((left, right) => { - return left.name.localeCompare(right.name); - }); - - // Serialize the directory's common properties shared by all - // FileSystemHandles. - const serialized_file_system_handle = - await serialize_file_system_handle(directory_handle); - - return Object.assign( - serialized_file_system_handle, - { files: serialized_files, directories: serialized_directories }); -} - -// Verifies |left_array| is a clone of |right_array| where each element -// is a cloned FileSystemHandle with the same properties and contents. -async function assert_equals_cloned_handles(left_array, right_array) { - assert_equals(left_array.length, right_array.length, - 'Each array of FileSystemHandles must have the same length'); - - for (let i = 0; i < left_array.length; ++i) { - assert_not_equals(left_array[i], right_array[i], - 'Clones must create new FileSystemHandle instances.'); - - const left_serialized = await serialize_handle(left_array[i]); - const right_serialized = await serialize_handle(right_array[i]); - assert_equals_serialized_handle(left_serialized, right_serialized); - } -} - -// Verifies |left_array| is the same as |right_array| where each element -// is a serialized FileSystemHandle with the same properties. -function assert_equals_serialized_handles(left_array, right_array) { - assert_equals(left_array.length, right_array.length, - 'Each array of serialized handles must have the same length'); - - for (let i = 0; i < left_array.length; ++i) { - assert_equals_serialized_handle(left_array[i], right_array[i]); - } -} - -// Verifies each property of a serialized FileSystemFileHandle or -// FileSystemDirectoryHandle. -function assert_equals_serialized_handle(left, right) { - switch (left.kind) { - case 'directory': - assert_equals_serialized_file_system_directory_handle(left, right); - break; - case 'file': - assert_equals_serialized_file_system_file_handle(left, right); - break; - default: - throw 'Object is not a FileSystemFileHandle or ' + - `FileSystemDirectoryHandle ${left}`; - } -} - -// Compares the output of serialize_file_system_handle() for -// two FileSystemHandles. -function assert_equals_serialized_file_system_handle(left, right) { - assert_equals(left.kind, right.kind, - 'Each FileSystemHandle instance must use the expected "kind".'); - - assert_equals(left.name, right.name, - 'Each FileSystemHandle instance must use the expected "name" ' + - ' property.'); - - assert_equals(left.read_permission, right.read_permission, - 'Each FileSystemHandle instance must have the expected read ' + - ' permission.'); - - assert_equals(left.write_permission, right.write_permission, - 'Each FileSystemHandle instance must have the expected write ' + - ' permission.'); -} - -// Compares the output of serialize_file_system_file_handle() -// for two FileSystemFileHandle. -function assert_equals_serialized_file_system_file_handle(left, right) { - assert_equals_serialized_file_system_handle(left, right); - assert_equals(left.contents, right.contents, - 'Each FileSystemFileHandle instance must have the same contents.'); -} - -// Compares the output of serialize_file_system_directory_handle() -// for two FileSystemDirectoryHandles. -function assert_equals_serialized_file_system_directory_handle(left, right) { - assert_equals_serialized_file_system_handle(left, right); - - assert_equals(left.files.length, right.files.length, - 'Each FileSystemDirectoryHandle must contain the same number of ' + - 'file children'); - - for (let i = 0; i < left.files.length; ++i) { - assert_equals_serialized_file_system_file_handle( - left.files[i], right.files[i]); - } - - assert_equals(left.directories.length, right.directories.length, - 'Each FileSystemDirectoryHandle must contain the same number of ' + - 'directory children'); - - for (let i = 0; i < left.directories.length; ++i) { - assert_equals_serialized_file_system_directory_handle( - left.directories[i], right.directories[i]); - } -} - -// Creates a dictionary with interesting property values from MessageEvent. -function serialize_message_error_event(message_error_event) { - return { - data: message_error_event.data, - origin: message_error_event.origin, - last_event_id: message_error_event.lastEventId, - has_source: (message_error_event.source !== null), - ports_length: message_error_event.ports.length - }; -} - -// Compares the output of serialize_message_error_event() with an -// expected result. -function assert_equals_serialized_message_error_event( - serialized_event, expected_origin, expected_has_source) { - assert_equals(serialized_event.data, null, - 'The message error event must set the "data" property to null.'); - - assert_equals(serialized_event.origin, expected_origin, - 'The message error event must have the expected "origin" property.'); - - assert_equals(serialized_event.last_event_id, "", - 'The message error event must set the "lastEventId" property to the empty string.'); - - assert_equals(serialized_event.has_source, expected_has_source, - 'The message error event must have the expected "source" property.'); - - assert_equals(serialized_event.ports_length, 0, - 'The message error event must not contain any message ports.'); -} diff --git a/tests/wpt/web-platform-tests/fs/FileSystemSyncAccessHandle-read-write.https.tentative.worker.js b/tests/wpt/web-platform-tests/fs/FileSystemSyncAccessHandle-read-write.https.tentative.worker.js index cdefc78b6cb..8fa3799a67a 100644 --- a/tests/wpt/web-platform-tests/fs/FileSystemSyncAccessHandle-read-write.https.tentative.worker.js +++ b/tests/wpt/web-platform-tests/fs/FileSystemSyncAccessHandle-read-write.https.tentative.worker.js @@ -195,8 +195,7 @@ sync_access_handle_test((t, handle) => { const bufferLength = expected.length; const readBuffer = new Uint8Array(expected.length); - // No options parameter provided, should read at offset 0. - const readBytes = handle.read(readBuffer); + const readBytes = handle.read(readBuffer, {at: 0}); assert_equals(expected.length, readBytes, 'Check that all bytes were read'); const actual = new TextDecoder().decode(readBuffer); assert_equals( @@ -242,4 +241,59 @@ sync_access_handle_test((t, handle) => { assert_equals(0, readBytes, 'Check that no bytes were written'); }, 'Test writing at a negative offset fails.'); +sync_access_handle_test((t, handle) => { + const text = 'foobar'; + const writeBuffer = new TextEncoder().encode(text); + let writtenBytes = handle.write(writeBuffer); + assert_equals( + writeBuffer.byteLength, writtenBytes, + 'Check that all bytes were written.'); + + // This should double the file size, not overwrite the existing bytes. + writtenBytes = handle.write(writeBuffer); + assert_equals( + writeBuffer.byteLength, writtenBytes, + 'Check that all bytes were written.'); + + // Reading at the cursor will read zero bytes at the end of the file. + const expectedFileSize = text.length * 2; + const readBuffer = new Uint8Array(expectedFileSize); + let readBytes = handle.read(readBuffer); + assert_equals(0, readBytes, 'Check that no bytes were read'); + + // Reading from the start of the file. + readBytes = handle.read(readBuffer, {at: 0}); + assert_equals(expectedFileSize, readBytes, 'Check that all bytes were read'); +}, 'Test that writing moves the file position cursor'); + +sync_access_handle_test((t, handle) => { + const decoder = new TextDecoder(); + + const text = 'foobar'; + const writeBuffer = new TextEncoder().encode(text); + let writtenBytes = handle.write(writeBuffer); + assert_equals( + writeBuffer.byteLength, writtenBytes, + 'Check that all bytes were written.'); + + // Read the first half of the file. + let expected = 'foo'; + const readBuffer = new Uint8Array(3); + let readBytes = handle.read(readBuffer, {at: 0}); + assert_equals(3, readBytes, 'Check that all bytes were read'); + let actual = decoder.decode(readBuffer); + assert_equals( + expected, actual, + `Expected to read ${expected} but the actual value was ${actual}.`); + + // Read the second half of the file, without specifying an offset. + expected = 'bar'; + readBytes = handle.read(readBuffer); + assert_equals(3, readBytes, 'Check that all bytes were read'); + actual = decoder.decode(readBuffer); + assert_equals( + expected, actual, + `Expected to read ${expected} but the actual value was ${actual}.`); +}, 'Test that reading moves the file position cursor'); + done(); diff --git a/tests/wpt/web-platform-tests/fs/FileSystemSyncAccessHandle-truncate.https.tentative.worker.js b/tests/wpt/web-platform-tests/fs/FileSystemSyncAccessHandle-truncate.https.tentative.worker.js index 921e0066c90..f2cd51ef1a1 100644 --- a/tests/wpt/web-platform-tests/fs/FileSystemSyncAccessHandle-truncate.https.tentative.worker.js +++ b/tests/wpt/web-platform-tests/fs/FileSystemSyncAccessHandle-truncate.https.tentative.worker.js @@ -37,4 +37,23 @@ sync_access_handle_test((t, handle) => { assert_array_equals(expected, readBuffer); }, 'test SyncAccessHandle.truncate after SyncAccessHandle.write'); +sync_access_handle_test((t, handle) => { + // The cursor will be at the end of the file after this write. + const writeBuffer = new Uint8Array(4); + writeBuffer.set([0, 1, 2, 3]); + handle.write(writeBuffer); + + // Extending the file should not move the cursor. + handle.truncate(6); + let readBuffer = new Uint8Array(2); + let expected = new Uint8Array(2); + expected.set([0, 0]); + assert_equals(2, handle.read(readBuffer)); + assert_array_equals(expected, readBuffer); + + // Shortening the file should move the cursor to the new end. + handle.truncate(2); + assert_equals(0, handle.read(readBuffer)); +}, 'test SyncAccessHandle.truncate resets the file position cursor'); + done(); diff --git a/tests/wpt/web-platform-tests/loading/early-hints/early-hints-response-time.h2.html b/tests/wpt/web-platform-tests/loading/early-hints/early-hints-response-time.h2.html new file mode 100644 index 00000000000..ac70b3d332e --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/early-hints-response-time.h2.html @@ -0,0 +1,27 @@ + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/loading/early-hints/resources/early-hints-delay.h2.py b/tests/wpt/web-platform-tests/loading/early-hints/resources/early-hints-delay.h2.py new file mode 100644 index 00000000000..ba8796bc11a --- /dev/null +++ b/tests/wpt/web-platform-tests/loading/early-hints/resources/early-hints-delay.h2.py @@ -0,0 +1,20 @@ +import time + +def handle_headers(frame, request, response): + early_hints = [ + (b":status", b"103"), + (b"link", b"; rel=preload; as=script"), + ] + + time.sleep(int(request.GET.first(b"delay1")) / 1000) + response.writer.write_raw_header_frame(headers=early_hints, + end_headers=True) + + time.sleep(int(request.GET.first(b"delay2")) / 1000) + response.status = 200 + response.headers[b"content-type"] = "text/html" + response.write_status_headers() + + +def main(request, response): + response.writer.write_data(item="Hello", last=True) diff --git a/tests/wpt/web-platform-tests/payment-handler/app-can-make-payment.js b/tests/wpt/web-platform-tests/payment-handler/app-can-make-payment.js index cd27bce02e0..6b060dffb78 100644 --- a/tests/wpt/web-platform-tests/payment-handler/app-can-make-payment.js +++ b/tests/wpt/web-platform-tests/payment-handler/app-can-make-payment.js @@ -1,7 +1,4 @@ let responseType = 'canMakePayment-true'; -self.addEventListener('message', event => { - responseType = event.data.responseType; -}); self.addEventListener('canmakepayment', event => { if (event.methodData) { @@ -51,8 +48,10 @@ self.addEventListener('canmakepayment', event => { } }); -// Respond 'true' to the 'abortpayment' event to allow tests to use abort() to -// close an ongoing PaymentRequest. -self.addEventListener('abortpayment', event => { - event.respondWith(true); +self.addEventListener('paymentrequest', event => { + responseType = event.methodData[0].data.responseType; + event.respondWith({ + methodName: event.methodData[0].supportedMethods, + details: {status: 'success'}, + }); }); diff --git a/tests/wpt/web-platform-tests/payment-handler/app-simple.js b/tests/wpt/web-platform-tests/payment-handler/app-simple.js index 833a01f47e0..9e70c08246b 100644 --- a/tests/wpt/web-platform-tests/payment-handler/app-simple.js +++ b/tests/wpt/web-platform-tests/payment-handler/app-simple.js @@ -1,3 +1,7 @@ +self.addEventListener('canmakepayment', event => { + event.respondWith(true); +}); + self.addEventListener('paymentrequest', event => { const expectedId = 'test-payment-request-identifier'; if (event.paymentRequestId !== expectedId) { @@ -17,11 +21,16 @@ self.addEventListener('paymentrequest', event => { } const methodData = event.methodData[0]; - const expectedMethodName = window.location.origin + '/payment-handler/payment-app/'; - if (methodData.supportedMethods !== expectedMethodName) { - const msg = `Expected payment method name "${expectedMethodName}", but got "${ - methodData.supportedMethods - }"`; + const expectedMethodNamePrefix = 'http'; + if (!methodData.supportedMethods.startsWith(expectedMethodNamePrefix)) { + const msg = `Expected payment method name "${methodData.supportedMethods}" to start with ${expectedMethodNamePrefix}"`; + event.respondWith(Promise.reject(new Error(msg))); + return; + } + + const expectedMethodNameSuffix = '/payment-handler/payment-request-event-manual-manifest.json'; + if (!methodData.supportedMethods.endsWith(expectedMethodNameSuffix)) { + const msg = `Expected payment method name "${methodData.supportedMethods}" to end with ${expectedMethodNameSuffix}"`; event.respondWith(Promise.reject(new Error(msg))); return; } @@ -69,6 +78,7 @@ self.addEventListener('paymentrequest', event => { } event.respondWith({ - methodName: expectedMethodName, + methodName: methodData.supportedMethods, + details: {status: 'success'}, }); }); diff --git a/tests/wpt/web-platform-tests/payment-handler/can-make-payment-event-manifest.json b/tests/wpt/web-platform-tests/payment-handler/can-make-payment-event-manifest.json new file mode 100644 index 00000000000..b31ea5ce08b --- /dev/null +++ b/tests/wpt/web-platform-tests/payment-handler/can-make-payment-event-manifest.json @@ -0,0 +1,15 @@ +{ + "default_applications": ["can-make-payment-event-manifest.json"], + "name": "Test Payment Handler", + "icons": [ + { + "src": "/images/rgrg-256x256.png", + "sizes": "256x256", + "type": "image/png" + } + ], + "serviceworker": { + "src": "app-can-make-payment.js", + "scope": "can-make-payment-event-payment-app/" + } +} diff --git a/tests/wpt/web-platform-tests/payment-handler/can-make-payment-event.https.html b/tests/wpt/web-platform-tests/payment-handler/can-make-payment-event.https.html index 941c206e3b3..776c68be43a 100644 --- a/tests/wpt/web-platform-tests/payment-handler/can-make-payment-event.https.html +++ b/tests/wpt/web-platform-tests/payment-handler/can-make-payment-event.https.html @@ -2,34 +2,25 @@ Tests for CanMakePaymentEvent - diff --git a/tests/wpt/web-platform-tests/payment-handler/change-payment-method-manual-manifest.json b/tests/wpt/web-platform-tests/payment-handler/change-payment-method-manual-manifest.json index 8f33def77ba..7a4f5d6f7e2 100644 --- a/tests/wpt/web-platform-tests/payment-handler/change-payment-method-manual-manifest.json +++ b/tests/wpt/web-platform-tests/payment-handler/change-payment-method-manual-manifest.json @@ -10,6 +10,6 @@ ], "serviceworker": { "src": "app-change-payment-method.js", - "scope": "payment-app/" + "scope": "change-payment-method-manual-payment-app/" } } diff --git a/tests/wpt/web-platform-tests/payment-handler/change-shipping-option-manual-manifest.json b/tests/wpt/web-platform-tests/payment-handler/change-shipping-option-manual-manifest.json new file mode 100644 index 00000000000..2c023902b2a --- /dev/null +++ b/tests/wpt/web-platform-tests/payment-handler/change-shipping-option-manual-manifest.json @@ -0,0 +1,20 @@ +{ + "default_applications": ["change-shipping-option-manual-manifest.json"], + "name": "Test Payment Handler", + "icons": [ + { + "src": "/images/rgrg-256x256.png", + "sizes": "256x256", + "type": "image/png" + } + ], + "serviceworker": { + "src": "app-change-shipping-option.js", + "scope": "change-shipping-option-manual-payment-app/" + }, + "payment": { + "supported_delegations": [ + "shippingAddress" + ] + } +} diff --git a/tests/wpt/web-platform-tests/payment-handler/change-shipping-option-manual.https.html b/tests/wpt/web-platform-tests/payment-handler/change-shipping-option-manual.https.html index 2511fc5ea05..6e97f2878af 100644 --- a/tests/wpt/web-platform-tests/payment-handler/change-shipping-option-manual.https.html +++ b/tests/wpt/web-platform-tests/payment-handler/change-shipping-option-manual.https.html @@ -1,160 +1,144 @@ Tests for PaymentRequestEvent.changeShippingOption() + - -

    If the payment sheet is shown, please authorize the mock payment.

    diff --git a/tests/wpt/web-platform-tests/payment-handler/payment-request-event-manual-manifest.json b/tests/wpt/web-platform-tests/payment-handler/payment-request-event-manual-manifest.json new file mode 100644 index 00000000000..f97229762ce --- /dev/null +++ b/tests/wpt/web-platform-tests/payment-handler/payment-request-event-manual-manifest.json @@ -0,0 +1,15 @@ +{ + "default_applications": ["payment-request-event-manual-manifest.json"], + "name": "Test Payment Handler", + "icons": [ + { + "src": "/images/rgrg-256x256.png", + "sizes": "256x256", + "type": "image/png" + } + ], + "serviceworker": { + "src": "app-simple.js", + "scope": "payment-request-event-manual-payment-app/" + } +} diff --git a/tests/wpt/web-platform-tests/payment-handler/payment-request-event-manual.https.html b/tests/wpt/web-platform-tests/payment-handler/payment-request-event-manual.https.html index e595dd2160f..9cd20354631 100644 --- a/tests/wpt/web-platform-tests/payment-handler/payment-request-event-manual.https.html +++ b/tests/wpt/web-platform-tests/payment-handler/payment-request-event-manual.https.html @@ -2,87 +2,68 @@ Tests for PaymentRequestEvent - - + +

    When the payment sheet is shown, please authorize the mock payment.

    diff --git a/tests/wpt/web-platform-tests/payment-handler/supports-shipping-contact-delegation-manual-manifest.json b/tests/wpt/web-platform-tests/payment-handler/supports-shipping-contact-delegation-manual-manifest.json new file mode 100644 index 00000000000..fd6bc89ef6d --- /dev/null +++ b/tests/wpt/web-platform-tests/payment-handler/supports-shipping-contact-delegation-manual-manifest.json @@ -0,0 +1,23 @@ +{ + "default_applications": ["supports-shipping-contact-delegation-manual-manifest.json"], + "name": "Test Payment Handler", + "icons": [ + { + "src": "/images/rgrg-256x256.png", + "sizes": "256x256", + "type": "image/png" + } + ], + "serviceworker": { + "src": "app-supports-shipping-contact-delegation.js", + "scope": "supports-shipping-contact-delegation-manual-payment-app/" + }, + "payment": { + "supported_delegations": [ + "shippingAddress", + "payerName", + "payerPhone", + "payerEmail" + ] + } +} diff --git a/tests/wpt/web-platform-tests/payment-handler/supports-shipping-contact-delegation-manual.https.html b/tests/wpt/web-platform-tests/payment-handler/supports-shipping-contact-delegation-manual.https.html index 939e5429262..e3074b4e5e5 100644 --- a/tests/wpt/web-platform-tests/payment-handler/supports-shipping-contact-delegation-manual.https.html +++ b/tests/wpt/web-platform-tests/payment-handler/supports-shipping-contact-delegation-manual.https.html @@ -1,88 +1,70 @@ Tests for Delegation of shipping and contact collection to PH - -

    If the payment sheet is shown, please authorize the mock payment.

    diff --git a/tests/wpt/web-platform-tests/preload/prefetch-cache.html b/tests/wpt/web-platform-tests/preload/prefetch-cache.html new file mode 100644 index 00000000000..844b4d7be59 --- /dev/null +++ b/tests/wpt/web-platform-tests/preload/prefetch-cache.html @@ -0,0 +1,37 @@ + +Ensures that prefetch respects HTTP cache semantics + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/preload/prefetch-document.html b/tests/wpt/web-platform-tests/preload/prefetch-document.html new file mode 100644 index 00000000000..bdb12bd58a0 --- /dev/null +++ b/tests/wpt/web-platform-tests/preload/prefetch-document.html @@ -0,0 +1,103 @@ + +Ensures that prefetch works with documents + + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/preload/prefetch-events.html b/tests/wpt/web-platform-tests/preload/prefetch-events.html new file mode 100644 index 00000000000..7857b14f514 --- /dev/null +++ b/tests/wpt/web-platform-tests/preload/prefetch-events.html @@ -0,0 +1,97 @@ + +Ensures that prefetch respects HTTP cache semantics + + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/preload/prefetch-headers.html b/tests/wpt/web-platform-tests/preload/prefetch-headers.html new file mode 100644 index 00000000000..0a475c7d773 --- /dev/null +++ b/tests/wpt/web-platform-tests/preload/prefetch-headers.html @@ -0,0 +1,35 @@ + +Ensures that prefetch sends headers as per-spec + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/preload/prefetch-load-event.html b/tests/wpt/web-platform-tests/preload/prefetch-load-event.html new file mode 100644 index 00000000000..c1cb75d52ea --- /dev/null +++ b/tests/wpt/web-platform-tests/preload/prefetch-load-event.html @@ -0,0 +1,13 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/preload/prefetch-types.html b/tests/wpt/web-platform-tests/preload/prefetch-types.html new file mode 100644 index 00000000000..276439e5440 --- /dev/null +++ b/tests/wpt/web-platform-tests/preload/prefetch-types.html @@ -0,0 +1,73 @@ + +Ensures that prefetch is not specific to resource types + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/preload/resources/prefetch-helper.js b/tests/wpt/web-platform-tests/preload/resources/prefetch-helper.js index cf0e0d583cd..367d4824c41 100644 --- a/tests/wpt/web-platform-tests/preload/resources/prefetch-helper.js +++ b/tests/wpt/web-platform-tests/preload/resources/prefetch-helper.js @@ -6,6 +6,7 @@ async function get_prefetch_info(href) { async function prefetch(p = {}, t) { const link = document.createElement("link"); link.rel = "prefetch"; + link.as = p.as; if (p.crossOrigin) link.setAttribute("crossorigin", p.crossOrigin); const uid = token(); diff --git a/tests/wpt/web-platform-tests/resize-observer/notify.html b/tests/wpt/web-platform-tests/resize-observer/notify.html index 7f0e4485404..dc2e268b8a1 100644 --- a/tests/wpt/web-platform-tests/resize-observer/notify.html +++ b/tests/wpt/web-platform-tests/resize-observer/notify.html @@ -340,6 +340,50 @@ function test10() { return helper.start(); } +function test11() { + let t = createAndAppendElement("div"); + t.style.display = "none"; + + let helper = new ResizeTestHelper( + "test11: display:none element should be notified", + [ + { + setup: observer => { + observer.observe(t); + }, + notify: entries => { + assert_equals(entries.length, 1, "1 pending notification"); + assert_equals(entries[0].target, t, "target is t"); + assert_equals(entries[0].contentRect.width, 0, "target width"); + assert_equals(entries[0].contentRect.height, 0, "target height"); + } + } + ]); + return helper.start(() => t.remove()); +} + +function test12() { + let t = createAndAppendElement("div"); + t.style.width = "0px"; + + let helper = new ResizeTestHelper( + "test12: element sized 0x0 should be notified", + [ + { + setup: observer => { + observer.observe(t); + }, + notify: entries => { + assert_equals(entries.length, 1, "1 pending notification"); + assert_equals(entries[0].target, t, "target is t"); + assert_equals(entries[0].contentRect.width, 0, "target width"); + assert_equals(entries[0].contentRect.height, 0, "target height"); + } + } + ]); + return helper.start(() => t.remove()); +} + let guard; test(_ => { assert_own_property(window, "ResizeObserver"); @@ -357,6 +401,8 @@ test0() .then(() => { return test8(); }) .then(() => { return test9(); }) .then(() => { return test10(); }) + .then(() => { return test11(); }) + .then(() => { return test12(); }) .then(() => { guard.done(); }); diff --git a/tests/wpt/web-platform-tests/resource-timing/interim-response-times.h2.html b/tests/wpt/web-platform-tests/resource-timing/interim-response-times.h2.html new file mode 100644 index 00000000000..850ee7cb5f5 --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/interim-response-times.h2.html @@ -0,0 +1,64 @@ + + + + +Resource Timing: PerformanceResourceTiming interim resource times + + + + + + + + diff --git a/tests/wpt/web-platform-tests/resource-timing/interim-response-times.html b/tests/wpt/web-platform-tests/resource-timing/interim-response-times.html new file mode 100644 index 00000000000..b922590d5d3 --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/interim-response-times.html @@ -0,0 +1,62 @@ + + + + +Resource Timing: PerformanceResourceTiming interim resource times + + + + + + + + diff --git a/tests/wpt/web-platform-tests/resource-timing/resource-timing-level1.js b/tests/wpt/web-platform-tests/resource-timing/resource-timing-level1.js index 95b5cdfb1ed..6167777fe68 100644 --- a/tests/wpt/web-platform-tests/resource-timing/resource-timing-level1.js +++ b/tests/wpt/web-platform-tests/resource-timing/resource-timing-level1.js @@ -235,47 +235,6 @@ window.onload = }); }); - // Test that responseStart uses the timing of 1XX responses by - // synthesizing a delay between a 100 and 200 status, and verifying that - // this delay is included before responseEnd. If the delay is not - // included, this implies that the 200 status line was (incorrectly) used - // for responseStart timing, despite the 100 response arriving earlier. - // - // Source: "In the case where more than one response is available for a - // request, due to an Informational 1xx response, the reported - // responseStart value is that of the first response to the last - // request." - [ - { initiator: "iframe", response: "(done)", mime: mimeHtml }, - { initiator: "xmlhttprequest", response: "(done)", mime: mimeText }, - { initiator: "script", response: '"";', mime: mimeScript }, - { initiator: "link", response: ".unused{}", mime: mimeCss }, - ] - .forEach(function (template) { - testCases.push({ - description: "'" + template.initiator + " responseStart uses 1XX (first) response timings'", - test: function (test) { - initiateFetch( - test, - template.initiator, - getSyntheticUrl("status:100" - + "&flush" - + "&" + serverStepDelay + "ms" - + "&status:200" - + "&mime:" + template.mime - + "&send:" + encodeURIComponent(template.response)), - function (initiator, entry) { - assert_greater_than_equal( - entry.responseEnd, - entry.responseStart + serverStepDelay, - "HTTP/1.1 1XX (first) response should determine 'responseStart' timing."); - - test.done(); - }); - } - }); - }); - // Function to run the next case in the queue. var currentTestIndex = -1; function runNextCase() { diff --git a/tests/wpt/web-platform-tests/resource-timing/resources/header-delay.h2.py b/tests/wpt/web-platform-tests/resource-timing/resources/header-delay.h2.py new file mode 100644 index 00000000000..be29e52b0e8 --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/resources/header-delay.h2.py @@ -0,0 +1,23 @@ +from time import sleep + +def handle_headers(frame, request, response): + delay = int(request.GET.first(b"delay")) / 1000 + sleep(delay) + response.writer.write_raw_header_frame(headers=[(b":status", b"100")], end_headers=True) + sleep(delay) + + if b"with103" in request.GET: + response.writer.write_raw_header_frame(headers=[(b":status", b"103")], end_headers=True) + sleep(delay) + + response.status = 200 + + if b"tao" in request.GET: + response.headers[b"timing-allow-origin"] = "*" + + response.headers[b"content-type"] = "text/plain" + response.headers[b"access-control-allow-origin"] = "*" + response.write_status_headers() + +def main(request, response): + response.writer.write_data(item="Hello World", last=True) diff --git a/tests/wpt/web-platform-tests/resource-timing/resources/header-delay.py b/tests/wpt/web-platform-tests/resource-timing/resources/header-delay.py new file mode 100644 index 00000000000..a47a63e9814 --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/resources/header-delay.py @@ -0,0 +1,27 @@ +from time import sleep + +def main(request, response): + delay = int(request.GET.first(b"delay")) / 1000 + + # TODO: make this exported from ResponseWriter + handler = response.writer._handler + sleep(delay) + handler.send_response(100) + handler.end_headers() + sleep(delay) + + if b"with103" in request.GET: + handler.send_response(103) + handler.send_header("Link", ";rel=preload;as=script") + handler.end_headers() + sleep(delay) + + handler.send_response(200) + + if b"tao" in request.GET: + handler.send_header("timing-allow-origin", "*") + + handler.send_header("content-type", "text/plain") + handler.send_header("access-control-allow-origin", "*") + handler.end_headers() + handler.wfile.write(bytes("Hello World", "utf8")) diff --git a/tests/wpt/web-platform-tests/resources/chromium/mock-subapps.js b/tests/wpt/web-platform-tests/resources/chromium/mock-subapps.js index 467d932465b..ddbf27649e1 100644 --- a/tests/wpt/web-platform-tests/resources/chromium/mock-subapps.js +++ b/tests/wpt/web-platform-tests/resources/chromium/mock-subapps.js @@ -30,7 +30,7 @@ self.SubAppsServiceTest = (() => { return Promise.resolve({ result: { code: testInternal.serviceResultCode, - subApps: testInternal.listCallReturnValue, + subAppsList: testInternal.listCallReturnValue, } }); } diff --git a/tests/wpt/web-platform-tests/scroll-animations/css/animation-timeline-multiple.html b/tests/wpt/web-platform-tests/scroll-animations/css/animation-timeline-multiple.html index 8ae37bf7519..7eccdf89b6c 100644 --- a/tests/wpt/web-platform-tests/scroll-animations/css/animation-timeline-multiple.html +++ b/tests/wpt/web-platform-tests/scroll-animations/css/animation-timeline-multiple.html @@ -33,16 +33,16 @@ } #top_scroller { - scroll-timeline: block top_timeline; + scroll-timeline: top_timeline block; } #bottom_scroller { - scroll-timeline: inline bottom_timeline; + scroll-timeline: bottom_timeline inline; } #left_scroller { - scroll-timeline: block left_timeline; + scroll-timeline: left_timeline block; } #right_scroller { - scroll-timeline: inline right_timeline; + scroll-timeline: right_timeline inline; } #element { diff --git a/tests/wpt/web-platform-tests/scroll-animations/css/scroll-timeline-axis-writing-mode.html b/tests/wpt/web-platform-tests/scroll-animations/css/scroll-timeline-axis-writing-mode.html index 90912bfc227..37b4dfdf549 100644 --- a/tests/wpt/web-platform-tests/scroll-animations/css/scroll-timeline-axis-writing-mode.html +++ b/tests/wpt/web-platform-tests/scroll-animations/css/scroll-timeline-axis-writing-mode.html @@ -22,23 +22,23 @@ scroll-timeline: timeline_initial_axis; } #timeline_vertical { - scroll-timeline: vertical timeline_vertical; + scroll-timeline: timeline_vertical vertical; } #timeline_horizontal { - scroll-timeline: horizontal timeline_horizontal; + scroll-timeline: timeline_horizontal horizontal; } #timeline_block_in_horizontal { - scroll-timeline: block timeline_block_in_horizontal; + scroll-timeline: timeline_block_in_horizontal block; } #timeline_inline_in_horizontal { - scroll-timeline: inline timeline_inline_in_horizontal; + scroll-timeline: timeline_inline_in_horizontal inline; } #timeline_block_in_vertical { - scroll-timeline: block timeline_block_in_vertical; + scroll-timeline: timeline_block_in_vertical block; writing-mode: vertical-lr; } #timeline_inline_in_vertical { - scroll-timeline: inline timeline_inline_in_vertical; + scroll-timeline: timeline_inline_in_vertical inline; writing-mode: vertical-lr; } #container > div { diff --git a/tests/wpt/web-platform-tests/scroll-animations/css/scroll-timeline-name-tree-scoped.html b/tests/wpt/web-platform-tests/scroll-animations/css/scroll-timeline-name-shadow.html similarity index 71% rename from tests/wpt/web-platform-tests/scroll-animations/css/scroll-timeline-name-tree-scoped.html rename to tests/wpt/web-platform-tests/scroll-animations/css/scroll-timeline-name-shadow.html index 622a582cce9..3d6a55883e0 100644 --- a/tests/wpt/web-platform-tests/scroll-animations/css/scroll-timeline-name-tree-scoped.html +++ b/tests/wpt/web-platform-tests/scroll-animations/css/scroll-timeline-name-shadow.html @@ -1,7 +1,8 @@ -scroll-timelime-name and tree-scoped references +scroll-timeline-name and tree-scoped references - + + @@ -59,8 +60,8 @@ assert_equals(target.getAnimations().length, 1); let anim = target.getAnimations()[0]; assert_not_equals(anim.timeline, null); - assert_equals(anim.timeline.axis, 'horizontal'); - }, 'Outer animation can not see scroll timeline defined by :host'); + assert_equals(anim.timeline.axis, 'vertical'); + }, 'Outer animation can see scroll timeline defined by :host'); @@ -97,8 +98,8 @@ assert_equals(target.getAnimations().length, 1); let anim = target.getAnimations()[0]; assert_not_equals(anim.timeline, null); - assert_equals(anim.timeline.axis, 'horizontal'); - }, 'Outer animation can not see scroll timeline defined by ::slotted'); + assert_equals(anim.timeline.axis, 'vertical'); + }, 'Outer animation can see scroll timeline defined by ::slotted'); @@ -142,3 +143,43 @@ assert_equals(anim.timeline.axis, 'horizontal'); }, 'Inner animation can see scroll timeline defined by ::part'); + + + + diff --git a/tests/wpt/web-platform-tests/scroll-animations/css/scroll-timeline-shorthand.tentative.html b/tests/wpt/web-platform-tests/scroll-animations/css/scroll-timeline-shorthand.tentative.html index b340ff34ffe..c76ee9e22bb 100644 --- a/tests/wpt/web-platform-tests/scroll-animations/css/scroll-timeline-shorthand.tentative.html +++ b/tests/wpt/web-platform-tests/scroll-animations/css/scroll-timeline-shorthand.tentative.html @@ -8,12 +8,12 @@
    diff --git a/tests/wpt/web-platform-tests/scroll-animations/css/view-timeline-name-tree-scoped.html b/tests/wpt/web-platform-tests/scroll-animations/css/view-timeline-name-shadow.html similarity index 71% rename from tests/wpt/web-platform-tests/scroll-animations/css/view-timeline-name-tree-scoped.html rename to tests/wpt/web-platform-tests/scroll-animations/css/view-timeline-name-shadow.html index c216c345ed9..bf93d8c160d 100644 --- a/tests/wpt/web-platform-tests/scroll-animations/css/view-timeline-name-tree-scoped.html +++ b/tests/wpt/web-platform-tests/scroll-animations/css/view-timeline-name-shadow.html @@ -1,7 +1,8 @@ -view-timelime-name and tree-scoped references +view-timeline-name and and shadow trees - + + @@ -60,8 +61,8 @@ assert_equals(target.getAnimations().length, 1); let anim = target.getAnimations()[0]; assert_not_equals(anim.timeline, null); - assert_equals(anim.timeline.axis, 'horizontal'); - }, 'Outer animation can not see view timeline defined by :host'); + assert_equals(anim.timeline.axis, 'vertical'); + }, 'Outer animation can see view timeline defined by :host'); @@ -98,8 +99,8 @@ assert_equals(target.getAnimations().length, 1); let anim = target.getAnimations()[0]; assert_not_equals(anim.timeline, null); - assert_equals(anim.timeline.axis, 'horizontal'); - }, 'Outer animation can not see view timeline defined by ::slotted'); + assert_equals(anim.timeline.axis, 'vertical'); + }, 'Outer animation can see view timeline defined by ::slotted'); @@ -143,3 +144,43 @@ assert_equals(anim.timeline.axis, 'horizontal'); }, 'Inner animation can see view timeline defined by ::part'); + + + + diff --git a/tests/wpt/web-platform-tests/scroll-animations/css/view-timeline-range-animation.html b/tests/wpt/web-platform-tests/scroll-animations/css/view-timeline-range-animation.html new file mode 100644 index 00000000000..32febb2f2b6 --- /dev/null +++ b/tests/wpt/web-platform-tests/scroll-animations/css/view-timeline-range-animation.html @@ -0,0 +1,145 @@ + +Animations using named timeline ranges + + + + + + +
    +
    + + diff --git a/tests/wpt/web-platform-tests/storage-access-api/helpers.js b/tests/wpt/web-platform-tests/storage-access-api/helpers.js index de9fba2d1c4..99ba7923413 100644 --- a/tests/wpt/web-platform-tests/storage-access-api/helpers.js +++ b/tests/wpt/web-platform-tests/storage-access-api/helpers.js @@ -9,28 +9,41 @@ function processQueryParams() { }; } -function CreateFrameAndRunTests(setUpFrame) { +// Create an iframe element, set it up using `setUpFrame`, and optionally fetch +// tests in it. Returns the created frame, after it has loaded. +function CreateFrameHelper(setUpFrame, fetchTests) { const frame = document.createElement('iframe'); const promise = new Promise((resolve, reject) => { - frame.onload = resolve; + frame.onload = () => resolve(frame); frame.onerror = reject; }); setUpFrame(frame); - fetch_tests_from_window(frame.contentWindow); + if (fetchTests) { + fetch_tests_from_window(frame.contentWindow); + } return promise; } -function RunTestsInIFrame(sourceURL) { - return CreateFrameAndRunTests((frame) => { +// Create an iframe element with content loaded from `sourceURL`, append it to +// the document, and optionally fetch tests. Returns the loaded frame, once +// ready. +function CreateFrame(sourceURL, fetchTests = false) { + return CreateFrameHelper((frame) => { frame.src = sourceURL; document.body.appendChild(frame); - }); + }, fetchTests); +} + +// Create a new iframe with content loaded from `sourceURL`, and fetches tests. +// Returns the loaded frame, once ready. +function RunTestsInIFrame(sourceURL) { + return CreateFrame(sourceURL, true); } function RunTestsInNestedIFrame(sourceURL) { - return CreateFrameAndRunTests((frame) => { + return CreateFrameHelper((frame) => { document.body.appendChild(frame); frame.contentDocument.write(` @@ -41,7 +54,7 @@ function RunTestsInNestedIFrame(sourceURL) { `); frame.contentDocument.close(); - }); + }, true); } function RunRequestStorageAccessInDetachedFrame() { @@ -61,3 +74,61 @@ function RunRequestStorageAccessViaDomParser() { function RunCallbackWithGesture(callback) { return test_driver.bless('run callback with user gesture', callback); } + +// Sends a message to the given target window, and waits for the provided +// promise to resolve. +function PostMessageAndAwait(message, targetWindow, promise) { + targetWindow.postMessage(message, "*"); + return promise; +} + +// Returns a promise that resolves when the next "reply" is received via +// postMessage. +function ReplyPromise() { + return new Promise((resolve) => { + window.addEventListener("message", (event) => { + resolve(event.data); + }, { once: true }); + }); +} + +// Returns a promise that resolves when the given frame fires its load event. +function ReloadPromise(frame) { + return new Promise((resolve) => { + frame.addEventListener("load", (event) => { + resolve(); + }, { once: true }); + }); +} + +// Reads cookies via document.cookie in the given frame. +function GetJSCookiesFromFrame(frame) { + return PostMessageAndAwait({ command: "document.cookie" }, frame.contentWindow, ReplyPromise()); +} + +// Reads cookies via the `httpCookies` variable in the given frame. +function GetHTTPCookiesFromFrame(frame) { + return PostMessageAndAwait({ command: "httpCookies" }, frame.contentWindow, ReplyPromise()); +} + +// Executes document.hasStorageAccess in the given frame. +function FrameHasStorageAccess(frame) { + return PostMessageAndAwait({ command: "hasStorageAccess" }, frame.contentWindow, ReplyPromise()); +} + +// Executes document.requestStorageAccess in the given frame. +function RequestStorageAccessInFrame(frame) { + return PostMessageAndAwait({ command: "requestStorageAccess" }, frame.contentWindow, ReplyPromise()); +} + +// Executes test_driver.set_permission in the given frame, with the provided +// arguments. +function SetPermissionInFrame(frame, args = []) { + return PostMessageAndAwait({ command: "set_permission", args }, frame.contentWindow, ReplyPromise()); +} + +// Executes `location.reload()` in the given frame. The returned promise +// resolves when the frame has finished reloading. +function FrameInitiatedReload(frame) { + return PostMessageAndAwait({ command: "reload" }, frame.contentWindow, ReloadPromise(frame)); +} diff --git a/tests/wpt/web-platform-tests/storage-access-api/requestStorageAccess-cross-origin-iframe-navigation.sub.https.window.js b/tests/wpt/web-platform-tests/storage-access-api/requestStorageAccess-cross-origin-iframe-navigation.sub.https.window.js new file mode 100644 index 00000000000..5081bb4a9cb --- /dev/null +++ b/tests/wpt/web-platform-tests/storage-access-api/requestStorageAccess-cross-origin-iframe-navigation.sub.https.window.js @@ -0,0 +1,48 @@ +// META: script=helpers.js +// META: script=/cookies/resources/cookie-helper.sub.js +// META: script=/resources/testdriver.js +// META: script=/resources/testdriver-vendor.js +'use strict'; + +(async function() { + // This is on the www subdomain, so it's cross-origin from the current document. + const wwwHost = "https://{{domains[www]}}:{{ports[https][0]}}"; + + // Set up storage access rules + try { + await test_driver.set_storage_access(wwwHost + "/", "*", "blocked"); + } catch (e) { + // Ignore, can be unimplemented if the platform blocks cross-site cookies + // by default. If this failed without default blocking we'll notice it later + // in the test. + } + + promise_test(async (t) => { + const responder_html = `${wwwHost}/storage-access-api/resources/script-with-cookie-header.py?script=embedded_responder.js`; + const frame = await CreateFrame(responder_html); + + t.add_cleanup(async () => { + await test_driver.delete_all_cookies(); + await SetPermissionInFrame(frame, [{ name: 'storage-access' }, 'prompt']); + }); + + await SetPermissionInFrame(frame, [{ name: 'storage-access' }, 'granted']); + await fetch(`${wwwHost}/cookies/resources/set.py?cookie=monster;Secure;SameSite=None;Path=/`, + { mode: "no-cors", credentials: "include" }); + + assert_false(await FrameHasStorageAccess(frame), "frame initially does not have storage access."); + assert_false(cookieStringHasCookie("cookie", "monster", await GetJSCookiesFromFrame(frame)), "frame cannot access cookies via JS."); + assert_false(cookieStringHasCookie("cookie", "monster", await GetHTTPCookiesFromFrame(frame)), "frame's fetch was done without credentials."); + + assert_true(await RequestStorageAccessInFrame(frame), "requestStorageAccess resolves without requiring a gesture."); + + assert_true(await FrameHasStorageAccess(frame), "frame has storage access after request."); + assert_true(cookieStringHasCookie("cookie", "monster", await GetJSCookiesFromFrame(frame)), "frame has cookie access via JS after request."); + + await FrameInitiatedReload(frame); + + assert_true(await FrameHasStorageAccess(frame), "frame has storage access after refresh."); + assert_true(cookieStringHasCookie("cookie", "monster", await GetJSCookiesFromFrame(frame)), "frame can access cookies via JS after refresh."); + assert_true(cookieStringHasCookie("cookie", "monster", await GetHTTPCookiesFromFrame(frame)), "frame's fetch was credentialed."); + }, "Self-initiated same-origin navigations preserve storage access"); +})(); diff --git a/tests/wpt/web-platform-tests/storage-access-api/requestStorageAccess-cross-origin-sibling-iframes.sub.https.window.js b/tests/wpt/web-platform-tests/storage-access-api/requestStorageAccess-cross-origin-sibling-iframes.sub.https.window.js new file mode 100644 index 00000000000..75ea90744ff --- /dev/null +++ b/tests/wpt/web-platform-tests/storage-access-api/requestStorageAccess-cross-origin-sibling-iframes.sub.https.window.js @@ -0,0 +1,55 @@ +// META: script=helpers.js +// META: script=/cookies/resources/cookie-helper.sub.js +// META: script=/resources/testdriver.js +// META: script=/resources/testdriver-vendor.js +'use strict'; + +(async function() { + // This is on the www subdomain, so it's cross-origin from the current document. + const wwwHost = "https://{{domains[www]}}:{{ports[https][0]}}"; + + // Set up storage access rules + try { + await test_driver.set_storage_access(wwwHost + "/", "*", "blocked"); + } catch (e) { + // Ignore, can be unimplemented if the platform blocks cross-site cookies + // by default. If this failed without default blocking we'll notice it later + // in the test. + } + + promise_test(async (t) => { + const responder_html = `${wwwHost}/storage-access-api/resources/script-with-cookie-header.py?script=embedded_responder.js`; + const [frame1, frame2] = await Promise.all([ + CreateFrame(responder_html), + CreateFrame(responder_html), + ]); + + t.add_cleanup(async () => { + await test_driver.delete_all_cookies(); + await SetPermissionInFrame(frame1, [{ name: 'storage-access' }, 'prompt']); + }); + + await SetPermissionInFrame(frame1, [{ name: 'storage-access' }, 'granted']); + await fetch(`${wwwHost}/cookies/resources/set.py?cookie=monster;Secure;SameSite=None;Path=/`, + { mode: "no-cors", credentials: "include" }); + + assert_false(await FrameHasStorageAccess(frame1), "frame1 should not have storage access initially."); + assert_false(await FrameHasStorageAccess(frame2), "frame2 should not have storage access initially."); + + assert_false(cookieStringHasCookie("cookie", "monster", await GetJSCookiesFromFrame(frame1)), "frame1 should not have access via document.cookie."); + assert_false(cookieStringHasCookie("cookie", "monster", await GetJSCookiesFromFrame(frame2)), "frame2 should not have access via document.cookie."); + + assert_true(await RequestStorageAccessInFrame(frame1), "requestStorageAccess doesn't require a gesture since the permission has already been granted."); + + assert_true(await FrameHasStorageAccess(frame1), "frame1 should have storage access now."); + assert_true(cookieStringHasCookie("cookie", "monster", await GetJSCookiesFromFrame(frame1)), "frame1 should now be able to access cookies via document.cookie."); + + assert_false(await FrameHasStorageAccess(frame2), "frame2 should still not have storage access."); + assert_false(cookieStringHasCookie("cookie", "monster", await GetJSCookiesFromFrame(frame2)), "frame2 should should still be unable to access cookies via document.cookie"); + + assert_true(await RequestStorageAccessInFrame(frame2), "frame2 should be able to get storage access without a gesture."); + + assert_true(await FrameHasStorageAccess(frame2), "frame2 should have storage access after it requested it."); + assert_true(cookieStringHasCookie("cookie", "monster", await GetJSCookiesFromFrame(frame2)), "frame2 should be able to access cookies via document.cookie after getting storage access."); + }, "Grants have per-frame scope"); +})(); diff --git a/tests/wpt/web-platform-tests/storage-access-api/resources/embedded_responder.js b/tests/wpt/web-platform-tests/storage-access-api/resources/embedded_responder.js new file mode 100644 index 00000000000..0d563e6b30c --- /dev/null +++ b/tests/wpt/web-platform-tests/storage-access-api/resources/embedded_responder.js @@ -0,0 +1,34 @@ +// META: script=/resources/testdriver.js +// META: script=/resources/testdriver-vendor.js +"use strict"; + +test_driver.set_test_context(window.top); + +window.addEventListener("message", async (event) => { + function reply(data) { + event.source.postMessage(data, event.origin); + } + + switch (event.data["command"]) { + case "hasStorageAccess": + reply(await document.hasStorageAccess()); + break; + case "requestStorageAccess": { + const obtainedAccess = await document.requestStorageAccess() + .then(() => true, () => false); + reply(obtainedAccess); + } + break; + case "document.cookie": + reply(document.cookie); + break; + case "set_permission": + await test_driver.set_permission(...event.data.args); + reply(undefined); + break; + case "reload": + window.location.reload(); + break; + default: + } +}); diff --git a/tests/wpt/web-platform-tests/storage-access-api/resources/script-with-cookie-header.py b/tests/wpt/web-platform-tests/storage-access-api/resources/script-with-cookie-header.py new file mode 100644 index 00000000000..83129a55595 --- /dev/null +++ b/tests/wpt/web-platform-tests/storage-access-api/resources/script-with-cookie-header.py @@ -0,0 +1,19 @@ +def main(request, response): + script = request.GET.first(b"script") + cookie_header = request.headers.get(b"Cookie", b"") + + body = b""" + + + Subframe with HTTP Cookies + + + + + + + """ % (cookie_header, script) + + return (200, [], body) diff --git a/tests/wpt/web-platform-tests/subapps/add-error.tentative.https.html b/tests/wpt/web-platform-tests/subapps/add-error.tentative.https.html index c9db29b62de..3dafdcd5aca 100644 --- a/tests/wpt/web-platform-tests/subapps/add-error.tentative.https.html +++ b/tests/wpt/web-platform-tests/subapps/add-error.tentative.https.html @@ -20,15 +20,9 @@ promise_test(async t => { // Detach the frame. iframe.remove(); - const same_origin_url = document.location.origin + '/sub-app'; - let subapp = {}; - let install_options = {}; - install_options["install_url"] = same_origin_url; - subapp[same_origin_url] = install_options; - // At this point the iframe is detached and unloaded, and its execution // context is gone. - await promise_rejects_dom(t, 'NotFoundError', iframeDOMException, iframeNavigator.subApps.add(subapp)); + await promise_rejects_dom(t, 'NotFoundError', iframeDOMException, iframeNavigator.subApps.add({})); }, "The object is no longer associated to a document."); promise_test(async t => { @@ -39,46 +33,9 @@ promise_test(async t => { const iframeDOMException = iframe.contentWindow.DOMException; t.add_cleanup(() => iframe.remove()); - const same_origin_url = document.location.origin + '/sub-app'; - let subapp = {}; - let install_options = {}; - install_options["install_url"] = same_origin_url; - subapp[same_origin_url] = install_options; - - await promise_rejects_dom(t, 'InvalidStateError', iframeDOMException, iframeNavigator.subApps.add(subapp)); + await promise_rejects_dom(t, 'InvalidStateError', iframeDOMException, iframeNavigator.subApps.add({})); }, "API is only supported in top-level browsing contexts."); -promise_test(async t => { - const wrong_origin_url = 'https://some.other.origin/sub-app'; - let subapp = {}; - let install_options = {}; - install_options["install_url"] = wrong_origin_url; - subapp[wrong_origin_url] = install_options; - - await test_driver.bless("installing a subapp", async function () { - await promise_rejects_dom(t, 'URLMismatchError', navigator.subApps.add(subapp)); - }); -}, 'Wrong origin URL argument.'); - -promise_test(async t => { - const same_origin_url = document.location.origin + '/sub-app'; - - let add_call_params = {}; - let install_options = {}; - install_options["install_url"] = same_origin_url; - add_call_params[same_origin_url] = install_options; - - let mocked_response = [ - { unhashedAppId: same_origin_url, resultCode: AddCallResultCode.EXPECTED_APP_ID_CHECK_FAILED } - ] - let expected_results = {}; - expected_results[same_origin_url] = "expected-app-id-check-failed"; - - await test_driver.bless("installing a subapp", async function () { - await subapps_add_expect_reject_with_result(t, add_call_params, mocked_response, expected_results); - }); -}, 'Service failed to add single sub-app.'); - promise_test(async t => { const same_origin_url = document.location.origin + '/sub-app'; @@ -104,25 +61,35 @@ promise_test(async t => { }, 'Too many subapps at once.'); promise_test(async t => { - let add_call_params = {}; + const full_url = document.location.origin + '/sub-app'; - const url_1 = document.location.origin + '/sub-app-1'; - let install_options_1 = {}; - install_options_1["install_url"] = url_1; - add_call_params[url_1] = install_options_1; + let add_call_params = { + [full_url]: {"install_url": full_url}, + }; - const url_2 = document.location.origin + '/sub-app-2'; - let install_options_2 = {}; - install_options_2["install_url"] = url_2; - add_call_params[url_2] = install_options_2; + await test_driver.bless("installing subapps", async function () { + await promise_rejects_dom(t, 'NotSupportedError', navigator.subApps.add(add_call_params)); + }); +}, 'API supports only root-relative paths.'); + +promise_test(async t => { + const url_1 = '/sub-app-1'; + const url_2 = '/sub-app-2'; + + let add_call_params = { + [url_1]: {"install_url": url_1}, + [url_2]: {"install_url": url_2}, + }; let mocked_response = [ - { unhashedAppId: url_1, resultCode: AddCallResultCode.EXPECTED_APP_ID_CHECK_FAILED }, - { unhashedAppId: url_2, resultCode: AddCallResultCode.INSTALL_URL_INVALID } - ] - let expected_results = {}; - expected_results[url_1] = "expected-app-id-check-failed"; - expected_results[url_2] = "install-url-invalid"; + { unhashedAppIdPath: url_1, resultCode: AddCallResultCode.EXPECTED_APP_ID_CHECK_FAILED }, + { unhashedAppIdPath: url_2, resultCode: AddCallResultCode.INSTALL_URL_INVALID } + ]; + + let expected_results = { + [url_1]: "expected-app-id-check-failed", + [url_2]: "install-url-invalid", + }; await test_driver.bless("installing a subapp", async function () { await subapps_add_expect_reject_with_result(t, add_call_params, mocked_response, expected_results); @@ -130,28 +97,27 @@ promise_test(async t => { }, 'Service failed to add two sub-apps.'); promise_test(async t => { - let add_call_params = {}; + const url_1 = '/sub-app-1'; + const url_2 = '/sub-app-2'; - const url_1 = document.location.origin + '/sub-app-1'; - let install_options_1 = {}; - install_options_1["install_url"] = url_1; - add_call_params[url_1] = install_options_1; - - const url_2 = document.location.origin + '/sub-app-2'; - let install_options_2 = {}; - install_options_2["install_url"] = url_2; - add_call_params[url_2] = install_options_2; + let add_call_params = { + [url_1]: {"install_url": url_1}, + [url_2]: {"install_url": url_2}, + }; let mocked_response = [ - { unhashedAppId: url_1, resultCode: AddCallResultCode.SUCCESS_NEW_INSTALL }, - { unhashedAppId: url_2, resultCode: AddCallResultCode.EXPECTED_APP_ID_CHECK_FAILED } - ] - let expected_results = {}; - expected_results[url_1] = "success-new-install"; - expected_results[url_2] = "expected-app-id-check-failed"; + { unhashedAppIdPath: url_1, resultCode: AddCallResultCode.SUCCESS_NEW_INSTALL }, + { unhashedAppIdPath: url_2, resultCode: AddCallResultCode.EXPECTED_APP_ID_CHECK_FAILED } + ]; + + let expected_results = { + [url_1]: "success-new-install", + [url_2]: "expected-app-id-check-failed", + }; await test_driver.bless("installing a subapp", async function () { await subapps_add_expect_reject_with_result(t, add_call_params, mocked_response, expected_results); }); }, 'Service added one sub-app failed to add another sub-app.'); + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/subapps/add-success.tentative.https.html b/tests/wpt/web-platform-tests/subapps/add-success.tentative.https.html index b2751adcb8f..fee7c6605c6 100644 --- a/tests/wpt/web-platform-tests/subapps/add-success.tentative.https.html +++ b/tests/wpt/web-platform-tests/subapps/add-success.tentative.https.html @@ -9,18 +9,19 @@ diff --git a/tests/wpt/web-platform-tests/webcodecs/videoFrame-serialization.crossAgentCluster.https.html b/tests/wpt/web-platform-tests/webcodecs/videoFrame-serialization.crossAgentCluster.https.html index 5822cb8415e..e07f61072dd 100644 --- a/tests/wpt/web-platform-tests/webcodecs/videoFrame-serialization.crossAgentCluster.https.html +++ b/tests/wpt/web-platform-tests/webcodecs/videoFrame-serialization.crossAgentCluster.https.html @@ -4,16 +4,27 @@ + @@ -29,13 +40,13 @@ const CROSSORIGIN_HELPER = CROSSORIGIN_BASE + HELPER; promise_test(async () => { const target = (await appendIframe(SAMEORIGIN_HELPER)).contentWindow; let frame = createVideoFrame(10); - assert_true(await canSendVideoFrame(target, frame)); + assert_true(await canSerializeVideoFrame(target, frame)); }, 'Verify frames can be passed within the same agent clusters'); promise_test(async () => { const target = (await appendIframe(CROSSORIGIN_HELPER)).contentWindow; let frame = createVideoFrame(20); - assert_false(await canSendVideoFrame(target, frame)); + assert_false(await canSerializeVideoFrame(target, frame)); }, 'Verify frames cannot be passed accross the different agent clusters'); promise_test(async () => { @@ -44,7 +55,7 @@ promise_test(async () => { }); const worker = new Worker(window.URL.createObjectURL(blob)); let frame = createVideoFrame(30); - worker.postMessage(frame); + worker.postMessage({frame: frame, transfer: false}); const received = await new Promise(resolve => worker.onmessage = e => { resolve(e.data); }); @@ -58,7 +69,7 @@ promise_test(async () => { }); const worker = new SharedWorker(window.URL.createObjectURL(blob)); let frame = createVideoFrame(40); - worker.port.postMessage(frame); + worker.port.postMessage({frame: frame, transfer: false}); const received = await new Promise(resolve => worker.port.onmessage = e => { resolve(e.data); }); @@ -79,6 +90,60 @@ promise_test(async () => { assert_equals(received, 'NOT_RECEIVED'); }, 'Verify frames cannot be passed to serviceworker'); +promise_test(async () => { + const target = (await appendIframe(SAMEORIGIN_HELPER)).contentWindow; + let frame = createVideoFrame(60); + assert_true(await canTransferVideoFrame(target, frame)); + assert_true(isFrameClosed(frame)); +}, 'Verify frames can be transferred within the same agent clusters'); + +promise_test(async () => { + const target = (await appendIframe(CROSSORIGIN_HELPER)).contentWindow; + let frame = createVideoFrame(70); + assert_false(await canTransferVideoFrame(target, frame)); +}, 'Verify frames cannot be transferred accross the different agent clusters'); + +promise_test(async () => { + const blob = new Blob([document.querySelector('#workerCode').textContent], { + type: 'text/javascript', + }); + const worker = new Worker(window.URL.createObjectURL(blob)); + let frame = createVideoFrame(80); + worker.postMessage({frame: frame, transfer: true}, [frame]); + const received = await new Promise(resolve => worker.onmessage = e => { + resolve(e.data); + }); + assert_equals(received.toString(), '[object VideoFrame]'); + assert_equals(received.timestamp, 80); +}, 'Verify frames can be transferred back and forth between main and worker'); + +promise_test(async () => { + const blob = new Blob([document.querySelector('#sharedWorkerCode').textContent], { + type: 'text/javascript', + }); + const worker = new SharedWorker(window.URL.createObjectURL(blob)); + let frame = createVideoFrame(90); + worker.port.postMessage({frame: frame, transfer: true}); + const received = await new Promise(resolve => worker.port.onmessage = e => { + resolve(e.data); + }); + assert_equals(received.toString(), '[object VideoFrame]'); + assert_equals(received.timestamp, 90); +}, 'Verify frames can be transferred back and forth between main and sharedworker'); + +promise_test(async () => { + navigator.serviceWorker.register('videoFrame-serialization.crossAgentCluster.serviceworker.js'); + navigator.serviceWorker.ready.then((registration) => { + let frame = createVideoFrame(100); + registration.active.postMessage(frame, [frame]); + registration.active.postMessage({'id': 100}); + }); + const received = await new Promise(resolve => navigator.serviceWorker.onmessage = (e) => { + resolve(e.data); + }); + assert_equals(received, 'NOT_RECEIVED'); +}, 'Verify frames cannot be transferred to serviceworker'); + function appendIframe(src) { const frame = document.createElement('iframe'); document.body.appendChild(frame); @@ -99,8 +164,22 @@ function createVideoFrame(ts) { }); } -function canSendVideoFrame(target, vf) { - target.postMessage(vf, '*'); +function canSerializeVideoFrame(target, vf, transfer) { + return canPostVideoFrame(target, vf, false); +}; + +function canTransferVideoFrame(target, vf, transfer) { + return canPostVideoFrame(target, vf, true); +}; + +function canPostVideoFrame(target, vf, transfer) { + if (transfer) { + target.postMessage(vf, '*', [vf]); + assert_true(isFrameClosed(vf)); + } else { + target.postMessage(vf, '*'); + } + // vf.timestamp doesn't change after vf is closed, so it's fine to use it. target.postMessage({'id': vf.timestamp}, '*'); return new Promise(resolve => window.onmessage = e => { resolve(e.data == 'RECEIVED'); diff --git a/tests/wpt/web-platform-tests/xhr/xhr-authorization-redirect.any.js b/tests/wpt/web-platform-tests/xhr/xhr-authorization-redirect.any.js index e9a4db44f72..beed7c31d70 100644 --- a/tests/wpt/web-platform-tests/xhr/xhr-authorization-redirect.any.js +++ b/tests/wpt/web-platform-tests/xhr/xhr-authorization-redirect.any.js @@ -1,4 +1,4 @@ -// META: global=window,worker +// META: global=window,sharedworker,dedicatedworker // META: script=/common/get-host-info.sub.js const authorizationValue = "Basic " + btoa("user:pass");