diff options
author | WPT Sync Bot <josh+wptsync@joshmatthews.net> | 2023-02-02 01:51:40 +0000 |
---|---|---|
committer | WPT Sync Bot <josh+wptsync@joshmatthews.net> | 2023-02-02 01:55:40 +0000 |
commit | ec63c4303029541d3bc776798275b33b9ee4c97e (patch) | |
tree | d534c5fad0f3ef20a2e9ee91459f1dbd1398d0f3 | |
parent | 69b272b4e130e9c488d2e4619027a5e2d4a4bd5d (diff) | |
download | servo-ec63c4303029541d3bc776798275b33b9ee4c97e.tar.gz servo-ec63c4303029541d3bc776798275b33b9ee4c97e.zip |
Update web-platform-tests to revision b'd1192ca239e944dc6cdbcd079e1c16227e08e30c'
233 files changed, 5070 insertions, 1257 deletions
diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index b0304a0937e..670ce9fadd7 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -3535,6 +3535,13 @@ {} ] ], + "locked-display-transform-crash.html": [ + "0d8b69b079cde8098d17abecdb38e7c32d7ffcb7", + [ + null, + {} + ] + ], "preserve3d-containing-block-inline-001.html": [ "3be0af34cfa60f9d90a019a4ef7bb4a1bb536d2e", [ @@ -18780,7 +18787,7 @@ ] ], "local_FileSystemFileHandle-create-sync-access-handle-manual.https.tentative.html": [ - "4641b13a45bd42d64e96a27e92cc7bdc57325965", + "0a67f5b26d2b4280f6cf8253d8367fa7e0defef8", [ null, {} @@ -127136,7 +127143,7 @@ }, "css-anchor-position": { "anchor-position-top-layer-001.html": [ - "c96f6eef558f3c2aa1e7fb4dd084575ac5a036b4", + "ffa1c1cbd1eabdf3267bef46a4c42ac63244566c", [ null, [ @@ -127149,7 +127156,7 @@ ] ], "anchor-position-top-layer-002.html": [ - "e626e6b93566c730ccf620b4e7724ee6f06b1dd5", + "849558f0f8c9e693164d73845c679720825fb8ed", [ null, [ @@ -127162,7 +127169,7 @@ ] ], "anchor-position-top-layer-003.html": [ - "39f3c362c7ba11616c3afca91407c66b6fba4b09", + "5012b52f5f94537458fdd8afd3944b9fae5eaa8e", [ null, [ @@ -127175,7 +127182,7 @@ ] ], "anchor-position-top-layer-004.html": [ - "8e189e0e7b709853f3545db35b750ec286de61e3", + "84e9296a1094bd7158da910f3045254d1589c697", [ null, [ @@ -127188,7 +127195,7 @@ ] ], "anchor-position-top-layer-005.html": [ - "d9e4fa86e10dcc9812366a949c14738962b6c9dc", + "6adf8961a4bdcfc8a593831260fb99fe96cc776f", [ null, [ @@ -127201,7 +127208,7 @@ ] ], "anchor-position-top-layer-006.html": [ - "5f5cd67a1d709b7e958cb5d199f42e2011cabe87", + "d2a39eae6d66ac8c60d1cd1ff58da9917f94a5ee", [ null, [ @@ -144448,6 +144455,45 @@ {} ] ], + "repeated-section-in-clipped-overflow-001.tentative.html": [ + "96cd60286d9aeb37cc607671887b23d9c9815a81", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square.xht", + "==" + ] + ], + {} + ] + ], + "repeated-section-in-clipped-overflow-002.tentative.html": [ + "b55d8a38906e6e431e57fff6aa2abdfd06d563f0", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square.xht", + "==" + ] + ], + {} + ] + ], + "repeated-section-in-clipped-overflow-003.tentative.html": [ + "794a596fdc638e3b9f36e1fa3b5704fdb70ba6fa", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square.xht", + "==" + ] + ], + {} + ] + ], "tall-monolithic-after-repeated-header.tentative.html": [ "8ded5f5f17e38c1e2b56b550fea1d871519a5481", [ @@ -156156,7 +156202,7 @@ ] ], "content-visibility-with-top-layer-003.html": [ - "b8685954ff83565f06ad4a359c3196b6e126abe1", + "7fb1f20b7ecd38b3fbc5df22dacc55a73227a49e", [ null, [ @@ -275649,7 +275695,7 @@ ] ], "dialog-in-top-layer-during-transition-new.html": [ - "e84167a24892cbaa33b7190843071b7be9563e3b", + "0473209fa9df7867b55b986beeab466b30cd1526", [ null, [ @@ -275662,7 +275708,7 @@ ] ], "dialog-in-top-layer-during-transition-old.html": [ - "672295cd3bd7251ffbc7bbf13cf7ea6d4e423155", + "3634f65d8c99ae81a3d1bba9f1b6dc16ef400071", [ null, [ @@ -283745,7 +283791,7 @@ ] ], "ch-units-vrl-006.html": [ - "cbe1dee6847fb7c4899d0878ac4c52f217f26e1b", + "f3297175741be972d9f134f1a87cd5014b1fad85", [ null, [ @@ -306722,6 +306768,32 @@ ] }, "the-selectmenu-element": { + "selectmenu-marker-part.tentative.html": [ + "b6e94c947a42730b99c33d6cf2b3b5cf77b601ae", + [ + null, + [ + [ + "/html/semantics/forms/the-selectmenu-element/selectmenu-marker-part-ref.html", + "==" + ] + ], + {} + ] + ], + "selectmenu-marker-slot.tentative.html": [ + "fff911005d8710b63357e9a3b9dca7c8e6b5043a", + [ + null, + [ + [ + "/html/semantics/forms/the-selectmenu-element/selectmenu-marker-slot-ref.html", + "==" + ] + ], + {} + ] + ], "selectmenu-option-arbitrary-content-displayed.tentative.html": [ "0fad1a1918f45b8144ec5aa50a7479aa45c0351e", [ @@ -307324,7 +307396,7 @@ ] ], "backdrop-stacking-order.html": [ - "57cc63aab4802e205944aa455e20149c447513eb", + "897f54a53fbaeaa8c3d62da28ed810902193e631", [ null, [ @@ -307350,7 +307422,7 @@ ] ], "dont-share-style-to-top-layer.html": [ - "efbbab010a08c55138b6ec4168b5429522e41ad3", + "e4f4ce50b3e2fffa9cea11ed5a4b82baa2887bd5", [ null, [ @@ -307363,7 +307435,7 @@ ] ], "element-removed-from-top-layer-has-original-position.html": [ - "d78051a9b3eec7a11576673061949ff7a944b1f3", + "0dead331636355deb3dc9f610d8edeb3847e2438", [ null, [ @@ -307376,7 +307448,7 @@ ] ], "fixed-position-child-with-contain-ancestor.html": [ - "98835cb795fb0e4bce8f68f4f1bdbf5bd39614e8", + "5ee64fc1d9e31d76de81e5d4ae8df8139fada7b4", [ null, [ @@ -307389,7 +307461,7 @@ ] ], "fixed-position-child-with-fo-ancestor.html": [ - "fe625f1c9bfb4962970fd1852df5ca3b6e9eb7ca", + "2bc294be2fae16c02bd6d822c16a5726273e104f", [ null, [ @@ -307402,7 +307474,7 @@ ] ], "fixed-position-child-with-transformed-ancestor.html": [ - "58627443dae1941971eb29d8943877419801d783", + "527d508252c15d0f1b46580afc0a0ae8bbe625d8", [ null, [ @@ -307415,7 +307487,7 @@ ] ], "fixed-position-child-with-will-change-ancestor.html": [ - "14f4391e6bfbc2a3e5817edbd197cfcc4013a1af", + "e9db7321cd703d26e90c4a50932892da7d504218", [ null, [ @@ -307441,7 +307513,7 @@ ] ], "modal-dialog-backdrop.html": [ - "a18af0d30ea45ac4369031e8499b0a6c58c19f7d", + "55d7132f8cefa6be3b2a3133e35e9c9c3cbef603", [ null, [ @@ -307467,7 +307539,7 @@ ] ], "modal-dialog-generated-content.html": [ - "86f43e52c2eb095b07de3a7a1fa8b60927bef843", + "96b97f8ec3c490532508bfea1a7d3963ec3c0834", [ null, [ @@ -307558,7 +307630,7 @@ ] ], "top-layer-containing-block.html": [ - "10f6c69fbe188a541c80f32e4d2df96bee45cedb", + "0886c2cd2c2a0cfe6383b6488afa9943e568508f", [ null, [ @@ -307571,7 +307643,7 @@ ] ], "top-layer-display-none.html": [ - "5257823eca00c3ce1fdd18db42561bac3dff488a", + "ba790c1db9a561498737dee83411c525a8a8c38a", [ null, [ @@ -307584,7 +307656,7 @@ ] ], "top-layer-nesting.html": [ - "6397584387fc4b24b0d372bca5060f94c498a340", + "9e0616e952033642489edaf1de7bc7f4b09433bf", [ null, [ @@ -307597,7 +307669,7 @@ ] ], "top-layer-parent-clip.html": [ - "9a621e7594eb2382be5363203fdd910572f72b08", + "6e3c52aa02a50d9e2c4b3f5e4beb74c6ff07a4b0", [ null, [ @@ -307610,7 +307682,7 @@ ] ], "top-layer-parent-filter.html": [ - "020d90a0c8121c4b0c06b954eab32d63d5f64ee5", + "589d5397791ab426136e1cda2a4f53fbc6ff09c5", [ null, [ @@ -307623,7 +307695,7 @@ ] ], "top-layer-parent-mask.html": [ - "daa5ccbbe106dc66e5b688fe55de5b9bc0692259", + "8ba3ed47c27750981fb7a7a56f86fe408b780e38", [ null, [ @@ -307636,7 +307708,7 @@ ] ], "top-layer-parent-opacity.html": [ - "82aa09d6c5729c07fc483d3473db30add9d0de56", + "46c5de2a6dd54a6564abf31f0bdb47e605c8fed0", [ null, [ @@ -307649,7 +307721,7 @@ ] ], "top-layer-parent-overflow-clip.html": [ - "86587254cf06034885141223b61cdf8bded2fdee", + "d80595496929d0352a874a2dfb825098af7ecd91", [ null, [ @@ -307662,7 +307734,7 @@ ] ], "top-layer-parent-overflow-hidden.html": [ - "afcde733d2f64adc649b248204696ba31f520f3f", + "f5389ddc09a234dd2725f30791df1e9406a30304", [ null, [ @@ -307675,7 +307747,7 @@ ] ], "top-layer-parent-overflow-scroll.html": [ - "dd04c2ed47af56c3be7e0ad1c58760df486be23a", + "a230defeeab10dbd84a45677f759a0e33d8634e9", [ null, [ @@ -307688,7 +307760,7 @@ ] ], "top-layer-parent-transform.html": [ - "cf35a713f3369596e8e0c7a7addb6f5d4699b2bb", + "ac6f3cffc3ccc0d52fcfc31b5d3dd8f1640d19e7", [ null, [ @@ -307727,7 +307799,7 @@ ] ], "top-layer-stacking-correct-order-remove-readd.html": [ - "3b3e33689255731475b4ba541f6853ff4d62d9c3", + "4fdd28820dbb27af2d397d747573e0bd7cbecf35", [ null, [ @@ -307740,7 +307812,7 @@ ] ], "top-layer-stacking-dynamic.html": [ - "8ab7068d306ab9bd377d65f6b0044d6caced49ec", + "ebccdc66cf9f6215919eff7769c14debb68b4a99", [ null, [ @@ -315244,6 +315316,19 @@ {} ] ], + "use-a.svg": [ + "40d4c83f21faccfddb50c683c2a0b0c42a585935", + [ + null, + [ + [ + "/svg/struct/reftests/reference/green-100x100.svg", + "==" + ] + ], + {} + ] + ], "use-adopted-with-external-resource.tentative.svg": [ "830d4555e5ada27aabb6f3cb128340646000fba9", [ @@ -315309,6 +315394,19 @@ {} ] ], + "use-no-tspan.svg": [ + "5368ca343c869b0eb3c1cd42a77178df715141d6", + [ + null, + [ + [ + "/svg/struct/reftests/reference/green-100x100.svg", + "==" + ] + ], + {} + ] + ], "use-same-origin.svg": [ "0aa1ec83afd68b3ea6022d33f6ec6f8103d99661", [ @@ -315348,6 +315446,19 @@ {} ] ], + "use-switch.svg": [ + "6c01c30198024de7a6572d496bb126ccdadb888d", + [ + null, + [ + [ + "/svg/struct/reftests/reference/green-100x100.svg", + "==" + ] + ], + {} + ] + ], "use-symbol-dimensions-override-001.svg": [ "1f8f71414783ec6f46d74d700cd63bdc225607a9", [ @@ -366468,7 +366579,7 @@ [] ], "content-with-top-layer-ref.html": [ - "1a3cad327839c303dc2c9da144c572fe3f15965b", + "eadc5f65d1e8bd875e271b0fd27540dac8d2ae5f", [] ], "inline-container-with-child-ref.html": [ @@ -401488,7 +401599,7 @@ }, "scrolling": { "scroll_support.js": [ - "de23b6f84ff668c1542bd5210962e8535eae526d", + "53482879ea4cd02aa0f81aac8bf5c68b531f4eb1", [] ] } @@ -405267,7 +405378,7 @@ ] }, "local-fs-test-helpers.js": [ - "54961ae54bcb25ce95a461d7ccecfdd1414a6475", + "4bb9793085ad8395e603a1b301b72648e841ded5", [] ], "opaque-origin-sandbox.html": [ @@ -406549,7 +406660,7 @@ [] ], "sandboxed-fs-test-helpers.js": [ - "9c93212f49cb3ab21ebc23585b1c22f804e876bf", + "400b2c507b7fa3f41e06fb6bf1efc30098e69d25", [] ], "sync-access-handle-test.js": [ @@ -406635,7 +406746,7 @@ [] ], "FileSystemFileHandle-create-sync-access-handle.js": [ - "302d4a5a7afafcd71e1deeea4f973cb663f1e436", + "b9eafaf0d8ce7b13d4208c35afab12a57af7e222", [] ], "FileSystemFileHandle-getFile.js": [ @@ -406938,7 +407049,7 @@ [] ], "rc-helper.js": [ - "ef0da2da1ed8f9684637d48991b2ea9abfb986c9", + "53bcdccf7c65b0b33cd7150c20e461325a8b6a10", [] ], "service-worker.js": [ @@ -410336,11 +410447,11 @@ [] ], "gentestutils.py": [ - "59fa9e73e51bc19c5c1bcc827684e078ee132058", + "ecdc1067498247c6301a462fe6092b22e0e3962a", [] ], "gentestutilsunion.py": [ - "3afb54de477e6fbfff4bf5790376153128b79741", + "2a9c53e99ac420611526664ebcbeea66065a0940", [] ], "name2dir-canvas.yaml": [ @@ -410356,17 +410467,17 @@ [] ], "templates-new.yaml": [ - "7742db88978dab0406b92db5f2ec3963bd602635", + "d8af47d2590aab1055ba9c512a7fc3fde8e07538", [] ], "templates.yaml": [ - "f2bc2569f717aa290ff0799f92f7ca4b69fac8a8", + "7e96e0707bc20faeada874a390cde2bdcd2cff42", [] ], "yaml": { "element": { "drawing-text-to-the-canvas.yaml": [ - "880e3fb1a1f396e1ebd472a8d5df46c8d1b45916", + "e0de95560cb122a2a2d6ea9ac47fcbf93ad941e0", [] ], "fill-and-stroke-styles.yaml": [ @@ -410374,7 +410485,7 @@ [] ], "meta.yaml": [ - "b8ffbd5075860d9b3600ed2bb794b5da9fa2de5e", + "ea78fe302cb420fedd65df5b58fe940eeb38c1a6", [] ], "path-objects.yaml": [ @@ -410390,11 +410501,11 @@ [] ], "text-styles.yaml": [ - "344a5a0752ed991c5525812f22a88a2207d699fc", + "407e34621091a6324cbd1ace8510738adaaec967", [] ], "the-canvas-element.yaml": [ - "5c07375dd2ac4a6effb8b2e7eb72bb2feca7123e", + "d6d8cd801b410909fdee32b7e0c9f903fda469de", [] ], "the-canvas-state.yaml": [ @@ -417882,6 +417993,14 @@ ] }, "the-selectmenu-element": { + "selectmenu-marker-part-ref.html": [ + "cec447509eba28a17ca10636744e448ba64c5cb5", + [] + ], + "selectmenu-marker-slot-ref.html": [ + "a35fcd9480067e3121af32cd3b6f895d66b02042", + [] + ], "selectmenu-option-arbitrary-content-displayed-ref.tentative.html": [ "3933b93894b33762bbaa9e0dd722da6c3d6c7499", [] @@ -417894,6 +418013,14 @@ "back.html": [ "0d13a0f3b7c9c759a9a29c0d70a535b398ff108e", [] + ], + "fake-selectmenu.js": [ + "cf3864a29409699fd338ec722e3b05f3cd533dac", + [] + ], + "selectmenu_button_icon.svg": [ + "1a6c0193e819a1480f0a7f85f1fc65fdbd33742d", + [] ] } }, @@ -418087,7 +418214,7 @@ [] ], "dont-share-style-to-top-layer-ref.html": [ - "535ac935607094ee8c90e075e11263d36094a296", + "7e6112b3cee091994f3517271a240d119b704c64", [] ], "element-removed-from-top-layer-has-original-position-ref.html": [ @@ -423422,7 +423549,7 @@ [] ], "popover.tentative.idl": [ - "bf23c7641d94e80567623d2b406cb4f746ddbebd", + "4e8c85f7dacb1447719ab4ed4cfc345c4033f467", [] ], "portals.idl": [ @@ -426771,6 +426898,10 @@ "ecfa0e3c2d9418253ae48d75fec39e662b6f862f", [] ], + "noop-sw.js": [ + "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391", + [] + ], "resources": { "icon.png": [ "ee919cd512d8ae540d77161e7af1797f684fe014", @@ -427117,7 +427248,7 @@ [] ], "include-frames-subframe.html": [ - "b74b1175f8c94a70437c860a5548f9da15dd7100", + "73df04b046e16e986466708cc05d11249810f620", [] ], "json_resource.json": [ @@ -430455,7 +430586,7 @@ [] ], "mock-direct-sockets.js": [ - "caab177b9869d88aa00bafc55ca5f36725449bd2", + "0752850c8a383353c39320da4dc0d3b3df257129", [] ], "mock-facedetection.js": [ @@ -430471,7 +430602,7 @@ [] ], "mock-imagecapture.js": [ - "5753b7ec502389bcf248ed91ecb4c75d7a975ed3", + "8424e1e36c8c6cf5913de38596d8f1e274bf08f6", [] ], "mock-managed-config.js": [ @@ -448388,7 +448519,7 @@ [] ], "utils.js": [ - "aea658d3f2c9b4643bdaeac03b3983aa2acc06f1", + "bbb53e70e0dda0e829cd97bb128008756c161188", [] ], "video-decoder.crossOriginIsolated.https.any.js.headers": [ @@ -449480,7 +449611,7 @@ [] ], "batch_normalization.json": [ - "429992c67c6765b31d2be68f01624f498cfb77b9", + "19f414bbfea80800c4caad2ceb7c5a83220b7a6e", [] ], "ceil.json": [ @@ -449496,7 +449627,11 @@ [] ], "conv2d.json": [ - "a4b97d3c039d0b34b335dfafe2a98cf36089b4fc", + "ca7dc74aa7968f1d03788fe3a9fd7e7931ecb66d", + [] + ], + "conv_transpose2d.json": [ + "311a7d9c78aaca3e1f9be2fdda045bee897ba12e", [] ], "cos.json": [ @@ -449580,7 +449715,7 @@ [] ], "reshape.json": [ - "f04b7b1dbe6500c78527f487034564cdb825539f", + "7d48ed3a18f51c175d11b523f43e0652c3a9c17d", [] ], "sigmoid.json": [ @@ -449625,7 +449760,7 @@ ] }, "utils.js": [ - "4c7b6bc6ef148e8d4afa3e264c42ca694e6a48a2", + "f727d3ffe36fbcc74096d4cbe66358be2402c562", [] ] } @@ -455257,7 +455392,7 @@ ] ], "back-forward-cache-open-connection.window.js": [ - "397eadab8763fe884f877da63b75a06c8dcc023a", + "084e7f73b9ed81fabd73d2f1fd938499a9e6058f", [ "IndexedDB/back-forward-cache-open-connection.window.html", { @@ -455291,7 +455426,7 @@ ] ], "back-forward-cache-open-transaction.window.js": [ - "e9511d3806a7415ebcf945bbbbf60b4433deef31", + "bee3d017afeedb7fcaab5ce3af3025f3c59769c7", [ "IndexedDB/back-forward-cache-open-transaction.window.html", { @@ -489189,6 +489324,13 @@ null, {} ] + ], + "line-height.html": [ + "63097ac8081785c9fe14b3dcfcf7baccf5b5b63e", + [ + null, + {} + ] ] }, "style-animation-parsing.html": [ @@ -491082,7 +491224,7 @@ ] ], "color-invalid-color-function.html": [ - "51f393747c19a257045b2d9f7537ef6c8ff85b11", + "82c6fe335809b2ae71de034e5d609f21fc439241", [ null, {} @@ -491826,7 +491968,7 @@ ] ], "custom-property-style-queries.html": [ - "7a11d45c3133f72c9bcff1e724180152a637cfed", + "064e73bb25c9fd26b0b50ea9dac75ebd770b7211", [ null, {} @@ -501850,7 +501992,7 @@ }, "css-nesting": { "cssom.html": [ - "987c31103677ca662b8d2e2c2d14a542a155103a", + "b7948f81bc147997d02929b5447765d193920032", [ null, {} @@ -512503,7 +512645,7 @@ }, "declared": { "append.tentative.html": [ - "2ff92b22c21d6c7547ebce63de93543f9e4acdd3", + "b642c0823a25146fc9c21096f4359290e50f3983", [ null, {} @@ -523986,7 +524128,7 @@ ] ], "scrollend-event-fired-after-sequence-of-scrolls.tentative.html": [ - "77bf029ced58c5591c46364af0cd5ddeab054da7", + "8c785c2a9756a99466c1f5126f91d22d58cce53e", [ null, { @@ -524004,7 +524146,7 @@ ] ], "scrollend-event-fired-for-mandatory-snap-point-after-load.html": [ - "a51069bc088fa4c8e3d1645e59a00545e95e64ec", + "f3791134204497d7c3fdc73da19a55f5cbc3a114", [ null, { @@ -524069,7 +524211,7 @@ ] ], "scrollend-event-for-user-scroll.html": [ - "d51472fcb5127bfb7a51ef9c12a575be0b365afd", + "6a699b6f087c896f4d0ae41e82aad7f5ff412b40", [ null, { @@ -526949,6 +527091,54 @@ } ] ], + "delete-in-last-definition-list-item-when-parent-list-is-editing-host.html": [ + "e068f9bcd22a654a4eeed4c59c920c9cc353c70e", + [ + "editing/other/delete-in-last-definition-list-item-when-parent-list-is-editing-host.html?action=Backspace", + { + "testdriver": true, + "timeout": "long" + } + ], + [ + "editing/other/delete-in-last-definition-list-item-when-parent-list-is-editing-host.html?action=Delete", + { + "testdriver": true, + "timeout": "long" + } + ] + ], + "delete-in-last-list-item-when-parent-list-is-editing-host.html": [ + "7d1594393538b201e20b90cd79c5091fc110da07", + [ + "editing/other/delete-in-last-list-item-when-parent-list-is-editing-host.html?list=ol&action=Backspace", + { + "testdriver": true, + "timeout": "long" + } + ], + [ + "editing/other/delete-in-last-list-item-when-parent-list-is-editing-host.html?list=ol&action=Delete", + { + "testdriver": true, + "timeout": "long" + } + ], + [ + "editing/other/delete-in-last-list-item-when-parent-list-is-editing-host.html?list=ul&action=Backspace", + { + "testdriver": true, + "timeout": "long" + } + ], + [ + "editing/other/delete-in-last-list-item-when-parent-list-is-editing-host.html?list=ul&action=Delete", + { + "testdriver": true, + "timeout": "long" + } + ] + ], "delete.html": [ "b9bd1437e3721f1353a9df6bde155f2f2b8ae95a", [ @@ -529541,7 +529731,7 @@ }, "run": { "backcolor.html": [ - "5911de309d02193573f58b6257f3fb6dc28f58c7", + "5a4c35c34e59ab78e1145c848a9523fd7f34b1d2", [ null, { @@ -529550,7 +529740,7 @@ ] ], "bold.html": [ - "390d6810d857addb514c510086807223ac01e758", + "30981f665897e8adb2b21a283322d1ed8b0ae449", [ "editing/run/bold.html?1-1000", { @@ -529605,7 +529795,7 @@ ] ], "createlink.html": [ - "b67357e684a4894abf8d050419d622db658d601b", + "21c190703aed27e15eff16283b0c86d4d59ab989", [ null, { @@ -529614,7 +529804,7 @@ ] ], "delete-list-items-in-table-cell.html": [ - "b765bc4b9776dc382b18a618ba003c5e5d31c464", + "88f4458987244cf8714ed425c361023070238e86", [ null, { @@ -529623,7 +529813,7 @@ ] ], "delete.html": [ - "2d11f6af26b82fbbb0a0e92d26713396c74ef502", + "6a01ffd0441c88d7b89ef1f78b562a6fad9f7a20", [ "editing/run/delete.html?1-1000", { @@ -529674,7 +529864,7 @@ ] ], "fontname.html": [ - "53800c540c4c100aac5758a8a1d48b162b1a1d67", + "b9bb3b19f8591cb7499dd1bb8d48509daecb1412", [ "editing/run/fontname.html?1-1000", { @@ -529695,7 +529885,7 @@ ] ], "fontsize.html": [ - "66ae99ebc100eb21219ea7d26fa5ef77ac48bbde", + "830a347346e93e212db5835006f5aa8378a0a93e", [ "editing/run/fontsize.html?1-1000", { @@ -529716,7 +529906,7 @@ ] ], "forecolor.html": [ - "8594e061c1452d90b314c4d6d4e4e5836f5998be", + "2ab5736b42c7761fe11ceb6d3366ab2614949e9c", [ "editing/run/forecolor.html?1-1000", { @@ -529737,7 +529927,7 @@ ] ], "formatblock.html": [ - "5c97c08e7327cb8b8c00c820b21741c444f19a28", + "f15f2c03dacd22e4aa999db055736bdab728fa06", [ "editing/run/formatblock.html?1-1000", { @@ -529770,7 +529960,7 @@ ] ], "forwarddelete.html": [ - "e17190053ac2df075fbcfe37e824b732793907e6", + "570da5a183c178d75868357e32181f35925172c5", [ "editing/run/forwarddelete.html?1-1000", { @@ -529815,7 +530005,7 @@ ] ], "hilitecolor.html": [ - "cd9e5528e5613e788d36e926ac41b913ee52b2c6", + "1d123b1c10fd3c66748501072cbdd21299b58110", [ null, { @@ -529824,7 +530014,7 @@ ] ], "indent.html": [ - "13e98f5ea647df90245e52e83a32299b1e71beaf", + "a4f2de86c1ae1f9c7478e44f22b31046cb27834d", [ null, { @@ -529833,7 +530023,7 @@ ] ], "insert-list-items-in-table-cell.html": [ - "8d08f8c3eb9c434b91d64281e418aedd9877af88", + "2d176b567bfc528112461ff25ac52f5df7ed0e68", [ null, { @@ -529842,7 +530032,7 @@ ] ], "inserthorizontalrule.html": [ - "6e3e5490a60324dc060bb81e3be2c1a8217e7acf", + "7c570fbcfde74ff2c612404642af6a21986e97d0", [ null, { @@ -529851,7 +530041,7 @@ ] ], "inserthtml.html": [ - "f83102e6a9b37ace62b44fd774d13219ad9d1021", + "f27df67b72bf19ce9e460f09c2f7354ed2d28a75", [ null, { @@ -529860,7 +530050,7 @@ ] ], "insertimage.html": [ - "7a1f7b922665cd357418ad2ff343d7559155b7fd", + "9987b98b7de50e175b49e64cbf715708c2bbdf80", [ null, { @@ -529869,7 +530059,7 @@ ] ], "insertlinebreak.html": [ - "ddab665084b141561aa319a17f0a8f0aa5f228e4", + "4ca86b8b5f86e5e6df3795b2fbe5841a3c94b430", [ null, { @@ -529878,7 +530068,7 @@ ] ], "insertorderedlist.html": [ - "68772355c24d2b8388e9379cf8c0b587b216e233", + "06662df7610de97934f8037cfee7eca899dd7606", [ null, { @@ -529887,7 +530077,7 @@ ] ], "insertparagraph.html": [ - "173c5aea40b460594ab0206c1c4400a26f3c219b", + "56b5335ea7eb53715b0840286681c2687bb0dd76", [ "editing/run/insertparagraph.html?1-1000", { @@ -529932,7 +530122,7 @@ ] ], "inserttext.html": [ - "a01293fcae034da36beebd4a64f7c29152f1597a", + "d0e9d7d625c520f1e1a5a9f844e3a7a6c8ad2ec1", [ "editing/run/inserttext.html?1-1000", { @@ -529953,7 +530143,7 @@ ] ], "insertunorderedlist.html": [ - "b1f636b10959971843ee9c106f7c2ee71f8f1a42", + "8df99f8dccdc75d61ec5bad8490a5bd60d00deaa", [ null, { @@ -529962,7 +530152,7 @@ ] ], "italic.html": [ - "6185d553d0218e150795027ca3cabd598c07b7d9", + "d31ecf1c162bc8914752c72c40ffbc2124f6f19a", [ "editing/run/italic.html?1-1000", { @@ -529983,7 +530173,7 @@ ] ], "justifycenter.html": [ - "4902a302cca15b24aacdba3473836739186bc0fb", + "63f2d56255c69b53d6da022cbeb462f3ca311c1f", [ "editing/run/justifycenter.html?1-1000", { @@ -530028,7 +530218,7 @@ ] ], "justifyfull.html": [ - "c11befaf8939e88877a3011e7c190679a1c97984", + "202beea885574f4a29c21ad84891b859b8b155f2", [ "editing/run/justifyfull.html?1-1000", { @@ -530061,7 +530251,7 @@ ] ], "justifyleft.html": [ - "f6b2818538937f2c51b2d55dd4e4013872fb6d13", + "31772248ca86fa1e70de9d8f1f8d6b7a529c49dd", [ "editing/run/justifyleft.html?1-1000", { @@ -530082,7 +530272,7 @@ ] ], "justifyright.html": [ - "edd30b7f5f034b9046ab981ef34ffbba7f61fd50", + "a8b5bcf5ea9ad9d9872f4dd9c64b14f4386ea0fe", [ "editing/run/justifyright.html?1-1000", { @@ -530115,7 +530305,7 @@ ] ], "misc.html": [ - "5bf52682292c96c50d4c45d4ea4c138a625c99d4", + "2bb754277a576133a37cbddc727616c195256cdd", [ null, { @@ -530124,7 +530314,7 @@ ] ], "multitest.html": [ - "813b9edc034addf8f9c2270c567b74dc45263b37", + "4213488d77a477f17b19d923aff4a374e70d76e2", [ "editing/run/multitest.html?1-1000", { @@ -530187,7 +530377,7 @@ ] ], "outdent.html": [ - "f1f9fb491aa940b65ce7010370c2b4d3258a9cf4", + "04240d9f0ff38ded4b55458f47a4ede3405c2580", [ "editing/run/outdent.html?1-1000", { @@ -530208,7 +530398,7 @@ ] ], "removeformat.html": [ - "0c38ff915fb0e85f8edb2de3581b86ec53c483eb", + "3cc695278ec04698a847b87969d79f226ca7484d", [ null, { @@ -530217,7 +530407,7 @@ ] ], "strikethrough.html": [ - "cb06c10d0c26d51f40ff2edcd64d897f618ca890", + "d731d3eb8982c9346afb856d7b04bb9273300356", [ "editing/run/strikethrough.html?1-1000", { @@ -530238,7 +530428,7 @@ ] ], "subscript.html": [ - "e0071d7a08043da296cbf2c0b1061fc00de544e0", + "24fb79932f28891dec1e7f9705ade6127c4bf507", [ null, { @@ -530247,7 +530437,7 @@ ] ], "superscript.html": [ - "0c3519b288e4ce7524fdce0d432dbf495cbb837b", + "de28a9c5365968f46627f870ced67a5c3f521e36", [ null, { @@ -530256,7 +530446,7 @@ ] ], "underline.html": [ - "f53add984bde3e3c9f1846bf656d49627d6220f8", + "880b3e20323f48e0d7e9c7d00710ad8733ef5449", [ "editing/run/underline.html?1-1000", { @@ -530293,7 +530483,7 @@ ] ], "unlink.html": [ - "5a623b4a09faf0e84a5c0b9c914c525bf60329c8", + "331792f9240b1eafd049a56abcb13f2d5fd14886", [ null, { @@ -557938,7 +558128,7 @@ ] ], "FileSystemFileHandle-create-sync-access-handle.https.tentative.window.js": [ - "aa4d91d15da1cb0cebd4e47ea7300ac6206ced30", + "6e20b57cb7b4bfb7556284d983752a2cc55eaf52", [ "fs/FileSystemFileHandle-create-sync-access-handle.https.tentative.window.html", { @@ -572756,7 +572946,7 @@ ] ], "2d.text.font.parse.size.percentage.html": [ - "92bac8d8cae99e7f87b87fce061cb1367da1bf49", + "18476b3b7adb795b27fa87bcdd65b2809b1144e8", [ null, {} @@ -598450,7 +598640,7 @@ ] ], "image-base-url.html": [ - "f8201c4948be8df1132c602afb134b71ebd75768", + "932cd92b4151fe61d407e693a52e17dcd0363307", [ null, {} @@ -600502,7 +600692,7 @@ ] ], "pattern_attribute.html": [ - "ef01c29727758db5832aae37040e0b1aa9c0fd26", + "546c4b18d7f44875093013a5b36136715a140446", [ null, {} @@ -601481,6 +601671,13 @@ {} ] ], + "child-sequential-focus.html": [ + "1b4dd30230054571e395958820c1c184d8e19659", + [ + null, + {} + ] + ], "closed-dialog-does-not-block-mouse-events.html": [ "9d9856962d117021a9a87bcbd5423be83dd6c1c7", [ @@ -601617,7 +601814,7 @@ ] ], "dialog-focus-shadow.html": [ - "e9ea15516e271198c4c1b293ff659d9396705acd", + "7e5768542559a89f4a45c7a51072c86fd0a9ebc5", [ null, {} @@ -601638,7 +601835,7 @@ ] ], "dialog-focusing-steps-prevent-autofocus.html": [ - "2e8563f761dd5538185c988dc63008e2ecf25c0c", + "4d1e792c1cc9cd1fb69ac886a98b6aa6989404c6", [ null, {} @@ -601698,7 +601895,7 @@ ] ], "dialog-showModal.html": [ - "c511631f9fbb71d8d1ad2c12377833928bae95b6", + "5edff18614225d07ca737511c23f04a2ff389583", [ null, {} @@ -601737,7 +601934,7 @@ ] ], "inert-label-focus.html": [ - "05f4069d78f57e5215c2eae8576e0d2c50cb1223", + "61e3ddeaf23e6911c89975a9dc12ab952c3bf403", [ null, { @@ -601755,7 +601952,7 @@ ] ], "inert-node-is-unfocusable.html": [ - "56f31f35924974f31b3cae9825846ec01e1a0170", + "74379f50e22c70af96bac2ed84de59c6cda59a02", [ null, {} @@ -601856,7 +602053,7 @@ ] ], "show-modal-focusing-steps.html": [ - "164b41459d17605ebcd447f3f879130cbf022d00", + "6a2ad8c4a0a4eb6687405a6f267e5838389db1ef", [ null, {} @@ -602145,7 +602342,7 @@ ] ], "idlharness.tentative.html": [ - "d1a258bb4ad3ac3031a882a2b20d58a483cebcf2", + "1cab891261cfd46ceb42706c2fe7a9229abcbacf", [ null, {} @@ -602231,7 +602428,7 @@ ] ], "popover-events.tentative.html": [ - "b96a0f5a53f489d8cf8c1bb2008cd4985fdf6c31", + "b299424570024c81238ae076fdacbfa2badc83b4", [ null, {} @@ -602360,7 +602557,7 @@ ] ], "toggleevent-interface.tentative.html": [ - "4d437b0c0ad523c8c9837d917f5c3064933de479", + "45709458b00c466805c63d1bc4530d37677718a9", [ null, {} @@ -619424,14 +619621,14 @@ ] ], "MediaStreamTrack-applyConstraints-fast.html": [ - "2bc5999544f7c351e172e13aa45fba818f8e80c5", + "d80ab67321fe5a238efe5e917aba037d2a406981", [ null, {} ] ], "MediaStreamTrack-applyConstraints-getSettings.https.html": [ - "1309d3bded8f83b51189ff8e0d281f4796244838", + "c6401570b8ba3e370be5b8414efb8e8d158c9a4d", [ null, { @@ -619440,7 +619637,7 @@ ] ], "MediaStreamTrack-applyConstraints-reject.https.html": [ - "ac6216ae199f97c3abd8062e3a31a3cc3eb7dec2", + "5050ed27dd8e31a84dba7428d6008a3ab7932e45", [ null, { @@ -623149,6 +623346,27 @@ {} ] ], + "navigate-history-push-not-loaded.html": [ + "c1ecdaeeafdfbee3b3a1f25e826e5aa435bbe7b3", + [ + null, + {} + ] + ], + "navigate-history-push-same-url-cross-document.html": [ + "2d07bdcede21ff2b75f0c2292cf454a86816ebf2", + [ + null, + {} + ] + ], + "navigate-history-push-same-url.html": [ + "339e8c3056bb2e6694750c5a190649d4086b20eb", + [ + null, + {} + ] + ], "navigate-history-state-replace.html": [ "bf0af521da9dd38f3e9650fcf26928c16c8356fe", [ @@ -623500,20 +623718,6 @@ {} ] ], - "navigate-push-not-loaded.html": [ - "611db7e2b13e29b32523c245f3ed65f4cebd7114", - [ - null, - {} - ] - ], - "navigate-push-same-url.html": [ - "216e94eb1d0789a5a65dd0bb3c94224175a8c43d", - [ - null, - {} - ] - ], "navigate-rejection-order-beforeunload-unserializablestate.html": [ "878280a56eb9cf993f9aea9bd00abc745fcd5eff", [ @@ -625204,6 +625408,24 @@ null, {} ] + ], + "shownotification.https.window.js": [ + "5fcfccff756afb330dd2241f563b0a8fc516205e", + [ + "notifications/shownotification.https.window.html", + { + "script_metadata": [ + [ + "script", + "/resources/testdriver.js" + ], + [ + "script", + "/resources/testdriver-vendor.js" + ] + ] + } + ] ] }, "old-tests": { @@ -627109,7 +627331,7 @@ ], "not-restored-reasons": { "performance-navigation-timing-attributes.tentative.window.js": [ - "4d403e12aa65e2fe7489f15b9cb63e33718c3e2b", + "97bf79f0ef95de8194b93cba8c6adf331d9eaa64", [ "performance-timeline/not-restored-reasons/performance-navigation-timing-attributes.tentative.window.html", { @@ -627151,7 +627373,7 @@ ] ], "performance-navigation-timing-bfcache-reasons-stay.tentative.window.js": [ - "a0f11abc837eef2985e9ed7bf6081083f752f573", + "745c167e790067c1df92ecf8bff1cade48fb2f95", [ "performance-timeline/not-restored-reasons/performance-navigation-timing-bfcache-reasons-stay.tentative.window.html", { @@ -627193,7 +627415,7 @@ ] ], "performance-navigation-timing-bfcache.tentative.window.js": [ - "82c4c9bdd85e40730bbdc0ef7749c23e50bbcf6c", + "b5ff4d7cc59b3efdf5376418f7708c73e5de1bbb", [ "performance-timeline/not-restored-reasons/performance-navigation-timing-bfcache.tentative.window.html", { @@ -627231,7 +627453,7 @@ ] ], "performance-navigation-timing-cross-origin-bfcache.tentative.window.js": [ - "d1f29eab6fbad770f98a48bfb6118e570cc605f5", + "64c0a89c82037628879c0b1d5266386e7fa2a387", [ "performance-timeline/not-restored-reasons/performance-navigation-timing-cross-origin-bfcache.tentative.window.html", { @@ -627273,7 +627495,7 @@ ] ], "performance-navigation-timing-not-bfcached.tentative.window.js": [ - "6367f58ce916ac0019a3458e9b042eb4dd73e8ae", + "5e94a93089113d35470f6d038fc35833791723a3", [ "performance-timeline/not-restored-reasons/performance-navigation-timing-not-bfcached.tentative.window.html", { @@ -627357,7 +627579,7 @@ ] ], "performance-navigation-timing-same-origin-bfcache.tentative.window.js": [ - "36ec53364b56c386bc59849cd905a1b24069c95a", + "858d94b26d61f6d5f2e495327eb512644d00cdf5", [ "performance-timeline/not-restored-reasons/performance-navigation-timing-same-origin-bfcache.tentative.window.html", { @@ -627757,63 +627979,63 @@ ], "tentative": { "detached-frame.html": [ - "d5753dbcd7bac9907918d3b1deae91d03014dbf8", + "70019223a648d95d49925aa6f00a4fac4c53d797", [ null, {} ] ], "include-frames-originA-A-A.html": [ - "0cdcd58115f65ee78070fa72edc9e2b2cab6c34c", + "58480c7af1e6494f5b06d65320d8a6eacfc62515", [ null, {} ] ], "include-frames-originA-A.html": [ - "bb4ee9e63abceed35a581004bd6831f269015e55", + "277a2376aefbcf697129bf020964e81dbc09efe3", [ null, {} ] ], "include-frames-originA-AA.html": [ - "e4c742a08a2845d1f5b72c54f0552fb6196e1fcf", + "485e1d2a115c2d21d5403b55db0ab1bcb90b54c7", [ null, {} ] ], "include-frames-originA-AB.html": [ - "cbd27a0380ca34b816f4c073ce7ad7f75ff6cb98", + "7650a61e499d0597e22fa918f0f0a9a0513288b7", [ null, {} ] ], "include-frames-originA-B-A.html": [ - "5e46bc21624acca417a39f12dc93992819857001", + "9b873bdde6e18647b6c5fd7d07bc0f7ac7631bac", [ null, {} ] ], "include-frames-originA-B-B.html": [ - "a1c85150e691ea3d8db419df9bba2f1662469d41", + "b182931e5dceee014d4122a086954628eac9b122", [ null, {} ] ], "include-frames-originA-B.html": [ - "0373c824d908ab991ca21d4ddf4a6caa0092f2de", + "0686c9b1e5876c566897c16bbfff78385319e20d", [ null, {} ] ], "performance-entry-source.html": [ - "5e51ddbbe4493dfdd0de1f9c8f53723d50aae53c", + "471a52ab285882aeb0ba21eca5134e335aa2e5db", [ null, {} @@ -647338,7 +647560,7 @@ ] ], "view-timeline-range-animation.html": [ - "dc3785078a60f45c053f5336ea708ec5a2ba5d19", + "9f66a5eb835462f5a26de73c4af33d66a5491576", [ null, {} @@ -647618,7 +647840,7 @@ ] ], "view-timeline-range.html": [ - "4123bda47089ff8d3e0d87a8bf79b2f13c15b4b2", + "f2a1b3f586d372fca911bc938fc23f6594dde344", [ null, {} @@ -656611,6 +656833,71 @@ ] }, "storage": { + "buckets": { + "buckets_storage_policy.tentative.https.any.js": [ + "4aaa02e4be464a34ff02294ba2f6d5898b5904e2", + [ + "storage/buckets/buckets_storage_policy.tentative.https.any.html", + { + "script_metadata": [ + [ + "title", + "Buckets API: Tests for bucket storage policies." + ], + [ + "global", + "window,worker" + ] + ] + } + ], + [ + "storage/buckets/buckets_storage_policy.tentative.https.any.serviceworker.html", + { + "script_metadata": [ + [ + "title", + "Buckets API: Tests for bucket storage policies." + ], + [ + "global", + "window,worker" + ] + ] + } + ], + [ + "storage/buckets/buckets_storage_policy.tentative.https.any.sharedworker.html", + { + "script_metadata": [ + [ + "title", + "Buckets API: Tests for bucket storage policies." + ], + [ + "global", + "window,worker" + ] + ] + } + ], + [ + "storage/buckets/buckets_storage_policy.tentative.https.any.worker.html", + { + "script_metadata": [ + [ + "title", + "Buckets API: Tests for bucket storage policies." + ], + [ + "global", + "window,worker" + ] + ] + } + ] + ] + }, "estimate-indexeddb.https.any.js": [ "b0c6b944dd6ff83a00b38cac6d6c4e3ea8424979", [ @@ -679648,7 +679935,7 @@ ] ], "reconfiguring-encoder.https.any.js": [ - "7bc7402b0119e4984260a880861f1e854a8756aa", + "bc7e9b74fb917639b581b72096741395df1b9198", [ "webcodecs/reconfiguring-encoder.https.any.html?av1", { @@ -681098,7 +681385,7 @@ ] ], "videoFrame-createImageBitmap.any.js": [ - "2923427b181011c61e67b1aaf1b25d17ad2efe43", + "836971362382f876d7e3b1c26f3124721806264a", [ "webcodecs/videoFrame-createImageBitmap.any.html", { @@ -683352,6 +683639,57 @@ } ] ], + "conv_transpose2d.https.any.js": [ + "8a1f30d5272d44266d562d4db70ba71f1e3c4d52", + [ + "webnn/conv_transpose2d.https.any.html", + { + "script_metadata": [ + [ + "title", + "test WebNN API convTranspose2d operation" + ], + [ + "global", + "window,dedicatedworker" + ], + [ + "script", + "./resources/utils.js" + ], + [ + "timeout", + "long" + ] + ], + "timeout": "long" + } + ], + [ + "webnn/conv_transpose2d.https.any.worker.html", + { + "script_metadata": [ + [ + "title", + "test WebNN API convTranspose2d operation" + ], + [ + "global", + "window,dedicatedworker" + ], + [ + "script", + "./resources/utils.js" + ], + [ + "timeout", + "long" + ] + ], + "timeout": "long" + } + ] + ], "elementwise_binary.https.any.js": [ "06c2404f95489da2c2558639d9b631c8c2124295", [ @@ -684974,7 +685312,7 @@ ] ], "RTCRtpSender-replaceTrack.https.html": [ - "a370b6c059a52479cdb62a52adf1e4ab5a5f6b77", + "bec44c53e467102fe55b86ab450c97c295213c99", [ null, { @@ -685741,7 +686079,7 @@ ] ], "RTCRtpParameters-adaptivePtime.html": [ - "a0cc989c13da0b6533faadfa3ac123e6df898862", + "8a7a8b6ba689c2b671e22d91a371777fde581f3a", [ null, {} @@ -685860,7 +686198,7 @@ ] ], "RTCRtpParameters-encodings.html": [ - "37c1b919b417fa03b2c9566839b529a3c0aae07c", + "1519ee84f736c1a4be4e87834fcf069c7c80ac7b", [ null, {} @@ -685965,7 +686303,7 @@ ] ], "RTCRtpParameters-scalability.html": [ - "d8b1c6e1350601c45b0eee62ebce7ca7ea6e9c08", + "ff28c2b5e95636708568cdc20c5da5fc2db0dcba", [ null, { diff --git a/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-003.html.ini b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-003.html.ini deleted file mode 100644 index 665ec4646cb..00000000000 --- a/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-003.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[hit-test-floats-003.html] - [Miss float below something else] - expected: FAIL diff --git a/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-005.html.ini b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-005.html.ini new file mode 100644 index 00000000000..147f062e548 --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-005.html.ini @@ -0,0 +1,3 @@ +[hit-test-floats-005.html] + [Miss clipped float] + expected: FAIL diff --git a/tests/wpt/metadata/css/CSS2/linebox/inline-negative-margin-001.html.ini b/tests/wpt/metadata/css/CSS2/linebox/inline-negative-margin-001.html.ini index 5e3a96e5999..a057f038339 100644 --- a/tests/wpt/metadata/css/CSS2/linebox/inline-negative-margin-001.html.ini +++ b/tests/wpt/metadata/css/CSS2/linebox/inline-negative-margin-001.html.ini @@ -8,5 +8,8 @@ [[data-expected-height\] 3] expected: FAIL - [[data-expected-height\] 4] + [[data-expected-height\] 1] + expected: FAIL + + [[data-expected-height\] 2] expected: FAIL diff --git a/tests/wpt/metadata/css/CSS2/normal-flow/block-in-inline-hittest-002.html.ini b/tests/wpt/metadata/css/CSS2/normal-flow/block-in-inline-hittest-002.html.ini index 51432362d66..ee34bc91078 100644 --- a/tests/wpt/metadata/css/CSS2/normal-flow/block-in-inline-hittest-002.html.ini +++ b/tests/wpt/metadata/css/CSS2/normal-flow/block-in-inline-hittest-002.html.ini @@ -1,3 +1,6 @@ [block-in-inline-hittest-002.html] [elementsFromPoint] expected: FAIL + + [elementFromPoint] + expected: FAIL diff --git a/tests/wpt/metadata/css/CSS2/normal-flow/block-in-inline-hittest-relpos-zindex.html.ini b/tests/wpt/metadata/css/CSS2/normal-flow/block-in-inline-hittest-relpos-zindex.html.ini index f9e216a8cfc..cdd8b55f192 100644 --- a/tests/wpt/metadata/css/CSS2/normal-flow/block-in-inline-hittest-relpos-zindex.html.ini +++ b/tests/wpt/metadata/css/CSS2/normal-flow/block-in-inline-hittest-relpos-zindex.html.ini @@ -1,6 +1,3 @@ [block-in-inline-hittest-relpos-zindex.html] [position: relative; z-index: -1;] expected: FAIL - - [block-in-inline-hittest-relpos-zindex] - expected: FAIL diff --git a/tests/wpt/metadata/css/css-animations/responsive/line-height.html.ini b/tests/wpt/metadata/css/css-animations/responsive/line-height.html.ini new file mode 100644 index 00000000000..56ece55d951 --- /dev/null +++ b/tests/wpt/metadata/css/css-animations/responsive/line-height.html.ini @@ -0,0 +1,3 @@ +[line-height.html] + [line-height responds to inherited changes] + 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 deleted file mode 100644 index 304b1579ca4..00000000000 --- a/tests/wpt/metadata/css/css-color/animation/opacity-animation-ending-correctly-001.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[opacity-animation-ending-correctly-001.html] - expected: TIMEOUT diff --git a/tests/wpt/metadata/css/css-color/parsing/color-invalid-color-function.html.ini b/tests/wpt/metadata/css/css-color/parsing/color-invalid-color-function.html.ini new file mode 100644 index 00000000000..d23a84f1d48 --- /dev/null +++ b/tests/wpt/metadata/css/css-color/parsing/color-invalid-color-function.html.ini @@ -0,0 +1,2 @@ +[color-invalid-color-function.html] + expected: ERROR 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 1507cf615a4..a2e051e8061 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 @@ -155,9 +155,6 @@ [Matching font-weight: '400' should prefer '400' over '450 460'] expected: FAIL - [Matching font-style: 'italic' should prefer 'normal' over 'oblique 0deg'] - expected: FAIL - [Matching font-style: 'oblique -20deg' should prefer 'oblique 30deg 60deg' over 'oblique 40deg 50deg'] expected: FAIL @@ -319,3 +316,18 @@ [Matching font-style: 'oblique -20deg' should prefer 'oblique 0deg' over 'oblique 30deg 60deg'] 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 15deg 20deg' over 'oblique 30deg 60deg'] + expected: FAIL + + [Matching font-style: 'oblique 10deg' should prefer 'oblique 40deg 50deg' over 'italic'] + expected: FAIL + + [Matching font-style: 'oblique -21deg' should prefer 'oblique -60deg -40deg' over 'oblique -10deg'] + expected: FAIL + + [Matching font-style: 'oblique -21deg' should prefer 'oblique 30deg 60deg' over 'oblique 40deg 50deg'] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-text/white-space/trailing-other-space-separators-break-spaces-005.html.ini b/tests/wpt/metadata/css/css-text/white-space/trailing-other-space-separators-break-spaces-005.html.ini new file mode 100644 index 00000000000..b9463b3ee1e --- /dev/null +++ b/tests/wpt/metadata/css/css-text/white-space/trailing-other-space-separators-break-spaces-005.html.ini @@ -0,0 +1,2 @@ +[trailing-other-space-separators-break-spaces-005.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-text/white-space/trailing-other-space-separators-break-spaces-007.html.ini b/tests/wpt/metadata/css/css-text/white-space/trailing-other-space-separators-break-spaces-007.html.ini new file mode 100644 index 00000000000..98f844212dd --- /dev/null +++ b/tests/wpt/metadata/css/css-text/white-space/trailing-other-space-separators-break-spaces-007.html.ini @@ -0,0 +1,2 @@ +[trailing-other-space-separators-break-spaces-007.html] + expected: FAIL 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 027bd2fcf75..3094ea29f3c 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 @@ -53,152 +53,152 @@ [background-position length(px) / events] expected: FAIL - [color color(rgba) / values] + [padding-bottom length(ex) / values] expected: FAIL - [text-shadow shadow(shadow) / values] + [padding-bottom length(mm) / values] expected: FAIL - [font-size length(pt) / values] + [padding-bottom length(cm) / values] expected: FAIL - [font-size length(pc) / values] + [padding-bottom length(in) / values] expected: FAIL - [font-size length(px) / values] + [padding-left length(pt) / values] expected: FAIL - [font-size length(em) / values] + [padding-left length(pc) / values] expected: FAIL - [font-size length(ex) / values] + [padding-left length(px) / values] expected: FAIL - [font-size length(mm) / values] + [padding-left length(em) / values] expected: FAIL - [font-size length(cm) / values] + [padding-left length(ex) / values] expected: FAIL - [font-size length(in) / values] + [padding-left length(mm) / values] expected: FAIL - [font-size percentage(%) / values] + [padding-left length(cm) / values] expected: FAIL - [font-weight font-weight(keyword) / values] + [padding-left length(in) / values] expected: FAIL - [font-weight font-weight(numeric) / values] + [padding-right length(pt) / values] expected: FAIL - [line-height number(integer) / values] + [padding-right length(pc) / values] expected: FAIL - [line-height number(decimal) / values] + [padding-right length(px) / values] expected: FAIL - [line-height length(pt) / values] + [padding-right length(em) / values] expected: FAIL - [line-height length(pc) / values] + [padding-right length(ex) / values] expected: FAIL - [line-height length(px) / values] + [padding-right length(mm) / values] expected: FAIL - [line-height length(em) / values] + [padding-right length(cm) / values] expected: FAIL - [line-height length(ex) / values] + [padding-right length(in) / values] expected: FAIL - [line-height length(mm) / values] + [padding-top length(pt) / values] expected: FAIL - [line-height length(cm) / values] + [padding-top length(pc) / values] expected: FAIL - [line-height length(in) / values] + [padding-top length(px) / values] expected: FAIL - [line-height percentage(%) / values] + [padding-top length(em) / values] expected: FAIL - [letter-spacing length(pt) / values] + [padding-top length(ex) / values] expected: FAIL - [letter-spacing length(pc) / values] + [padding-top length(mm) / values] expected: FAIL - [letter-spacing length(px) / values] + [padding-top length(cm) / values] expected: FAIL - [letter-spacing length(em) / values] + [padding-top length(in) / values] expected: FAIL - [letter-spacing length(ex) / values] + [margin-bottom length(pt) / values] expected: FAIL - [letter-spacing length(mm) / values] + [margin-bottom length(pc) / values] expected: FAIL - [letter-spacing length(cm) / values] + [margin-bottom length(px) / values] expected: FAIL - [letter-spacing length(in) / values] + [margin-bottom length(em) / values] expected: FAIL - [word-spacing length(pt) / values] + [margin-bottom length(ex) / values] expected: FAIL - [word-spacing length(pc) / values] + [margin-bottom length(mm) / values] expected: FAIL - [word-spacing length(px) / values] + [margin-bottom length(cm) / values] expected: FAIL - [word-spacing length(em) / values] + [margin-bottom length(in) / values] expected: FAIL - [word-spacing length(ex) / values] + [margin-left length(pt) / values] expected: FAIL - [word-spacing length(mm) / values] + [margin-left length(pc) / values] expected: FAIL - [word-spacing length(cm) / values] + [margin-left length(px) / values] expected: FAIL - [word-spacing length(in) / values] + [margin-left length(em) / values] expected: FAIL - [word-spacing percentage(%) / values] + [margin-left length(ex) / values] expected: FAIL - [text-indent length(pt) / values] + [margin-left length(mm) / values] expected: FAIL - [text-indent length(pc) / values] + [margin-left length(cm) / values] expected: FAIL - [text-indent length(px) / values] + [margin-left length(in) / values] expected: FAIL - [text-indent length(em) / values] + [margin-right length(pt) / values] expected: FAIL - [text-indent length(ex) / values] + [margin-right length(pc) / values] expected: FAIL - [text-indent length(mm) / values] + [margin-right length(px) / values] expected: FAIL - [text-indent length(cm) / values] + [margin-right length(em) / values] expected: FAIL - [text-indent length(in) / values] + [margin-right length(ex) / values] expected: FAIL - [text-indent percentage(%) / values] + [margin-right length(mm) / values] expected: FAIL diff --git a/tests/wpt/metadata/css/css-transitions/properties-value-003.html.ini b/tests/wpt/metadata/css/css-transitions/properties-value-003.html.ini index 371e4c602b7..5349706e4ad 100644 --- a/tests/wpt/metadata/css/css-transitions/properties-value-003.html.ini +++ b/tests/wpt/metadata/css/css-transitions/properties-value-003.html.ini @@ -490,3 +490,33 @@ [object-view-box object-view-box(xywh) / events] expected: FAIL + + [border-top-left-radius border-radius(px) / values] + expected: FAIL + + [border-top-left-radius border-radius(px-px) / values] + expected: FAIL + + [border-top-right-radius border-radius(px) / values] + expected: FAIL + + [border-top-right-radius border-radius(px-px) / values] + expected: FAIL + + [border-bottom-left-radius border-radius(px) / values] + expected: FAIL + + [border-bottom-left-radius border-radius(px-px) / values] + expected: FAIL + + [border-bottom-right-radius border-radius(px) / values] + expected: FAIL + + [border-bottom-right-radius border-radius(px-px) / values] + expected: FAIL + + [box-shadow box-shadow(shadow) / values] + expected: FAIL + + [font-stretch font-stretch(keyword) / 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 8484f4b2b02..27baba66d9a 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 @@ -505,3 +505,153 @@ [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 242ba44bbca..df31829ebc5 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,3 +52,162 @@ [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 + + [padding-left length(pt) / values] + expected: FAIL + + [padding-left length(px) / values] + expected: FAIL + + [padding-right length(pt) / values] + expected: FAIL + + [padding-right length(px) / values] + expected: FAIL + + [padding-top length(pt) / values] + expected: FAIL + + [padding-top length(px) / values] + expected: FAIL + + [margin-bottom length(pt) / values] + expected: FAIL + + [margin-bottom length(px) / values] + expected: FAIL + + [margin-left length(pt) / values] + expected: FAIL + + [margin-left length(px) / values] + expected: FAIL + + [margin-right length(pt) / values] + expected: FAIL + + [margin-right length(px) / values] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-transitions/properties-value-inherit-003.html.ini b/tests/wpt/metadata/css/css-transitions/properties-value-inherit-003.html.ini index 0734ab0db2c..2b8affa2206 100644 --- a/tests/wpt/metadata/css/css-transitions/properties-value-inherit-003.html.ini +++ b/tests/wpt/metadata/css/css-transitions/properties-value-inherit-003.html.ini @@ -4,3 +4,90 @@ [background-position length-em(em) / values] expected: FAIL + + [border-top-width length-em(em) / events] + expected: FAIL + + [border-right-width length-em(em) / events] + expected: FAIL + + [border-bottom-width length-em(em) / events] + expected: FAIL + + [border-left-width length-em(em) / events] + expected: FAIL + + [padding-bottom length-em(em) / events] + expected: FAIL + + [padding-left length-em(em) / events] + expected: FAIL + + [padding-right length-em(em) / events] + expected: FAIL + + [padding-top length-em(em) / events] + expected: FAIL + + [margin-bottom length-em(em) / events] + expected: FAIL + + [margin-left length-em(em) / events] + expected: FAIL + + [margin-right length-em(em) / events] + expected: FAIL + + [margin-top length-em(em) / events] + expected: FAIL + + [height length-em(em) / events] + expected: FAIL + + [width length-em(em) / events] + expected: FAIL + + [min-height length-em(em) / events] + expected: FAIL + + [min-width length-em(em) / events] + expected: FAIL + + [max-height length-em(em) / events] + expected: FAIL + + [max-width length-em(em) / events] + expected: FAIL + + [top length-em(em) / events] + expected: FAIL + + [right length-em(em) / events] + expected: FAIL + + [bottom length-em(em) / events] + expected: FAIL + + [left length-em(em) / events] + expected: FAIL + + [line-height length-em(em) / events] + expected: FAIL + + [letter-spacing length-em(em) / events] + expected: FAIL + + [word-spacing length-em(em) / events] + expected: FAIL + + [text-indent length-em(em) / events] + expected: FAIL + + [outline-offset length-em(em) / events] + expected: FAIL + + [outline-width length-em(em) / events] + expected: FAIL + + [vertical-align length-em(em) / events] + expected: FAIL diff --git a/tests/wpt/metadata/css/cssom-view/MediaQueryListEvent.html.ini b/tests/wpt/metadata/css/cssom-view/MediaQueryListEvent.html.ini deleted file mode 100644 index 18789696fd2..00000000000 --- a/tests/wpt/metadata/css/cssom-view/MediaQueryListEvent.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[MediaQueryListEvent.html] - [argument of onchange] - expected: FAIL diff --git a/tests/wpt/metadata/css/cssom-view/elementFromPoint-001.html.ini b/tests/wpt/metadata/css/cssom-view/elementFromPoint-001.html.ini deleted file mode 100644 index 72b09371038..00000000000 --- a/tests/wpt/metadata/css/cssom-view/elementFromPoint-001.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[elementFromPoint-001.html] - [CSSOM View - 5 - extensions to the Document interface] - expected: FAIL diff --git a/tests/wpt/metadata/css/cssom-view/elementFromPoint-dynamic-anon-box.html.ini b/tests/wpt/metadata/css/cssom-view/elementFromPoint-dynamic-anon-box.html.ini deleted file mode 100644 index cf67b5d03dd..00000000000 --- a/tests/wpt/metadata/css/cssom-view/elementFromPoint-dynamic-anon-box.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[elementFromPoint-dynamic-anon-box.html] - [Link should be clickable after hiding a scrollbox with an anonymous table inside] - expected: FAIL diff --git a/tests/wpt/metadata/css/cssom-view/elementFromPoint-ellipsis-in-inline-box.html.ini b/tests/wpt/metadata/css/cssom-view/elementFromPoint-ellipsis-in-inline-box.html.ini deleted file mode 100644 index b905fe70fcb..00000000000 --- a/tests/wpt/metadata/css/cssom-view/elementFromPoint-ellipsis-in-inline-box.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[elementFromPoint-ellipsis-in-inline-box.html] - [elementFromPoint-ellipsis-in-inline-box] - expected: FAIL diff --git a/tests/wpt/metadata/css/cssom-view/elementFromPoint-float-in-table.html.ini b/tests/wpt/metadata/css/cssom-view/elementFromPoint-float-in-table.html.ini deleted file mode 100644 index db065588308..00000000000 --- a/tests/wpt/metadata/css/cssom-view/elementFromPoint-float-in-table.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[elementFromPoint-float-in-table.html] - [float-in-div] - 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 cb46964f2de..8ae9bae3500 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,9 +13,3 @@ [<li>Outside 3</li>] expected: FAIL - - [<li>Image Inside 2</li>] - expected: FAIL - - [<li>Image Inside 1</li>] - 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..898f39c4330 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 the top of layer] + expected: FAIL diff --git a/tests/wpt/metadata/css/cssom-view/elementsFromPoint-invalid-cases.html.ini b/tests/wpt/metadata/css/cssom-view/elementsFromPoint-invalid-cases.html.ini deleted file mode 100644 index a3496a40d07..00000000000 --- a/tests/wpt/metadata/css/cssom-view/elementsFromPoint-invalid-cases.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[elementsFromPoint-invalid-cases.html] - [The root element is the last element returned for otherwise empty queries within the viewport] - expected: FAIL diff --git a/tests/wpt/metadata/fetch/content-length/parsing.window.js.ini b/tests/wpt/metadata/fetch/content-length/parsing.window.js.ini index e8237fbb8f9..fc21a631bdd 100644 --- a/tests/wpt/metadata/fetch/content-length/parsing.window.js.ini +++ b/tests/wpt/metadata/fetch/content-length/parsing.window.js.ini @@ -77,5 +77,5 @@ [Input: "Content-Length: ". Expected: 42.] expected: FAIL - [Input: "Content-Length: 42,42". Expected: 42.] + [Input: "Content-Length: 30". Expected: 30.] expected: FAIL diff --git a/tests/wpt/metadata/fetch/content-type/script.window.js.ini b/tests/wpt/metadata/fetch/content-type/script.window.js.ini index be7494e9c52..d77a92f76a2 100644 --- a/tests/wpt/metadata/fetch/content-type/script.window.js.ini +++ b/tests/wpt/metadata/fetch/content-type/script.window.js.ini @@ -52,6 +52,3 @@ [combined text/javascript ] expected: FAIL - - [separate text/javascript x/x] - 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 f9de5391ad6..36a410bfecb 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,3 +146,6 @@ [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/initial-empty-document/load-pageshow-events-iframe-contentWindow.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-iframe-contentWindow.html.ini index b8fd22e2b81..149bcb4ff8c 100644 --- a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-iframe-contentWindow.html.ini +++ b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-iframe-contentWindow.html.ini @@ -10,6 +10,3 @@ [load & pageshow events do not fire on contentWindow of <iframe> element created with src='about:blank'] expected: FAIL - - [load & pageshow events do not fire on contentWindow of <iframe> element created with src=''] - expected: FAIL diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-window-open.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-window-open.html.ini index 5aef7ce66ce..324db3d9b35 100644 --- a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-window-open.html.ini +++ b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-window-open.html.ini @@ -10,6 +10,3 @@ [load event does not fire on window.open('about:blank?foo')] expected: FAIL - - [load event does not fire on window.open('about:blank')] - expected: FAIL diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-load-as-html.xhtml.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-load-as-html.xhtml.ini new file mode 100644 index 00000000000..3956f08d5bb --- /dev/null +++ b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-load-as-html.xhtml.ini @@ -0,0 +1,4 @@ +[javascript-url-load-as-html.xhtml] + expected: TIMEOUT + [javascript: URL navigation to a string must create a HTML document using the correct properties] + expected: TIMEOUT diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-return-value-handling-dynamic.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-return-value-handling-dynamic.html.ini index 4b89cb499f8..78240a2f463 100644 --- a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-return-value-handling-dynamic.html.ini +++ b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-return-value-handling-dynamic.html.ini @@ -13,3 +13,6 @@ [0080 00FF 0100 set in href="" targeting a frame and clicked] expected: FAIL + + [D83D DE0D set in href="" targeting a frame and clicked] + expected: FAIL 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 24d2f8ac554..27889a98fb5 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,3 +1,6 @@ [navigate-to-unparseable-url.html] [location.href setter throws a SyntaxError DOMException for unparseable URLs] expected: FAIL + + [<a> tag navigate fails for unparseable URLs] + expected: FAIL diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-cross-origin.sub.window.js.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-cross-origin.sub.window.js.ini new file mode 100644 index 00000000000..4ecd6d9f753 --- /dev/null +++ b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-cross-origin.sub.window.js.ini @@ -0,0 +1,3 @@ +[navigation-unload-cross-origin.sub.window.html] + [Cross-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/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/read-media/pageload-image-in-popup.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/read-media/pageload-image-in-popup.html.ini new file mode 100644 index 00000000000..f49298fea1f --- /dev/null +++ b/tests/wpt/metadata/html/browsers/browsing-the-web/read-media/pageload-image-in-popup.html.ini @@ -0,0 +1,4 @@ +[pageload-image-in-popup.html] + expected: TIMEOUT + [The document for a standalone media file should have one child in the body.] + expected: NOTRUN diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini new file mode 100644 index 00000000000..ba0aed26689 --- /dev/null +++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini @@ -0,0 +1,3 @@ +[traverse_the_history_1.html] + [Multiple history traversals from the same task] + 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 new file mode 100644 index 00000000000..4b4820d1729 --- /dev/null +++ b/tests/wpt/metadata/html/browsers/the-window-object/open-close/creating_browsing_context_test_01.html.ini @@ -0,0 +1,3 @@ +[creating_browsing_context_test_01.html] + [first argument: absolute url] + expected: FAIL diff --git a/tests/wpt/metadata/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected.html.ini b/tests/wpt/metadata/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected.html.ini index 2a54f2f8814..5cdcce07c65 100644 --- a/tests/wpt/metadata/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected.html.ini +++ b/tests/wpt/metadata/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected.html.ini @@ -1,2 +1,2 @@ [canvas.2d.disconnected.html] - expected: TIMEOUT + expected: FAIL diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini index 841bafc6eca..26704422bbe 100644 --- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini @@ -1,3 +1,4 @@ [iframe_sandbox_popups_escaping-2.html] + 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-2.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini index ff0e825b9a1..6bec7a732b8 100644 --- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini @@ -1,5 +1,4 @@ [iframe_sandbox_popups_nonescaping-2.html] type: testharness - expected: CRASH [Check that popups from a sandboxed iframe do not escape the sandbox] expected: FAIL diff --git a/tests/wpt/metadata/html/semantics/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/multipart-formdata.window.js.ini b/tests/wpt/metadata/html/semantics/forms/form-submission-0/multipart-formdata.window.js.ini index 4eaef655d86..cd81ad754ac 100644 --- a/tests/wpt/metadata/html/semantics/forms/form-submission-0/multipart-formdata.window.js.ini +++ b/tests/wpt/metadata/html/semantics/forms/form-submission-0/multipart-formdata.window.js.ini @@ -122,9 +122,6 @@ [multipart/form-data: single quote in value (normal form)] expected: FAIL - [multipart/form-data: single quote in value (formdata event)] - expected: FAIL - [multipart/form-data: single quote in filename (normal form)] expected: FAIL diff --git a/tests/wpt/metadata/html/semantics/forms/form-submission-0/text-plain.window.js.ini b/tests/wpt/metadata/html/semantics/forms/form-submission-0/text-plain.window.js.ini index f523b37700a..b79f98f20d2 100644 --- a/tests/wpt/metadata/html/semantics/forms/form-submission-0/text-plain.window.js.ini +++ b/tests/wpt/metadata/html/semantics/forms/form-submission-0/text-plain.window.js.ini @@ -175,3 +175,6 @@ [text/plain: 0x00 in name (formdata event)] expected: FAIL + + [text/plain: Basic File test (formdata event)] + expected: FAIL diff --git a/tests/wpt/metadata/html/semantics/forms/the-input-element/pattern_attribute.html.ini b/tests/wpt/metadata/html/semantics/forms/the-input-element/pattern_attribute.html.ini new file mode 100644 index 00000000000..8a12e91e3e8 --- /dev/null +++ b/tests/wpt/metadata/html/semantics/forms/the-input-element/pattern_attribute.html.ini @@ -0,0 +1,3 @@ +[pattern_attribute.html] + [pattern attribute support on input element] + expected: FAIL diff --git a/tests/wpt/metadata/html/semantics/forms/the-selectmenu-element/selectmenu-marker-part.tentative.html.ini b/tests/wpt/metadata/html/semantics/forms/the-selectmenu-element/selectmenu-marker-part.tentative.html.ini new file mode 100644 index 00000000000..1296af3eb70 --- /dev/null +++ b/tests/wpt/metadata/html/semantics/forms/the-selectmenu-element/selectmenu-marker-part.tentative.html.ini @@ -0,0 +1,2 @@ +[selectmenu-marker-part.tentative.html] + expected: FAIL diff --git a/tests/wpt/metadata/html/semantics/forms/the-selectmenu-element/selectmenu-marker-slot.tentative.html.ini b/tests/wpt/metadata/html/semantics/forms/the-selectmenu-element/selectmenu-marker-slot.tentative.html.ini new file mode 100644 index 00000000000..46aeed63957 --- /dev/null +++ b/tests/wpt/metadata/html/semantics/forms/the-selectmenu-element/selectmenu-marker-slot.tentative.html.ini @@ -0,0 +1,2 @@ +[selectmenu-marker-slot.tentative.html] + expected: FAIL diff --git a/tests/wpt/metadata/html/semantics/interactive-elements/the-dialog-element/child-sequential-focus.html.ini b/tests/wpt/metadata/html/semantics/interactive-elements/the-dialog-element/child-sequential-focus.html.ini new file mode 100644 index 00000000000..63611fdd244 --- /dev/null +++ b/tests/wpt/metadata/html/semantics/interactive-elements/the-dialog-element/child-sequential-focus.html.ini @@ -0,0 +1,15 @@ +[child-sequential-focus.html] + [dialog element with autofocus should get initial focus.] + expected: FAIL + + [Only keyboard-focusable elements should get dialog initial focus.] + expected: FAIL + + [Autofocus takes precedence over keyboard-focusable requirement.] + expected: FAIL + + [Only keyboard-focusable elements should get dialog initial focus including in subtrees.] + expected: FAIL + + [Only keyboard-focusable elements should get dialog initial focus including in nested buttons.] + 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 cc18f512574..73807cb3cc1 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,5 +1,6 @@ [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 @@ -13,4 +14,4 @@ expected: FAIL [Check that rel=noopener with target=_self does a normal load] - expected: FAIL + expected: NOTRUN diff --git a/tests/wpt/metadata/html/semantics/popovers/idlharness.tentative.html.ini b/tests/wpt/metadata/html/semantics/popovers/idlharness.tentative.html.ini index 24fd1c2bdf0..e7654ffc8df 100644 --- a/tests/wpt/metadata/html/semantics/popovers/idlharness.tentative.html.ini +++ b/tests/wpt/metadata/html/semantics/popovers/idlharness.tentative.html.ini @@ -301,3 +301,27 @@ [PopoverToggleEvent interface: attribute newState] expected: FAIL + + [ToggleEvent interface: existence and properties of interface object] + expected: FAIL + + [ToggleEvent interface object length] + expected: FAIL + + [ToggleEvent interface object name] + expected: FAIL + + [ToggleEvent interface: existence and properties of interface prototype object] + expected: FAIL + + [ToggleEvent interface: existence and properties of interface prototype object's "constructor" property] + expected: FAIL + + [ToggleEvent interface: existence and properties of interface prototype object's @@unscopables property] + expected: FAIL + + [ToggleEvent interface: attribute oldState] + expected: FAIL + + [ToggleEvent interface: attribute newState] + expected: FAIL diff --git a/tests/wpt/metadata/html/semantics/popovers/popover-events.tentative.html.ini b/tests/wpt/metadata/html/semantics/popovers/popover-events.tentative.html.ini index 4b460fa9032..2c0e7af939f 100644 --- a/tests/wpt/metadata/html/semantics/popovers/popover-events.tentative.html.ini +++ b/tests/wpt/metadata/html/semantics/popovers/popover-events.tentative.html.ini @@ -40,3 +40,6 @@ [The "beforetoggle" event is not fired for element removal] expected: FAIL + + [The "toggle" event is coalesced] + expected: FAIL diff --git a/tests/wpt/metadata/html/semantics/popovers/toggleevent-interface.tentative.html.ini b/tests/wpt/metadata/html/semantics/popovers/toggleevent-interface.tentative.html.ini index 59d720df5f8..7b3c01dfbbd 100644 --- a/tests/wpt/metadata/html/semantics/popovers/toggleevent-interface.tentative.html.ini +++ b/tests/wpt/metadata/html/semantics/popovers/toggleevent-interface.tentative.html.ini @@ -133,3 +133,63 @@ [PopoverToggleEventInit properties set value 4] expected: FAIL + + [the event is an instance of ToggleEvent] + expected: FAIL + + [oldState has default value of empty string] + expected: FAIL + + [oldState is readonly] + expected: FAIL + + [ToggleEventInit argument is null] + expected: FAIL + + [ToggleEventInit argument is undefined] + expected: FAIL + + [ToggleEventInit argument is empty dictionary] + expected: FAIL + + [oldState set to 'sample'] + expected: FAIL + + [oldState set to undefined] + expected: FAIL + + [oldState set to null] + expected: FAIL + + [oldState set to false] + expected: FAIL + + [oldState set to true] + expected: FAIL + + [oldState set to a number] + expected: FAIL + + [oldState set to [\]] + expected: FAIL + + [oldState set to [1, 2, 3\]] + expected: FAIL + + [oldState set to an object] + expected: FAIL + + [oldState set to an object with a valueOf function] + expected: FAIL + + [ToggleEventInit properties set value] + expected: FAIL + + [ToggleEventInit properties set value 2] + expected: FAIL + + [ToggleEventInit properties set value 3] + expected: FAIL + + [ToggleEventInit properties set value 4] + expected: FAIL diff --git a/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/document-write/module-delayed.html.ini b/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/document-write/module-delayed.html.ini new file mode 100644 index 00000000000..fc0233f5241 --- /dev/null +++ b/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/document-write/module-delayed.html.ini @@ -0,0 +1,3 @@ +[module-delayed.html] + [async document.write in a module] + expected: FAIL diff --git a/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/document-write/module-tla-delayed.html.ini b/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/document-write/module-tla-delayed.html.ini new file mode 100644 index 00000000000..f9a4f08cd70 --- /dev/null +++ b/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/document-write/module-tla-delayed.html.ini @@ -0,0 +1,3 @@ +[module-tla-delayed.html] + [document.write in an imported module] + expected: FAIL diff --git a/tests/wpt/metadata/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini b/tests/wpt/metadata/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini index e55f8f2ce3c..7d4c3a1b06d 100644 --- a/tests/wpt/metadata/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini +++ b/tests/wpt/metadata/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini @@ -5,4 +5,4 @@ expected: TIMEOUT [The entry settings object while executing the compiled callback via Web IDL's invoke must be that of the node document] - expected: FAIL + expected: TIMEOUT diff --git a/tests/wpt/metadata/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/performance-timeline/tentative/include-frames-originA-B.html.ini b/tests/wpt/metadata/performance-timeline/tentative/include-frames-originA-B.html.ini new file mode 100644 index 00000000000..dcb0f7e436e --- /dev/null +++ b/tests/wpt/metadata/performance-timeline/tentative/include-frames-originA-B.html.ini @@ -0,0 +1,3 @@ +[include-frames-originA-B.html] + [GetEntries of a parent Frame of origin A and its child frame of origin B] + 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 f7bc47e5724..d8855aa5584 100644 --- a/tests/wpt/metadata/resource-timing/content-type-parsing.html.ini +++ b/tests/wpt/metadata/resource-timing/content-type-parsing.html.ini @@ -19,28 +19,28 @@ expected: FAIL [content-type 6 : text/plain;charset=gbk,text/plain;charset=windows-1252] - expected: FAIL + expected: TIMEOUT [content-type 7 : text/html;charset=gbk,text/html;x=",text/plain] - expected: FAIL + expected: NOTRUN [content-type 8 : text/plain;charset=gbk;x=foo,text/plain] - expected: FAIL + expected: NOTRUN [content-type 9 : text/html;charset=gbk,text/plain,text/html] - expected: FAIL + expected: NOTRUN [content-type 10 : text/plain,*/*] - expected: FAIL + expected: NOTRUN [content-type 11 : text/html,*/*] - expected: FAIL + expected: NOTRUN [content-type 12 : */*,text/html] - expected: FAIL + expected: NOTRUN [content-type 13 : text/plain,*/*;charset=gbk] - expected: TIMEOUT + expected: NOTRUN [content-type 14 : text/html,*/*;charset=gbk] expected: NOTRUN diff --git a/tests/wpt/metadata/resource-timing/response-status-code.html.ini b/tests/wpt/metadata/resource-timing/response-status-code.html.ini index 38df5f01300..b84e3cf7b11 100644 --- a/tests/wpt/metadata/resource-timing/response-status-code.html.ini +++ b/tests/wpt/metadata/resource-timing/response-status-code.html.ini @@ -265,10 +265,10 @@ expected: FAIL [This test validates the response status of resources. 88] - expected: FAIL + expected: TIMEOUT [This test validates the response status of resources. 89] - expected: TIMEOUT + expected: NOTRUN [This test validates the response status of resources. 90] expected: NOTRUN diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audiocontext-interface/audiocontext-not-fully-active.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audiocontext-interface/audiocontext-not-fully-active.html.ini index eed03df37f3..b7537329068 100644 --- a/tests/wpt/metadata/webaudio/the-audio-api/the-audiocontext-interface/audiocontext-not-fully-active.html.ini +++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audiocontext-interface/audiocontext-not-fully-active.html.ini @@ -1,4 +1,5 @@ [audiocontext-not-fully-active.html] + expected: TIMEOUT [frame in navigated remote-site frame] expected: FAIL diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audiocontext-interface/audiocontextoptions.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audiocontext-interface/audiocontextoptions.html.ini index 37dd5b66269..e86d0df261e 100644 --- a/tests/wpt/metadata/webaudio/the-audio-api/the-audiocontext-interface/audiocontextoptions.html.ini +++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audiocontext-interface/audiocontextoptions.html.ini @@ -1,5 +1,5 @@ [audiocontextoptions.html] - expected: TIMEOUT + expected: CRASH [X context = new AudioContext({sampleRate: 1}) did not throw an exception.] expected: FAIL diff --git a/tests/wpt/metadata/webmessaging/broadcastchannel/cross-partition.https.tentative.html.ini b/tests/wpt/metadata/webmessaging/broadcastchannel/cross-partition.https.tentative.html.ini index 04c2032c723..39d039a0132 100644 --- a/tests/wpt/metadata/webmessaging/broadcastchannel/cross-partition.https.tentative.html.ini +++ b/tests/wpt/metadata/webmessaging/broadcastchannel/cross-partition.https.tentative.html.ini @@ -1,5 +1,5 @@ [cross-partition.https.tentative.html] - expected: TIMEOUT + expected: CRASH [BroadcastChannel messages aren't received from a cross-partition iframe] expected: FAIL diff --git a/tests/wpt/metadata/webmessaging/with-ports/017.html.ini b/tests/wpt/metadata/webmessaging/with-ports/017.html.ini deleted file mode 100644 index c7946fc91b4..00000000000 --- a/tests/wpt/metadata/webmessaging/with-ports/017.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[017.html] - expected: TIMEOUT - [origin of the script that invoked the method, about:blank] - expected: TIMEOUT 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-connection.window.js b/tests/wpt/web-platform-tests/IndexedDB/back-forward-cache-open-connection.window.js index 397eadab876..084e7f73b9e 100644 --- a/tests/wpt/web-platform-tests/IndexedDB/back-forward-cache-open-connection.window.js +++ b/tests/wpt/web-platform-tests/IndexedDB/back-forward-cache-open-connection.window.js @@ -15,7 +15,7 @@ promise_test(async t => { /*config=*/ null, /*options=*/ {features: 'noopener'}); await createIndexedDBForTesting(rc1, 'test_idb', 1); - await assertBFCache(rc1, /*shouldRestoreFromBFCache=*/ true); + await assertBFCacheEligibility(rc1, /*shouldRestoreFromBFCache=*/ true); // The page is ensured to be eligible for BFCache even with open connection, // otherwise the previous assertion will fail with PRECONDITION_FAILED. @@ -26,6 +26,9 @@ promise_test(async t => { // Create an IndexedDB database with higher version. await createIndexedDBForTesting(rc2, 'test_idb_2', 2); await rc2.historyBack(); - // The previous page receiving versionchange event should be evicted. - await assert_not_bfcached(rc1); + // The previous page receiving versionchange event should be evicted with the + // correct reason. + // `kIgnoreEventAndEvict` will be reported as "Internal error". + // See `NotRestoredReasonToReportString()`. + await assertNotRestoredFromBFCache(rc1, ['Internal error']); }); 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 index e9511d3806a..bee3d017afe 100644 --- 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 @@ -37,5 +37,5 @@ promise_test(async t => { }); }); - await assertBFCache(rc1, /*shouldRestoreFromBFCache=*/ true); + await assertBFCacheEligibility(rc1, /*shouldRestoreFromBFCache=*/ true); }); diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-top-layer-001.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-top-layer-001.html index c96f6eef558..ffa1c1cbd1e 100644 --- a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-top-layer-001.html +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-top-layer-001.html @@ -22,6 +22,7 @@ height: 100px; background: lime; anchor-scroll: --a; + outline: none; } body { diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-top-layer-002.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-top-layer-002.html index e626e6b9356..849558f0f8c 100644 --- a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-top-layer-002.html +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-top-layer-002.html @@ -22,6 +22,7 @@ height: 100px; background: lime; anchor-scroll: --a; + outline: none; } body { diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-top-layer-003.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-top-layer-003.html index 39f3c362c7b..5012b52f5f9 100644 --- a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-top-layer-003.html +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-top-layer-003.html @@ -22,6 +22,7 @@ height: 100px; background: lime; anchor-scroll: --a; + outline: none; } body { diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-top-layer-004.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-top-layer-004.html index 8e189e0e7b7..84e9296a109 100644 --- a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-top-layer-004.html +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-top-layer-004.html @@ -22,6 +22,7 @@ height: 100px; background: lime; anchor-scroll: --a; + outline: none; } body { diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-top-layer-005.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-top-layer-005.html index d9e4fa86e10..6adf8961a4b 100644 --- a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-top-layer-005.html +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-top-layer-005.html @@ -35,6 +35,7 @@ dialog { border: 0; padding: 0; inset: auto; + outline: none; } dialog::backdrop { diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-top-layer-006.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-top-layer-006.html index 5f5cd67a1d7..d2a39eae6d6 100644 --- a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-top-layer-006.html +++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-top-layer-006.html @@ -34,6 +34,7 @@ dialog { margin: 0; border: 0; padding: 0; + outline: none; } dialog::backdrop { diff --git a/tests/wpt/web-platform-tests/css/css-animations/responsive/line-height.html b/tests/wpt/web-platform-tests/css/css-animations/responsive/line-height.html new file mode 100644 index 00000000000..63097ac8081 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-animations/responsive/line-height.html @@ -0,0 +1,45 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>CSS Animations: line-height animations respond to style changes</title> +<link rel="help" href="https://drafts.csswg.org/css-inline/#line-height-property"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<style> + #target { + animation-name: line-height-animation; + animation-duration: 4s; + animation-timing-function: linear; + animation-delay: -2s; + animation-play-state: paused; + } + @keyframes line-height-animation { + from { line-height: inherit; } + to { line-height: 20px; } + } +</style> +</head> +<body> +<div id="container"> + <div id="target"></div> +</div> +<script> +'use strict'; +const container = document.getElementById('container'); +const target = document.getElementById('target'); + +test(() => { + container.style.lineHeight = '100px'; + assert_equals(getComputedStyle(target).lineHeight, '60px'); + + container.style.lineHeight = '50px'; + assert_equals(getComputedStyle(target).lineHeight, '35px'); + + container.style.lineHeight = '100px'; + assert_equals(getComputedStyle(target).lineHeight, '60px'); +}, 'line-height responds to inherited changes'); + +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/repeated-section-in-clipped-overflow-001.tentative.html b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/repeated-section-in-clipped-overflow-001.tentative.html new file mode 100644 index 00000000000..96cd60286d9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/repeated-section-in-clipped-overflow-001.tentative.html @@ -0,0 +1,15 @@ +<!DOCTYPE html> +<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org"> +<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1410896"> +<link rel="match" href="../../../reference/ref-filled-green-100px-square.xht"> +<p>Test passes if there is a filled green square and <strong>no red</strong>.</p> +<div style="columns:4; gap:0; column-fill:auto; width:100px; height:100px; background:red;"> + <div style="height:400px; overflow:clip;"> + <div style="display:table; width:100%;"> + <div style="display:table-header-group; break-inside:avoid;"> + <div style="height:25px; background:green;"></div> + </div> + <div style="height:500px; background:green;"></div> + </div> + </div> +</div> diff --git a/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/repeated-section-in-clipped-overflow-002.tentative.html b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/repeated-section-in-clipped-overflow-002.tentative.html new file mode 100644 index 00000000000..b55d8a38906 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/repeated-section-in-clipped-overflow-002.tentative.html @@ -0,0 +1,15 @@ +<!DOCTYPE html> +<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org"> +<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1410896"> +<link rel="match" href="../../../reference/ref-filled-green-100px-square.xht"> +<p>Test passes if there is a filled green square and <strong>no red</strong>.</p> +<div style="columns:4; gap:0; column-fill:auto; width:100px; height:100px; background:red;"> + <div style="height:400px; overflow:clip;"> + <div style="display:table; width:100%;"> + <div style="height:500px; background:green;"></div> + <div style="display:table-footer-group; break-inside:avoid;"> + <div style="height:25px; background:green;"></div> + </div> + </div> + </div> +</div> diff --git a/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/repeated-section-in-clipped-overflow-003.tentative.html b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/repeated-section-in-clipped-overflow-003.tentative.html new file mode 100644 index 00000000000..794a596fdc6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/repeated-section-in-clipped-overflow-003.tentative.html @@ -0,0 +1,18 @@ +<!DOCTYPE html> +<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org"> +<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1410896"> +<link rel="match" href="../../../reference/ref-filled-green-100px-square.xht"> +<p>Test passes if there is a filled green square and <strong>no red</strong>.</p> +<div style="columns:4; gap:0; column-fill:auto; width:100px; height:100px; background:red;"> + <div style="height:400px; overflow:clip;"> + <div style="display:table; width:100%;"> + <div style="display:table-header-group; break-inside:avoid;"> + <div style="height:25px; background:green;"></div> + </div> + <div style="height:500px; background:green;"></div> + <div style="display:table-footer-group; break-inside:avoid;"> + <div style="height:25px; background:green;"></div> + </div> + </div> + </div> +</div> diff --git a/tests/wpt/web-platform-tests/css/css-color/parsing/color-invalid-color-function.html b/tests/wpt/web-platform-tests/css/css-color/parsing/color-invalid-color-function.html index 51f393747c1..82c6fe33580 100644 --- a/tests/wpt/web-platform-tests/css/css-color/parsing/color-invalid-color-function.html +++ b/tests/wpt/web-platform-tests/css/css-color/parsing/color-invalid-color-function.html @@ -50,6 +50,10 @@ test_invalid_value("color", "color()"); // Empty test_invalid_value("color", "color(banana 1 1 1)"); // Bad color space test_invalid_value("color", "color(displayp3 1 1 1)"); // Bad Display P3 color space test_invalid_value("color", "color(1 1 1)"); // No color space +test_invalid_value("color", "color(srgb 1 1)", "color(srgb 1 1 0)"); // One missing component +test_invalid_value("color", "color(srgb 1)", "color(srgb 1 0 0)"); // Two missing components +test_invalid_value("color", "color(srgb)", "color(srgb 0 0 0)"); // All components missing + test_invalid_value("color", "color(srgb 1 1 1 1)"); // Too many parameters test_invalid_value("color", "color(srgb 1 1 1 1 1)"); // Way too many parameters test_invalid_value("color", "color(srgb 1 eggs 1)"); // Bad parameters diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/custom-property-style-queries.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/custom-property-style-queries.html index 7a11d45c313..064e73bb25c 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/container-queries/custom-property-style-queries.html +++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/custom-property-style-queries.html @@ -281,6 +281,9 @@ @container style(--reg-length: 10px) { #reg-px { color: green; } } + @container style(--reg-length: initial) { + #reg-px-initial { color: green; } + } #reg-container-font-relative { --reg-length: 10px; @@ -303,10 +306,21 @@ @container style(--reg-length: 50cqi) { #reg-container-relative { color: green; } } + + #reg-container-initial { + --reg-length: 10px; + } + @container style(--reg-length: 10px) { + #reg-initial-value { color: green; } + } + @container style(--reg-length: initial) { + #reg-initial-keyword { color: green; } + } </style> <div id="registered"> <div id="reg-container-px"> <div id="reg-px"></div> + <div id="reg-px-initial"></div> </div> <div id="reg-container-font-relative"> <div id="reg-font-relative"></div> @@ -317,6 +331,10 @@ <div id="reg-container-container-relative"> <div id="reg-container-relative"></div> </div> + <div id="reg-container-initial"> + <div id="reg-initial-value"></div> + <div id="reg-initial-keyword"></div> + </div> </div> <script> test(() => { @@ -324,6 +342,10 @@ }, "Match registered <length> custom property with px."); test(() => { + assert_equals(getComputedStyle(document.querySelector("#reg-px-initial")).color, green); + }, "Match registered <length> custom property with px via initial keyword."); + + test(() => { assert_equals(getComputedStyle(document.querySelector("#reg-font-relative")).color, green); }, "Match registered <length> custom property with em in query."); @@ -334,4 +356,12 @@ test(() => { assert_equals(getComputedStyle(document.querySelector("#reg-container-relative")).color, green); }, "Match registered <length> custom property with cqi unit."); + + test(() => { + assert_equals(getComputedStyle(document.querySelector("#reg-initial-value")).color, green); + }, "Match registered <length> custom property with initial value."); + + test(() => { + assert_equals(getComputedStyle(document.querySelector("#reg-initial-keyword")).color, green); + }, "Match registered <length> custom property with initial value via initial keyword."); </script> diff --git a/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-with-top-layer-003.html b/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-with-top-layer-003.html index b8685954ff8..7fb1f20b7ec 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-with-top-layer-003.html +++ b/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-with-top-layer-003.html @@ -12,6 +12,7 @@ <style> .box { width: 100px; height: 100px; border: 1px solid black; } .hidden { content-visibility: hidden } +#dialog { outline: none; } </style> <div id=container class=box> diff --git a/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-with-top-layer-ref.html b/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-with-top-layer-ref.html index 1a3cad32783..eadc5f65d1e 100644 --- a/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-with-top-layer-ref.html +++ b/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-with-top-layer-ref.html @@ -4,6 +4,7 @@ <style> .box { width: 100px; height: 100px; border: 1px solid black; } +dialog { outline: none; } </style> <div id=container class=box> diff --git a/tests/wpt/web-platform-tests/css/css-nesting/cssom.html b/tests/wpt/web-platform-tests/css/css-nesting/cssom.html index 987c3110367..b7948f81bc1 100644 --- a/tests/wpt/web-platform-tests/css/css-nesting/cssom.html +++ b/tests/wpt/web-platform-tests/css/css-nesting/cssom.html @@ -142,4 +142,16 @@ .c div.b &, div & { color: blue; } }`, 'one rule is kept unchanged, the other is changed'); }); + + // Rules that are dropped in forgiving parsing but that contain &, + // must still be serialized out as they were. + test(() => { + const text = '.a { :is(!& .foo, .b) { color: green; } }'; + document.getElementById('ss').innerHTML = text; + let [ss] = document.styleSheets; + assert_equals(ss.cssRules[0].cssText, +`.a { + :is(!& .foo, .b) { color: green; } +}`, 'invalid rule containing ampersand is kept in serialization'); + }); </script> diff --git a/tests/wpt/web-platform-tests/css/css-transforms/crashtests/locked-display-transform-crash.html b/tests/wpt/web-platform-tests/css/css-transforms/crashtests/locked-display-transform-crash.html new file mode 100644 index 00000000000..0d8b69b079c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-transforms/crashtests/locked-display-transform-crash.html @@ -0,0 +1,21 @@ +<!DOCTYPE HTML> +<html class=test-wait> +<style type="text/css"> +</style> +<div id="container"> + <div id="div" style="transform:translateX(100px);"></div> +</div> +<script> + function runTest() { + document.getElementById('div').style = 'transform:translateX(200px)'; + var forceLayout = document.body.offsetWidth; + document.getElementById('container').style = 'content-visibility: hidden;'; + requestAnimationFrame(function() { + requestAnimationFrame(function() { + document.documentElement.classList.remove('test-wait'); + }); + }); + } + onload = runTest; +</script> +</html>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/declared/append.tentative.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/declared/append.tentative.html index 2ff92b22c21..b642c0823a2 100644 --- a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/declared/append.tentative.html +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/declared/append.tentative.html @@ -66,4 +66,9 @@ test(t => { assert_throws_js(TypeError, () => styleMap.append('transition-duration', CSS.s(1))); }, 'Appending to a list containing a variable reference should throw'); +test(t => { + let styleMap = createDeclaredStyleMap(t, 'transition: var(--a)'); + assert_throws_js(TypeError, () => styleMap.append('transition-duration', CSS.s(1))); +}, 'Appending to a longhand list containing a variable reference should throw'); + </script> diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/dialog-in-top-layer-during-transition-new.html b/tests/wpt/web-platform-tests/css/css-view-transitions/dialog-in-top-layer-during-transition-new.html index e84167a2489..0473209fa9d 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/dialog-in-top-layer-during-transition-new.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/dialog-in-top-layer-during-transition-new.html @@ -18,6 +18,8 @@ view-transition-name: dialog; contain: layout; + + outline: none; } #target::backdrop { diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/dialog-in-top-layer-during-transition-old.html b/tests/wpt/web-platform-tests/css/css-view-transitions/dialog-in-top-layer-during-transition-old.html index 672295cd3bd..3634f65d8c9 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/dialog-in-top-layer-during-transition-old.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/dialog-in-top-layer-during-transition-old.html @@ -18,6 +18,8 @@ view-transition-name: dialog; contain: layout; + + outline: none; } #target::backdrop { diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/ch-units-vrl-006.html b/tests/wpt/web-platform-tests/css/css-writing-modes/ch-units-vrl-006.html index cbe1dee6847..f3297175741 100644 --- a/tests/wpt/web-platform-tests/css/css-writing-modes/ch-units-vrl-006.html +++ b/tests/wpt/web-platform-tests/css/css-writing-modes/ch-units-vrl-006.html @@ -44,7 +44,7 @@ div:nth-of-type(2) { width: 5ch; } div:nth-of-type(1) { - background: orange; + background: blue; height: 5ch; display: inline-block; /* shrinkwrap */ } 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 de23b6f84ff..53482879ea4 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 @@ -1,15 +1,41 @@ -async function waitForScrollendEvent(test, target, timeoutMs = 500) { +async function waitForEvent(eventName, test, target, timeoutMs = 500) { return new Promise((resolve, reject) => { const timeoutCallback = test.step_timeout(() => { - reject(`No Scrollend event received for target ${target}`); + reject(`No ${eventName} event received for target ${target}`); }, timeoutMs); - target.addEventListener('scrollend', (evt) => { + target.addEventListener(eventName, (evt) => { clearTimeout(timeoutCallback); resolve(evt); }, { once: true }); }); } +async function waitForScrollendEvent(test, target, timeoutMs = 500) { + return waitForEvent("scrollend", test, target, timeoutMs); +} + +async function waitForPointercancelEvent(test, target, timeoutMs = 500) { + return waitForEvent("pointercancel", test, target, timeoutMs); +} + +async function createScrollendPromiseForTarget(test, + target_div, + timeoutMs = 500) { + return waitForScrollendEvent(test, target_div, timeoutMs).then(evt => { + assert_false(evt.cancelable, 'Event is not cancelable'); + assert_false(evt.bubbles, 'Event targeting element does not bubble'); + }); +} + +function verifyNoScrollendOnDocument(test) { + const callback = + test.unreached_func("window got unexpected scrollend event."); + window.addEventListener('scrollend', callback); + test.add_cleanup(() => { + window.removeEventListener('scrollend', callback); + }); +} + async function verifyScrollStopped(test, target_div) { const unscaled_pause_time_in_ms = 100; const x = target_div.scrollLeft; @@ -107,6 +133,10 @@ function waitForAnimationEnd(getValue) { } // Scrolls in target according to move_path with pauses in between +// The move_path should contains coordinates that are within target boundaries. +// Keep in mind that 0,0 is the center of the target element and is also +// the pointerDown position. +// pointerUp() is fired after sequence of moves. function touchScrollInTargetSequentiallyWithPause(target, move_path, pause_time_in_ms = 100) { const test_driver_actions = new test_driver.Actions() .addPointer("pointer1", "touch") @@ -125,7 +155,7 @@ function touchScrollInTargetSequentiallyWithPause(target, move_path, pause_time_ y += step_y; test_driver_actions.pointerMove(x, y, {origin: target}); } - test_driver_actions.pause(pause_time_in_ms); + test_driver_actions.pause(pause_time_in_ms); // To prevent inertial scroll } return test_driver_actions.pointerUp().send(); diff --git a/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-fired-after-sequence-of-scrolls.tentative.html b/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-fired-after-sequence-of-scrolls.tentative.html index 77bf029ced5..8c785c2a975 100644 --- a/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-fired-after-sequence-of-scrolls.tentative.html +++ b/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-fired-after-sequence-of-scrolls.tentative.html @@ -28,36 +28,47 @@ <script> const target_div = document.getElementById('targetDiv'); -let scrollend_arrived = false; -let scrollend_event_count = 0; - -function onScrollEnd(event) { - assert_false(event.cancelable); - assert_false(event.bubbles); - scrollend_arrived = true; - scrollend_event_count += 1; -} function runTest() { promise_test (async (t) => { - // Make sure that no scrollend event is sent to document. - document.addEventListener("scrollend", - t.unreached_func("document got unexpected scrollend event.")); - await waitForCompositorCommit(); + // Skip the test on a Mac as they do not support touch screens. + const isMac = navigator.platform.toUpperCase().indexOf('MAC')>=0; + if (isMac) + return; + + verifyNoScrollendOnDocument(t); + await waitForCompositorReady(); + + let scrollend_count = 0; + const scrollend_listener = () => { scrollend_count += 1; }; + target_div.addEventListener("scrollend", scrollend_listener); + t.add_cleanup(() => { target_div.removeEventListener('scrollend', scrollend_listener); }); + + const pointercancel_listener = () => { + assert_equals(scrollend_count, 0, 'scrollend should happen after pointercancel.'); + }; + target_div.addEventListener("pointercancel", pointercancel_listener); + t.add_cleanup(() => { target_div.removeEventListener('pointercancel', pointercancel_listener); }); + + // Because we have several pointer moves, we choose bigger timeout. + const timeoutMs = 1000; + const targetPointercancelPromise = waitForPointercancelEvent(t, target_div, timeoutMs); + const targetScrollendPromise = createScrollendPromiseForTarget(t, target_div, timeoutMs); // Scroll down & up & down on target div and wait for the target_div to get scrollend event. - target_div.addEventListener("scrollend", onScrollEnd); const move_path = [ - { x: 0, y: -300}, // down - { x: 0, y: -100}, // up - { x: 0, y: -400}, // down - { x: 0, y: -200}, // up + { x: 0, y: -80 }, // Scroll down + { x: 0, y: -40 }, // Scroll up + { x: 0, y: -80 }, // Scroll down ]; - await touchScrollInTargetSequentiallyWithPause(target_div, move_path, 150); + await touchScrollInTargetSequentiallyWithPause(target_div, move_path); - await waitFor(() => {return scrollend_arrived;}, - 'target_div did not receive scrollend event after sequence of scrolls on target.'); - assert_equals(scrollend_event_count, 1); + // Because we start scrolling after pointerdown, there is no pointerup, instead the target + // will receive a pointercancel, so we wait for pointercancel, and then continue. + await targetPointercancelPromise; + await targetScrollendPromise; + await verifyScrollStopped(t, target_div); + assert_equals(scrollend_count, 1, 'Only one scrollend event should be fired'); }, "Move down, up and down again, receive scrollend event only once"); } </script> 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 index a51069bc088..f3791134204 100644 --- 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 @@ -70,15 +70,8 @@ function runTests() { const root_div = document.getElementById("root"); - async function createScrollendPromise(test) { - return waitForScrollendEvent(test, root_div).then(evt => { - assert_false(evt.cancelable, 'Event is not cancelable'); - assert_false(evt.bubbles, 'Event targeting element does not bubble'); - }); - } - promise_test(async (t) => { - const targetScrollendPromise = createScrollendPromise(t); + const targetScrollendPromise = createScrollendPromiseForTarget(t, root_div); await waitForNextFrame(); root_div.classList.remove("hidden"); 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 d51472fcb51..6a699b6f087 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 verifyNoScrollendOnDocument(test) { - const callback = - test.unreached_func("window got unexpected scrollend event."); - window.addEventListener('scrollend', callback); -} - -async function createScrollendPromise(test, timeoutMs = 500) { - return waitForScrollendEvent(test, target_div, timeoutMs).then(evt => { - assert_false(evt.cancelable, 'Event is not cancelable'); - assert_false(evt.bubbles, 'Event targeting element does not bubble'); - }); -} - function runTest() { promise_test(async (t) => { // Skip the test on a Mac as they do not support touch screens. @@ -63,7 +50,7 @@ function runTest() { await waitForCompositorReady(); const timeout = 1000; // Because we have two pauses we need longer timeout - const targetScrollendPromise = createScrollendPromise(t, timeout); + const targetScrollendPromise = createScrollendPromiseForTarget(t, target_div, timeout); verifyNoScrollendOnDocument(t); let scrollend_count = 0; @@ -108,7 +95,7 @@ function runTest() { await resetTargetScrollState(t); await waitForCompositorReady(); - const targetScrollendPromise = createScrollendPromise(t); + const targetScrollendPromise = createScrollendPromiseForTarget(t, target_div); verifyNoScrollendOnDocument(t); const bounds = target_div.getBoundingClientRect(); @@ -139,7 +126,7 @@ function runTest() { await resetTargetScrollState(t); await waitForCompositorReady(); - const targetScrollendPromise = createScrollendPromise(t); + const targetScrollendPromise = createScrollendPromiseForTarget(t, target_div); verifyNoScrollendOnDocument(t); const bounds = target_div.getBoundingClientRect(); @@ -165,7 +152,7 @@ function runTest() { await resetTargetScrollState(t); await waitForCompositorReady(); - const targetScrollendPromise = createScrollendPromise(t); + const targetScrollendPromise = createScrollendPromiseForTarget(t, target_div); verifyNoScrollendOnDocument(t); const x = 0; @@ -188,7 +175,7 @@ function runTest() { await waitForCompositorReady(); verifyNoScrollendOnDocument(t); - const targetScrollendPromise = createScrollendPromise(t); + const targetScrollendPromise = createScrollendPromiseForTarget(t, target_div); target_div.focus(); window.test_driver.send_keys(target_div, '\ue015'); diff --git a/tests/wpt/web-platform-tests/editing/other/delete-in-last-definition-list-item-when-parent-list-is-editing-host.html b/tests/wpt/web-platform-tests/editing/other/delete-in-last-definition-list-item-when-parent-list-is-editing-host.html new file mode 100644 index 00000000000..e068f9bcd22 --- /dev/null +++ b/tests/wpt/web-platform-tests/editing/other/delete-in-last-definition-list-item-when-parent-list-is-editing-host.html @@ -0,0 +1,88 @@ +<!doctype html> +<html> +<head> +<meta charset="utf-8"> +<meta name="timeout" content="long"> +<meta name="variant" content="?action=Backspace"> +<meta name="variant" content="?action=Delete"> +<title>Delete in last list item should not delete parent list if it's editing host</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/resources/testdriver-actions.js"></script> +<script src="../include/editor-test-utils.js"></script> +<script> +"use strict"; + +const params = new URLSearchParams(location.search.substring(1)); +const backspace = params.get("action") == "Backspace"; + +addEventListener("load", () => { + document.body.innerHTML ="<dl contenteditable></dl>"; + const editingHost = document.querySelector("dl[contenteditable]"); + const utils = new EditorTestUtils(editingHost); + + function addPromiseTest(aTest) { + promise_test(async () => { + editingHost.focus(); + utils.setupEditingHost(aTest.innerHTML); + await (backspace ? utils.sendBackspaceKey() : utils.sendDeleteKey()); + utils.normalizeStyleAttributeValues(); + if (Array.isArray(aTest.expectedResult)) { + assert_in_array(editingHost.innerHTML, aTest.expectedResult); + } else { + assert_equals(editingHost.innerHTML, aTest.expectedResult); + } + assert_equals( + document.body.childNodes.length, + 1, + `The editing host should be the only child of <body> (got: "${document.body.innerHTML}")` + ); + assert_equals( + document.body.firstChild, + editingHost, + `The editing host should be the only child of <body> (got: "${document.body.innerHTML}")` + ); + }, `${backspace ? "Backspace" : "Delete"} in "<dl contenteditable>${aTest.innerHTML}</dl>"`); + } + + addPromiseTest({ + innerHTML: "<dt>{}</dt>", + expectedResult: ["<dt></dt>", "<dt><br></dt>"], + }); + addPromiseTest({ + innerHTML: "<dd>{}</dd>", + expectedResult: ["<dd></dd>", "<dd><br></dd>"], + }); + addPromiseTest({ + innerHTML: "<dd><ul><li>{}</li></ul></dd>", + expectedResult: ["<dd></dd>", "<dd><br></dd>"], + }); + addPromiseTest({ + innerHTML: "<dd><ol><li>{}</li></ol></dd>", + expectedResult: ["<dd></dd>", "<dd><br></dd>"], + }); + // If only sub-list in the editing host list element, the sub-list should be + // replaced with a list item. + addPromiseTest({ + innerHTML: "<ul><li>{}</li></ul>", + expectedResult: ["<dd></dd>", "<dd><br></dd>"], + }); + addPromiseTest({ + innerHTML: "<ol><li>{}</li></ol>", + expectedResult: ["<dd></dd>", "<dd><br></dd>"], + }); + addPromiseTest({ + innerHTML: "<dl><dt>{}</dt></dl>", + expectedResult: ["<dd></dd>", "<dd><br></dd>"], + }); + addPromiseTest({ + innerHTML: "<dl><dd>{}</dd></dl>", + expectedResult: ["<dd></dd>", "<dd><br></dd>"], + }); +}, {once:true}); +</script> +</head> +<body></body> +</html> diff --git a/tests/wpt/web-platform-tests/editing/other/delete-in-last-list-item-when-parent-list-is-editing-host.html b/tests/wpt/web-platform-tests/editing/other/delete-in-last-list-item-when-parent-list-is-editing-host.html new file mode 100644 index 00000000000..7d159439353 --- /dev/null +++ b/tests/wpt/web-platform-tests/editing/other/delete-in-last-list-item-when-parent-list-is-editing-host.html @@ -0,0 +1,87 @@ +<!doctype html> +<html> +<head> +<meta charset="utf-8"> +<meta name="timeout" content="long"> +<meta name="variant" content="?list=ul&action=Backspace"> +<meta name="variant" content="?list=ul&action=Delete"> +<meta name="variant" content="?list=ol&action=Backspace"> +<meta name="variant" content="?list=ol&action=Delete"> +<title>Delete in last list item should not delete parent list if it's editing host</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/resources/testdriver-actions.js"></script> +<script src="../include/editor-test-utils.js"></script> +<script> +"use strict"; + +const params = new URLSearchParams(location.search.substring(1)); +const backspace = params.get("action") == "Backspace"; +const list = params.get("list"); + +addEventListener("load", () => { + document.body.innerHTML =`<${list} contenteditable></${list}>`; + const editingHost = document.querySelector("[contenteditable]"); + const utils = new EditorTestUtils(editingHost); + + function addPromiseTest(aTest) { + promise_test(async () => { + editingHost.focus(); + utils.setupEditingHost(aTest.innerHTML); + await (backspace ? utils.sendBackspaceKey() : utils.sendDeleteKey()); + utils.normalizeStyleAttributeValues(); + if (Array.isArray(aTest.expectedResult)) { + assert_in_array(editingHost.innerHTML, aTest.expectedResult); + } else { + assert_equals(editingHost.innerHTML, aTest.expectedResult); + } + assert_equals( + document.body.childNodes.length, + 1, + `The editing host should be the only child of <body> (got: "${document.body.innerHTML}")` + ); + assert_equals( + document.body.firstChild, + editingHost, + `The editing host should be the only child of <body> (got: "${document.body.innerHTML}")` + ); + }, `${backspace ? "Backspace" : "Delete"} in "<${list} contenteditable>${aTest.innerHTML}</${list}>"`); + } + + addPromiseTest({ + innerHTML: "<li>{}</li>", + expectedResult: ["<li></li>", "<li><br></li>"], + }); + addPromiseTest({ + innerHTML: "<li><ul><li>{}</li></ul></li>", + expectedResult: ["<li></li>", "<li><br></li>"], + }); + addPromiseTest({ + innerHTML: "<li><ol><li>{}</li></ol></li>", + expectedResult: ["<li></li>", "<li><br></li>"], + }); + // If only sub-list in the editing host list element, the sub-list should be + // replaced with a list item. + addPromiseTest({ + innerHTML: "<ul><li>{}</li></ul>", + expectedResult: ["<li></li>", "<li><br></li>"], + }); + addPromiseTest({ + innerHTML: "<ol><li>{}</li></ol>", + expectedResult: ["<li></li>", "<li><br></li>"], + }); + addPromiseTest({ + innerHTML: "<dl><dt>{}</dt></dl>", + expectedResult: ["<li></li>", "<li><br></li>"], + }); + addPromiseTest({ + innerHTML: "<dl><dd>{}</dd></dl>", + expectedResult: ["<li></li>", "<li><br></li>"], + }); +}, {once:true}); +</script> +</head> +<body></body> +</html> diff --git a/tests/wpt/web-platform-tests/editing/run/backcolor.html b/tests/wpt/web-platform-tests/editing/run/backcolor.html index 5911de309d0..5a4c35c34e5 100644 --- a/tests/wpt/web-platform-tests/editing/run/backcolor.html +++ b/tests/wpt/web-platform-tests/editing/run/backcolor.html @@ -4,8 +4,6 @@ <link rel=stylesheet href=../include/reset.css> <title>backcolor - HTML editing conformance tests</title> -<p id=timing></p> - <div id=log></div> <div id=test-container></div> @@ -21,8 +19,6 @@ "use strict"; (function() { - var startTime = Date.now(); - // Make document.body.innerHTML more tidy by removing unnecessary things. [].forEach.call(document.querySelectorAll("script"), function(node) { node.parentNode.removeChild(node); @@ -43,11 +39,5 @@ document.getElementById("test-container").parentNode .removeChild(document.getElementById("test-container")); - - var elapsed = Math.round(Date.now() - startTime)/1000; - document.getElementById("timing").textContent = - "Time elapsed: " + Math.floor(elapsed/60) + ":" - + ((elapsed % 60) < 10 ? "0" : "") - + (elapsed % 60).toFixed(3) + " min."; })(); </script> diff --git a/tests/wpt/web-platform-tests/editing/run/bold.html b/tests/wpt/web-platform-tests/editing/run/bold.html index 390d6810d85..30981f66589 100644 --- a/tests/wpt/web-platform-tests/editing/run/bold.html +++ b/tests/wpt/web-platform-tests/editing/run/bold.html @@ -8,8 +8,6 @@ <link rel=stylesheet href=../include/reset.css> <title>bold - HTML editing conformance tests</title> -<p id=timing></p> - <div id=log></div> <div id=test-container></div> @@ -25,8 +23,6 @@ "use strict"; (function() { - var startTime = Date.now(); - // Make document.body.innerHTML more tidy by removing unnecessary things. [].forEach.call(document.querySelectorAll("script"), function(node) { node.parentNode.removeChild(node); @@ -48,10 +44,5 @@ document.getElementById("test-container").parentNode .removeChild(document.getElementById("test-container")); - var elapsed = Math.round(Date.now() - startTime)/1000; - document.getElementById("timing").textContent = - "Time elapsed: " + Math.floor(elapsed/60) + ":" - + ((elapsed % 60) < 10 ? "0" : "") - + (elapsed % 60).toFixed(3) + " min."; })(); </script> diff --git a/tests/wpt/web-platform-tests/editing/run/createlink.html b/tests/wpt/web-platform-tests/editing/run/createlink.html index b67357e684a..21c190703ae 100644 --- a/tests/wpt/web-platform-tests/editing/run/createlink.html +++ b/tests/wpt/web-platform-tests/editing/run/createlink.html @@ -4,8 +4,6 @@ <link rel=stylesheet href=../include/reset.css> <title>createlink - HTML editing conformance tests</title> -<p id=timing></p> - <div id=log></div> <div id=test-container></div> @@ -21,8 +19,6 @@ "use strict"; (function() { - var startTime = Date.now(); - // Make document.body.innerHTML more tidy by removing unnecessary things. [].forEach.call(document.querySelectorAll("script"), function(node) { node.parentNode.removeChild(node); @@ -44,10 +40,5 @@ document.getElementById("test-container").parentNode .removeChild(document.getElementById("test-container")); - var elapsed = Math.round(Date.now() - startTime)/1000; - document.getElementById("timing").textContent = - "Time elapsed: " + Math.floor(elapsed/60) + ":" - + ((elapsed % 60) < 10 ? "0" : "") - + (elapsed % 60).toFixed(3) + " min."; })(); </script> diff --git a/tests/wpt/web-platform-tests/editing/run/delete-list-items-in-table-cell.html b/tests/wpt/web-platform-tests/editing/run/delete-list-items-in-table-cell.html index b765bc4b977..88f44589872 100644 --- a/tests/wpt/web-platform-tests/editing/run/delete-list-items-in-table-cell.html +++ b/tests/wpt/web-platform-tests/editing/run/delete-list-items-in-table-cell.html @@ -4,8 +4,6 @@ <link rel=stylesheet href=../include/reset.css> <title>delete list items in table cells - HTML editing conformance tests</title> -<p id=timing></p> - <div id=log></div> <div id=test-container></div> @@ -21,8 +19,6 @@ "use strict"; (function() { - var startTime = Date.now(); - // Make document.body.innerHTML more tidy by removing unnecessary things. [].forEach.call(document.querySelectorAll("script"), function(node) { node.parentNode.removeChild(node); @@ -44,10 +40,5 @@ document.getElementById("test-container").parentNode .removeChild(document.getElementById("test-container")); - var elapsed = Math.round(Date.now() - startTime)/1000; - document.getElementById("timing").textContent = - "Time elapsed: " + Math.floor(elapsed/60) + ":" - + ((elapsed % 60) < 10 ? "0" : "") - + (elapsed % 60).toFixed(3) + " min."; })(); </script> diff --git a/tests/wpt/web-platform-tests/editing/run/delete.html b/tests/wpt/web-platform-tests/editing/run/delete.html index 2d11f6af26b..6a01ffd0441 100644 --- a/tests/wpt/web-platform-tests/editing/run/delete.html +++ b/tests/wpt/web-platform-tests/editing/run/delete.html @@ -12,8 +12,6 @@ <link rel=stylesheet href=../include/reset.css> <title>delete - HTML editing conformance tests</title> -<p id=timing></p> - <div id=log></div> <div id=test-container></div> @@ -29,8 +27,6 @@ "use strict"; (function() { - var startTime = Date.now(); - // Make document.body.innerHTML more tidy by removing unnecessary things. [].forEach.call(document.querySelectorAll("script"), function(node) { node.parentNode.removeChild(node); @@ -51,11 +47,5 @@ document.getElementById("test-container").parentNode .removeChild(document.getElementById("test-container")); - - var elapsed = Math.round(Date.now() - startTime)/1000; - document.getElementById("timing").textContent = - "Time elapsed: " + Math.floor(elapsed/60) + ":" - + ((elapsed % 60) < 10 ? "0" : "") - + (elapsed % 60).toFixed(3) + " min."; })(); </script> diff --git a/tests/wpt/web-platform-tests/editing/run/fontname.html b/tests/wpt/web-platform-tests/editing/run/fontname.html index 53800c540c4..b9bb3b19f85 100644 --- a/tests/wpt/web-platform-tests/editing/run/fontname.html +++ b/tests/wpt/web-platform-tests/editing/run/fontname.html @@ -7,8 +7,6 @@ <link rel=stylesheet href=../include/reset.css> <title>fontname - HTML editing conformance tests</title> -<p id=timing></p> - <div id=log></div> <div id=test-container></div> @@ -24,8 +22,6 @@ "use strict"; (function() { - var startTime = Date.now(); - // Make document.body.innerHTML more tidy by removing unnecessary things. [].forEach.call(document.querySelectorAll("script"), function(node) { node.parentNode.removeChild(node); @@ -46,11 +42,5 @@ document.getElementById("test-container").parentNode .removeChild(document.getElementById("test-container")); - - var elapsed = Math.round(Date.now() - startTime)/1000; - document.getElementById("timing").textContent = - "Time elapsed: " + Math.floor(elapsed/60) + ":" - + ((elapsed % 60) < 10 ? "0" : "") - + (elapsed % 60).toFixed(3) + " min."; })(); </script> diff --git a/tests/wpt/web-platform-tests/editing/run/fontsize.html b/tests/wpt/web-platform-tests/editing/run/fontsize.html index 66ae99ebc10..830a347346e 100644 --- a/tests/wpt/web-platform-tests/editing/run/fontsize.html +++ b/tests/wpt/web-platform-tests/editing/run/fontsize.html @@ -7,8 +7,6 @@ <link rel=stylesheet href=../include/reset.css> <title>fontsize - HTML editing conformance tests</title> -<p id=timing></p> - <div id=log></div> <div id=test-container></div> @@ -24,8 +22,6 @@ "use strict"; (function() { - var startTime = Date.now(); - // Make document.body.innerHTML more tidy by removing unnecessary things. [].forEach.call(document.querySelectorAll("script"), function(node) { node.parentNode.removeChild(node); @@ -46,11 +42,5 @@ document.getElementById("test-container").parentNode .removeChild(document.getElementById("test-container")); - - var elapsed = Math.round(Date.now() - startTime)/1000; - document.getElementById("timing").textContent = - "Time elapsed: " + Math.floor(elapsed/60) + ":" - + ((elapsed % 60) < 10 ? "0" : "") - + (elapsed % 60).toFixed(3) + " min."; })(); </script> diff --git a/tests/wpt/web-platform-tests/editing/run/forecolor.html b/tests/wpt/web-platform-tests/editing/run/forecolor.html index 8594e061c14..2ab5736b42c 100644 --- a/tests/wpt/web-platform-tests/editing/run/forecolor.html +++ b/tests/wpt/web-platform-tests/editing/run/forecolor.html @@ -7,8 +7,6 @@ <link rel=stylesheet href=../include/reset.css> <title>forecolor - HTML editing conformance tests</title> -<p id=timing></p> - <div id=log></div> <div id=test-container></div> @@ -24,8 +22,6 @@ "use strict"; (function() { - var startTime = Date.now(); - // Make document.body.innerHTML more tidy by removing unnecessary things. [].forEach.call(document.querySelectorAll("script"), function(node) { node.parentNode.removeChild(node); @@ -46,11 +42,5 @@ document.getElementById("test-container").parentNode .removeChild(document.getElementById("test-container")); - - var elapsed = Math.round(Date.now() - startTime)/1000; - document.getElementById("timing").textContent = - "Time elapsed: " + Math.floor(elapsed/60) + ":" - + ((elapsed % 60) < 10 ? "0" : "") - + (elapsed % 60).toFixed(3) + " min."; })(); </script> diff --git a/tests/wpt/web-platform-tests/editing/run/formatblock.html b/tests/wpt/web-platform-tests/editing/run/formatblock.html index 5c97c08e732..f15f2c03dac 100644 --- a/tests/wpt/web-platform-tests/editing/run/formatblock.html +++ b/tests/wpt/web-platform-tests/editing/run/formatblock.html @@ -9,8 +9,6 @@ <link rel=stylesheet href=../include/reset.css> <title>formatblock - HTML editing conformance tests</title> -<p id=timing></p> - <div id=log></div> <div id=test-container></div> @@ -26,8 +24,6 @@ "use strict"; (function() { - var startTime = Date.now(); - // Make document.body.innerHTML more tidy by removing unnecessary things. [].forEach.call(document.querySelectorAll("script"), function(node) { node.parentNode.removeChild(node); @@ -48,11 +44,5 @@ document.getElementById("test-container").parentNode .removeChild(document.getElementById("test-container")); - - var elapsed = Math.round(Date.now() - startTime)/1000; - document.getElementById("timing").textContent = - "Time elapsed: " + Math.floor(elapsed/60) + ":" - + ((elapsed % 60) < 10 ? "0" : "") - + (elapsed % 60).toFixed(3) + " min."; })(); </script> diff --git a/tests/wpt/web-platform-tests/editing/run/forwarddelete.html b/tests/wpt/web-platform-tests/editing/run/forwarddelete.html index e17190053ac..570da5a183c 100644 --- a/tests/wpt/web-platform-tests/editing/run/forwarddelete.html +++ b/tests/wpt/web-platform-tests/editing/run/forwarddelete.html @@ -11,8 +11,6 @@ <link rel=stylesheet href=../include/reset.css> <title>forwarddelete - HTML editing conformance tests</title> -<p id=timing></p> - <div id=log></div> <div id=test-container></div> @@ -28,8 +26,6 @@ "use strict"; (function() { - var startTime = Date.now(); - // Make document.body.innerHTML more tidy by removing unnecessary things. [].forEach.call(document.querySelectorAll("script"), function(node) { node.parentNode.removeChild(node); @@ -50,11 +46,5 @@ document.getElementById("test-container").parentNode .removeChild(document.getElementById("test-container")); - - var elapsed = Math.round(Date.now() - startTime)/1000; - document.getElementById("timing").textContent = - "Time elapsed: " + Math.floor(elapsed/60) + ":" - + ((elapsed % 60) < 10 ? "0" : "") - + (elapsed % 60).toFixed(3) + " min."; })(); </script> diff --git a/tests/wpt/web-platform-tests/editing/run/hilitecolor.html b/tests/wpt/web-platform-tests/editing/run/hilitecolor.html index cd9e5528e56..1d123b1c10f 100644 --- a/tests/wpt/web-platform-tests/editing/run/hilitecolor.html +++ b/tests/wpt/web-platform-tests/editing/run/hilitecolor.html @@ -4,8 +4,6 @@ <link rel=stylesheet href=../include/reset.css> <title>hilitecolor - HTML editing conformance tests</title> -<p id=timing></p> - <div id=log></div> <div id=test-container></div> @@ -21,8 +19,6 @@ "use strict"; (function() { - var startTime = Date.now(); - // Make document.body.innerHTML more tidy by removing unnecessary things. [].forEach.call(document.querySelectorAll("script"), function(node) { node.parentNode.removeChild(node); @@ -44,10 +40,5 @@ document.getElementById("test-container").parentNode .removeChild(document.getElementById("test-container")); - var elapsed = Math.round(Date.now() - startTime)/1000; - document.getElementById("timing").textContent = - "Time elapsed: " + Math.floor(elapsed/60) + ":" - + ((elapsed % 60) < 10 ? "0" : "") - + (elapsed % 60).toFixed(3) + " min."; })(); </script> diff --git a/tests/wpt/web-platform-tests/editing/run/indent.html b/tests/wpt/web-platform-tests/editing/run/indent.html index 13e98f5ea64..a4f2de86c1a 100644 --- a/tests/wpt/web-platform-tests/editing/run/indent.html +++ b/tests/wpt/web-platform-tests/editing/run/indent.html @@ -4,8 +4,6 @@ <link rel=stylesheet href=../include/reset.css> <title>indent - HTML editing conformance tests</title> -<p id=timing></p> - <div id=log></div> <div id=test-container></div> @@ -21,8 +19,6 @@ "use strict"; (function() { - var startTime = Date.now(); - // Make document.body.innerHTML more tidy by removing unnecessary things. [].forEach.call(document.querySelectorAll("script"), function(node) { node.parentNode.removeChild(node); @@ -43,11 +39,5 @@ document.getElementById("test-container").parentNode .removeChild(document.getElementById("test-container")); - - var elapsed = Math.round(Date.now() - startTime)/1000; - document.getElementById("timing").textContent = - "Time elapsed: " + Math.floor(elapsed/60) + ":" - + ((elapsed % 60) < 10 ? "0" : "") - + (elapsed % 60).toFixed(3) + " min."; })(); </script> diff --git a/tests/wpt/web-platform-tests/editing/run/insert-list-items-in-table-cell.html b/tests/wpt/web-platform-tests/editing/run/insert-list-items-in-table-cell.html index 8d08f8c3eb9..2d176b567bf 100644 --- a/tests/wpt/web-platform-tests/editing/run/insert-list-items-in-table-cell.html +++ b/tests/wpt/web-platform-tests/editing/run/insert-list-items-in-table-cell.html @@ -4,8 +4,6 @@ <link rel=stylesheet href=../include/reset.css> <title>Insert list items in table cells - HTML editing conformance tests</title> -<p id=timing></p> - <div id=log></div> <div id=test-container></div> @@ -21,8 +19,6 @@ "use strict"; (function() { - var startTime = Date.now(); - // Make document.body.innerHTML more tidy by removing unnecessary things. [].forEach.call(document.querySelectorAll("script"), function(node) { node.parentNode.removeChild(node); @@ -43,11 +39,5 @@ document.getElementById("test-container").parentNode .removeChild(document.getElementById("test-container")); - - var elapsed = Math.round(Date.now() - startTime)/1000; - document.getElementById("timing").textContent = - "Time elapsed: " + Math.floor(elapsed/60) + ":" - + ((elapsed % 60) < 10 ? "0" : "") - + (elapsed % 60).toFixed(3) + " min."; })(); </script> diff --git a/tests/wpt/web-platform-tests/editing/run/inserthorizontalrule.html b/tests/wpt/web-platform-tests/editing/run/inserthorizontalrule.html index 6e3e5490a60..7c570fbcfde 100644 --- a/tests/wpt/web-platform-tests/editing/run/inserthorizontalrule.html +++ b/tests/wpt/web-platform-tests/editing/run/inserthorizontalrule.html @@ -4,8 +4,6 @@ <link rel=stylesheet href=../include/reset.css> <title>inserthorizontalrule - HTML editing conformance tests</title> -<p id=timing></p> - <div id=log></div> <div id=test-container></div> @@ -21,8 +19,6 @@ "use strict"; (function() { - var startTime = Date.now(); - // Make document.body.innerHTML more tidy by removing unnecessary things. [].forEach.call(document.querySelectorAll("script"), function(node) { node.parentNode.removeChild(node); @@ -43,11 +39,5 @@ document.getElementById("test-container").parentNode .removeChild(document.getElementById("test-container")); - - var elapsed = Math.round(Date.now() - startTime)/1000; - document.getElementById("timing").textContent = - "Time elapsed: " + Math.floor(elapsed/60) + ":" - + ((elapsed % 60) < 10 ? "0" : "") - + (elapsed % 60).toFixed(3) + " min."; })(); </script> diff --git a/tests/wpt/web-platform-tests/editing/run/inserthtml.html b/tests/wpt/web-platform-tests/editing/run/inserthtml.html index f83102e6a9b..f27df67b72b 100644 --- a/tests/wpt/web-platform-tests/editing/run/inserthtml.html +++ b/tests/wpt/web-platform-tests/editing/run/inserthtml.html @@ -4,8 +4,6 @@ <link rel=stylesheet href=../include/reset.css> <title>inserthtml - HTML editing conformance tests</title> -<p id=timing></p> - <div id=log></div> <div id=test-container></div> @@ -21,8 +19,6 @@ "use strict"; (function() { - var startTime = Date.now(); - // Make document.body.innerHTML more tidy by removing unnecessary things. [].forEach.call(document.querySelectorAll("script"), function(node) { node.parentNode.removeChild(node); @@ -43,11 +39,5 @@ document.getElementById("test-container").parentNode .removeChild(document.getElementById("test-container")); - - var elapsed = Math.round(Date.now() - startTime)/1000; - document.getElementById("timing").textContent = - "Time elapsed: " + Math.floor(elapsed/60) + ":" - + ((elapsed % 60) < 10 ? "0" : "") - + (elapsed % 60).toFixed(3) + " min."; })(); </script> diff --git a/tests/wpt/web-platform-tests/editing/run/insertimage.html b/tests/wpt/web-platform-tests/editing/run/insertimage.html index 7a1f7b92266..9987b98b7de 100644 --- a/tests/wpt/web-platform-tests/editing/run/insertimage.html +++ b/tests/wpt/web-platform-tests/editing/run/insertimage.html @@ -4,8 +4,6 @@ <link rel=stylesheet href=../include/reset.css> <title>insertimage - HTML editing conformance tests</title> -<p id=timing></p> - <div id=log></div> <div id=test-container></div> @@ -21,8 +19,6 @@ "use strict"; (function() { - var startTime = Date.now(); - // Make document.body.innerHTML more tidy by removing unnecessary things. [].forEach.call(document.querySelectorAll("script"), function(node) { node.parentNode.removeChild(node); @@ -43,11 +39,5 @@ document.getElementById("test-container").parentNode .removeChild(document.getElementById("test-container")); - - var elapsed = Math.round(Date.now() - startTime)/1000; - document.getElementById("timing").textContent = - "Time elapsed: " + Math.floor(elapsed/60) + ":" - + ((elapsed % 60) < 10 ? "0" : "") - + (elapsed % 60).toFixed(3) + " min."; })(); </script> diff --git a/tests/wpt/web-platform-tests/editing/run/insertlinebreak.html b/tests/wpt/web-platform-tests/editing/run/insertlinebreak.html index ddab665084b..4ca86b8b5f8 100644 --- a/tests/wpt/web-platform-tests/editing/run/insertlinebreak.html +++ b/tests/wpt/web-platform-tests/editing/run/insertlinebreak.html @@ -4,8 +4,6 @@ <link rel=stylesheet href=../include/reset.css> <title>insertlinebreak - HTML editing conformance tests</title> -<p id=timing></p> - <div id=log></div> <div id=test-container></div> @@ -21,8 +19,6 @@ "use strict"; (function() { - var startTime = Date.now(); - // Make document.body.innerHTML more tidy by removing unnecessary things. [].forEach.call(document.querySelectorAll("script"), function(node) { node.parentNode.removeChild(node); @@ -43,11 +39,5 @@ document.getElementById("test-container").parentNode .removeChild(document.getElementById("test-container")); - - var elapsed = Math.round(Date.now() - startTime)/1000; - document.getElementById("timing").textContent = - "Time elapsed: " + Math.floor(elapsed/60) + ":" - + ((elapsed % 60) < 10 ? "0" : "") - + (elapsed % 60).toFixed(3) + " min."; })(); </script> diff --git a/tests/wpt/web-platform-tests/editing/run/insertorderedlist.html b/tests/wpt/web-platform-tests/editing/run/insertorderedlist.html index 68772355c24..06662df7610 100644 --- a/tests/wpt/web-platform-tests/editing/run/insertorderedlist.html +++ b/tests/wpt/web-platform-tests/editing/run/insertorderedlist.html @@ -4,8 +4,6 @@ <link rel=stylesheet href=../include/reset.css> <title>insertorderedlist - HTML editing conformance tests</title> -<p id=timing></p> - <div id=log></div> <div id=test-container></div> @@ -21,8 +19,6 @@ "use strict"; (function() { - var startTime = Date.now(); - // Make document.body.innerHTML more tidy by removing unnecessary things. [].forEach.call(document.querySelectorAll("script"), function(node) { node.parentNode.removeChild(node); @@ -43,11 +39,5 @@ document.getElementById("test-container").parentNode .removeChild(document.getElementById("test-container")); - - var elapsed = Math.round(Date.now() - startTime)/1000; - document.getElementById("timing").textContent = - "Time elapsed: " + Math.floor(elapsed/60) + ":" - + ((elapsed % 60) < 10 ? "0" : "") - + (elapsed % 60).toFixed(3) + " min."; })(); </script> diff --git a/tests/wpt/web-platform-tests/editing/run/insertparagraph.html b/tests/wpt/web-platform-tests/editing/run/insertparagraph.html index 173c5aea40b..56b5335ea7e 100644 --- a/tests/wpt/web-platform-tests/editing/run/insertparagraph.html +++ b/tests/wpt/web-platform-tests/editing/run/insertparagraph.html @@ -11,8 +11,6 @@ <link rel=stylesheet href=../include/reset.css> <title>insertparagraph - HTML editing conformance tests</title> -<p id=timing></p> - <div id=log></div> <div id=test-container></div> @@ -28,8 +26,6 @@ "use strict"; (function() { - var startTime = Date.now(); - // Make document.body.innerHTML more tidy by removing unnecessary things. [].forEach.call(document.querySelectorAll("script"), function(node) { node.parentNode.removeChild(node); @@ -50,11 +46,5 @@ document.getElementById("test-container").parentNode .removeChild(document.getElementById("test-container")); - - var elapsed = Math.round(Date.now() - startTime)/1000; - document.getElementById("timing").textContent = - "Time elapsed: " + Math.floor(elapsed/60) + ":" - + ((elapsed % 60) < 10 ? "0" : "") - + (elapsed % 60).toFixed(3) + " min."; })(); </script> diff --git a/tests/wpt/web-platform-tests/editing/run/inserttext.html b/tests/wpt/web-platform-tests/editing/run/inserttext.html index a01293fcae0..d0e9d7d625c 100644 --- a/tests/wpt/web-platform-tests/editing/run/inserttext.html +++ b/tests/wpt/web-platform-tests/editing/run/inserttext.html @@ -7,8 +7,6 @@ <link rel=stylesheet href=../include/reset.css> <title>inserttext - HTML editing conformance tests</title> -<p id=timing></p> - <div id=log></div> <div id=test-container></div> @@ -24,8 +22,6 @@ "use strict"; (function() { - var startTime = Date.now(); - // Make document.body.innerHTML more tidy by removing unnecessary things. [].forEach.call(document.querySelectorAll("script"), function(node) { node.parentNode.removeChild(node); @@ -46,11 +42,5 @@ document.getElementById("test-container").parentNode .removeChild(document.getElementById("test-container")); - - var elapsed = Math.round(Date.now() - startTime)/1000; - document.getElementById("timing").textContent = - "Time elapsed: " + Math.floor(elapsed/60) + ":" - + ((elapsed % 60) < 10 ? "0" : "") - + (elapsed % 60).toFixed(3) + " min."; })(); </script> diff --git a/tests/wpt/web-platform-tests/editing/run/insertunorderedlist.html b/tests/wpt/web-platform-tests/editing/run/insertunorderedlist.html index b1f636b1095..8df99f8dccd 100644 --- a/tests/wpt/web-platform-tests/editing/run/insertunorderedlist.html +++ b/tests/wpt/web-platform-tests/editing/run/insertunorderedlist.html @@ -4,8 +4,6 @@ <link rel=stylesheet href=../include/reset.css> <title>insertunorderedlist - HTML editing conformance tests</title> -<p id=timing></p> - <div id=log></div> <div id=test-container></div> @@ -21,8 +19,6 @@ "use strict"; (function() { - var startTime = Date.now(); - // Make document.body.innerHTML more tidy by removing unnecessary things. [].forEach.call(document.querySelectorAll("script"), function(node) { node.parentNode.removeChild(node); @@ -43,11 +39,5 @@ document.getElementById("test-container").parentNode .removeChild(document.getElementById("test-container")); - - var elapsed = Math.round(Date.now() - startTime)/1000; - document.getElementById("timing").textContent = - "Time elapsed: " + Math.floor(elapsed/60) + ":" - + ((elapsed % 60) < 10 ? "0" : "") - + (elapsed % 60).toFixed(3) + " min."; })(); </script> diff --git a/tests/wpt/web-platform-tests/editing/run/italic.html b/tests/wpt/web-platform-tests/editing/run/italic.html index 6185d553d02..d31ecf1c162 100644 --- a/tests/wpt/web-platform-tests/editing/run/italic.html +++ b/tests/wpt/web-platform-tests/editing/run/italic.html @@ -7,8 +7,6 @@ <link rel=stylesheet href=../include/reset.css> <title>italic - HTML editing conformance tests</title> -<p id=timing></p> - <div id=log></div> <div id=test-container></div> @@ -24,8 +22,6 @@ "use strict"; (function() { - var startTime = Date.now(); - // Make document.body.innerHTML more tidy by removing unnecessary things. [].forEach.call(document.querySelectorAll("script"), function(node) { node.parentNode.removeChild(node); @@ -46,11 +42,5 @@ document.getElementById("test-container").parentNode .removeChild(document.getElementById("test-container")); - - var elapsed = Math.round(Date.now() - startTime)/1000; - document.getElementById("timing").textContent = - "Time elapsed: " + Math.floor(elapsed/60) + ":" - + ((elapsed % 60) < 10 ? "0" : "") - + (elapsed % 60).toFixed(3) + " min."; })(); </script> diff --git a/tests/wpt/web-platform-tests/editing/run/justifycenter.html b/tests/wpt/web-platform-tests/editing/run/justifycenter.html index 4902a302cca..63f2d56255c 100644 --- a/tests/wpt/web-platform-tests/editing/run/justifycenter.html +++ b/tests/wpt/web-platform-tests/editing/run/justifycenter.html @@ -11,8 +11,6 @@ <link rel=stylesheet href=../include/reset.css> <title>justifycenter - HTML editing conformance tests</title> -<p id=timing></p> - <div id=log></div> <div id=test-container></div> @@ -28,8 +26,6 @@ "use strict"; (function() { - var startTime = Date.now(); - // Make document.body.innerHTML more tidy by removing unnecessary things. [].forEach.call(document.querySelectorAll("script"), function(node) { node.parentNode.removeChild(node); @@ -50,11 +46,5 @@ document.getElementById("test-container").parentNode .removeChild(document.getElementById("test-container")); - - var elapsed = Math.round(Date.now() - startTime)/1000; - document.getElementById("timing").textContent = - "Time elapsed: " + Math.floor(elapsed/60) + ":" - + ((elapsed % 60) < 10 ? "0" : "") - + (elapsed % 60).toFixed(3) + " min."; })(); </script> diff --git a/tests/wpt/web-platform-tests/editing/run/justifyfull.html b/tests/wpt/web-platform-tests/editing/run/justifyfull.html index c11befaf893..202beea8855 100644 --- a/tests/wpt/web-platform-tests/editing/run/justifyfull.html +++ b/tests/wpt/web-platform-tests/editing/run/justifyfull.html @@ -9,8 +9,6 @@ <link rel=stylesheet href=../include/reset.css> <title>justifyfull - HTML editing conformance tests</title> -<p id=timing></p> - <div id=log></div> <div id=test-container></div> @@ -26,8 +24,6 @@ "use strict"; (function() { - var startTime = Date.now(); - // Make document.body.innerHTML more tidy by removing unnecessary things. [].forEach.call(document.querySelectorAll("script"), function(node) { node.parentNode.removeChild(node); @@ -48,11 +44,5 @@ document.getElementById("test-container").parentNode .removeChild(document.getElementById("test-container")); - - var elapsed = Math.round(Date.now() - startTime)/1000; - document.getElementById("timing").textContent = - "Time elapsed: " + Math.floor(elapsed/60) + ":" - + ((elapsed % 60) < 10 ? "0" : "") - + (elapsed % 60).toFixed(3) + " min."; })(); </script> diff --git a/tests/wpt/web-platform-tests/editing/run/justifyleft.html b/tests/wpt/web-platform-tests/editing/run/justifyleft.html index f6b28185389..31772248ca8 100644 --- a/tests/wpt/web-platform-tests/editing/run/justifyleft.html +++ b/tests/wpt/web-platform-tests/editing/run/justifyleft.html @@ -7,8 +7,6 @@ <link rel=stylesheet href=../include/reset.css> <title>justifyleft - HTML editing conformance tests</title> -<p id=timing></p> - <div id=log></div> <div id=test-container></div> @@ -24,8 +22,6 @@ "use strict"; (function() { - var startTime = Date.now(); - // Make document.body.innerHTML more tidy by removing unnecessary things. [].forEach.call(document.querySelectorAll("script"), function(node) { node.parentNode.removeChild(node); @@ -46,11 +42,5 @@ document.getElementById("test-container").parentNode .removeChild(document.getElementById("test-container")); - - var elapsed = Math.round(Date.now() - startTime)/1000; - document.getElementById("timing").textContent = - "Time elapsed: " + Math.floor(elapsed/60) + ":" - + ((elapsed % 60) < 10 ? "0" : "") - + (elapsed % 60).toFixed(3) + " min."; })(); </script> diff --git a/tests/wpt/web-platform-tests/editing/run/justifyright.html b/tests/wpt/web-platform-tests/editing/run/justifyright.html index edd30b7f5f0..a8b5bcf5ea9 100644 --- a/tests/wpt/web-platform-tests/editing/run/justifyright.html +++ b/tests/wpt/web-platform-tests/editing/run/justifyright.html @@ -9,8 +9,6 @@ <link rel=stylesheet href=../include/reset.css> <title>justifyright - HTML editing conformance tests</title> -<p id=timing></p> - <div id=log></div> <div id=test-container></div> @@ -26,8 +24,6 @@ "use strict"; (function() { - var startTime = Date.now(); - // Make document.body.innerHTML more tidy by removing unnecessary things. [].forEach.call(document.querySelectorAll("script"), function(node) { node.parentNode.removeChild(node); @@ -48,11 +44,5 @@ document.getElementById("test-container").parentNode .removeChild(document.getElementById("test-container")); - - var elapsed = Math.round(Date.now() - startTime)/1000; - document.getElementById("timing").textContent = - "Time elapsed: " + Math.floor(elapsed/60) + ":" - + ((elapsed % 60) < 10 ? "0" : "") - + (elapsed % 60).toFixed(3) + " min."; })(); </script> diff --git a/tests/wpt/web-platform-tests/editing/run/misc.html b/tests/wpt/web-platform-tests/editing/run/misc.html index 5bf52682292..2bb754277a5 100644 --- a/tests/wpt/web-platform-tests/editing/run/misc.html +++ b/tests/wpt/web-platform-tests/editing/run/misc.html @@ -4,8 +4,6 @@ <link rel=stylesheet href=../include/reset.css> <title>misc - HTML editing conformance tests</title> -<p id=timing></p> - <div id=log></div> <div id=test-container></div> @@ -21,8 +19,6 @@ "use strict"; (function() { - var startTime = Date.now(); - // Make document.body.innerHTML more tidy by removing unnecessary things. [].forEach.call(document.querySelectorAll("script"), function(node) { node.parentNode.removeChild(node); @@ -43,11 +39,5 @@ document.getElementById("test-container").parentNode .removeChild(document.getElementById("test-container")); - - var elapsed = Math.round(Date.now() - startTime)/1000; - document.getElementById("timing").textContent = - "Time elapsed: " + Math.floor(elapsed/60) + ":" - + ((elapsed % 60) < 10 ? "0" : "") - + (elapsed % 60).toFixed(3) + " min."; })(); </script> diff --git a/tests/wpt/web-platform-tests/editing/run/multitest.html b/tests/wpt/web-platform-tests/editing/run/multitest.html index 813b9edc034..4213488d77a 100644 --- a/tests/wpt/web-platform-tests/editing/run/multitest.html +++ b/tests/wpt/web-platform-tests/editing/run/multitest.html @@ -14,8 +14,6 @@ <meta name="timeout" content="long"> <title>multitest - HTML editing conformance tests</title> -<p id=timing></p> - <div id=log></div> <div id=test-container></div> @@ -31,8 +29,6 @@ "use strict"; (function() { - var startTime = Date.now(); - // Make document.body.innerHTML more tidy by removing unnecessary things. [].forEach.call(document.querySelectorAll("script"), function(node) { node.parentNode.removeChild(node); @@ -53,11 +49,5 @@ document.getElementById("test-container").parentNode .removeChild(document.getElementById("test-container")); - - var elapsed = Math.round(Date.now() - startTime)/1000; - document.getElementById("timing").textContent = - "Time elapsed: " + Math.floor(elapsed/60) + ":" - + ((elapsed % 60) < 10 ? "0" : "") - + (elapsed % 60).toFixed(3) + " min."; })(); </script> diff --git a/tests/wpt/web-platform-tests/editing/run/outdent.html b/tests/wpt/web-platform-tests/editing/run/outdent.html index f1f9fb491aa..04240d9f0ff 100644 --- a/tests/wpt/web-platform-tests/editing/run/outdent.html +++ b/tests/wpt/web-platform-tests/editing/run/outdent.html @@ -7,8 +7,6 @@ <link rel=stylesheet href=../include/reset.css> <title>outdent - HTML editing conformance tests</title> -<p id=timing></p> - <div id=log></div> <div id=test-container></div> @@ -24,8 +22,6 @@ "use strict"; (function() { - var startTime = Date.now(); - // Make document.body.innerHTML more tidy by removing unnecessary things. [].forEach.call(document.querySelectorAll("script"), function(node) { node.parentNode.removeChild(node); @@ -46,11 +42,5 @@ document.getElementById("test-container").parentNode .removeChild(document.getElementById("test-container")); - - var elapsed = Math.round(Date.now() - startTime)/1000; - document.getElementById("timing").textContent = - "Time elapsed: " + Math.floor(elapsed/60) + ":" - + ((elapsed % 60) < 10 ? "0" : "") - + (elapsed % 60).toFixed(3) + " min."; })(); </script> diff --git a/tests/wpt/web-platform-tests/editing/run/removeformat.html b/tests/wpt/web-platform-tests/editing/run/removeformat.html index 0c38ff915fb..3cc695278ec 100644 --- a/tests/wpt/web-platform-tests/editing/run/removeformat.html +++ b/tests/wpt/web-platform-tests/editing/run/removeformat.html @@ -4,8 +4,6 @@ <link rel=stylesheet href=../include/reset.css> <title>removeformat - HTML editing conformance tests</title> -<p id=timing></p> - <div id=log></div> <div id=test-container></div> @@ -21,8 +19,6 @@ "use strict"; (function() { - var startTime = Date.now(); - // Make document.body.innerHTML more tidy by removing unnecessary things. [].forEach.call(document.querySelectorAll("script"), function(node) { node.parentNode.removeChild(node); @@ -43,11 +39,5 @@ document.getElementById("test-container").parentNode .removeChild(document.getElementById("test-container")); - - var elapsed = Math.round(Date.now() - startTime)/1000; - document.getElementById("timing").textContent = - "Time elapsed: " + Math.floor(elapsed/60) + ":" - + ((elapsed % 60) < 10 ? "0" : "") - + (elapsed % 60).toFixed(3) + " min."; })(); </script> diff --git a/tests/wpt/web-platform-tests/editing/run/strikethrough.html b/tests/wpt/web-platform-tests/editing/run/strikethrough.html index cb06c10d0c2..d731d3eb898 100644 --- a/tests/wpt/web-platform-tests/editing/run/strikethrough.html +++ b/tests/wpt/web-platform-tests/editing/run/strikethrough.html @@ -7,8 +7,6 @@ <link rel=stylesheet href=../include/reset.css> <title>strikethrough - HTML editing conformance tests</title> -<p id=timing></p> - <div id=log></div> <div id=test-container></div> @@ -24,8 +22,6 @@ "use strict"; (function() { - var startTime = Date.now(); - // Make document.body.innerHTML more tidy by removing unnecessary things. [].forEach.call(document.querySelectorAll("script"), function(node) { node.parentNode.removeChild(node); @@ -46,11 +42,5 @@ document.getElementById("test-container").parentNode .removeChild(document.getElementById("test-container")); - - var elapsed = Math.round(Date.now() - startTime)/1000; - document.getElementById("timing").textContent = - "Time elapsed: " + Math.floor(elapsed/60) + ":" - + ((elapsed % 60) < 10 ? "0" : "") - + (elapsed % 60).toFixed(3) + " min."; })(); </script> diff --git a/tests/wpt/web-platform-tests/editing/run/subscript.html b/tests/wpt/web-platform-tests/editing/run/subscript.html index e0071d7a080..24fb79932f2 100644 --- a/tests/wpt/web-platform-tests/editing/run/subscript.html +++ b/tests/wpt/web-platform-tests/editing/run/subscript.html @@ -4,8 +4,6 @@ <link rel=stylesheet href=../include/reset.css> <title>subscript - HTML editing conformance tests</title> -<p id=timing></p> - <div id=log></div> <div id=test-container></div> @@ -21,8 +19,6 @@ "use strict"; (function() { - var startTime = Date.now(); - // Make document.body.innerHTML more tidy by removing unnecessary things. [].forEach.call(document.querySelectorAll("script"), function(node) { node.parentNode.removeChild(node); @@ -43,11 +39,5 @@ document.getElementById("test-container").parentNode .removeChild(document.getElementById("test-container")); - - var elapsed = Math.round(Date.now() - startTime)/1000; - document.getElementById("timing").textContent = - "Time elapsed: " + Math.floor(elapsed/60) + ":" - + ((elapsed % 60) < 10 ? "0" : "") - + (elapsed % 60).toFixed(3) + " min."; })(); </script> diff --git a/tests/wpt/web-platform-tests/editing/run/superscript.html b/tests/wpt/web-platform-tests/editing/run/superscript.html index 0c3519b288e..de28a9c5365 100644 --- a/tests/wpt/web-platform-tests/editing/run/superscript.html +++ b/tests/wpt/web-platform-tests/editing/run/superscript.html @@ -4,8 +4,6 @@ <link rel=stylesheet href=../include/reset.css> <title>superscript - HTML editing conformance tests</title> -<p id=timing></p> - <div id=log></div> <div id=test-container></div> @@ -21,8 +19,6 @@ "use strict"; (function() { - var startTime = Date.now(); - // Make document.body.innerHTML more tidy by removing unnecessary things. [].forEach.call(document.querySelectorAll("script"), function(node) { node.parentNode.removeChild(node); @@ -43,11 +39,5 @@ document.getElementById("test-container").parentNode .removeChild(document.getElementById("test-container")); - - var elapsed = Math.round(Date.now() - startTime)/1000; - document.getElementById("timing").textContent = - "Time elapsed: " + Math.floor(elapsed/60) + ":" - + ((elapsed % 60) < 10 ? "0" : "") - + (elapsed % 60).toFixed(3) + " min."; })(); </script> diff --git a/tests/wpt/web-platform-tests/editing/run/underline.html b/tests/wpt/web-platform-tests/editing/run/underline.html index f53add984bd..880b3e20323 100644 --- a/tests/wpt/web-platform-tests/editing/run/underline.html +++ b/tests/wpt/web-platform-tests/editing/run/underline.html @@ -7,8 +7,6 @@ <link rel=stylesheet href=../include/reset.css> <title>underline - HTML editing conformance tests</title> -<p id=timing></p> - <div id=log></div> <div id=test-container></div> @@ -24,8 +22,6 @@ "use strict"; (function() { - var startTime = Date.now(); - // Make document.body.innerHTML more tidy by removing unnecessary things. [].forEach.call(document.querySelectorAll("script"), function(node) { node.parentNode.removeChild(node); @@ -46,11 +42,5 @@ document.getElementById("test-container").parentNode .removeChild(document.getElementById("test-container")); - - var elapsed = Math.round(Date.now() - startTime)/1000; - document.getElementById("timing").textContent = - "Time elapsed: " + Math.floor(elapsed/60) + ":" - + ((elapsed % 60) < 10 ? "0" : "") - + (elapsed % 60).toFixed(3) + " min."; })(); </script> diff --git a/tests/wpt/web-platform-tests/editing/run/unlink.html b/tests/wpt/web-platform-tests/editing/run/unlink.html index 5a623b4a09f..331792f9240 100644 --- a/tests/wpt/web-platform-tests/editing/run/unlink.html +++ b/tests/wpt/web-platform-tests/editing/run/unlink.html @@ -8,7 +8,6 @@ font-weight: bold; } </style> -<p id=timing></p> <div id=log></div> @@ -25,8 +24,6 @@ "use strict"; (function() { - var startTime = Date.now(); - // Make document.body.innerHTML more tidy by removing unnecessary things. [].forEach.call(document.querySelectorAll("script"), function(node) { node.parentNode.removeChild(node); @@ -47,11 +44,5 @@ document.getElementById("test-container").parentNode .removeChild(document.getElementById("test-container")); - - var elapsed = Math.round(Date.now() - startTime)/1000; - document.getElementById("timing").textContent = - "Time elapsed: " + Math.floor(elapsed/60) + ":" - + ((elapsed % 60) < 10 ? "0" : "") - + (elapsed % 60).toFixed(3) + " min."; })(); </script> diff --git a/tests/wpt/web-platform-tests/file-system-access/local_FileSystemFileHandle-create-sync-access-handle-manual.https.tentative.html b/tests/wpt/web-platform-tests/file-system-access/local_FileSystemFileHandle-create-sync-access-handle-manual.https.tentative.html index 4641b13a45b..0a67f5b26d2 100644 --- a/tests/wpt/web-platform-tests/file-system-access/local_FileSystemFileHandle-create-sync-access-handle-manual.https.tentative.html +++ b/tests/wpt/web-platform-tests/file-system-access/local_FileSystemFileHandle-create-sync-access-handle-manual.https.tentative.html @@ -9,9 +9,3 @@ <script src="resources/local-fs-test-helpers.js"></script> <script src="resources/messaging-helpers.js"></script> <script src="../fs/script-tests/FileSystemFileHandle-create-sync-access-handle.js"></script> - -<script> - //This variable allows the test to differentiate between local and sandboxed - //file systems, since createSyncAccessHandle() behavior is different each one. - const file_system_type = "local"; -</script> diff --git a/tests/wpt/web-platform-tests/file-system-access/resources/local-fs-test-helpers.js b/tests/wpt/web-platform-tests/file-system-access/resources/local-fs-test-helpers.js index 54961ae54bc..4bb9793085a 100644 --- a/tests/wpt/web-platform-tests/file-system-access/resources/local-fs-test-helpers.js +++ b/tests/wpt/web-platform-tests/file-system-access/resources/local-fs-test-helpers.js @@ -7,6 +7,10 @@ // fs/resources/sandboxed-fs-test-helpers.js, where that version uses the // sandboxed file system instead. +function getFileSystemType() { + return 'local'; +} + const directory_promise = (async () => { await new Promise(resolve => { window.addEventListener('DOMContentLoaded', resolve); diff --git a/tests/wpt/web-platform-tests/fs/FileSystemFileHandle-create-sync-access-handle.https.tentative.window.js b/tests/wpt/web-platform-tests/fs/FileSystemFileHandle-create-sync-access-handle.https.tentative.window.js index aa4d91d15da..6e20b57cb7b 100644 --- a/tests/wpt/web-platform-tests/fs/FileSystemFileHandle-create-sync-access-handle.https.tentative.window.js +++ b/tests/wpt/web-platform-tests/fs/FileSystemFileHandle-create-sync-access-handle.https.tentative.window.js @@ -2,7 +2,3 @@ // META: script=resources/sandboxed-fs-test-helpers.js // META: script=resources/messaging-helpers.js // META: script=script-tests/FileSystemFileHandle-create-sync-access-handle.js - -// This variable allows the test to differentiate between local and sandboxed -// file systems, since createSyncAccessHandle() behavior is different each one. -const file_system_type = 'sandboxed'; diff --git a/tests/wpt/web-platform-tests/fs/resources/sandboxed-fs-test-helpers.js b/tests/wpt/web-platform-tests/fs/resources/sandboxed-fs-test-helpers.js index 9c93212f49c..400b2c507b7 100644 --- a/tests/wpt/web-platform-tests/fs/resources/sandboxed-fs-test-helpers.js +++ b/tests/wpt/web-platform-tests/fs/resources/sandboxed-fs-test-helpers.js @@ -7,6 +7,10 @@ // file-system-access/local-fs-test-helpers.js, where that version uses the // local file system instead. +function getFileSystemType() { + return 'sandboxed'; +} + async function cleanupSandboxedFileSystem() { const dir = await navigator.storage.getDirectory(); for await (let entry of dir.values()) diff --git a/tests/wpt/web-platform-tests/fs/script-tests/FileSystemFileHandle-create-sync-access-handle.js b/tests/wpt/web-platform-tests/fs/script-tests/FileSystemFileHandle-create-sync-access-handle.js index 302d4a5a7af..b9eafaf0d8c 100644 --- a/tests/wpt/web-platform-tests/fs/script-tests/FileSystemFileHandle-create-sync-access-handle.js +++ b/tests/wpt/web-platform-tests/fs/script-tests/FileSystemFileHandle-create-sync-access-handle.js @@ -5,10 +5,11 @@ // /fs/resources/test-helpers.js directory_test(async (t, root_dir) => { + const fileSystemType = getFileSystemType(); assert_true( - file_system_type == 'sandboxed' || file_system_type == 'local', + fileSystemType == 'sandboxed' || fileSystemType == 'local', 'File system type should be sandboxed or local.'); - const expect_success = file_system_type == 'sandboxed'; + const expect_success = fileSystemType == 'sandboxed'; const dedicated_worker = create_dedicated_worker(t, kDedicatedWorkerMessageTarget); diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/resources/rc-helper.js b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/resources/rc-helper.js index ef0da2da1ed..53bcdccf7c6 100644 --- a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/resources/rc-helper.js +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/resources/rc-helper.js @@ -20,31 +20,84 @@ async function getBeforeBFCache(remoteContextHelper) { // If the value in window is set to true, this means that the page was reloaded, // i.e., the page was restored from BFCache. // Call `prepareForBFCache()` before navigating away to call this function. -async function assert_implements_bfcache(remoteContextHelper) { +async function assertImplementsBFCacheOptional(remoteContextHelper) { var beforeBFCache = await getBeforeBFCache(remoteContextHelper); assert_implements_optional(beforeBFCache == true, 'BFCache not supported.'); } -// If the value in window is undefined, this means that the page was reloaded, -// i.e., the page was not restored from BFCache. +// A helper function to assert that the page is not restored from BFCache by +// checking whether the `beforeBFCache` value from `window` is undefined +// due to page reload. +// This function also takes an optional `notRestoredReasons` list which +// indicates the set of expected reasons that make the page not restored. +// If the reasons list is undefined, the check will be skipped. Otherwise +// this check will use the `notRestoredReasons` API, to obtain the reasons +// in a tree structure, and flatten the reasons before making the order- +// insensitive comparison. +// If the API is not available, the function will terminate instead of marking +// the assertion failed. // Call `prepareForBFCache()` before navigating away to call this function. -async function assert_not_bfcached(remoteContextHelper) { +async function assertNotRestoredFromBFCache( + remoteContextHelper, notRestoredReasons) { var beforeBFCache = await getBeforeBFCache(remoteContextHelper); assert_equals(beforeBFCache, undefined); + + // The reason is optional, so skip the remaining test if the + // `notRestoredReasons` is not set. + if (notRestoredReasons === undefined) { + return; + } + + let isFeatureEnabled = await remoteContextHelper.executeScript(() => { + return 'notRestoredReasons' in performance.getEntriesByType('navigation')[0]; + }); + + // Return if the `notRestoredReasons` API is not available. + if (!isFeatureEnabled) { + return; + } + + let result = await remoteContextHelper.executeScript(() => { + return performance.getEntriesByType('navigation')[0].notRestoredReasons; + }); + + let expectedNotRestoredReasonsSet = new Set(notRestoredReasons); + let notRestoredReasonsSet = new Set(); + + // Flatten the reasons from the main frame and all the child frames. + const collectReason = (node) => { + for (let reason of node.reasons) { + notRestoredReasonsSet.add(reason); + } + for (let child of node.children) { + collectReason(child); + } + } + collectReason(result); + + assert_equals(notRestoredReasonsSet.length, + expectedNotRestoredReasonsSet.length); + + for (let reason of expectedNotRestoredReasonsSet) { + assert_true(notRestoredReasonsSet.has(reason)); + } } // A helper function that combines the steps of setting window property, // navigating away and back, and making assertion on whether BFCache is // supported. -async function assertBFCache(remoteContextHelper, shouldRestoreFromBFCache) { +// This function can be used to check if the current page is eligible for +// BFCache. +async function assertBFCacheEligibility( + remoteContextHelper, shouldRestoreFromBFCache) { await prepareForBFCache(remoteContextHelper); // Navigate away and back. const newRemoteContextHelper = await remoteContextHelper.navigateToNew(); await newRemoteContextHelper.historyBack(); if (shouldRestoreFromBFCache) { - await assert_implements_bfcache(remoteContextHelper); + await assertImplementsBFCacheOptional(remoteContextHelper); } else { - await assert_not_bfcached(remoteContextHelper); + await assertNotRestoredFromBFCache(remoteContextHelper); } } diff --git a/tests/wpt/web-platform-tests/html/canvas/element/text-styles/2d.text.font.parse.size.percentage.html b/tests/wpt/web-platform-tests/html/canvas/element/text-styles/2d.text.font.parse.size.percentage.html index 92bac8d8cae..18476b3b7ad 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/text-styles/2d.text.font.parse.size.percentage.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/text-styles/2d.text.font.parse.size.percentage.html @@ -12,7 +12,7 @@ <p class="output">Actual output:</p> -<canvas id="c" class="output" style="font-size: 144px" width="100" height="50"><p class="fallback">FAIL (fallback content)</p></canvas> +<canvas id="c" class="output" width="100" height="50" style="font-size: 144px"><p class="fallback">FAIL (fallback content)</p></canvas> <ul id="d"></ul> <script> diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/gentestutils.py b/tests/wpt/web-platform-tests/html/canvas/tools/gentestutils.py index 59fa9e73e51..ecdc1067498 100644 --- a/tests/wpt/web-platform-tests/html/canvas/tools/gentestutils.py +++ b/tests/wpt/web-platform-tests/html/canvas/tools/gentestutils.py @@ -175,6 +175,21 @@ def _expand_test_code(code: str) -> str: return code +_CANVAS_SIZE_REGEX = re.compile(r'(?P<width>.*), (?P<height>.*)', + re.MULTILINE | re.DOTALL) + + +def _get_canvas_size(test: Mapping[str, str]): + size = test.get('size', '100, 50') + match = _CANVAS_SIZE_REGEX.match(size) + if not match: + raise InvalidTestDefinitionError( + 'Invalid canvas size "%s" in test %s. Expected a string matching ' + 'this pattern: "%%s, %%s" %% (width, height)' % + (size, test['name'])) + return match.group('width'), match.group('height') + + def _generate_test(test: Mapping[str, str], templates: Mapping[str, str], sub_dir: str, test_output_dir: str, image_output_dir: str, is_offscreen_canvas: bool): @@ -214,16 +229,15 @@ def _generate_test(test: Mapping[str, str], templates: Mapping[str, str], '<img src="%s" class="output expected" id="expected" ' 'alt="">' % expected_img) - canvas = test.get('canvas', 'width="100" height="50"') + canvas = ' ' + test['canvas'] if 'canvas' in test else '' + width, height = _get_canvas_size(test) notes = '<p class="notes">%s' % test['notes'] if 'notes' in test else '' timeout = ('\n<meta name="timeout" content="%s">' % test['timeout'] if 'timeout' in test else '') - - scripts = '' - for s in test.get('scripts', []): - scripts += '<script src="%s"></script>\n' % (s) + timeout_js = ('// META: timeout=%s\n' % test['timeout'] + if 'timeout' in test else '') images = '' for src in test.get('images', []): @@ -273,10 +287,12 @@ def _generate_test(test: Mapping[str, str], templates: Mapping[str, str], 'fonts': fonts, 'fonthack': fonthack, 'timeout': timeout, + 'timeout_js': timeout_js, 'canvas': canvas, + 'width': width, + 'height': height, 'expected': expectation_html, 'code': code, - 'scripts': scripts, 'fallback': fallback, 'attributes': attributes, 'context_args': context_args @@ -289,9 +305,6 @@ def _generate_test(test: Mapping[str, str], templates: Mapping[str, str], if is_offscreen_canvas: pathlib.Path(f'{test_path}.html').write_text( templates['w3coffscreencanvas'] % template_params, 'utf-8') - timeout = ('// META: timeout=%s\n' % - test['timeout'] if 'timeout' in test else '') - template_params['timeout'] = timeout pathlib.Path(f'{test_path}.worker.js').write_text( templates['w3cworker'] % template_params, 'utf-8') else: diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/gentestutilsunion.py b/tests/wpt/web-platform-tests/html/canvas/tools/gentestutilsunion.py index 3afb54de477..2a9c53e99ac 100644 --- a/tests/wpt/web-platform-tests/html/canvas/tools/gentestutilsunion.py +++ b/tests/wpt/web-platform-tests/html/canvas/tools/gentestutilsunion.py @@ -194,6 +194,21 @@ class TestConfig: enabled: bool +_CANVAS_SIZE_REGEX = re.compile(r'(?P<width>.*), (?P<height>.*)', + re.MULTILINE | re.DOTALL) + + +def _get_canvas_size(test: Mapping[str, str]): + size = test.get('size', '100, 50') + match = _CANVAS_SIZE_REGEX.match(size) + if not match: + raise InvalidTestDefinitionError( + 'Invalid canvas size "%s" in test %s. Expected a string matching ' + 'this pattern: "%%s, %%s" %% (width, height)' % + (size, test['name'])) + return match.group('width'), match.group('height') + + def _generate_test(test: Mapping[str, str], templates: Mapping[str, str], sub_dir: str, html_canvas_cfg: TestConfig, offscreen_canvas_cfg: TestConfig) -> None: @@ -241,16 +256,15 @@ def _generate_test(test: Mapping[str, str], templates: Mapping[str, str], '<img src="%s" class="output expected" id="expected" ' 'alt="">' % expected_img) - canvas = test.get('canvas', 'width="100" height="50"') + canvas = ' ' + test['canvas'] if 'canvas' in test else '' + width, height = _get_canvas_size(test) notes = '<p class="notes">%s' % test['notes'] if 'notes' in test else '' timeout = ('\n<meta name="timeout" content="%s">' % test['timeout'] if 'timeout' in test else '') - - scripts = '' - for s in test.get('scripts', []): - scripts += '<script src="%s"></script>\n' % (s) + timeout_js = ('// META: timeout=%s\n' % test['timeout'] + if 'timeout' in test else '') images = '' for src in test.get('images', []): @@ -300,10 +314,12 @@ def _generate_test(test: Mapping[str, str], templates: Mapping[str, str], 'fonts': fonts, 'fonthack': fonthack, 'timeout': timeout, + 'timeout_js': timeout_js, 'canvas': canvas, + 'width': width, + 'height': height, 'expected': expectation_html, 'code': code_canvas, - 'scripts': scripts, 'fallback': fallback, 'attributes': attributes, 'context_args': context_args @@ -319,26 +335,18 @@ def _generate_test(test: Mapping[str, str], templates: Mapping[str, str], if html_canvas_cfg.enabled: pathlib.Path(f'{canvas_path}.html').write_text( templates['w3ccanvas'] % template_params, 'utf-8') + if offscreen_canvas_cfg.enabled: + offscreen_template = templates['w3coffscreencanvas'] + worker_template = templates['w3cworker'] if ('then(t_pass, t_fail);' in code_canvas): - temp_offscreen = templates['w3coffscreencanvas'].replace( - 't.done();\n', '') - temp_worker = templates['w3cworker'].replace('t.done();\n', '') - pathlib.Path(f'{offscreen_path}.html').write_text( - temp_offscreen % template_params, 'utf-8') - timeout = ('// META: timeout=%s\n' % - test['timeout'] if 'timeout' in test else '') - template_params['timeout'] = timeout - pathlib.Path(f'{offscreen_path}.worker.js').write_text( - temp_worker % template_params, 'utf-8') - else: - pathlib.Path(f'{offscreen_path}.html').write_text( - templates['w3coffscreencanvas'] % template_params, 'utf-8') - timeout = ('// META: timeout=%s\n' % - test['timeout'] if 'timeout' in test else '') - template_params['timeout'] = timeout - pathlib.Path(f'{offscreen_path}.worker.js').write_text( - templates['w3cworker'] % template_params, 'utf-8') + offscreen_template = offscreen_template.replace('t.done();\n', '') + worker_template = worker_template.replace('t.done();\n', '') + + pathlib.Path(f'{offscreen_path}.html').write_text( + offscreen_template % template_params, 'utf-8') + pathlib.Path(f'{offscreen_path}.worker.js').write_text( + worker_template % template_params, 'utf-8') def genTestUtils_union(TEMPLATEFILE: str, NAME2DIRFILE: str) -> None: diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/templates-new.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/templates-new.yaml index 7742db88978..d8af47d2590 100644 --- a/tests/wpt/web-platform-tests/html/canvas/tools/templates-new.yaml +++ b/tests/wpt/web-platform-tests/html/canvas/tools/templates-new.yaml @@ -18,7 +18,7 @@ w3coffscreencanvas: | }); t.step(function() { - var canvas = new OffscreenCanvas(100, 50); + var canvas = new OffscreenCanvas(%(width)s, %(height)s); var ctx = canvas.getContext(%(context_args)s); %(code)s @@ -29,7 +29,7 @@ w3coffscreencanvas: | w3cworker: | - %(timeout)s// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. + %(timeout_js)s// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. // OffscreenCanvas test in a worker:%(name)s // Description:%(desc)s // Note:%(notes)s @@ -44,7 +44,7 @@ w3cworker: | }); t.step(function() { - var canvas = new OffscreenCanvas(100, 50); + var canvas = new OffscreenCanvas(%(width)s, %(height)s); var ctx = canvas.getContext(%(context_args)s); %(code)s @@ -69,7 +69,7 @@ w3ccanvas: | %(notes)s %(fonthack)s<p class="output">Actual output:</p> - <canvas id="c" class="output" %(canvas)s>%(fallback)s</canvas> + <canvas id="c" class="output" width="%(width)s" height="%(height)s"%(canvas)s>%(fallback)s</canvas> %(expected)s <ul id="d"></ul> <script> @@ -81,4 +81,4 @@ w3ccanvas: | }%(attributes)s); </script> - %(scripts)s%(images)s + %(images)s diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/templates.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/templates.yaml index f2bc2569f71..7e96e0707bc 100644 --- a/tests/wpt/web-platform-tests/html/canvas/tools/templates.yaml +++ b/tests/wpt/web-platform-tests/html/canvas/tools/templates.yaml @@ -18,7 +18,7 @@ w3coffscreencanvas: | }); t.step(function() { - var canvas = new OffscreenCanvas(100, 50); + var canvas = new OffscreenCanvas(%(width)s, %(height)s); var ctx = canvas.getContext(%(context_args)s); %(code)s @@ -27,7 +27,7 @@ w3coffscreencanvas: | w3cworker: | - %(timeout)s// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. + %(timeout_js)s// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. // OffscreenCanvas test in a worker:%(name)s // Description:%(desc)s // Note:%(notes)s @@ -42,7 +42,7 @@ w3cworker: | }); t.step(function() { - var canvas = new OffscreenCanvas(100, 50); + var canvas = new OffscreenCanvas(%(width)s, %(height)s); var ctx = canvas.getContext(%(context_args)s); %(code)s @@ -65,7 +65,7 @@ w3ccanvas: | %(notes)s %(fonthack)s<p class="output">Actual output:</p> - <canvas id="c" class="output" %(canvas)s>%(fallback)s</canvas> + <canvas id="c" class="output" width="%(width)s" height="%(height)s"%(canvas)s>%(fallback)s</canvas> %(expected)s <ul id="d"></ul> <script> @@ -76,4 +76,4 @@ w3ccanvas: | }%(attributes)s); </script> - %(scripts)s%(images)s + %(images)s diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/drawing-text-to-the-canvas.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/drawing-text-to-the-canvas.yaml index 880e3fb1a1f..e0de95560cb 100644 --- a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/drawing-text-to-the-canvas.yaml +++ b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/drawing-text-to-the-canvas.yaml @@ -332,7 +332,7 @@ desc: textAlign start with ltr is the left edge fonts: - CanvasTest - canvas: width="100" height="50" dir="ltr" + canvas: dir="ltr" code: | ctx.font = '50px CanvasTest'; deferTest(); @@ -355,7 +355,7 @@ desc: textAlign start with rtl is the right edge fonts: - CanvasTest - canvas: width="100" height="50" dir="rtl" + canvas: dir="rtl" code: | ctx.font = '50px CanvasTest'; deferTest(); @@ -378,7 +378,7 @@ desc: textAlign end with ltr is the right edge fonts: - CanvasTest - canvas: width="100" height="50" dir="ltr" + canvas: dir="ltr" code: | ctx.font = '50px CanvasTest'; deferTest(); @@ -401,7 +401,7 @@ desc: textAlign end with rtl is the left edge fonts: - CanvasTest - canvas: width="100" height="50" dir="rtl" + canvas: dir="rtl" code: | ctx.font = '50px CanvasTest'; deferTest(); diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/meta.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/meta.yaml index b8ffbd50758..ea78fe302cb 100644 --- a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/meta.yaml +++ b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/meta.yaml @@ -44,7 +44,7 @@ tests.append( { "name": "size.attributes.parse.%s" % name, "desc": "Parsing of non-negative integers", - "canvas": 'width="%s" height="%s"' % (htmlString, htmlString), + "size": '%s, %s' % (htmlString, htmlString), "code": code, "expected": expected } ) @@ -55,7 +55,7 @@ tests.append( { "name": "size.attributes.setAttribute.%s" % name, "desc": "Parsing of non-negative integers in setAttribute", - "canvas": 'width="50" height="50"', + "size": '50, 50', "code": code, "expected": expected } ) diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/text-styles.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/text-styles.yaml index 344a5a0752e..407e3462109 100644 --- a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/text-styles.yaml +++ b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/text-styles.yaml @@ -32,7 +32,7 @@ # in cm mm pt pc - name: 2d.text.font.parse.size.percentage - canvas: 'style="font-size: 144px" width="100" height="50"' + canvas: 'style="font-size: 144px"' code: | ctx.font = '50% serif'; @assert ctx.font === '72px serif'; @moz-todo diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/the-canvas-element.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/the-canvas-element.yaml index 5c07375dd2a..d6d8cd801b4 100644 --- a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/the-canvas-element.yaml +++ b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/the-canvas-element.yaml @@ -104,7 +104,8 @@ - name: 2d.scaled desc: CSS-scaled canvases get drawn correctly - canvas: 'width="50" height="25" style="width: 100px; height: 50px"' + size: 50, 25 + canvas: 'style="width: 100px; height: 50px"' manual: code: | ctx.fillStyle = '#00f'; diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/image-base-url.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/image-base-url.html index f8201c4948b..932cd92b415 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/image-base-url.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/image-base-url.html @@ -7,24 +7,64 @@ </head> <body> -<img id="img"> <script> -const t = async_test("An image request's parsed URL should be affected by a " + - "dynamically-inserted <base>, if it was inserted before " + - "the image request microtask runs"); - -t.step(() => { - const elm = document.getElementById('img'); - elm.src = 'resources/image.png'; - elm.onload = t.unreached_func("The image should have failed to load, as " + - "the request URL should be affected by the " + - "<base> element"); - elm.onerror = t.step_func_done(); - - const base = document.createElement("base"); - base.setAttribute("href", "bogus/"); - document.head.appendChild(base); -}); +// See https://github.com/whatwg/html/issues/7383 and +// https://chromium-review.googlesource.com/c/chromium/src/+/3311225. +// This test asserts two things: +// 1.) That Document base URL modifications that take place in between an +// image loading microtask being scheduled and executed are reflected in +// the final image request +// 2.) That subsequent changes to a Document's base URL before an image is +// inserted into the DOM do not lead to the image being refetched when it +// is inserted asynchronously later. This is because image insertion is +// not a relevant mutation +// (https://html.spec.whatwg.org/#relevant-mutations). +promise_test(async t => { + const image = new Image(); + image.src = 'green.png'; + + // Dynamically insert a <base> tag that should influence the above image + // request because the above code triggers a microtask to continue fetching + // the image, which will run while we await `loadPromise` below. + const base = document.createElement('base'); + base.setAttribute('href', 'resources/'); + document.head.append(base); + + const loadPromise = new Promise((resolve, reject) => { + image.addEventListener('load', e => { + resolve(); + }, {once: true}); + + image.addEventListener('error', e => { + reject('The image must load'); + }, {once: true}); + }); + + // The image should load successfully, since its request was influenced by the + // <base> element which points the request to the right directory. + await loadPromise; + + // Now manipulate the <base> element to point to a bogus directory. + base.setAttribute('href', 'bogus/'); + document.body.append(image); + + const timeoutPromise = new Promise(resolve => t.step_timeout(resolve, 1500)); + const imageErrorPromise = new Promise((resolve, reject) => { + image.addEventListener('load', e => { + reject('The image should not be refetched upon insertion and load, ' + + 'because (1) insertion is not a relevant mutation, and (2) the ' + + 'new relative URL should not resolve to a real resource'); + }, {once: true}); + + image.addEventListener('error', e => { + reject('The image should not be refetched upon insertion, because ' + + 'insertion is not a relevant mutation'); + }, {once: true}); + }); + + await Promise.race([timeoutPromise, imageErrorPromise]); +}, "An image should not be refetched upon insertion asynchronously after its " + + "Document's base URL changes"); </script> </body> </html> diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/pattern_attribute.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/pattern_attribute.html index ef01c297277..546c4b18d7f 100644 --- a/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/pattern_attribute.html +++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/pattern_attribute.html @@ -1,34 +1,26 @@ <!DOCTYPE html> -<html> - - <head> - <title>Pattern Attribute</title> - <meta name=viewport content="width=device-width, maximum-scale=1.0, user-scalable=no" /> - <link rel="author" title="Fabrice Clari" href="mailto:f.clari@inno-group.com"> - <link rel="author" title="Dimitri Bocquet" href="mailto:Dimitri.Bocquet@mosquito-fp7.eu"> - <link rel="help" href="https://html.spec.whatwg.org/multipage/#attr-input-pattern"> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - </head> - - <body> - - - <h1>Pattern Attribute</h1> - <div style="display: none"> - <input pattern="[a-z]{3}" value="abcd" title="three letters max"/> - </div> - - <div id="log"> - </div> - - <script type="text/javascript"> - - - test(function() {assert_equals(document.getElementsByTagName("input")[0].getAttribute("pattern"), "[a-z]{3}")}, "pattern attribute support on input element"); - - </script> - - </body> - -</html> +<title>pattern attribute</title> +<meta name=viewport content="width=device-width"> +<link rel="author" title="Fabrice Clari" href="mailto:f.clari@inno-group.com"> +<link rel="author" title="Dimitri Bocquet" href="mailto:Dimitri.Bocquet@mosquito-fp7.eu"> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#attr-input-pattern"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<h1><code>pattern</code> attribute</h1> +<div style="display: none"> + <input pattern="[a-z]{3}" value="abcd" title="three letters max"> +</div> +<div id="log"></div> +<script> + test(function() { + const input = document.querySelector("input"); + + assert_idl_attribute(input, "pattern"); + assert_equals(input.pattern, "[a-z]{3}"); + + assert_inherits(input, "validity"); + assert_false(input.validity.valid); + + assert_true(input.matches(":invalid")); + }, "pattern attribute support on input element"); +</script> diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-part-ref.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-part-ref.html new file mode 100644 index 00000000000..cec447509eb --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-part-ref.html @@ -0,0 +1,9 @@ +<!DOCTYPE html> +<script src="support/fake-selectmenu.js"></script> +<body> +<script> + const selectmenu = createFakeSelectmenu('hello world'); + document.body.appendChild(selectmenu); + selectmenu.querySelector('.fake-selectmenu-internal-selectmenu-button-icon') + .style.backgroundColor = 'red'; +</script> diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-part.tentative.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-part.tentative.html new file mode 100644 index 00000000000..b6e94c947a4 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-part.tentative.html @@ -0,0 +1,12 @@ +<!DOCTYPE html> +<link rel=author href="mailto:jarhar@chromium.org"> +<link rel=match href="selectmenu-marker-part-ref.html"> + +<style> +selectmenu::part(marker) { + background-color: red; +} +</style> +<selectmenu> + <option>hello world</option> +</selectmenu> diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-slot-ref.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-slot-ref.html new file mode 100644 index 00000000000..a35fcd94800 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-slot-ref.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<script src="support/fake-selectmenu.js"></script> +<body> +<script> + const selectmenu = createFakeSelectmenu('hello world'); + document.body.appendChild(selectmenu); + + const oldMarker = selectmenu.querySelector('.fake-selectmenu-internal-selectmenu-button-icon'); + const newMarker = document.createElement('div'); + newMarker.textContent = 'marker'; + + const button = selectmenu.querySelector('.fake-selectmenu-internal-selectmenu-button'); + button.replaceChild(newMarker, oldMarker); +</script> diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-slot.tentative.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-slot.tentative.html new file mode 100644 index 00000000000..fff911005d8 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-slot.tentative.html @@ -0,0 +1,8 @@ +<!DOCTYPE html> +<link rel=author href="mailto:jarhar@chromium.org"> +<link rel=match href="selectmenu-marker-slot-ref.html"> + +<selectmenu> + <div slot=marker>marker</div> + <option>hello world</option> +</selectmenu> diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/support/fake-selectmenu.js b/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/support/fake-selectmenu.js new file mode 100644 index 00000000000..cf3864a2940 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/support/fake-selectmenu.js @@ -0,0 +1,49 @@ +function createFakeSelectmenu(selectedValueText) { + const selectmenu = document.createElement('div'); + selectmenu.classList.add('fake-selectmenu'); + + selectmenu.innerHTML = ` + <button class="fake-selectmenu-internal-selectmenu-button"> + <div class="fake-selectmenu-selected-value"></div> + <div class="fake-selectmenu-internal-selectmenu-button-icon"></div> + </button> + <style> + .fake-selectmenu { + display: inline-block; + } + + .fake-selectmenu-internal-selectmenu-button { + display: inline-flex; + align-items: center; + background-color: #ffffff; + padding: 0 0 0 3px; + border: 1px solid #767676; + border-radius: 2px; + cursor: default; + appearance: none; + } + + .fake-selectmenu-internal-selectmenu-button-icon { + background-image: url(support/selectmenu_button_icon.svg); + background-origin: content-box; + background-repeat: no-repeat; + background-size: contain; + height: 1.0em; + margin-inline-start: 4px; + opacity: 1; + outline: none; + padding-bottom: 2px; + padding-inline-start: 3px; + padding-inline-end: 3px; + padding-top: 2px; + width: 1.2em; + } + </style> + `; + + if (selectedValueText) { + selectmenu.querySelector('.fake-selectmenu-selected-value').textContent = selectedValueText; + } + + return selectmenu; +} diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/support/selectmenu_button_icon.svg b/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/support/selectmenu_button_icon.svg new file mode 100644 index 00000000000..1a6c0193e81 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/support/selectmenu_button_icon.svg @@ -0,0 +1,3 @@ +<svg width="20" height="14" viewBox="0 0 20 16" fill="none" xmlns="http://www.w3.org/2000/svg">\ + <path d="M4 6 L10 12 L 16 6" stroke="WindowText" stroke-width="3" stroke-linejoin="round"/>\ +</svg>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/backdrop-stacking-order.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/backdrop-stacking-order.html index 57cc63aab48..897f54a53fb 100644 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/backdrop-stacking-order.html +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/backdrop-stacking-order.html @@ -6,6 +6,7 @@ dialog { padding: 0px; border: none; margin: 0px; + outline: none; } #bottom::backdrop { diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/child-sequential-focus.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/child-sequential-focus.html new file mode 100644 index 00000000000..1b4dd302300 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/child-sequential-focus.html @@ -0,0 +1,58 @@ +<!DOCTYPE html> +<link rel=author href="mailto:jarhar@chromium.org"> +<link rel=help href="https://github.com/whatwg/html/pull/8199"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<dialog autofocus id=autofocusdialog data-description="dialog element with autofocus should get initial focus."> + <button>focusable button</button> + <button autofocus class=target>autofocusable button</button> +</dialog> + +<dialog id=keyboardfocusdialog data-description="Only keyboard-focusable elements should get dialog initial focus."> + <button tabindex="-1">mouse focusable button</button> + <button class=target>keyboard focusable button</button> +</dialog> + +<dialog id=autofocuswithoutkeyboarddialog data-description="Autofocus takes precedence over keyboard-focusable requirement."> + <button>keyboard focusable button</button> + <button tabindex="-1" autofocus class=target>mouse focusable autofocus button</button> +</dialog> + +<dialog id=subtree data-description="Only keyboard-focusable elements should get dialog initial focus including in subtrees."> + <div> + <button tabindex="-1">mouse focusable button</button> + <button class=target>keyboard focusable button</button> + </div> +</dialog> + +<dialog id=nestedbuttons data-description="Only keyboard-focusable elements should get dialog initial focus including in nested buttons."> + <button tabindex="-1"> + <span>mouse focusable button</span> + <button tabindex="-1">nested mouse focusable button</button> + </button> + <button class=target>keyboard focusable button</button> +</dialog> + +<script> +document.querySelectorAll('dialog').forEach(dialog => { + test(t => { + const target = dialog.querySelector('.target'); + t.add_cleanup + t.add_cleanup(() => { + if (dialog.open) + dialog.close(); + }); + + dialog.showModal(); + assert_equals(document.activeElement, + dialog.hasAttribute('autofocus') ? dialog : target, + 'showModal: the target element did not receive initial focus.'); + dialog.close(); + + dialog.show(); + assert_equals(document.activeElement, target, 'show: the target element did not receive initial focus.'); + dialog.close(); + }, dialog.dataset.description); +}); +</script> diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-focus-shadow.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-focus-shadow.html index e9ea15516e2..7e576854255 100644 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-focus-shadow.html +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-focus-shadow.html @@ -9,21 +9,21 @@ We focus this one between each test, to ensure that for non-modal dialogs, if there is no focus delegate, it stays focused (instead of causing focus to reset to the body). --> -<button tabindex="-1" id="focus-between-tests">Focus between tests</button> +<button id="focus-between-tests">Focus between tests</button> <dialog data-description="No autofocus, no delegatesFocus, no siblings"> <template class="turn-into-shadow-tree"> <button disabled>Non-focusable</button> - <button tabindex="-1">Focusable</button> + <button>Focusable</button> <button disabled>Non-focusable</button> </template> </dialog> <dialog data-description="No autofocus, no delegatesFocus, sibling before"> - <button tabindex="-1" class="focus-me">Focusable</button> + <button class="focus-me">Focusable</button> <template class="turn-into-shadow-tree"> <button disabled>Non-focusable</button> - <button tabindex="-1">Focusable</button> + <button>Focusable</button> <button disabled>Non-focusable</button> </template> </dialog> @@ -31,25 +31,25 @@ <dialog data-description="No autofocus, no delegatesFocus, sibling after"> <template class="turn-into-shadow-tree"> <button disabled>Non-focusable</button> - <button tabindex="-1">Focusable</button> + <button>Focusable</button> <button disabled>Non-focusable</button> </template> - <button tabindex="-1" class="focus-me">Focusable</button> + <button class="focus-me">Focusable</button> </dialog> <dialog data-description="No autofocus, yes delegatesFocus, no siblings"> <template class="turn-into-shadow-tree delegates-focus"> <button disabled>Non-focusable</button> - <button tabindex="-1" class="focus-me">Focusable</button> + <button class="focus-me">Focusable</button> <button disabled>Non-focusable</button> </template> </dialog> <dialog data-description="No autofocus, yes delegatesFocus, sibling before"> - <button tabindex="-1" class="focus-me">Focusable</button> + <button class="focus-me">Focusable</button> <template class="turn-into-shadow-tree delegates-focus"> <button disabled>Non-focusable</button> - <button tabindex="-1">Focusable</button> + <button>Focusable</button> <button disabled>Non-focusable</button> </template> </dialog> @@ -57,26 +57,26 @@ <dialog data-description="No autofocus, yes delegatesFocus, sibling after"> <template class="turn-into-shadow-tree delegates-focus"> <button disabled>Non-focusable</button> - <button tabindex="-1" class="focus-me">Focusable</button> + <button class="focus-me">Focusable</button> <button disabled>Non-focusable</button> </template> - <button tabindex="-1">Focusable</button> + <button>Focusable</button> </dialog> <dialog data-description="Autofocus before, no delegatesFocus"> - <button tabindex="-1" autofocus class="focus-me">Focusable</button> + <button autofocus class="focus-me">Focusable</button> <template class="turn-into-shadow-tree"> <button disabled>Non-focusable</button> - <button tabindex="-1">Focusable</button> + <button>Focusable</button> <button disabled>Non-focusable</button> </template> </dialog> <dialog data-description="Autofocus before, yes delegatesFocus"> - <button tabindex="-1" autofocus class="focus-me">Focusable</button> + <button autofocus class="focus-me">Focusable</button> <template class="turn-into-shadow-tree delegates-focus"> <button disabled>Non-focusable</button> - <button tabindex="-1">Focusable</button> + <button>Focusable</button> <button disabled>Non-focusable</button> </template> </dialog> @@ -84,34 +84,34 @@ <dialog data-description="Autofocus after, no delegatesFocus"> <template class="turn-into-shadow-tree"> <button disabled>Non-focusable</button> - <button tabindex="-1">Focusable</button> + <button>Focusable</button> <button disabled>Non-focusable</button> </template> - <button tabindex="-1" autofocus class="focus-me">Focusable</button> + <button autofocus class="focus-me">Focusable</button> </dialog> <dialog data-description="Autofocus after, yes delegatesFocus"> <template class="turn-into-shadow-tree delegates-focus"> <button disabled>Non-focusable</button> - <button tabindex="-1">Focusable</button> + <button>Focusable</button> <button disabled>Non-focusable</button> </template> - <button tabindex="-1" autofocus class="focus-me">Focusable</button> + <button autofocus class="focus-me">Focusable</button> </dialog> <dialog data-description="Autofocus on shadow host, yes delegatesFocus, no siblings"> <template class="turn-into-shadow-tree delegates-focus autofocus"> <button disabled>Non-focusable</button> - <button tabindex="-1" class="focus-me">Focusable</button> + <button class="focus-me">Focusable</button> <button disabled>Non-focusable</button> </template> </dialog> <dialog data-description="Autofocus on shadow host, yes delegatesFocus, sibling before"> - <button tabindex="-1">Focusable</button> + <button>Focusable</button> <template class="turn-into-shadow-tree delegates-focus autofocus"> <button disabled>Non-focusable</button> - <button tabindex="-1" class="focus-me">Focusable</button> + <button class="focus-me">Focusable</button> <button disabled>Non-focusable</button> </template> </dialog> @@ -119,25 +119,25 @@ <dialog data-description="Autofocus on shadow host, yes delegatesFocus, sibling after"> <template class="turn-into-shadow-tree delegates-focus autofocus"> <button disabled>Non-focusable</button> - <button tabindex="-1" class="focus-me">Focusable</button> + <button class="focus-me">Focusable</button> <button disabled>Non-focusable</button> </template> - <button tabindex="-1">Focusable</button> + <button>Focusable</button> </dialog> <dialog data-description="Autofocus on shadow host, no delegatesFocus, no siblings"> <template class="turn-into-shadow-tree autofocus"> <button disabled>Non-focusable</button> - <button tabindex="-1">Focusable</button> + <button>Focusable</button> <button disabled>Non-focusable</button> </template> </dialog> <dialog data-description="Autofocus on shadow host, no delegatesFocus, sibling before"> - <button tabindex="-1" class="focus-me">Focusable</button> + <button class="focus-me">Focusable</button> <template class="turn-into-shadow-tree autofocus"> <button disabled>Non-focusable</button> - <button tabindex="-1">Focusable</button> + <button>Focusable</button> <button disabled>Non-focusable</button> </template> </dialog> @@ -145,91 +145,91 @@ <dialog data-description="Autofocus on shadow host, no delegatesFocus, sibling after"> <template class="turn-into-shadow-tree autofocus"> <button disabled>Non-focusable</button> - <button tabindex="-1">Focusable</button> + <button>Focusable</button> <button disabled>Non-focusable</button> </template> - <button tabindex="-1" class="focus-me">Focusable</button> + <button class="focus-me">Focusable</button> </dialog> <dialog data-description="Autofocus inside shadow tree, yes delegatesFocus, no siblings"> <template class="turn-into-shadow-tree delegates-focus"> - <button tabindex="-1">Focusable</button> - <button tabindex="-1" autofocus class="focus-me">Focusable</button> + <button>Focusable</button> + <button autofocus class="focus-me">Focusable</button> <button disabled>Non-focusable</button> </template> </dialog> <dialog data-description="Autofocus inside shadow tree, yes delegatesFocus, sibling before"> - <button tabindex="-1" class="focus-me">Focusable</button> + <button class="focus-me">Focusable</button> <template class="turn-into-shadow-tree delegates-focus"> - <button tabindex="-1">Focusable</button> - <button tabindex="-1" autofocus>Focusable</button> + <button>Focusable</button> + <button autofocus>Focusable</button> <button disabled>Non-focusable</button> </template> </dialog> <dialog data-description="Autofocus inside shadow tree, yes delegatesFocus, sibling after"> <template class="turn-into-shadow-tree delegates-focus"> - <button tabindex="-1">Focusable</button> - <button tabindex="-1" autofocus class="focus-me">Focusable</button> + <button>Focusable</button> + <button autofocus class="focus-me">Focusable</button> <button disabled>Non-focusable</button> </template> - <button tabindex="-1">Focusable</button> + <button>Focusable</button> </dialog> <dialog data-description="Autofocus inside shadow tree, no delegatesFocus, no siblings"> <template class="turn-into-shadow-tree"> - <button tabindex="-1">Focusable</button> - <button tabindex="-1" autofocus>Focusable</button> + <button>Focusable</button> + <button autofocus>Focusable</button> <button disabled>Non-focusable</button> </template> </dialog> <dialog data-description="Autofocus inside shadow tree, no delegatesFocus, sibling before"> - <button tabindex="-1" class="focus-me">Focusable</button> + <button class="focus-me">Focusable</button> <template class="turn-into-shadow-tree"> - <button tabindex="-1">Focusable</button> - <button tabindex="-1" autofocus>Focusable</button> + <button>Focusable</button> + <button autofocus>Focusable</button> <button disabled>Non-focusable</button> </template> </dialog> <dialog data-description="Autofocus inside shadow tree, no delegatesFocus, sibling after"> <template class="turn-into-shadow-tree"> - <button tabindex="-1">Focusable</button> - <button tabindex="-1" autofocus>Focusable</button> + <button>Focusable</button> + <button autofocus>Focusable</button> <button disabled>Non-focusable</button> </template> - <button tabindex="-1" class="focus-me">Focusable</button> + <button class="focus-me">Focusable</button> </dialog> <dialog data-description="Two shadow trees, both delegatesFocus, first tree doesn't have autofocus element, second does"> <template class="turn-into-shadow-tree delegates-focus"> <button disabled>Non-focusable</button> - <button tabindex="-1" class="focus-me">Focusable</button> + <button class="focus-me">Focusable</button> <button disabled>Non-focusable</button> </template> <template class="turn-into-shadow-tree delegates-focus"> - <button tabindex="-1" autofocus>Focusable</button> + <button autofocus>Focusable</button> </template> </dialog> <dialog data-description="No autofocus, no delegatesFocus, slotted target"> <template class="turn-into-shadow-tree"> - <button tabindex="-1">Focusable</button> + <button>Focusable</button> <slot></slot> - <button tabindex="-1">Focusable</button> + <button>Focusable</button> </template> - <button tabindex="-1" class="focus-me">Focusable</button> + <button class="focus-me">Focusable</button> </dialog> <dialog data-description="Shadowroot on child, no autofocus, no delegatesFocus"> <div> <template class="turn-into-shadow-tree"> - <button tabindex="-1">Focusable</button> + <button>Focusable</button> </template> </div> - <button tabindex="-1" class="focus-me">Focusable</button> + <button class="focus-me">Focusable</button> </dialog> <script> @@ -264,12 +264,8 @@ for (const dialog of document.querySelectorAll("dialog")) { assert_equals(document.activeElement, shadowHost); assert_equals(shadowHost.shadowRoot.activeElement, expectedFocusInsideShadowTree); } else { - // There is no focus delegate. Expected result depends on show() vs. showModal(). - if (method === "show") { - assert_equals(document.activeElement, focusBetweenTests); - } else { - assert_equals(document.activeElement, document.body); - } + // There is no focus delegate. The dialog element should be focused. + assert_equals(document.activeElement, dialog); } } }, `${method}: ${dialog.dataset.description}`); diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-focusing-steps-prevent-autofocus.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-focusing-steps-prevent-autofocus.html index 2e8563f761d..4d1e792c1cc 100644 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-focusing-steps-prevent-autofocus.html +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-focusing-steps-prevent-autofocus.html @@ -14,7 +14,7 @@ promise_test(async () => { input.autofocus = true; document.body.insertBefore(input, dialog); await waitUntilStableAutofocusState(); - assert_equals(document.activeElement, document.body, + assert_not_equals(document.activeElement, input, 'Non-dialog autofocus processing should be skipped.'); }, 'After showing a dialog, non-dialog autofocus processing won\'t work.'); </script> diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-showModal.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-showModal.html index c511631f9fb..5edff186142 100644 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-showModal.html +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-showModal.html @@ -116,7 +116,7 @@ d6.showModal(); this.add_cleanup(function() { d6.close(); }); assert_true(d6.open); - assert_equals(document.activeElement, document.body); + assert_equals(document.activeElement, d6); }, "opening dialog without focusable children"); test(function(){ diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dont-share-style-to-top-layer-ref.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dont-share-style-to-top-layer-ref.html index 535ac935607..7e6112b3cee 100644 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dont-share-style-to-top-layer-ref.html +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dont-share-style-to-top-layer-ref.html @@ -1,5 +1,8 @@ <!doctype html> <style> +dialog { + outline: none; +} #non-modal { position: static; } diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dont-share-style-to-top-layer.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dont-share-style-to-top-layer.html index efbbab010a0..e4f4ce50b3e 100644 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dont-share-style-to-top-layer.html +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dont-share-style-to-top-layer.html @@ -5,6 +5,9 @@ dialog { position: static; } +#modal { + outline: none; +} </style> <p>Test that a non-top layer element doesn't share style with a top layer element. The test passes if you see two boxes.</p> diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/element-removed-from-top-layer-has-original-position.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/element-removed-from-top-layer-has-original-position.html index d78051a9b3e..0dead331636 100644 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/element-removed-from-top-layer-has-original-position.html +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/element-removed-from-top-layer-has-original-position.html @@ -14,6 +14,7 @@ border: none; padding: 0; margin: 0; + outline: none; } </style> </head> diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/fixed-position-child-with-contain-ancestor.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/fixed-position-child-with-contain-ancestor.html index 98835cb795f..5ee64fc1d9e 100644 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/fixed-position-child-with-contain-ancestor.html +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/fixed-position-child-with-contain-ancestor.html @@ -8,6 +8,9 @@ ::backdrop { display: none; } +#dialog { + outline: none; +} </style> </head> <body> diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/fixed-position-child-with-fo-ancestor.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/fixed-position-child-with-fo-ancestor.html index fe625f1c9bf..2bc294be2fa 100644 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/fixed-position-child-with-fo-ancestor.html +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/fixed-position-child-with-fo-ancestor.html @@ -8,6 +8,9 @@ ::backdrop { display: none; } +#dialog { + outline: none; +} </style> </head> <body> diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/fixed-position-child-with-transformed-ancestor.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/fixed-position-child-with-transformed-ancestor.html index 58627443dae..527d508252c 100644 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/fixed-position-child-with-transformed-ancestor.html +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/fixed-position-child-with-transformed-ancestor.html @@ -8,6 +8,9 @@ ::backdrop { display: none; } +#dialog { + outline: none; +} </style> </head> <body> diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/fixed-position-child-with-will-change-ancestor.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/fixed-position-child-with-will-change-ancestor.html index 14f4391e6bf..e9db7321cd7 100644 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/fixed-position-child-with-will-change-ancestor.html +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/fixed-position-child-with-will-change-ancestor.html @@ -8,6 +8,9 @@ ::backdrop { display: none; } +#dialog { + outline: none; +} </style> </head> <body> diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/inert-label-focus.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/inert-label-focus.html index 05f4069d78f..61e3ddeaf23 100644 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/inert-label-focus.html +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/inert-label-focus.html @@ -39,12 +39,15 @@ promise_test(async () => { document.querySelector('#text').focus(); label = document.querySelector('label'); + submit = document.querySelector('#submit'); label.focus(); - assert_equals(document.activeElement, document.querySelector('#submit'), + assert_equals(document.activeElement, submit, 'label.focus() should send focus to the target.'); await clickOn(label); - assert_equals(document.activeElement, document.body, - 'Clicking the label should be the same as clicking the document body.'); + assert_not_equals(document.activeElement, label, + 'Clicking the label should not focus the label.'); + assert_not_equals(document.activeElement, submit, + 'Clicking the label should not focus the submit input.'); }, 'Tests focusing of an inert label for a non-inert target.'); </script> diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/inert-node-is-unfocusable.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/inert-node-is-unfocusable.html index 56f31f35924..74379f50e22 100644 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/inert-node-is-unfocusable.html +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/inert-node-is-unfocusable.html @@ -7,6 +7,11 @@ <script src="/resources/testharnessreport.js"></script> </head> <body id="body" tabindex="1"> +<style> +dialog { + outline: none; +} +</style> <dialog id="top-dialog" tabindex="1" style="width: 100px; top: 30px"><button id="top-dialog-button">I get focus</button></dialog> <dialog id="bottom-dialog" tabindex="-1" style="width: 100px; bottom: 30px"><button id="bottom-dialog-button">I don't get focus.</button></dialog> <div id="container"> diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-backdrop.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-backdrop.html index a18af0d30ea..55d7132f8ce 100644 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-backdrop.html +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-backdrop.html @@ -7,6 +7,7 @@ dialog { height: 100px; width: 100px; background: green; + outline: none; } </style> <body> diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-generated-content.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-generated-content.html index 86f43e52c2e..96b97f8ec3c 100644 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-generated-content.html +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-generated-content.html @@ -11,6 +11,7 @@ dialog { height: 100px; width: 100px; background: green; + outline: none; } dialog::before { diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/show-modal-focusing-steps.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/show-modal-focusing-steps.html index 164b41459d1..6a2ad8c4a0a 100644 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/show-modal-focusing-steps.html +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/show-modal-focusing-steps.html @@ -10,10 +10,10 @@ promise_test(() => { outerButton = document.getElementById('outer-button'); assert_equals(document.activeElement, outerButton); - // Test that focus goes to body if the dialog has no focusable elements, including itself + // Test that focus goes to the dialog if the dialog has no focusable elements var outerDialog = document.getElementById('outer-dialog'); outerDialog.showModal(); - assert_equals(document.activeElement, document.body); + assert_equals(document.activeElement, outerDialog); // Test that an autofocus element in the dialog gets focus. var dialog = document.getElementById('dialog'); diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-containing-block.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-containing-block.html index 10f6c69fbe1..0886c2cd2c2 100644 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-containing-block.html +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-containing-block.html @@ -14,7 +14,7 @@ This tests that a modal dialog's containing block is in the initial containing block and that it is unaffected by ancestor elements with overflow or opacity. <div style="position: absolute; top: 400px; opacity: 0.3"> - <dialog id="opaqueDialog" style="position: absolute; top: 250px; left: 0px; background-color: magenta"> + <dialog id="opaqueDialog" style="position: absolute; top: 250px; left: 0px; background-color: magenta; outline: none"> This dialog should be unaffected by its ancestor with opacity. </dialog> </div> diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-display-none.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-display-none.html index 5257823eca0..ba790c1db9a 100644 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-display-none.html +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-display-none.html @@ -7,6 +7,7 @@ dialog { height: 150px; width: 150px; + outline: none; } ::backdrop { diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-nesting.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-nesting.html index 6397584387f..9e0616e9520 100644 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-nesting.html +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-nesting.html @@ -7,6 +7,7 @@ dialog { height: 150px; width: 150px; + outline: none; } ::backdrop { diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-clip.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-clip.html index 9a621e7594e..6e3c52aa02a 100644 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-clip.html +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-clip.html @@ -15,6 +15,7 @@ body { background: red; } dialog::backdrop, dialog { background: green; + outline: none; } </style> <body> diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-filter.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-filter.html index 020d90a0c81..589d5397791 100644 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-filter.html +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-filter.html @@ -16,6 +16,7 @@ dialog::backdrop, dialog { background: green; position: absolute; + outline: none; } </style> <body> diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-mask.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-mask.html index daa5ccbbe10..8ba3ed47c27 100644 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-mask.html +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-mask.html @@ -16,6 +16,7 @@ body { background: red; } dialog::backdrop, dialog { background: green; + outline: none; } </style> <body> diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-opacity.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-opacity.html index 82aa09d6c57..46c5de2a6dd 100644 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-opacity.html +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-opacity.html @@ -16,6 +16,7 @@ body { background: red; } dialog::backdrop, dialog { background: green; + outline: none; } </style> <body> diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-overflow-clip.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-overflow-clip.html index 86587254cf0..d8059549692 100644 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-overflow-clip.html +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-overflow-clip.html @@ -21,6 +21,7 @@ dialog::backdrop, dialog { background: green; position: absolute; + outline: none; } </style> <body> diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-overflow-hidden.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-overflow-hidden.html index afcde733d2f..f5389ddc09a 100644 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-overflow-hidden.html +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-overflow-hidden.html @@ -20,6 +20,7 @@ body { background: red; } dialog::backdrop, dialog { background: green; + outline: none; } </style> <body> diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-overflow-scroll.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-overflow-scroll.html index dd04c2ed47a..a230defeeab 100644 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-overflow-scroll.html +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-overflow-scroll.html @@ -21,6 +21,7 @@ dialog::backdrop, dialog { background: green; position: absolute; + outline: none; } </style> <body> diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-transform.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-transform.html index cf35a713f33..ac6f3cffc3c 100644 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-transform.html +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-transform.html @@ -15,6 +15,7 @@ body { background: red; } dialog::backdrop, dialog { background: green; + outline: none; } </style> <body> diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-stacking-correct-order-remove-readd.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-stacking-correct-order-remove-readd.html index 3b3e3368925..4fdd28820db 100644 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-stacking-correct-order-remove-readd.html +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-stacking-correct-order-remove-readd.html @@ -8,6 +8,7 @@ dialog { height: 100px; width: 100px; + outline: none; } ::backdrop { diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-stacking-dynamic.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-stacking-dynamic.html index 8ab7068d306..ebccdc66cf9 100644 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-stacking-dynamic.html +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-stacking-dynamic.html @@ -8,6 +8,7 @@ dialog { height: 150px; width: 150px; + outline: none; } ::backdrop { diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/idlharness.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/idlharness.tentative.html index d1a258bb4ad..1cab891261c 100644 --- a/tests/wpt/web-platform-tests/html/semantics/popovers/idlharness.tentative.html +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/idlharness.tentative.html @@ -41,12 +41,12 @@ idl_test( 'document.getElementById("b3")', ], BeforeToggleEvent: [ - 'new PopoverToggleEvent("beforetoggle")', - 'new PopoverToggleEvent("beforetoggle", {currentState: "open"})', - 'new PopoverToggleEvent("beforetoggle", {currentState: "open",newState: "open"})', - 'new PopoverToggleEvent("aftertoggle")', - 'new PopoverToggleEvent("aftertoggle", {currentState: "open"})', - 'new PopoverToggleEvent("aftertoggle", {currentState: "open",newState: "open"})', + 'new ToggleEvent("beforetoggle")', + 'new ToggleEvent("beforetoggle", {oldState: "open"})', + 'new ToggleEvent("beforetoggle", {oldState: "open",newState: "open"})', + 'new ToggleEvent("toggle")', + 'new ToggleEvent("toggle", {oldState: "open"})', + 'new ToggleEvent("toggle", {oldState: "open",newState: "open"})', ], }); } diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-events.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-events.tentative.html index b96a0f5a53f..b2994245700 100644 --- a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-events.tentative.html +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-events.tentative.html @@ -10,6 +10,13 @@ <div popover>Popover</div> <script> +function getPopoverAndSignal(t) { + const popover = document.querySelector('[popover]'); + const controller = new AbortController(); + const signal = controller.signal; + t.add_cleanup(() => controller.abort()); + return {popover, signal}; +} window.onload = () => { for(const method of ["listener","attribute"]) { promise_test(async t => { @@ -22,52 +29,48 @@ window.onload = () => { function listener(e) { if (e.type === "beforetoggle") { if (e.newState === "open") { - assert_equals(e.currentState,"closed",'The "beforetoggle" event should be fired before the popover is open'); + ++showCount; + assert_equals(e.oldState,"closed",'The "beforetoggle" event should be fired before the popover is open'); assert_true(e.target.matches(':closed'),'The popover should be in the :closed state when the opening event fires.'); assert_false(e.target.matches(':open'),'The popover should *not* be in the :open state when the opening event fires.'); - ++showCount; } else { + ++hideCount; assert_equals(e.newState,"closed",'Popover toggleevent states should be "open" and "closed"'); - assert_equals(e.currentState,"open",'The "beforetoggle" event should be fired before the popover is closed') + assert_equals(e.oldState,"open",'The "beforetoggle" event should be fired before the popover is closed') assert_true(e.target.matches(':open'),'The popover should be in the :open state when the hiding event fires.'); assert_false(e.target.matches(':closed'),'The popover should *not* be in the :closed state when the hiding event fires.'); - ++hideCount; } } else { - assert_equals(e.type,"aftertoggle",'Popover events should be "beforetoggle" and "aftertoggle"') + assert_equals(e.type,"toggle",'Popover events should be "beforetoggle" and "toggle"') if (e.newState === "open") { - assert_equals(e.currentState,"open",'Aftertoggle should be fired after the popover is open'); + ++afterShowCount; if (document.body.contains(e.target)) { assert_true(e.target.matches(':open'),'The popover should be in the :open state when the after opening event fires.'); assert_false(e.target.matches(':closed'),'The popover should *not* be in the :closed state when the after opening event fires.'); } - ++afterShowCount; } else { + ++afterHideCount; assert_equals(e.newState,"closed",'Popover toggleevent states should be "open" and "closed"'); - assert_equals(e.currentState,"closed",'Aftertoggle should be fired after the popover is closed'); assert_true(e.target.matches(':closed'),'The popover should be in the :closed state when the after hiding event fires.'); assert_false(e.target.matches(':open'),'The popover should *not* be in the :open state when the after hiding event fires.'); - ++afterHideCount; } - e.preventDefault(); // "aftertoggle" should not be cancelable. + e.preventDefault(); // "toggle" should not be cancelable. } }; switch (method) { case "listener": - const controller = new AbortController(); - const signal = controller.signal; - t.add_cleanup(() => controller.abort()); + const {signal} = getPopoverAndSignal(t); // These events bubble. document.addEventListener('beforetoggle', listener, {signal}); - document.addEventListener('aftertoggle', listener, {signal}); + document.addEventListener('toggle', listener, {signal}); break; case "attribute": assert_false(popover.hasAttribute('onbeforetoggle')); t.add_cleanup(() => popover.removeAttribute('onbeforetoggle')); popover.onbeforetoggle = listener; - assert_false(popover.hasAttribute('onaftertoggle')); - t.add_cleanup(() => popover.removeAttribute('onaftertoggle')); - popover.onaftertoggle = listener; + assert_false(popover.hasAttribute('ontoggle')); + t.add_cleanup(() => popover.removeAttribute('ontoggle')); + popover.ontoggle = listener; break; default: assert_unreached(); } @@ -82,7 +85,7 @@ window.onload = () => { assert_equals(0,afterShowCount); assert_equals(0,afterHideCount); await waitForRender(); - assert_equals(1,afterShowCount,'aftertoggle show is fired asynchronously'); + assert_equals(1,afterShowCount,'toggle show is fired asynchronously'); assert_equals(0,afterHideCount); assert_true(popover.matches(':open')); popover.hidePopover(); @@ -93,7 +96,7 @@ window.onload = () => { assert_equals(0,afterHideCount); await waitForRender(); assert_equals(1,afterShowCount); - assert_equals(1,afterHideCount,'aftertoggle hide is fired asynchronously'); + assert_equals(1,afterHideCount,'toggle hide is fired asynchronously'); // No additional events await waitForRender(); await waitForRender(); @@ -106,10 +109,7 @@ window.onload = () => { } promise_test(async t => { - const popover = document.querySelector('[popover]'); - const controller = new AbortController(); - const signal = controller.signal; - t.add_cleanup(() => controller.abort()); + const {popover,signal} = getPopoverAndSignal(t); let cancel = true; popover.addEventListener('beforetoggle',(e) => { if (e.newState !== "open") @@ -128,10 +128,7 @@ window.onload = () => { }, 'The "beforetoggle" event is cancelable for the "opening" transition'); promise_test(async t => { - const popover = document.querySelector('[popover]'); - const controller = new AbortController(); - const signal = controller.signal; - t.add_cleanup(() => {controller.abort();}); + const {popover,signal} = getPopoverAndSignal(t); popover.addEventListener('beforetoggle',(e) => { assert_not_equals(e.newState,"closed",'The "beforetoggle" event was fired for the closing transition'); }, {signal}); @@ -144,5 +141,74 @@ window.onload = () => { await waitForRender(); // Check for async events also assert_false(popover.matches(':open')); }, 'The "beforetoggle" event is not fired for element removal'); + + promise_test(async t => { + const {popover,signal} = getPopoverAndSignal(t); + let events; + function resetEvents() { + events = { + singleShow: false, + singleHide: false, + coalescedShow: false, + coalescedHide: false, + }; + } + function setEvent(type) { + assert_equals(events[type],false,'event repeated'); + events[type] = true; + } + function assertOnly(type,msg) { + Object.keys(events).forEach(val => { + assert_equals(events[val],val===type,`${msg} (${val})`); + }); + } + popover.addEventListener('toggle',(e) => { + switch (e.newState) { + case "open": + switch (e.oldState) { + case "open": setEvent('coalescedShow'); break; + case "closed": setEvent('singleShow'); break; + default: assert_unreached(); + } + break; + case "closed": + switch (e.oldState) { + case "closed": setEvent('coalescedHide'); break; + case "open": setEvent('singleHide'); break; + default: assert_unreached(); + } + break; + default: assert_unreached(); + } + }, {signal}); + + resetEvents(); + assertOnly('none'); + assert_false(popover.matches(':open')); + popover.showPopover(); + await waitForRender(); + assert_true(popover.matches(':open')); + assertOnly('singleShow','Single event should have been fired, which is a "show"'); + + resetEvents(); + popover.hidePopover(); + popover.showPopover(); // Immediate re-show + await waitForRender(); + assert_true(popover.matches(':open')); + assertOnly('coalescedShow','Single coalesced event should have been fired, which is a "show"'); + + resetEvents(); + popover.hidePopover(); + await waitForRender(); + assertOnly('singleHide','Single event should have been fired, which is a "hide"'); + assert_false(popover.matches(':open')); + + resetEvents(); + popover.showPopover(); + popover.hidePopover(); // Immediate re-hide + await waitForRender(); + assertOnly('coalescedHide','Single coalesced event should have been fired, which is a "hide"'); + assert_false(popover.matches(':open')); + }, 'The "toggle" event is coalesced'); }; </script> diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/toggleevent-interface.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/toggleevent-interface.tentative.html index 4d437b0c0ad..45709458b00 100644 --- a/tests/wpt/web-platform-tests/html/semantics/popovers/toggleevent-interface.tentative.html +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/toggleevent-interface.tentative.html @@ -7,200 +7,200 @@ <script> test(function() { - var event = new PopoverToggleEvent(""); - assert_true(event instanceof window.PopoverToggleEvent); -}, "the event is an instance of PopoverToggleEvent"); + var event = new ToggleEvent(""); + assert_true(event instanceof window.ToggleEvent); +}, "the event is an instance of ToggleEvent"); test(function() { - var event = new PopoverToggleEvent(""); + var event = new ToggleEvent(""); assert_true(event instanceof window.Event); }, "the event inherts from Event"); test(function() { assert_throws_js(TypeError, function() { - new PopoverToggleEvent(); + new ToggleEvent(); }, 'First argument (type) is required, so was expecting a TypeError.'); }, 'Missing type argument'); test(function() { - var event = new PopoverToggleEvent("test"); + var event = new ToggleEvent("test"); assert_equals(event.type, "test"); }, "type argument is string"); test(function() { - var event = new PopoverToggleEvent(null); + var event = new ToggleEvent(null); assert_equals(event.type, "null"); }, "type argument is null"); test(function() { - var event = new PopoverToggleEvent(undefined); + var event = new ToggleEvent(undefined); assert_equals(event.type, "undefined"); }, "event type set to undefined"); test(function() { - var event = new PopoverToggleEvent("test"); - assert_equals(event.currentState, ""); -}, "currentState has default value of empty string"); + var event = new ToggleEvent("test"); + assert_equals(event.oldState, ""); +}, "oldState has default value of empty string"); test(function() { - var event = new PopoverToggleEvent("test"); - assert_readonly(event, "currentState", "readonly attribute value"); -}, "currentState is readonly"); + var event = new ToggleEvent("test"); + assert_readonly(event, "oldState", "readonly attribute value"); +}, "oldState is readonly"); test(function() { - var event = new PopoverToggleEvent("test"); + var event = new ToggleEvent("test"); assert_equals(event.newState, ""); }, "newState has default value of empty string"); test(function() { - var event = new PopoverToggleEvent("test"); + var event = new ToggleEvent("test"); assert_readonly(event, "newState", "readonly attribute value"); }, "newState is readonly"); test(function() { - var event = new PopoverToggleEvent("test", null); - assert_equals(event.currentState, ""); + var event = new ToggleEvent("test", null); + assert_equals(event.oldState, ""); assert_equals(event.newState, ""); -}, "PopoverToggleEventInit argument is null"); +}, "ToggleEventInit argument is null"); test(function() { - var event = new PopoverToggleEvent("test", undefined); - assert_equals(event.currentState, ""); + var event = new ToggleEvent("test", undefined); + assert_equals(event.oldState, ""); assert_equals(event.newState, ""); -}, "PopoverToggleEventInit argument is undefined"); +}, "ToggleEventInit argument is undefined"); test(function() { - var event = new PopoverToggleEvent("test", {}); - assert_equals(event.currentState, ""); + var event = new ToggleEvent("test", {}); + assert_equals(event.oldState, ""); assert_equals(event.newState, ""); -}, "PopoverToggleEventInit argument is empty dictionary"); +}, "ToggleEventInit argument is empty dictionary"); test(function() { - var event = new PopoverToggleEvent("test", {currentState: "sample"}); - assert_equals(event.currentState, "sample"); -}, "currentState set to 'sample'"); + var event = new ToggleEvent("test", {oldState: "sample"}); + assert_equals(event.oldState, "sample"); +}, "oldState set to 'sample'"); test(function() { - var event = new PopoverToggleEvent("test", {currentState: undefined}); - assert_equals(event.currentState, ""); -}, "currentState set to undefined"); + var event = new ToggleEvent("test", {oldState: undefined}); + assert_equals(event.oldState, ""); +}, "oldState set to undefined"); test(function() { - var event = new PopoverToggleEvent("test", {currentState: null}); - assert_equals(event.currentState, "null"); -}, "currentState set to null"); + var event = new ToggleEvent("test", {oldState: null}); + assert_equals(event.oldState, "null"); +}, "oldState set to null"); test(function() { - var event = new PopoverToggleEvent("test", {currentState: false}); - assert_equals(event.currentState, "false"); -}, "currentState set to false"); + var event = new ToggleEvent("test", {oldState: false}); + assert_equals(event.oldState, "false"); +}, "oldState set to false"); test(function() { - var event = new PopoverToggleEvent("test", {currentState: true}); - assert_equals(event.currentState, "true"); -}, "currentState set to true"); + var event = new ToggleEvent("test", {oldState: true}); + assert_equals(event.oldState, "true"); +}, "oldState set to true"); test(function() { - var event = new PopoverToggleEvent("test", {currentState: 0.5}); - assert_equals(event.currentState, "0.5"); -}, "currentState set to a number"); + var event = new ToggleEvent("test", {oldState: 0.5}); + assert_equals(event.oldState, "0.5"); +}, "oldState set to a number"); test(function() { - var event = new PopoverToggleEvent("test", {currentState: []}); - assert_equals(event.currentState, ""); -}, "currentState set to []"); + var event = new ToggleEvent("test", {oldState: []}); + assert_equals(event.oldState, ""); +}, "oldState set to []"); test(function() { - var event = new PopoverToggleEvent("test", {currentState: [1, 2, 3]}); - assert_equals(event.currentState, "1,2,3"); -}, "currentState set to [1, 2, 3]"); + var event = new ToggleEvent("test", {oldState: [1, 2, 3]}); + assert_equals(event.oldState, "1,2,3"); +}, "oldState set to [1, 2, 3]"); test(function() { - var event = new PopoverToggleEvent("test", {currentState: {sample: 0.5}}); - assert_equals(event.currentState, "[object Object]"); -}, "currentState set to an object"); + var event = new ToggleEvent("test", {oldState: {sample: 0.5}}); + assert_equals(event.oldState, "[object Object]"); +}, "oldState set to an object"); test(function() { - var event = new PopoverToggleEvent("test", - {currentState: {valueOf: function () { return 'sample'; }}}); - assert_equals(event.currentState, "[object Object]"); -}, "currentState set to an object with a valueOf function"); + var event = new ToggleEvent("test", + {oldState: {valueOf: function () { return 'sample'; }}}); + assert_equals(event.oldState, "[object Object]"); +}, "oldState set to an object with a valueOf function"); test(function() { - var eventInit = {currentState: "sample",newState: "sample2"}; - var event = new PopoverToggleEvent("test", eventInit); - assert_equals(event.currentState, "sample"); + var eventInit = {oldState: "sample",newState: "sample2"}; + var event = new ToggleEvent("test", eventInit); + assert_equals(event.oldState, "sample"); assert_equals(event.newState, "sample2"); -}, "PopoverToggleEventInit properties set value"); +}, "ToggleEventInit properties set value"); test(function() { - var eventInit = {currentState: "open",newState: "closed"}; - var event = new PopoverToggleEvent("beforetoggle", eventInit); - assert_equals(event.currentState, "open"); + var eventInit = {oldState: "open",newState: "closed"}; + var event = new ToggleEvent("beforetoggle", eventInit); + assert_equals(event.oldState, "open"); assert_equals(event.newState, "closed"); -}, "PopoverToggleEventInit properties set value 2"); +}, "ToggleEventInit properties set value 2"); test(function() { - var eventInit = {currentState: "closed",newState: "open"}; - var event = new PopoverToggleEvent("aftertoggle", eventInit); - assert_equals(event.currentState, "closed"); + var eventInit = {oldState: "closed",newState: "open"}; + var event = new ToggleEvent("toggle", eventInit); + assert_equals(event.oldState, "closed"); assert_equals(event.newState, "open"); -}, "PopoverToggleEventInit properties set value 3"); +}, "ToggleEventInit properties set value 3"); test(function() { - var eventInit = {currentState: "open",newState: "open"}; - var event = new PopoverToggleEvent("beforetoggle", eventInit); - assert_equals(event.currentState, "open"); + var eventInit = {oldState: "open",newState: "open"}; + var event = new ToggleEvent("beforetoggle", eventInit); + assert_equals(event.oldState, "open"); assert_equals(event.newState, "open"); -}, "PopoverToggleEventInit properties set value 4"); +}, "ToggleEventInit properties set value 4"); test(function() { - var event = new PopoverToggleEvent("test", {newState: "sample"}); + var event = new ToggleEvent("test", {newState: "sample"}); assert_equals(event.newState, "sample"); }, "newState set to 'sample'"); test(function() { - var event = new PopoverToggleEvent("test", {newState: undefined}); + var event = new ToggleEvent("test", {newState: undefined}); assert_equals(event.newState, ""); }, "newState set to undefined"); test(function() { - var event = new PopoverToggleEvent("test", {newState: null}); + var event = new ToggleEvent("test", {newState: null}); assert_equals(event.newState, "null"); }, "newState set to null"); test(function() { - var event = new PopoverToggleEvent("test", {newState: false}); + var event = new ToggleEvent("test", {newState: false}); assert_equals(event.newState, "false"); }, "newState set to false"); test(function() { - var event = new PopoverToggleEvent("test", {newState: true}); + var event = new ToggleEvent("test", {newState: true}); assert_equals(event.newState, "true"); }, "newState set to true"); test(function() { - var event = new PopoverToggleEvent("test", {newState: 0.5}); + var event = new ToggleEvent("test", {newState: 0.5}); assert_equals(event.newState, "0.5"); }, "newState set to a number"); test(function() { - var event = new PopoverToggleEvent("test", {newState: []}); + var event = new ToggleEvent("test", {newState: []}); assert_equals(event.newState, ""); }, "newState set to []"); test(function() { - var event = new PopoverToggleEvent("test", {newState: [1, 2, 3]}); + var event = new ToggleEvent("test", {newState: [1, 2, 3]}); assert_equals(event.newState, "1,2,3"); }, "newState set to [1, 2, 3]"); test(function() { - var event = new PopoverToggleEvent("test", {newState: {sample: 0.5}}); + var event = new ToggleEvent("test", {newState: {sample: 0.5}}); assert_equals(event.newState, "[object Object]"); }, "newState set to an object"); test(function() { - var event = new PopoverToggleEvent("test", + var event = new ToggleEvent("test", {newState: {valueOf: function () { return 'sample'; }}}); assert_equals(event.newState, "[object Object]"); }, "newState set to an object with a valueOf function"); diff --git a/tests/wpt/web-platform-tests/interfaces/popover.tentative.idl b/tests/wpt/web-platform-tests/interfaces/popover.tentative.idl index bf23c7641d9..4e8c85f7dac 100644 --- a/tests/wpt/web-platform-tests/interfaces/popover.tentative.idl +++ b/tests/wpt/web-platform-tests/interfaces/popover.tentative.idl @@ -13,13 +13,13 @@ interface mixin PopoverTargetElement { HTMLInputElement includes PopoverTargetElement; HTMLButtonElement includes PopoverTargetElement; -interface PopoverToggleEvent : Event { - constructor(DOMString type, optional PopoverToggleEventInit eventInitDict = {}); - readonly attribute DOMString currentState; +interface ToggleEvent : Event { + constructor(DOMString type, optional ToggleEventInit eventInitDict = {}); + readonly attribute DOMString oldState; readonly attribute DOMString newState; }; -dictionary PopoverToggleEventInit : EventInit { - DOMString currentState = ""; +dictionary ToggleEventInit : EventInit { + DOMString oldState = ""; DOMString newState = ""; }; diff --git a/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints-fast.html b/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints-fast.html index 2bc5999544f..d80ab67321f 100644 --- a/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints-fast.html +++ b/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints-fast.html @@ -58,6 +58,7 @@ promise_test(async function(t) { await videoTrack.applyConstraints({advanced : [ {torch : true} ]}); } catch (error) { assert_equals(error.name, 'OverconstrainedError'); + assert_equals(error.constraint, 'torch'); return; } assert_unreached('expected applyConstraints to reject'); diff --git a/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints-getSettings.https.html b/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints-getSettings.https.html index 1309d3bded8..c6401570b8b 100644 --- a/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints-getSettings.https.html +++ b/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints-getSettings.https.html @@ -107,6 +107,7 @@ image_capture_test(async t => { await videoTrack.applyConstraints({ advanced: [constraint] }); } catch (error) { assert_equals(error.name, 'OverconstrainedError'); + assert_equals(error.constraint, Object.keys(constraint)[0]); return; } assert_unreached( diff --git a/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints-reject.https.html b/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints-reject.https.html index ac6216ae199..5050ed27dd8 100644 --- a/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints-reject.https.html +++ b/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints-reject.https.html @@ -18,15 +18,14 @@ var makePromiseTest = function(getConstraint) { let stream = await navigator.mediaDevices.getUserMedia({video: true}); let videoTrack = stream.getVideoTracks()[0]; + const constraint = getConstraint(imageCaptureTest.mockImageCapture().state()); try { - const constraints = { - advanced : [ getConstraint(imageCaptureTest.mockImageCapture().state()) ] - }; - + const constraints = { advanced : [constraint] }; await videoTrack.applyConstraints(constraints); assert_unreached('expected applyConstraints to reject'); } catch (error) { assert_equals(error.name, 'OverconstrainedError'); + assert_equals(error.constraint, Object.keys(constraint)[0]); } }); }; diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-push-not-loaded.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/navigate-history-push-not-loaded.html index 611db7e2b13..c1ecdaeeafd 100644 --- a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-push-not-loaded.html +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/navigate-history-push-not-loaded.html @@ -6,14 +6,15 @@ <script> promise_test(async t => { // Purposefully do not wait until after the load event (unlike some sibling tests). - - navigation.onnavigate = t.unreached_func("onnavigate should not be called"); - navigation.onnavigatesuccess = t.unreached_func("onnavigatesuccess should not be called"); - navigation.onnavigateerror = t.unreached_func("onnavigateerror should not be called"); - + assert_equals(navigation.entries().length, 1); assert_equals(document.readyState, "loading", "Document must not have loaded yet"); - const result = navigation.navigate("#1", { history: "push" }); - await assertBothRejectDOM(t, result, "NotSupportedError"); + let navigateEventType; + navigation.onnavigate = e => navigateEventType = e.navigationType; + + await navigation.navigate("#1", { history: "push" }).finished; + assert_equals(navigateEventType, "push"); + assert_equals(navigation.entries().length, 2); + assert_equals(navigation.currentEntry.index, 1); }, "navigate() with history: 'push' in a document that has not yet had its load event"); </script> diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/navigate-history-push-same-url-cross-document.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/navigate-history-push-same-url-cross-document.html new file mode 100644 index 00000000000..2d07bdcede2 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/navigate-history-push-same-url-cross-document.html @@ -0,0 +1,25 @@ +<!doctype html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/helpers.js"></script> +<iframe id="i" src="/common/blank.html"></iframe> +<script> +promise_test(async t => { + // Wait for after the load event so that the navigation doesn't get converted + // into a replace navigation due to onload not having completed. + await new Promise(resolve => window.onload = () => t.step_timeout(resolve, 0)); + assert_equals(i.contentWindow.navigation.entries().length, 1); + + i.contentWindow.navigation.onnavigatesuccess = t.unreached_func("onnavigatesuccess should not be called"); + i.contentWindow.navigation.onnavigateerror = t.unreached_func("onnavigateerror should not be called"); + + let navigateEventType; + i.contentWindow.navigation.onnavigate = e => navigateEventType = e.navigationType; + + i.contentWindow.navigation.navigate(i.contentWindow.location, { history: "push" }); + await new Promise(resolve => i.onload = resolve); + assert_equals(navigateEventType, "push"); + assert_equals(i.contentWindow.navigation.entries().length, 2); + assert_equals(i.contentWindow.navigation.currentEntry.index, 1); +}, "navigate() to the current URL with history: 'push' and allow it to go cross document"); +</script> diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/navigate-history-push-same-url.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/navigate-history-push-same-url.html new file mode 100644 index 00000000000..339e8c3056b --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/navigate-history-push-same-url.html @@ -0,0 +1,26 @@ +<!doctype html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/helpers.js"></script> + +<script> +promise_test(async t => { + // Wait for after the load event so that the navigation doesn't get converted + // into a replace navigation due to onload not having completed. + await new Promise(resolve => window.onload = () => t.step_timeout(resolve, 0)); + assert_equals(navigation.entries().length, 1); + + + let navigateEventType; + navigation.onnavigate = e => { + navigateEventType = e.navigationType; + e.intercept(); + } + navigation.onnavigateerror = t.unreached_func("onnavigateerror should not be called"); + + await navigation.navigate(location.href, { history: "push" }).finished; + assert_equals(navigateEventType, "push"); + assert_equals(navigation.entries().length, 2); + assert_equals(navigation.currentEntry.index, 1); +}, "navigate() to the current URL with history: 'push' and intercept so it remains same-document"); +</script> diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-push-same-url.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-push-same-url.html deleted file mode 100644 index 216e94eb1d0..00000000000 --- a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-push-same-url.html +++ /dev/null @@ -1,19 +0,0 @@ -<!doctype html> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="resources/helpers.js"></script> - -<script> -promise_test(async t => { - // Wait for after the load event so that we are definitely testing the - // same URL as the cause of the rejections. - await new Promise(resolve => window.onload = () => t.step_timeout(resolve, 0)); - - navigation.onnavigate = t.unreached_func("onnavigate should not be called"); - navigation.onnavigatesuccess = t.unreached_func("onnavigatesuccess should not be called"); - navigation.onnavigateerror = t.unreached_func("onnavigateerror should not be called"); - - const result = navigation.navigate(location.href, { history: "push" }); - await assertBothRejectDOM(t, result, "NotSupportedError"); -}, "navigate() to a the current URL"); -</script> diff --git a/tests/wpt/web-platform-tests/notifications/noop-sw.js b/tests/wpt/web-platform-tests/notifications/noop-sw.js new file mode 100644 index 00000000000..e69de29bb2d --- /dev/null +++ b/tests/wpt/web-platform-tests/notifications/noop-sw.js diff --git a/tests/wpt/web-platform-tests/notifications/shownotification.https.window.js b/tests/wpt/web-platform-tests/notifications/shownotification.https.window.js new file mode 100644 index 00000000000..5fcfccff756 --- /dev/null +++ b/tests/wpt/web-platform-tests/notifications/shownotification.https.window.js @@ -0,0 +1,72 @@ +// META: script=/resources/testdriver.js +// META: script=/resources/testdriver-vendor.js + +"use strict"; + +/** @type {ServiceWorkerRegistration} */ +let registration; + +function reset() { + return navigator.serviceWorker.getRegistrations().then(registrations => { + return Promise.all(registrations.map(r => r.unregister())); + }); +} + +async function registerSw() { + await reset(); + const reg = await navigator.serviceWorker.register("noop-sw.js"); + await navigator.serviceWorker.ready; + return reg; +} + +async function cleanup() { + for (const n of await registration.getNotifications()) { + n.close(); + } +} + +promise_setup(async () => { + await test_driver.set_permission({ name: "notifications" }, "granted"); + registration = await registerSw(); +}); + +promise_test(async () => { + const notifications = await registration.getNotifications(); + assert_equals(notifications.length, 0, "Should return zero notification"); +}, "fetching no notifications"); + +promise_test(async t => { + t.add_cleanup(cleanup); + await registration.showNotification(""); + const notifications = await registration.getNotifications(); + assert_equals(notifications.length, 1, "Should return one notification"); + assert_equals(notifications[0].title, "", "Should return an empty title"); +}, "fetching notification with an empty title"); + +promise_test(async t => { + t.add_cleanup(cleanup); + await Promise.all([ + registration.showNotification("thunder", { tag: "fire" }), + registration.showNotification("bird", { tag: "fox" }), + registration.showNotification("supernova", { tag: "quantum" }), + ]); + const notifications = await registration.getNotifications({ tag: "quantum" }); + assert_equals( + notifications.length, + 1, + "Should return only the matching notification" + ); + assert_equals(notifications[0].title, "supernova", "title should match"); + assert_equals(notifications[0].tag, "quantum", "tag should match"); +}, "fetching notification by tag filter"); + +promise_test(async t => { + t.add_cleanup(cleanup); + await Promise.all([ + registration.showNotification("thunder"), + registration.showNotification("bird"), + registration.showNotification("supernova"), + ]); + const notifications = await registration.getNotifications(); + assert_equals(notifications.length, 3, "Should return three notifications"); +}, "fetching multiple notifications"); diff --git a/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-attributes.tentative.window.js b/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-attributes.tentative.window.js index 4d403e12aa6..97bf79f0ef9 100644 --- a/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-attributes.tentative.window.js +++ b/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-attributes.tentative.window.js @@ -34,7 +34,7 @@ promise_test(async t => { return location.href; }); // Check the BFCache result and the reported reasons. - await assertBFCache(rc1, /*shouldRestoreFromBFCache=*/ false); + await assertBFCacheEligibility(rc1, /*shouldRestoreFromBFCache=*/ false); await assertNotRestoredReasonsEquals( rc1, /*blocked=*/ true, diff --git a/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-bfcache-reasons-stay.tentative.window.js b/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-bfcache-reasons-stay.tentative.window.js index a0f11abc837..745c167e790 100644 --- a/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-bfcache-reasons-stay.tentative.window.js +++ b/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-bfcache-reasons-stay.tentative.window.js @@ -22,7 +22,7 @@ promise_test(async t => { }); // Check the BFCache result and the reported reasons. - await assertBFCache(rc1, /*shouldRestoreFromBFCache=*/ false); + await assertBFCacheEligibility(rc1, /*shouldRestoreFromBFCache=*/ false); await assertNotRestoredReasonsEquals( rc1, /*blocked=*/ true, @@ -35,7 +35,7 @@ promise_test(async t => { // This time no blocking feature is used, so the page is restored // from BFCache. Ensure that the previous reasons stay there. - await assertBFCache(rc1, /*shouldRestoreFromBFCache=*/ true); + await assertBFCacheEligibility(rc1, /*shouldRestoreFromBFCache=*/ true); await assertNotRestoredReasonsEquals( rc1, /*blocked=*/ true, diff --git a/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-bfcache.tentative.window.js b/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-bfcache.tentative.window.js index 82c4c9bdd85..b5ff4d7cc59 100644 --- a/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-bfcache.tentative.window.js +++ b/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-bfcache.tentative.window.js @@ -18,7 +18,7 @@ promise_test(async t => { // Check the BFCache result and verify that no reasons are recorded // for successful restore. - await assertBFCache(rc1, /*shouldRestoreFromBFCache=*/ true); + await assertBFCacheEligibility(rc1, /*shouldRestoreFromBFCache=*/ true); assert_true(await rc1.executeScript(() => { let reasons = performance.getEntriesByType('navigation')[0].notRestoredReasons; diff --git a/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-cross-origin-bfcache.tentative.window.js b/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-cross-origin-bfcache.tentative.window.js index d1f29eab6fb..64c0a89c820 100644 --- a/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-cross-origin-bfcache.tentative.window.js +++ b/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-cross-origin-bfcache.tentative.window.js @@ -40,7 +40,7 @@ promise_test(async t => { }); // Check the BFCache result and the reported reasons. - await assertBFCache(rc1, /*shouldRestoreFromBFCache=*/ false); + await assertBFCacheEligibility(rc1, /*shouldRestoreFromBFCache=*/ false); await assertNotRestoredReasonsEquals( rc1, /*blocked=*/ false, diff --git a/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-not-bfcached.tentative.window.js b/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-not-bfcached.tentative.window.js index 6367f58ce91..5e94a930891 100644 --- a/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-not-bfcached.tentative.window.js +++ b/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-not-bfcached.tentative.window.js @@ -23,7 +23,7 @@ promise_test(async t => { }); // Check the BFCache result and the reported reasons. - await assertBFCache(rc1, /*shouldRestoreFromBFCache=*/ false); + await assertBFCacheEligibility(rc1, /*shouldRestoreFromBFCache=*/ false); await assertNotRestoredReasonsEquals( rc1, /*blocked=*/ true, diff --git a/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-same-origin-bfcache.tentative.window.js b/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-same-origin-bfcache.tentative.window.js index 36ec53364b5..858d94b26d6 100644 --- a/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-same-origin-bfcache.tentative.window.js +++ b/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-same-origin-bfcache.tentative.window.js @@ -33,7 +33,7 @@ promise_test(async t => { }); // Check the BFCache result and the reported reasons. - await assertBFCache(rc1, /*shouldRestoreFromBFCache=*/ false); + await assertBFCacheEligibility(rc1, /*shouldRestoreFromBFCache=*/ false); await assertNotRestoredReasonsEquals( rc1, /*blocked=*/ false, diff --git a/tests/wpt/web-platform-tests/performance-timeline/resources/include-frames-subframe.html b/tests/wpt/web-platform-tests/performance-timeline/resources/include-frames-subframe.html index b74b1175f8c..73df04b046e 100644 --- a/tests/wpt/web-platform-tests/performance-timeline/resources/include-frames-subframe.html +++ b/tests/wpt/web-platform-tests/performance-timeline/resources/include-frames-subframe.html @@ -29,7 +29,7 @@ const childFrame = document.createElement('iframe'); childFrame.addEventListener('load', async () => { - const entries = performance.getEntries(true); + const entries = performance.getEntries({ includeChildFrames: true }); // Report number of performance entries to the parent. window.parent.postMessage(entries.length, "*"); diff --git a/tests/wpt/web-platform-tests/performance-timeline/tentative/detached-frame.html b/tests/wpt/web-platform-tests/performance-timeline/tentative/detached-frame.html index d5753dbcd7b..70019223a64 100644 --- a/tests/wpt/web-platform-tests/performance-timeline/tentative/detached-frame.html +++ b/tests/wpt/web-platform-tests/performance-timeline/tentative/detached-frame.html @@ -21,8 +21,7 @@ promise_test(async () => { // Detach the child frame document.body.removeChild(childFrame); - const entries = childWindow.performance.getEntries(true); - const parent_entries = performance.getEntries(true); + const entries = childWindow.performance.getEntries({ includeChildFrames: true }); + const parent_entries = performance.getEntries({ includeChildFrames: true }); }, "GetEntries of a detached parent frame does not crash"); </script> - diff --git a/tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-A-A.html b/tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-A-A.html index 0cdcd58115f..58480c7af1e 100644 --- a/tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-A-A.html +++ b/tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-A-A.html @@ -32,12 +32,12 @@ // Verify the number of performance entries in the child frame. assert_equals(childFrameEntrySize, 6, 'Child Frame should have 6 entries.'); - const entries = performance.getEntries(true); + const entries = performance.getEntries({ includeChildFrames: true }); - const navigationEntries = performance.getEntriesByType('navigation', true); - - const markedEntries = performance.getEntriesByName('entry-name', undefined, true); + const navigationEntries = performance.getEntries({ entryType: "navigation", includeChildFrames: true }); + const markedEntries = performance.getEntries( + { name: 'entry-name', includeChildFrames: true }); // 3 entries for parent, 4 for child, 2 for grandchild. assert_equals(entries.length, 9, 'Total entries should be 9.'); @@ -48,6 +48,31 @@ // 1 entry for child, 1 for grandchild. assert_equals(markedEntries.length, 2, 'Mark entries should be 2.'); + // Test cases where includeChildFrames is false. + const entriesWithNoFitlerOptions = performance.getEntries(); + + const entriesWithoutIncludingChildFrames = performance.getEntries({ includeChildFrames: false }); + + const navigationEntriesWithoutIncludingChildFrames = performance.getEntries({ entryType: "navigation", includeChildFrames: false }); + + const markedEntriesWithoutIncludingChildFrames = performance.getEntries( + { name: 'entry-name', includeChildFrames: false }); + + // 3 entries for parent. + assert_equals(entriesWithNoFitlerOptions.length, 3, + 'Total entries without filter options should be 3 without filter options.'); + + assert_equals(entriesWithoutIncludingChildFrames.length, 3, + 'Total entries with includeChildFrame being false should be 3.'); + + // 1 entry for parent. + assert_equals(navigationEntriesWithoutIncludingChildFrames.length, 1, + 'Navigation entries with includeChildFrame being false should be 1.'); + + // 0 entry for child. + assert_equals(markedEntriesWithoutIncludingChildFrames.length, 0, + 'Mark entries with includeChildFrame being false should be 0.'); + }, 'GetEntries of a document of origin A, its child frame of origin B and \ its grandchild frame of origin A.'); </script> diff --git a/tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-A.html b/tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-A.html index bb4ee9e63ab..277a2376aef 100644 --- a/tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-A.html +++ b/tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-A.html @@ -28,11 +28,12 @@ // Load a child frame. await loadSameOriginChildFrame(); - const entries = performance.getEntries(true); + const entries = performance.getEntries({ includeChildFrames: true }); - const navigationEntries = performance.getEntriesByType('navigation', true); + const navigationEntries = performance.getEntries({ entryType: "navigation", includeChildFrames: true }); - const markedEntries = performance.getEntriesByName('entry-name', undefined, true); + const markedEntries = performance.getEntries( + { name: 'entry-name', includeChildFrames: true }); // 3 entries for parent, 2 for child. assert_equals(entries.length, 5, 'Total entries should be 5.'); @@ -42,6 +43,32 @@ // 1 entry for child. assert_equals(markedEntries.length, 1, 'Mark entries should be 1.'); + + // Test cases where includeChildFrames is false. + const entriesWithNoFitlerOptions = performance.getEntries(); + + const entriesWithoutIncludingChildFrames = performance.getEntries({ includeChildFrames: false }); + + const navigationEntriesWithoutIncludingChildFrames = performance.getEntries({ entryType: "navigation", includeChildFrames: false }); + + const markedEntriesWithoutIncludingChildFrames = performance.getEntries( + { name: 'entry-name', includeChildFrames: false }); + + // 3 entries for parent. + assert_equals(entriesWithNoFitlerOptions.length, 3, + 'Total entries without filter options should be 3 without filter options.'); + + assert_equals(entriesWithoutIncludingChildFrames.length, 3, + 'Total entries with includeChildFrame being false should be 3.'); + + // 1 entry for parent. + assert_equals(navigationEntriesWithoutIncludingChildFrames.length, 1, + 'Navigation entries with includeChildFrame being false should be 1.'); + + // 0 entry for child. + assert_equals(markedEntriesWithoutIncludingChildFrames.length, 0, + 'Mark entries with includeChildFrame being false should be 0.'); + }, 'GetEntries of a document of origin A and its child frame of origin A.'); </script> </body> diff --git a/tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-AA.html b/tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-AA.html index e4c742a08a2..485e1d2a115 100644 --- a/tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-AA.html +++ b/tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-AA.html @@ -9,11 +9,12 @@ <body> <script> const verifyPerformanceEntries = () => { - const entries = performance.getEntries(true); + const entries = performance.getEntries({ includeChildFrames: true }); - const navigationEntries = performance.getEntriesByType( 'navigation', true); + const navigationEntries = performance.getEntries({ entryType: "navigation", includeChildFrames: true }); - const markedEntries = performance.getEntriesByName('entry-name', undefined, true ); + const markedEntries = performance.getEntries( + { name: 'entry-name', includeChildFrames: true }); // 4 entries for parent, 2 for each child assert_equals(entries.length, 8,'Total entries should be 8.'); diff --git a/tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-AB.html b/tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-AB.html index cbd27a0380c..7650a61e499 100644 --- a/tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-AB.html +++ b/tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-AB.html @@ -23,11 +23,12 @@ } const verifyPerformanceEntries = () => { - const entries = performance.getEntries(true); + const entries = performance.getEntries({ includeChildFrames: true }); - const navigationEntries = performance.getEntriesByType('navigation', true); + const navigationEntries = performance.getEntries({ entryType: "navigation", includeChildFrames: true }); - const markedEntries = performance.getEntriesByName('entry-name', undefined, true); + const markedEntries = performance.getEntries( + { name: 'entry-name', includeChildFrames: true }); // 4 entries for parent, 2 for local child, 0 for remote child. assert_equals(entries.length, 6, 'Total entries should 6.'); diff --git a/tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-B-A.html b/tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-B-A.html index 5e46bc21624..9b873bdde6e 100644 --- a/tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-B-A.html +++ b/tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-B-A.html @@ -36,12 +36,12 @@ // Verify the number of performance entries in the child frame. assert_equals(childFrameEntrySize, 4, 'Child frame entries should be 4.'); - const entries = performance.getEntries(true); + const entries = performance.getEntries({ includeChildFrames: true }); - const navigationEntries = performance.getEntriesByType( - 'navigation', true); + const navigationEntries = performance.getEntries({ entryType: "navigation", includeChildFrames: true }); - const markedEntries = performance.getEntriesByName('entry-name', undefined, true); + const markedEntries = performance.getEntries( + { name: 'entry-name', includeChildFrames: true }); // 3 entries for parent, 0 for child, 2 for grandchild. assert_equals(entries.length, 5, 'Total entries should be 5.'); @@ -51,6 +51,32 @@ // 1 entry for grandchild. assert_equals(markedEntries.length, 1, 'Mark entries should be 1.'); + + // Test cases where includeChildFrames is false. + const entriesWithNoFitlerOptions = performance.getEntries(); + + const entriesWithoutIncludingChildFrames = performance.getEntries({ includeChildFrames: false }); + + const navigationEntriesWithoutIncludingChildFrames = performance.getEntries({ entryType: "navigation", includeChildFrames: false }); + + const markedEntriesWithoutIncludingChildFrames = performance.getEntries( + { name: 'entry-name', includeChildFrames: false }); + + // 3 entries for parent. + assert_equals(entriesWithNoFitlerOptions.length, 3, + 'Total entries without filter options should be 3 without filter options.'); + + assert_equals(entriesWithoutIncludingChildFrames.length, 3, + 'Total entries with includeChildFrame being false should be 3.'); + + // 1 entry for parent. + assert_equals(navigationEntriesWithoutIncludingChildFrames.length, 1, + 'Navigation entries with includeChildFrame being false should be 1.'); + + // 1 entry for child. + assert_equals(markedEntriesWithoutIncludingChildFrames.length, 0, + 'Mark entries with includeChildFrame being false should be 0.'); + }, 'GetEntries of a document of origin A, its child frame of origin B and \ its grandchild frame of origin A.'); </script> diff --git a/tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-B-B.html b/tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-B-B.html index a1c85150e69..b182931e5dc 100644 --- a/tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-B-B.html +++ b/tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-B-B.html @@ -35,7 +35,7 @@ // 4 for child, 2 for grandchild. assert_equals(childFrameEntrySize, 6, 'Child frame entries should be 6.'); - const entries = performance.getEntries(true); + const entries = performance.getEntries({ includeChildFrames: true }); // 3 entries for parent, 0 for child, 0 for grandchild. assert_equals(entries.length, 3, 'Total entries should be 3.'); diff --git a/tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-B.html b/tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-B.html index 0373c824d90..0686c9b1e58 100644 --- a/tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-B.html +++ b/tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-B.html @@ -28,11 +28,12 @@ await loadCrossOriginChildFrame(); - const entries = performance.getEntries(true); + const entries = performance.getEntries({ includeChildFrames: true }); - const navigationEntries = performance.getEntriesByType("navigation", true); + const navigationEntries = performance.getEntries({ entryType: "navigation", includeChildFrames: true }); - const markedEntries = performance.getEntriesByName('entry-name', undefined, true); + const markedEntries = performance.getEntries( + { name: 'entry-name', includeChildFrames: true }); // 3 entries for parent, 0 for child. assert_equals(entries.length, 3, 'Total entries should be 3.'); diff --git a/tests/wpt/web-platform-tests/performance-timeline/tentative/performance-entry-source.html b/tests/wpt/web-platform-tests/performance-timeline/tentative/performance-entry-source.html index 5e51ddbbe44..471a52ab285 100644 --- a/tests/wpt/web-platform-tests/performance-timeline/tentative/performance-entry-source.html +++ b/tests/wpt/web-platform-tests/performance-timeline/tentative/performance-entry-source.html @@ -8,7 +8,7 @@ <script> promise_test(() => { return new Promise(resolve => { - const navigationEntries = performance.getEntriesByType("navigation") + const navigationEntries = performance.getEntries({ type: 'navigation' }) const parentEntry = navigationEntries[0] // Parent NavigationTiming source is current window. @@ -20,7 +20,9 @@ promise_test(() => { document.body.appendChild(childFrame) childFrame.addEventListener('load', () => { - const markedEntries = performance.getEntriesByName("entry-name", undefined, true) + const markedEntries = performance.getEntries( + { name: 'entry-name', includeChildFrames: true }); + const childEntry = markedEntries[0] // Child PerformanceMark source is the child's Window. @@ -30,4 +32,4 @@ promise_test(() => { }) }) }, "PerformanceEntry source is equal to its respective Window") -</script>
\ No newline at end of file +</script> diff --git a/tests/wpt/web-platform-tests/resources/chromium/mock-direct-sockets.js b/tests/wpt/web-platform-tests/resources/chromium/mock-direct-sockets.js index caab177b986..0752850c8a3 100644 --- a/tests/wpt/web-platform-tests/resources/chromium/mock-direct-sockets.js +++ b/tests/wpt/web-platform-tests/resources/chromium/mock-direct-sockets.js @@ -19,7 +19,7 @@ self.DirectSocketsServiceTest = (() => { this.interceptor_.stop(); } - openTcpSocket( + openTCPSocket( options, receiver, observer) { @@ -29,7 +29,7 @@ self.DirectSocketsServiceTest = (() => { }); } - openUdpSocket( + openUDPSocket( options, receiver, listener) { diff --git a/tests/wpt/web-platform-tests/resources/chromium/mock-imagecapture.js b/tests/wpt/web-platform-tests/resources/chromium/mock-imagecapture.js index 5753b7ec502..8424e1e36c8 100644 --- a/tests/wpt/web-platform-tests/resources/chromium/mock-imagecapture.js +++ b/tests/wpt/web-platform-tests/resources/chromium/mock-imagecapture.js @@ -1,4 +1,4 @@ -import {FillLightMode, ImageCapture, ImageCaptureReceiver, MeteringMode, RedEyeReduction} from '/gen/media/capture/mojom/image_capture.mojom.m.js'; +import {BackgroundBlurMode, FillLightMode, ImageCapture, ImageCaptureReceiver, MeteringMode, RedEyeReduction} from '/gen/media/capture/mojom/image_capture.mojom.m.js'; self.ImageCaptureTest = (() => { // Class that mocks ImageCapture interface defined in @@ -129,6 +129,12 @@ self.ImageCaptureTest = (() => { step: 3.0 }, fillLightMode: [FillLightMode.AUTO, FillLightMode.FLASH], + + supportedBackgroundBlurModes: [ + BackgroundBlurMode.OFF, + BackgroundBlurMode.BLUR + ], + backgroundBlurMode: BackgroundBlurMode.OFF, } }; this.panTiltZoomPermissionStatus_ = null; @@ -217,6 +223,9 @@ self.ImageCaptureTest = (() => { if (settings.hasTorch) this.state_.state.torch = settings.torch; + if (settings.hasBackgroundBlurMode) + this.state_.state.backgroundBlurMode = [settings.backgroundBlurMode]; + return Promise.resolve({ success: true }); @@ -245,6 +254,19 @@ self.ImageCaptureTest = (() => { return this.state_.state; } + turnOffBackgroundBlurMode() { + this.state_.state.backgroundBlurMode = BackgroundBlurMode.OFF; + } + turnOnBackgroundBlurMode() { + this.state_.state.backgroundBlurMode = BackgroundBlurMode.BLUR; + } + turnOffSupportedBackgroundBlurModes() { + this.state_.state.supportedBackgroundBlurModes = [BackgroundBlurMode.OFF]; + } + turnOnSupportedBackgroundBlurModes() { + this.state_.state.supportedBackgroundBlurModes = [BackgroundBlurMode.BLUR]; + } + options() { return this.settings_; } 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 index dc3785078a6..9f66a5eb835 100644 --- 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 @@ -179,7 +179,7 @@ endOffset: 790 }); - test_animation_delay({ + test_animation_delay({ rangeStart: 'exit 2em', rangeEnd: 'exit 8em', startOffset: 820, diff --git a/tests/wpt/web-platform-tests/scroll-animations/view-timelines/view-timeline-range.html b/tests/wpt/web-platform-tests/scroll-animations/view-timelines/view-timeline-range.html index 4123bda4708..f2a1b3f586d 100644 --- a/tests/wpt/web-platform-tests/scroll-animations/view-timelines/view-timeline-range.html +++ b/tests/wpt/web-platform-tests/scroll-animations/view-timelines/view-timeline-range.html @@ -31,6 +31,7 @@ height: 100px; width: 100px; display: inline-block; + font-size: 10px; } </style> <body> @@ -149,4 +150,37 @@ }); }, 'View timeline with range as <name> <percent+px> pair.' ); + + promise_test(async t => { + await runTimelineRangeTest(t, { + rangeStart: "contain -50%", + rangeEnd: "enter 200%", + startOffset: 650, + endOffset: 800 + }); + + await runTimelineRangeTest(t, { + rangeStart: "contain 20px", + rangeEnd: "contain 100px", + startOffset: 720, + endOffset: 800 + }); + + await runTimelineRangeTest(t, { + rangeStart: "contain calc(0% + 20px)", + rangeEnd: "contain calc(100% - 10px)", + startOffset: 720, + endOffset: 790 + }); + + await runTimelineRangeTest(t, { + rangeStart: "exit 2em", + rangeEnd: "exit 8em", + startOffset: 820, + endOffset: 880 + }); + + + }, 'View timeline with range as strings.'); + </script> diff --git a/tests/wpt/web-platform-tests/storage/buckets/buckets_storage_policy.tentative.https.any.js b/tests/wpt/web-platform-tests/storage/buckets/buckets_storage_policy.tentative.https.any.js new file mode 100644 index 00000000000..4aaa02e4be4 --- /dev/null +++ b/tests/wpt/web-platform-tests/storage/buckets/buckets_storage_policy.tentative.https.any.js @@ -0,0 +1,25 @@ +// META: title=Buckets API: Tests for bucket storage policies. +// META: global=window,worker + +'use strict'; + +promise_test(async testCase => { + testCase.add_cleanup(async () => { + const bucketNames = await navigator.storageBuckets.keys(); + for (const bucketName of bucketNames) { + await navigator.storageBuckets.delete(bucketName); + } + }); + + await promise_rejects_js( + testCase, TypeError, + navigator.storageBuckets.open('negative', {quota: -1})); + + await promise_rejects_js( + testCase, TypeError, navigator.storageBuckets.open('zero', {quota: 0})); + + await promise_rejects_js( + testCase, TypeError, + navigator.storageBuckets.open( + 'above_max', {quota: Number.MAX_SAFE_INTEGER + 1})); +}, 'The open promise should reject with a TypeError when quota is requested outside the range of 1 to Number.MAX_SAFE_INTEGER.'); diff --git a/tests/wpt/web-platform-tests/svg/struct/reftests/use-a.svg b/tests/wpt/web-platform-tests/svg/struct/reftests/use-a.svg new file mode 100644 index 00000000000..40d4c83f21f --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/struct/reftests/use-a.svg @@ -0,0 +1,12 @@ +<svg xmlns="http://www.w3.org/2000/svg" xmlns:h="http://www.w3.org/1999/xhtml"> + <title>Testing that 'use' can target 'a' elements</title> + <h:link rel="match" href="reference/green-100x100.svg"/> + <defs> + <a id="a"> + <rect width="100" height="100" fill="green"/> + </a> + </defs> + <rect x="10" y="10" width="80" height="80" fill="red"/> + + <use href="#a"/> +</svg> diff --git a/tests/wpt/web-platform-tests/svg/struct/reftests/use-no-tspan.svg b/tests/wpt/web-platform-tests/svg/struct/reftests/use-no-tspan.svg new file mode 100644 index 00000000000..5368ca343c8 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/struct/reftests/use-no-tspan.svg @@ -0,0 +1,10 @@ +<svg xmlns="http://www.w3.org/2000/svg" xmlns:h="http://www.w3.org/1999/xhtml"> + <title>Testing that 'use' cannot make 'tspan' elements visible</title> + <h:link rel="match" href="reference/green-100x100.svg"/> + <defs> + <text><tspan id="t" x="20" y="100" fill="red" font-size="36">Should not see this</tspan></text> + </defs> + <rect width="100" height="100" fill="green"/> + + <use href="#t"/> +</svg> diff --git a/tests/wpt/web-platform-tests/svg/struct/reftests/use-switch.svg b/tests/wpt/web-platform-tests/svg/struct/reftests/use-switch.svg new file mode 100644 index 00000000000..6c01c301980 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/struct/reftests/use-switch.svg @@ -0,0 +1,12 @@ +<svg xmlns="http://www.w3.org/2000/svg" xmlns:h="http://www.w3.org/1999/xhtml"> + <title>Testing that 'use' can target 'switch' elements</title> + <h:link rel="match" href="reference/green-100x100.svg"/> + <defs> + <switch id="s"> + <rect width="100" height="100" fill="green"/> + </switch> + </defs> + <rect x="10" y="10" width="80" height="80" fill="red"/> + + <use href="#s"/> +</svg> diff --git a/tests/wpt/web-platform-tests/webcodecs/reconfiguring-encoder.https.any.js b/tests/wpt/web-platform-tests/webcodecs/reconfiguring-encoder.https.any.js index 7bc7402b011..bc7e9b74fb9 100644 --- a/tests/wpt/web-platform-tests/webcodecs/reconfiguring-encoder.https.any.js +++ b/tests/wpt/web-platform-tests/webcodecs/reconfiguring-encoder.https.any.js @@ -14,8 +14,8 @@ promise_setup(async () => { '?vp8': {codec: 'vp8'}, '?vp9_p0': {codec: 'vp09.00.10.08'}, '?vp9_p2': {codec: 'vp09.02.10.10'}, - '?h264_avc': {codec: 'avc1.42001E', avc: {format: 'avc'}}, - '?h264_annexb': {codec: 'avc1.42001E', avc: {format: 'annexb'}} + '?h264_avc': {codec: 'avc1.42001F', avc: {format: 'avc'}}, + '?h264_annexb': {codec: 'avc1.42001F', avc: {format: 'annexb'}} }[location.search]; config.hardwareAcceleration = 'prefer-software'; config.bitrateMode = "constant"; diff --git a/tests/wpt/web-platform-tests/webcodecs/utils.js b/tests/wpt/web-platform-tests/webcodecs/utils.js index aea658d3f2c..bbb53e70e0d 100644 --- a/tests/wpt/web-platform-tests/webcodecs/utils.js +++ b/tests/wpt/web-platform-tests/webcodecs/utils.js @@ -1,5 +1,4 @@ function make_audio_data(timestamp, channels, sampleRate, frames) { - let data = new Float32Array(frames*channels); // This generates samples in a planar format. @@ -207,3 +206,30 @@ function isFrameClosed(frame) { frame.displayHeight == 0 && frame.codedRect == null && frame.visibleRect == null; } + +function testImageBitmapToAndFromVideoFrame( + width, height, expectedPixel, canvasOptions, imageBitmapOptions, + imageSetting) { + let canvas = new OffscreenCanvas(width, height); + let ctx = canvas.getContext('2d', canvasOptions); + ctx.fillStyle = 'rgb(50, 100, 150)'; + ctx.fillRect(0, 0, width, height); + testCanvas(ctx, width, height, expectedPixel, imageSetting, assert_equals); + + return createImageBitmap(canvas, imageBitmapOptions) + .then((fromImageBitmap) => { + let videoFrame = new VideoFrame(fromImageBitmap, {timestamp: 0}); + return createImageBitmap(videoFrame, imageBitmapOptions); + }) + .then((toImageBitmap) => { + let myCanvas = new OffscreenCanvas(width, height); + let myCtx = myCanvas.getContext('2d', canvasOptions); + myCtx.drawImage(toImageBitmap, 0, 0); + let tolerance = 2; + testCanvas( + myCtx, width, height, expectedPixel, imageSetting, + (actual, expected) => { + assert_approx_equals(actual, expected, tolerance); + }); + }); +} diff --git a/tests/wpt/web-platform-tests/webcodecs/videoFrame-createImageBitmap.any.js b/tests/wpt/web-platform-tests/webcodecs/videoFrame-createImageBitmap.any.js index 2923427b181..83697136238 100644 --- a/tests/wpt/web-platform-tests/webcodecs/videoFrame-createImageBitmap.any.js +++ b/tests/wpt/web-platform-tests/webcodecs/videoFrame-createImageBitmap.any.js @@ -1,32 +1,6 @@ // META: global=window,dedicatedworker // META: script=/webcodecs/utils.js -function testImageBitmapToAndFromVideoFrame(width, height, expectedPixel, - canvasOptions, imageBitmapOptions, imageSetting) { - let canvas = new OffscreenCanvas(width, height); - let ctx = canvas.getContext('2d', canvasOptions); - ctx.fillStyle = 'rgb(50, 100, 150)'; - ctx.fillRect(0, 0, width, height); - testCanvas(ctx, width, height, expectedPixel, imageSetting, assert_equals); - - return createImageBitmap(canvas, imageBitmapOptions) - .then((fromImageBitmap) => { - let videoFrame = new VideoFrame(fromImageBitmap, { - timestamp: 0 - }); - return createImageBitmap(videoFrame, imageBitmapOptions); - }) - .then((toImageBitmap) => { - let myCanvas = new OffscreenCanvas(width, height); - let myCtx = myCanvas.getContext('2d', canvasOptions); - myCtx.drawImage(toImageBitmap, 0, 0); - let tolerance = 2; - testCanvas(myCtx, width, height, expectedPixel, imageSetting, (actual, expected) => { - assert_approx_equals(actual, expected, tolerance); - }); - }); -} - promise_test(() => { return testImageBitmapToAndFromVideoFrame(48, 36, kSRGBPixel); }, 'ImageBitmap<->VideoFrame with canvas(48x36 srgb uint8).'); @@ -35,34 +9,6 @@ promise_test(() => { return testImageBitmapToAndFromVideoFrame(480, 360, kSRGBPixel); }, 'ImageBitmap<->VideoFrame with canvas(480x360 srgb uint8).'); -promise_test(() => { - return testImageBitmapToAndFromVideoFrame(48, 36, kP3Pixel, - kCanvasOptionsP3Uint8, { - colorSpaceConversion: "none" - }, kImageSettingOptionsP3Uint8); -}, 'ImageBitmap<->VideoFrame with canvas(48x36 display-p3 uint8).'); - -promise_test(() => { - return testImageBitmapToAndFromVideoFrame(480, 360, kP3Pixel, - kCanvasOptionsP3Uint8, { - colorSpaceConversion: "none" - }, kImageSettingOptionsP3Uint8); -}, 'ImageBitmap<->VideoFrame with canvas(480x360 display-p3 uint8).'); - -promise_test(() => { - return testImageBitmapToAndFromVideoFrame(48, 36, kRec2020Pixel, - kCanvasOptionsRec2020Uint8, { - colorSpaceConversion: "none" - }, kImageSettingOptionsRec2020Uint8); -}, 'ImageBitmap<->VideoFrame with canvas(48x36 rec2020 uint8).'); - -promise_test(() => { - return testImageBitmapToAndFromVideoFrame(480, 360, kRec2020Pixel, - kCanvasOptionsRec2020Uint8, { - colorSpaceConversion: "none" - }, kImageSettingOptionsRec2020Uint8); -}, 'ImageBitmap<->VideoFrame with canvas(480x360 rec2020 uint8).'); - promise_test(async () => { const width = 128; const height = 128; @@ -79,4 +25,4 @@ promise_test(async () => { assert_equals(bitmap.width, width / 2); assert_equals(bitmap.height, height / 2); bitmap.close(); -}, 'createImageBitmap uses frame display size');
\ No newline at end of file +}, 'createImageBitmap uses frame display size'); diff --git a/tests/wpt/web-platform-tests/webnn/conv_transpose2d.https.any.js b/tests/wpt/web-platform-tests/webnn/conv_transpose2d.https.any.js new file mode 100644 index 00000000000..8a1f30d5272 --- /dev/null +++ b/tests/wpt/web-platform-tests/webnn/conv_transpose2d.https.any.js @@ -0,0 +1,25 @@ +// META: title=test WebNN API convTranspose2d operation +// META: global=window,dedicatedworker +// META: script=./resources/utils.js +// META: timeout=long + +'use strict'; + +// https://webmachinelearning.github.io/webnn/#api-mlgraphbuilder-convtranspose2d + +const buildConvTranspose2d = (operationName, builder, resources) => { + // MLOperand convTranspose2d(MLOperand input, MLOperand filter, optional MLConvTranspose2dOptions options = {}); + const namedOutputOperand = {}; + const [inputOperand, filterOperand] = createMultiInputOperands(builder, resources); + let convTranspose2dOptions = {...resources.options}; + if (convTranspose2dOptions.bias) { + convTranspose2dOptions.bias = createConstantOperand(builder, convTranspose2dOptions.bias); + } + if (convTranspose2dOptions.activation) { + convTranspose2dOptions.activation = builder[convTranspose2dOptions.activation](); + } + namedOutputOperand[resources.expected.name] = builder[operationName](inputOperand, filterOperand, convTranspose2dOptions); + return namedOutputOperand; +}; + +testWebNNOperation('convTranspose2d', buildConvTranspose2d);
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/webnn/resources/test_data/batch_normalization.json b/tests/wpt/web-platform-tests/webnn/resources/test_data/batch_normalization.json index 429992c67c6..19f414bbfea 100644 --- a/tests/wpt/web-platform-tests/webnn/resources/test_data/batch_normalization.json +++ b/tests/wpt/web-platform-tests/webnn/resources/test_data/batch_normalization.json @@ -1,7 +1,7 @@ { "tests": [ { - "name": "batchNormalization float32 2D tensor default options", + "name": "batchNormalization float32 2D tensor (mean and variance are non-constant) default options", "inputs": { "input": { "shape": [4, 6], @@ -90,6 +90,97 @@ } }, { + "name": "batchNormalization float32 2D tensor default options", + "inputs": { + "input": { + "shape": [4, 6], + "data": [ + -41.30732967168238, + 64.08864045143429, + -63.376671841233104, + -46.7903680211994, + 83.0222726565018, + -80.08049213079853, + -62.144380499565784, + -0.10012771650340824, + -40.902161220312074, + 56.963061967558474, + 37.37249789808206, + 57.04647733193906, + 82.05679802728304, + -86.11642850667623, + 76.88317547014259, + 97.03362133579051, + -21.35103988063949, + -96.93823797160586, + -9.359310262561493, + 80.2082435478892, + -85.36802529512583, + 62.35185227095363, + -68.4724340974042, + -12.107167478351585 + ], + "type": "float32" + }, + "mean": { + "shape": [6], + "data": [ + -7.814267643537363, + -95.6412954353084, + 38.154405424391285, + -55.9520351570133, + -87.8650062484926, + -41.636455304505525 + ], + "type": "float32", + "constant": true + }, + "variance": { + "shape": [6], + "data": [ + 60.311864286118144, + 26.432604504927436, + 53.275636661772396, + 40.146120500534074, + 59.41098289103077, + 35.99981828466932 + ], + "type": "float32", + "constant": true + } + }, + "expected": { + "shape": [4, 6], + "data": [ + -4.312741756439209, + 31.068212509155273, + -13.910240173339844, + 1.4459478855133057, + 22.170541763305664, + -6.407354354858398, + -6.995829105377197, + 18.583200454711914, + -10.831125259399414, + 17.820920944213867, + 16.2480411529541, + 16.447195053100586, + 11.57226848602295, + 1.8526301383972168, + 5.306026458740234, + 24.145092010498047, + 8.629376411437988, + -9.216986656188965, + -0.1989477425813675, + 34.203548431396484, + -16.923160552978516, + 18.671411514282227, + 2.5159497261047363, + 4.921559810638428 + ], + "type": "float32" + } + }, + { "name": "batchNormalization float32 3D tensor default options", "inputs": { "input": { @@ -129,7 +220,8 @@ 63.13715247590298, -61.6298331266107 ], - "type": "float32" + "type": "float32", + "constant": true }, "variance": { "shape": [3], @@ -138,7 +230,8 @@ 41.847234441124506, 16.128282835364406 ], - "type": "float32" + "type": "float32", + "constant": true } }, "expected": { @@ -212,7 +305,8 @@ 99.36075401019252, -96.14736495234415 ], - "type": "float32" + "type": "float32", + "constant": true }, "variance": { "shape": [3], @@ -221,7 +315,8 @@ 86.36218998771075, 73.88454888724165 ], - "type": "float32" + "type": "float32", + "constant": true } }, "expected": { @@ -293,14 +388,16 @@ "data": [ 35.407824570198215 ], - "type": "float32" + "type": "float32", + "constant": true }, "variance": { "shape": [1], "data": [ 40.931099315280846 ], - "type": "float32" + "type": "float32", + "constant": true } }, "expected": { @@ -374,7 +471,8 @@ 99.36075401019252, -96.14736495234415 ], - "type": "float32" + "type": "float32", + "constant": true }, "variance": { "shape": [3], @@ -383,7 +481,8 @@ 86.36218998771075, 73.88454888724165 ], - "type": "float32" + "type": "float32", + "constant": true } }, "options": { @@ -460,7 +559,8 @@ 99.36075401019252, -96.14736495234415 ], - "type": "float32" + "type": "float32", + "constant": true }, "variance": { "shape": [3], @@ -469,7 +569,8 @@ 86.36218998771075, 73.88454888724165 ], - "type": "float32" + "type": "float32", + "constant": true } }, "options": { @@ -546,7 +647,8 @@ 99.36075401019252, -96.14736495234415 ], - "type": "float32" + "type": "float32", + "constant": true }, "variance": { "shape": [3], @@ -555,7 +657,8 @@ 86.36218998771075, 73.88454888724165 ], - "type": "float32" + "type": "float32", + "constant": true } }, "options": { @@ -566,7 +669,8 @@ -71.00757080938772, -5.569730877611249 ], - "type": "float32" + "type": "float32", + "constant": true } }, "expected": { @@ -640,7 +744,8 @@ 99.36075401019252, -96.14736495234415 ], - "type": "float32" + "type": "float32", + "constant": true }, "variance": { "shape": [3], @@ -649,7 +754,8 @@ 86.36218998771075, 73.88454888724165 ], - "type": "float32" + "type": "float32", + "constant": true } }, "options": { @@ -660,7 +766,8 @@ 75.28591851497856, -84.57243127763437 ], - "type": "float32" + "type": "float32", + "constant": true } }, "expected": { @@ -734,7 +841,8 @@ 99.36075401019252, -96.14736495234415 ], - "type": "float32" + "type": "float32", + "constant": true }, "variance": { "shape": [3], @@ -743,7 +851,8 @@ 86.36218998771075, 73.88454888724165 ], - "type": "float32" + "type": "float32", + "constant": true } }, "options": { @@ -820,7 +929,8 @@ 99.36075401019252, -96.14736495234415 ], - "type": "float32" + "type": "float32", + "constant": true }, "variance": { "shape": [3], @@ -829,7 +939,8 @@ 86.36218998771075, 73.88454888724165 ], - "type": "float32" + "type": "float32", + "constant": true } }, "options": { @@ -906,7 +1017,8 @@ 99.36075401019252, -96.14736495234415 ], - "type": "float32" + "type": "float32", + "constant": true }, "variance": { "shape": [3], @@ -915,7 +1027,8 @@ 86.36218998771075, 73.88454888724165 ], - "type": "float32" + "type": "float32", + "constant": true } }, "options": { diff --git a/tests/wpt/web-platform-tests/webnn/resources/test_data/conv2d.json b/tests/wpt/web-platform-tests/webnn/resources/test_data/conv2d.json index a4b97d3c039..ca7dc74aa79 100644 --- a/tests/wpt/web-platform-tests/webnn/resources/test_data/conv2d.json +++ b/tests/wpt/web-platform-tests/webnn/resources/test_data/conv2d.json @@ -1,7 +1,7 @@ { "tests": [ { - "name": "conv2d float32 4D input and filter tensors default options", + "name": "conv2d float32 4D input and filter(non-constant) tensors default options", "inputs": { "input": { "shape": [1, 1, 5, 5], @@ -68,7 +68,7 @@ } }, { - "name": "conv2d float32 4D input and filter tensors options.padding", + "name": "conv2d float32 4D input and filter tensors default options", "inputs": { "input": { "shape": [1, 1, 5, 5], @@ -114,7 +114,76 @@ 91.71009194525874, -45.17980970346187 ], + "type": "float32", + "constant": true + } + }, + "expected": { + "name": "output", + "shape": [1, 1, 3, 3], + "data": [ + 2908.13525390625, + -11333.4560546875, + 5481.1240234375, + -1681.341796875, + 17408.30078125, + -18923.2109375, + 6809.322265625, + -3083.824951171875, + -836.0403442382812 + ], + "type": "float32" + } + }, + { + "name": "conv2d float32 4D input and filter tensors options.padding", + "inputs": { + "input": { + "shape": [1, 1, 5, 5], + "data": [ + -36.64786517159748, + -11.288432057442094, + -76.58016110067685, + 27.405805828795508, + -80.47998789027426, + 76.04182611584571, + 72.35851634441039, + 96.98349851260227, + -27.84947185731808, + 50.58418221559799, + -32.43859311335213, + 23.48380170680882, + -85.38685191828938, + -73.94300271939952, + -15.851227160619004, + 31.57834732127077, + 0.42632253229469086, + -49.37459452307884, + -38.32858663836096, + 95.58856379258197, + -38.56091554697314, + -79.08006476009297, + -24.02026158435868, + 81.30008164674476, + 16.073515803100065 + ], "type": "float32" + }, + "filter": { + "shape": [1, 1, 3, 3], + "data": [ + -38.07863707159655, + 54.79507725238136, + -88.91290358136841, + 71.58386890759388, + -97.45390798644782, + -69.46620941454853, + 72.25696967588178, + 91.71009194525874, + -45.17980970346187 + ], + "type": "float32", + "constant": true } }, "options": { @@ -200,7 +269,8 @@ 91.71009194525874, -45.17980970346187 ], - "type": "float32" + "type": "float32", + "constant": true } }, "options": { @@ -265,7 +335,8 @@ 91.71009194525874, -45.17980970346187 ], - "type": "float32" + "type": "float32", + "constant": true } }, "options": { @@ -327,7 +398,8 @@ 91.71009194525874, -45.17980970346187 ], - "type": "float32" + "type": "float32", + "constant": true } }, "options": { @@ -405,7 +477,8 @@ 91.71009194525874, -45.17980970346187 ], - "type": "float32" + "type": "float32", + "constant": true } }, "options": { @@ -462,7 +535,8 @@ 91.71009194525874, -45.17980970346187 ], - "type": "float32" + "type": "float32", + "constant": true } }, "options": { @@ -529,7 +603,8 @@ 91.71009194525874, -45.17980970346187 ], - "type": "float32" + "type": "float32", + "constant": true } }, "options": { @@ -600,7 +675,8 @@ 91.71009194525874, -45.17980970346187 ], - "type": "float32" + "type": "float32", + "constant": true } }, "options": { @@ -670,7 +746,8 @@ 88.16357174255782, 27.032330434044923 ], - "type": "float32" + "type": "float32", + "constant": true } }, "options": { @@ -731,7 +808,8 @@ 67.67284398422174, -70.88191146932456 ], - "type": "float32" + "type": "float32", + "constant": true } }, "options": { @@ -812,7 +890,8 @@ 67.67284398422174, -70.88191146932456 ], - "type": "float32" + "type": "float32", + "constant": true } }, "options": { @@ -893,7 +972,8 @@ 67.67284398422174, -70.88191146932456 ], - "type": "float32" + "type": "float32", + "constant": true } }, "options": { @@ -974,7 +1054,8 @@ -25.359619829289443, -70.88191146932456 ], - "type": "float32" + "type": "float32", + "constant": true } }, "options": { @@ -1055,7 +1136,8 @@ 67.67284398422174, -70.88191146932456 ], - "type": "float32" + "type": "float32", + "constant": true } }, "options": { @@ -1136,7 +1218,8 @@ -25.359619829289443, -70.88191146932456 ], - "type": "float32" + "type": "float32", + "constant": true } }, "options": { @@ -1217,7 +1300,8 @@ 67.67284398422174, -70.88191146932456 ], - "type": "float32" + "type": "float32", + "constant": true } }, "options": { @@ -1299,7 +1383,8 @@ -25.359619829289443, -70.88191146932456 ], - "type": "float32" + "type": "float32", + "constant": true } }, "options": { @@ -1381,7 +1466,8 @@ 67.67284398422174, -70.88191146932456 ], - "type": "float32" + "type": "float32", + "constant": true } }, "options": { @@ -1463,7 +1549,8 @@ -25.359619829289443, -70.88191146932456 ], - "type": "float32" + "type": "float32", + "constant": true } }, "options": { @@ -1545,7 +1632,8 @@ 67.67284398422174, -70.88191146932456 ], - "type": "float32" + "type": "float32", + "constant": true } }, "options": { @@ -1634,7 +1722,8 @@ 67.67284398422174, -70.88191146932456 ], - "type": "float32" + "type": "float32", + "constant": true } }, "options": { @@ -1715,7 +1804,8 @@ 67.67284398422174, -70.88191146932456 ], - "type": "float32" + "type": "float32", + "constant": true } }, "options": { @@ -1832,7 +1922,8 @@ 4.087872503607585, -16.408531598421618 ], - "type": "float32" + "type": "float32", + "constant": true } }, "options": { @@ -1925,7 +2016,8 @@ 69.12384362305653, -61.16795516567643 ], - "type": "float32" + "type": "float32", + "constant": true } }, "options": { diff --git a/tests/wpt/web-platform-tests/webnn/resources/test_data/conv_transpose2d.json b/tests/wpt/web-platform-tests/webnn/resources/test_data/conv_transpose2d.json new file mode 100644 index 00000000000..311a7d9c78a --- /dev/null +++ b/tests/wpt/web-platform-tests/webnn/resources/test_data/conv_transpose2d.json @@ -0,0 +1,2010 @@ +{ + "tests": [ + { + "name": "convTranspose2d float32 4D input and filter(non-constant) tensors default options", + "inputs": { + "input": { + "shape": [1, 1, 2, 2], + "data": [ + -76.02988383382066, + -71.32389057460688, + -2.085512195999769, + -76.10441972856492 + ], + "type": "float32" + }, + "filter": { + "shape": [1, 1, 2, 2], + "data": [ + 63.98739089703227, + -97.92857637226295, + -87.83247798464106, + -19.121183948450366 + ], + "type": "float32" + } + }, + "expected": { + "shape": [1, 1, 3, 3], + "data": [ + -4864.9541015625, + 2881.66845703125, + 6984.64697265625, + 6544.44677734375, + 3052.84326171875, + 8816.5947265625, + 183.1757049560547, + 6724.31787109375, + 1455.2066650390625 + ], + "type": "float32" + } + }, + { + "name": "convTranspose2d float32 4D input and filter tensors default options", + "inputs": { + "input": { + "shape": [1, 1, 2, 2], + "data": [ + -76.02988383382066, + -71.32389057460688, + -2.085512195999769, + -76.10441972856492 + ], + "type": "float32" + }, + "filter": { + "shape": [1, 1, 2, 2], + "data": [ + 63.98739089703227, + -97.92857637226295, + -87.83247798464106, + -19.121183948450366 + ], + "type": "float32", + "constant": true + } + }, + "expected": { + "shape": [1, 1, 3, 3], + "data": [ + -4864.9541015625, + 2881.66845703125, + 6984.64697265625, + 6544.44677734375, + 3052.84326171875, + 8816.5947265625, + 183.1757049560547, + 6724.31787109375, + 1455.2066650390625 + ], + "type": "float32" + } + }, + { + "name": "convTranspose2d float32 4D input and filter tensors options.padding", + "inputs": { + "input": { + "shape": [1, 1, 2, 2], + "data": [ + -76.02988383382066, + -71.32389057460688, + -2.085512195999769, + -76.10441972856492 + ], + "type": "float32" + }, + "filter": { + "shape": [1, 1, 2, 2], + "data": [ + 63.98739089703227, + -97.92857637226295, + -87.83247798464106, + -19.121183948450366 + ], + "type": "float32", + "constant": true + } + }, + "options": { + "padding": [1, 1, 1, 1] + }, + "expected": { + "shape": [1, 1, 1, 1], + "data": [ + 3052.84326171875 + ], + "type": "float32" + } + }, + { + "name": "convTranspose2d float32 4D input and filter tensors options.strides", + "inputs": { + "input": { + "shape": [1, 1, 3, 3], + "data": [ + 9.894964540954291, + 85.68415702346587, + 24.094748480252548, + 12.874409836228523, + 32.236353301686904, + -38.46024349445712, + -68.43195409231569, + -96.19399584390335, + -10.756102339485494 + ], + "type": "float32" + }, + "filter": { + "shape": [1, 2, 3, 3], + "data": [ + 40.96311950512268, + -92.30080102023575, + 93.07175377236138, + -24.275884210454365, + 40.96179340360786, + 63.58423287755542, + 66.61102029547635, + 38.26567426829985, + 35.453481305983416, + -50.56008968241721, + -95.59720535330331, + -14.890781966723395, + -86.73116027713128, + 71.45942817317783, + -78.4748360510919, + 2.367216720219375, + 2.41961735973382, + 58.25714567285877 + ], + "type": "float32", + "constant": true + } + }, + "options": { + "strides": [3, 2] + }, + "expected": { + "shape": [1, 2, 9, 7], + "data": [ + 405.32861328125, + -913.3131713867188, + 4430.83203125, + -7908.716796875, + 8961.7705078125, + -2223.964599609375, + 2242.54052734375, + -240.20901489257812, + 405.3154602050781, + -1450.89501953125, + 3509.776611328125, + 4863.240234375, + 986.9640502929688, + 1532.0460205078125, + 659.1137084960938, + 378.6374816894531, + 6058.3203125, + 3278.76220703125, + 4642.77734375, + 922.0017700195312, + 854.2426147460938, + 527.3759765625, + -1188.318359375, + 2518.74560546875, + -2975.44140625, + 1424.842529296875, + 3549.911376953125, + -3579.562255859375, + -312.5376892089844, + 527.35888671875, + 36.043426513671875, + 1320.4588623046875, + 2983.38037109375, + -1575.4005126953125, + -2445.465087890625, + 857.5775756835938, + 492.6479797363281, + 2603.7392578125, + 1233.5458984375, + -1418.9852294921875, + -1471.7071533203125, + -1363.5494384765625, + -2803.186279296875, + 6316.32421875, + -10309.48828125, + 8878.783203125, + -9393.546875, + 992.7969360351562, + -1001.08935546875, + 1661.2462158203125, + -2803.095458984375, + -2015.9989013671875, + -3940.2783203125, + -5855.30712890625, + -440.5892333984375, + -683.9185180664062, + -4558.322265625, + -2618.594970703125, + -8833.7314453125, + -3680.927978515625, + -4126.88671875, + -411.5895080566406, + -381.3412780761719, + -500.290283203125, + -945.930908203125, + -4479.54248046875, + -8191.166015625, + -2494.13671875, + -2303.390625, + -358.7896423339844, + -858.2017822265625, + 707.0885009765625, + -8207.9921875, + 6122.94091796875, + -8813.81640625, + 1721.796875, + -1890.8314208984375, + 23.423524856567383, + 23.942028045654297, + 779.2853393554688, + 207.3228759765625, + 5048.751953125, + 58.300071716308594, + 1403.691162109375, + -650.9312744140625, + -1230.757568359375, + -1821.5830078125, + -3081.70556640625, + 1464.52880859375, + 3676.69189453125, + 572.703125, + -1116.612548828125, + 919.9979248046875, + -3806.2138671875, + 2303.591552734375, + 805.9589233398438, + -2748.346923828125, + 3018.161376953125, + 30.476518630981445, + 31.151145935058594, + 826.3367919921875, + 77.99964904785156, + 1786.9542236328125, + -93.05907440185547, + -2240.583984375, + 3459.92578125, + 6541.9033203125, + 5882.58203125, + 9195.876953125, + 1976.2332763671875, + 1028.2532958984375, + 160.16677856445312, + 5935.18310546875, + -4890.1083984375, + 13713.203125, + -6873.9677734375, + 8481.697265625, + -768.6249389648438, + 844.0834350585938, + -161.99327087402344, + -165.5791473388672, + -4214.3623046875, + -232.75265502929688, + -5629.44921875, + -26.025653839111328, + -626.6198120117188 + ], + "type": "float32" + } + }, + { + "name": "convTranspose2d float32 4D input and filter tensors options.dilations", + "inputs": { + "input": { + "shape": [1, 1, 3, 3], + "data": [ + -23.303862322607927, + -60.660800814902856, + -45.27723579857441, + 79.39347194577522, + 16.536097856789752, + -46.916933052373636, + -47.06090492120389, + 82.67905506257102, + -6.757763278948744 + ], + "type": "float32" + }, + "filter": { + "shape": [1, 1, 2, 2], + "data": [ + 80.87123567764502, + -18.78697954458781, + -66.28471209276029, + -25.946448546240262 + ], + "type": "float32", + "constant": true + } + }, + "options": { + "dilations": [2, 2] + }, + "expected": { + "shape": [1, 1, 5, 5], + "data": [ + -1884.6121826171875, + -4905.71435546875, + -3223.817138671875, + 1139.6331787109375, + 850.62255859375, + 6420.6484375, + 1337.2947998046875, + -5285.7939453125, + -310.6633605957031, + 881.4274291992188, + -2261.183837890625, + 10707.2412109375, + 3943.46484375, + 20.642683029174805, + 1301.741455078125, + -5262.5732421875, + -1096.090576171875, + 1049.896728515625, + -429.05303955078125, + 1217.3277587890625, + 3119.418701171875, + -5480.357421875, + 1668.999755859375, + -2145.227783203125, + 175.3399658203125 + ], + "type": "float32" + } + }, + { + "name": "convTranspose2d float32 4D input and filter tensors options.outputPadding", + "inputs": { + "input": { + "shape": [1, 1, 3, 3], + "data": [ + 9.894964540954291, + 85.68415702346587, + 24.094748480252548, + 12.874409836228523, + 32.236353301686904, + -38.46024349445712, + -68.43195409231569, + -96.19399584390335, + -10.756102339485494 + ], + "type": "float32" + }, + "filter": { + "shape": [1, 2, 3, 3], + "data": [ + 40.96311950512268, + -92.30080102023575, + 93.07175377236138, + -24.275884210454365, + 40.96179340360786, + 63.58423287755542, + 66.61102029547635, + 38.26567426829985, + 35.453481305983416, + -50.56008968241721, + -95.59720535330331, + -14.890781966723395, + -86.73116027713128, + 71.45942817317783, + -78.4748360510919, + 2.367216720219375, + 2.41961735973382, + 58.25714567285877 + ], + "type": "float32", + "constant": true + } + }, + "options": { + "strides": [3, 2], + "outputPadding": [1, 1] + }, + "expected": { + "shape": [1, 2, 10, 8], + "data": [ + 405.32861328125, + -913.3131713867188, + 4430.83203125, + -7908.716796875, + 8961.7705078125, + -2223.964599609375, + 2242.54052734375, + 0, + -240.20901489257812, + 405.3154602050781, + -1450.89501953125, + 3509.776611328125, + 4863.240234375, + 986.9640502929688, + 1532.0460205078125, + 0, + 659.1137084960938, + 378.6374816894531, + 6058.3203125, + 3278.76220703125, + 4642.77734375, + 922.0017700195312, + 854.2426147460938, + 0, + 527.3759765625, + -1188.318359375, + 2518.74560546875, + -2975.44140625, + 1424.842529296875, + 3549.911376953125, + -3579.562255859375, + 0, + -312.5376892089844, + 527.35888671875, + 36.043426513671875, + 1320.4588623046875, + 2983.38037109375, + -1575.4005126953125, + -2445.465087890625, + 0, + 857.5775756835938, + 492.6479797363281, + 2603.7392578125, + 1233.5458984375, + -1418.9852294921875, + -1471.7071533203125, + -1363.5494384765625, + 0, + -2803.186279296875, + 6316.32421875, + -10309.48828125, + 8878.783203125, + -9393.546875, + 992.7969360351562, + -1001.08935546875, + 0, + 1661.2462158203125, + -2803.095458984375, + -2015.9989013671875, + -3940.2783203125, + -5855.30712890625, + -440.5892333984375, + -683.9185180664062, + 0, + -4558.322265625, + -2618.594970703125, + -8833.7314453125, + -3680.927978515625, + -4126.88671875, + -411.5895080566406, + -381.3412780761719, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + -500.290283203125, + -945.930908203125, + -4479.54248046875, + -8191.166015625, + -2494.13671875, + -2303.390625, + -358.7896423339844, + 0, + -858.2017822265625, + 707.0885009765625, + -8207.9921875, + 6122.94091796875, + -8813.81640625, + 1721.796875, + -1890.8314208984375, + 0, + 23.423524856567383, + 23.942028045654297, + 779.2853393554688, + 207.3228759765625, + 5048.751953125, + 58.300071716308594, + 1403.691162109375, + 0, + -650.9312744140625, + -1230.757568359375, + -1821.5830078125, + -3081.70556640625, + 1464.52880859375, + 3676.69189453125, + 572.703125, + 0, + -1116.612548828125, + 919.9979248046875, + -3806.2138671875, + 2303.591552734375, + 805.9589233398438, + -2748.346923828125, + 3018.161376953125, + 0, + 30.476518630981445, + 31.151145935058594, + 826.3367919921875, + 77.99964904785156, + 1786.9542236328125, + -93.05907440185547, + -2240.583984375, + 0, + 3459.92578125, + 6541.9033203125, + 5882.58203125, + 9195.876953125, + 1976.2332763671875, + 1028.2532958984375, + 160.16677856445312, + 0, + 5935.18310546875, + -4890.1083984375, + 13713.203125, + -6873.9677734375, + 8481.697265625, + -768.6249389648438, + 844.0834350585938, + 0, + -161.99327087402344, + -165.5791473388672, + -4214.3623046875, + -232.75265502929688, + -5629.44921875, + -26.025653839111328, + -626.6198120117188, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "type": "float32" + } + }, + { + "name": "convTranspose2d float32 4D input and filter tensors options.outputSizes", + "inputs": { + "input": { + "shape": [1, 1, 3, 3], + "data": [ + 9.894964540954291, + 85.68415702346587, + 24.094748480252548, + 12.874409836228523, + 32.236353301686904, + -38.46024349445712, + -68.43195409231569, + -96.19399584390335, + -10.756102339485494 + ], + "type": "float32" + }, + "filter": { + "shape": [1, 2, 3, 3], + "data": [ + 40.96311950512268, + -92.30080102023575, + 93.07175377236138, + -24.275884210454365, + 40.96179340360786, + 63.58423287755542, + 66.61102029547635, + 38.26567426829985, + 35.453481305983416, + -50.56008968241721, + -95.59720535330331, + -14.890781966723395, + -86.73116027713128, + 71.45942817317783, + -78.4748360510919, + 2.367216720219375, + 2.41961735973382, + 58.25714567285877 + ], + "type": "float32", + "constant": true + } + }, + "options": { + "strides": [3, 2], + "outputSizes": [10, 8] + }, + "expected": { + "shape": [1, 2, 10, 8], + "data": [ + 405.32861328125, + -913.3131713867188, + 4430.83203125, + -7908.716796875, + 8961.7705078125, + -2223.964599609375, + 2242.54052734375, + 0, + -240.20901489257812, + 405.3154602050781, + -1450.89501953125, + 3509.776611328125, + 4863.240234375, + 986.9640502929688, + 1532.0460205078125, + 0, + 659.1137084960938, + 378.6374816894531, + 6058.3203125, + 3278.76220703125, + 4642.77734375, + 922.0017700195312, + 854.2426147460938, + 0, + 527.3759765625, + -1188.318359375, + 2518.74560546875, + -2975.44140625, + 1424.842529296875, + 3549.911376953125, + -3579.562255859375, + 0, + -312.5376892089844, + 527.35888671875, + 36.043426513671875, + 1320.4588623046875, + 2983.38037109375, + -1575.4005126953125, + -2445.465087890625, + 0, + 857.5775756835938, + 492.6479797363281, + 2603.7392578125, + 1233.5458984375, + -1418.9852294921875, + -1471.7071533203125, + -1363.5494384765625, + 0, + -2803.186279296875, + 6316.32421875, + -10309.48828125, + 8878.783203125, + -9393.546875, + 992.7969360351562, + -1001.08935546875, + 0, + 1661.2462158203125, + -2803.095458984375, + -2015.9989013671875, + -3940.2783203125, + -5855.30712890625, + -440.5892333984375, + -683.9185180664062, + 0, + -4558.322265625, + -2618.594970703125, + -8833.7314453125, + -3680.927978515625, + -4126.88671875, + -411.5895080566406, + -381.3412780761719, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + -500.290283203125, + -945.930908203125, + -4479.54248046875, + -8191.166015625, + -2494.13671875, + -2303.390625, + -358.7896423339844, + 0, + -858.2017822265625, + 707.0885009765625, + -8207.9921875, + 6122.94091796875, + -8813.81640625, + 1721.796875, + -1890.8314208984375, + 0, + 23.423524856567383, + 23.942028045654297, + 779.2853393554688, + 207.3228759765625, + 5048.751953125, + 58.300071716308594, + 1403.691162109375, + 0, + -650.9312744140625, + -1230.757568359375, + -1821.5830078125, + -3081.70556640625, + 1464.52880859375, + 3676.69189453125, + 572.703125, + 0, + -1116.612548828125, + 919.9979248046875, + -3806.2138671875, + 2303.591552734375, + 805.9589233398438, + -2748.346923828125, + 3018.161376953125, + 0, + 30.476518630981445, + 31.151145935058594, + 826.3367919921875, + 77.99964904785156, + 1786.9542236328125, + -93.05907440185547, + -2240.583984375, + 0, + 3459.92578125, + 6541.9033203125, + 5882.58203125, + 9195.876953125, + 1976.2332763671875, + 1028.2532958984375, + 160.16677856445312, + 0, + 5935.18310546875, + -4890.1083984375, + 13713.203125, + -6873.9677734375, + 8481.697265625, + -768.6249389648438, + 844.0834350585938, + 0, + -161.99327087402344, + -165.5791473388672, + -4214.3623046875, + -232.75265502929688, + -5629.44921875, + -26.025653839111328, + -626.6198120117188, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "type": "float32" + } + }, + { + "name": "convTranspose2d float32 4D input and filter tensors options.autoPad=explicit options.padding", + "inputs": { + "input": { + "shape": [1, 1, 2, 2], + "data": [ + -76.02988383382066, + -71.32389057460688, + -2.085512195999769, + -76.10441972856492 + ], + "type": "float32" + }, + "filter": { + "shape": [1, 1, 2, 2], + "data": [ + 63.98739089703227, + -97.92857637226295, + -87.83247798464106, + -19.121183948450366 + ], + "type": "float32", + "constant": true + } + }, + "options": { + "padding": [1, 1, 1, 1], + "autoPad": "explicit" + }, + "expected": { + "shape": [1, 1, 1, 1], + "data": [ + 3052.84326171875 + ], + "type": "float32" + } + }, + { + "name": "convTranspose2d float32 4D input and filter tensors options.autoPad=same-upper", + "inputs": { + "input": { + "shape": [1, 1, 3, 3], + "data": [ + 9.894964540954291, + 85.68415702346587, + 24.094748480252548, + 12.874409836228523, + 32.236353301686904, + -38.46024349445712, + -68.43195409231569, + -96.19399584390335, + -10.756102339485494 + ], + "type": "float32" + }, + "filter": { + "shape": [1, 2, 3, 3], + "data": [ + 40.96311950512268, + -92.30080102023575, + 93.07175377236138, + -24.275884210454365, + 40.96179340360786, + 63.58423287755542, + 66.61102029547635, + 38.26567426829985, + 35.453481305983416, + -50.56008968241721, + -95.59720535330331, + -14.890781966723395, + -86.73116027713128, + 71.45942817317783, + -78.4748360510919, + 2.367216720219375, + 2.41961735973382, + 58.25714567285877 + ], + "type": "float32", + "constant": true + } + }, + "options": { + "strides": [2, 2], + "autoPad": "same-upper" + }, + "expected": { + "shape": [1, 2, 6, 6], + "data": [ + 405.32861328125, + -913.3131713867188, + 4430.83203125, + -7908.716796875, + 8961.7705078125, + -2223.964599609375, + -240.20901489257812, + 405.3154602050781, + -1450.89501953125, + 3509.776611328125, + 4863.240234375, + 986.9640502929688, + 1186.4896240234375, + -809.680908203125, + 8577.0654296875, + 303.3206481933594, + 6067.6201171875, + 4471.9130859375, + -312.5376892089844, + 527.35888671875, + 36.043426513671875, + 1320.4588623046875, + 2983.38037109375, + -1575.4005126953125, + -1945.608642578125, + 6808.97216796875, + -7705.7490234375, + 10112.3291015625, + -10812.5322265625, + -478.9102478027344, + 1661.2462158203125, + -2803.095458984375, + -2015.9989013671875, + -3940.2783203125, + -5855.30712890625, + -440.5892333984375, + -500.290283203125, + -945.930908203125, + -4479.54248046875, + -8191.166015625, + -2494.13671875, + -2303.390625, + -858.2017822265625, + 707.0885009765625, + -8207.9921875, + 6122.94091796875, + -8813.81640625, + 1721.796875, + -627.5077514648438, + -1206.8155517578125, + -1042.297607421875, + -2874.382568359375, + 6513.28076171875, + 3734.991943359375, + -1116.612548828125, + 919.9979248046875, + -3806.2138671875, + 2303.591552734375, + 805.9589233398438, + -2748.346923828125, + 3490.402099609375, + 6573.0546875, + 6708.9189453125, + 9273.876953125, + 3763.1875, + 935.1942749023438, + 5935.18310546875, + -4890.1083984375, + 13713.203125, + -6873.9677734375, + 8481.697265625, + -768.6249389648438 + ], + "type": "float32" + } + }, + { + "name": "convTranspose2d float32 4D input and filter tensors options.autoPad=same-upper ignored options.padding", + "inputs": { + "input": { + "shape": [1, 1, 3, 3], + "data": [ + 9.894964540954291, + 85.68415702346587, + 24.094748480252548, + 12.874409836228523, + 32.236353301686904, + -38.46024349445712, + -68.43195409231569, + -96.19399584390335, + -10.756102339485494 + ], + "type": "float32" + }, + "filter": { + "shape": [1, 2, 3, 3], + "data": [ + 40.96311950512268, + -92.30080102023575, + 93.07175377236138, + -24.275884210454365, + 40.96179340360786, + 63.58423287755542, + 66.61102029547635, + 38.26567426829985, + 35.453481305983416, + -50.56008968241721, + -95.59720535330331, + -14.890781966723395, + -86.73116027713128, + 71.45942817317783, + -78.4748360510919, + 2.367216720219375, + 2.41961735973382, + 58.25714567285877 + ], + "type": "float32", + "constant": true + } + }, + "options": { + "padding": [1, 1, 1, 1], + "strides": [2, 2], + "autoPad": "same-upper" + }, + "expected": { + "shape": [1, 2, 6, 6], + "data": [ + 405.32861328125, + -913.3131713867188, + 4430.83203125, + -7908.716796875, + 8961.7705078125, + -2223.964599609375, + -240.20901489257812, + 405.3154602050781, + -1450.89501953125, + 3509.776611328125, + 4863.240234375, + 986.9640502929688, + 1186.4896240234375, + -809.680908203125, + 8577.0654296875, + 303.3206481933594, + 6067.6201171875, + 4471.9130859375, + -312.5376892089844, + 527.35888671875, + 36.043426513671875, + 1320.4588623046875, + 2983.38037109375, + -1575.4005126953125, + -1945.608642578125, + 6808.97216796875, + -7705.7490234375, + 10112.3291015625, + -10812.5322265625, + -478.9102478027344, + 1661.2462158203125, + -2803.095458984375, + -2015.9989013671875, + -3940.2783203125, + -5855.30712890625, + -440.5892333984375, + -500.290283203125, + -945.930908203125, + -4479.54248046875, + -8191.166015625, + -2494.13671875, + -2303.390625, + -858.2017822265625, + 707.0885009765625, + -8207.9921875, + 6122.94091796875, + -8813.81640625, + 1721.796875, + -627.5077514648438, + -1206.8155517578125, + -1042.297607421875, + -2874.382568359375, + 6513.28076171875, + 3734.991943359375, + -1116.612548828125, + 919.9979248046875, + -3806.2138671875, + 2303.591552734375, + 805.9589233398438, + -2748.346923828125, + 3490.402099609375, + 6573.0546875, + 6708.9189453125, + 9273.876953125, + 3763.1875, + 935.1942749023438, + 5935.18310546875, + -4890.1083984375, + 13713.203125, + -6873.9677734375, + 8481.697265625, + -768.6249389648438 + ], + "type": "float32" + } + }, + { + "name": "convTranspose2d float32 4D input and filter tensors options.autoPad=same-lower", + "inputs": { + "input": { + "shape": [1, 1, 3, 3], + "data": [ + 9.894964540954291, + 85.68415702346587, + 24.094748480252548, + 12.874409836228523, + 32.236353301686904, + -38.46024349445712, + -68.43195409231569, + -96.19399584390335, + -10.756102339485494 + ], + "type": "float32" + }, + "filter": { + "shape": [1, 2, 3, 3], + "data": [ + 40.96311950512268, + -92.30080102023575, + 93.07175377236138, + -24.275884210454365, + 40.96179340360786, + 63.58423287755542, + 66.61102029547635, + 38.26567426829985, + 35.453481305983416, + -50.56008968241721, + -95.59720535330331, + -14.890781966723395, + -86.73116027713128, + 71.45942817317783, + -78.4748360510919, + 2.367216720219375, + 2.41961735973382, + 58.25714567285877 + ], + "type": "float32", + "constant": true + } + }, + "options": { + "strides": [2, 2], + "autoPad": "same-lower" + }, + "expected": { + "shape": [1, 2, 6, 6], + "data": [ + 405.3154602050781, + -1450.89501953125, + 3509.776611328125, + 4863.240234375, + 986.9640502929688, + 1532.0460205078125, + -809.680908203125, + 8577.0654296875, + 303.3206481933594, + 6067.6201171875, + 4471.9130859375, + -2725.319580078125, + 527.35888671875, + 36.043426513671875, + 1320.4588623046875, + 2983.38037109375, + -1575.4005126953125, + -2445.465087890625, + 6808.97216796875, + -7705.7490234375, + 10112.3291015625, + -10812.5322265625, + -478.9102478027344, + -2364.638671875, + -2803.095458984375, + -2015.9989013671875, + -3940.2783203125, + -5855.30712890625, + -440.5892333984375, + -683.9185180664062, + -2618.594970703125, + -8833.7314453125, + -3680.927978515625, + -4126.88671875, + -411.5895080566406, + -381.3412780761719, + 707.0885009765625, + -8207.9921875, + 6122.94091796875, + -8813.81640625, + 1721.796875, + -1890.8314208984375, + -1206.8155517578125, + -1042.297607421875, + -2874.382568359375, + 6513.28076171875, + 3734.991943359375, + 1976.394287109375, + 919.9979248046875, + -3806.2138671875, + 2303.591552734375, + 805.9589233398438, + -2748.346923828125, + 3018.161376953125, + 6573.0546875, + 6708.9189453125, + 9273.876953125, + 3763.1875, + 935.1942749023438, + -2080.417236328125, + -4890.1083984375, + 13713.203125, + -6873.9677734375, + 8481.697265625, + -768.6249389648438, + 844.0834350585938, + -165.5791473388672, + -4214.3623046875, + -232.75265502929688, + -5629.44921875, + -26.025653839111328, + -626.6198120117188 + ], + "type": "float32" + } + }, + { + "name": "convTranspose2d float32 4D input and filter tensors options.autoPad=same-lower ignored options.padding", + "inputs": { + "input": { + "shape": [1, 1, 3, 3], + "data": [ + 9.894964540954291, + 85.68415702346587, + 24.094748480252548, + 12.874409836228523, + 32.236353301686904, + -38.46024349445712, + -68.43195409231569, + -96.19399584390335, + -10.756102339485494 + ], + "type": "float32" + }, + "filter": { + "shape": [1, 2, 3, 3], + "data": [ + 40.96311950512268, + -92.30080102023575, + 93.07175377236138, + -24.275884210454365, + 40.96179340360786, + 63.58423287755542, + 66.61102029547635, + 38.26567426829985, + 35.453481305983416, + -50.56008968241721, + -95.59720535330331, + -14.890781966723395, + -86.73116027713128, + 71.45942817317783, + -78.4748360510919, + 2.367216720219375, + 2.41961735973382, + 58.25714567285877 + ], + "type": "float32", + "constant": true + } + }, + "options": { + "padding": [1, 1, 1, 1], + "strides": [2, 2], + "autoPad": "same-lower" + }, + "expected": { + "shape": [1, 2, 6, 6], + "data": [ + 405.3154602050781, + -1450.89501953125, + 3509.776611328125, + 4863.240234375, + 986.9640502929688, + 1532.0460205078125, + -809.680908203125, + 8577.0654296875, + 303.3206481933594, + 6067.6201171875, + 4471.9130859375, + -2725.319580078125, + 527.35888671875, + 36.043426513671875, + 1320.4588623046875, + 2983.38037109375, + -1575.4005126953125, + -2445.465087890625, + 6808.97216796875, + -7705.7490234375, + 10112.3291015625, + -10812.5322265625, + -478.9102478027344, + -2364.638671875, + -2803.095458984375, + -2015.9989013671875, + -3940.2783203125, + -5855.30712890625, + -440.5892333984375, + -683.9185180664062, + -2618.594970703125, + -8833.7314453125, + -3680.927978515625, + -4126.88671875, + -411.5895080566406, + -381.3412780761719, + 707.0885009765625, + -8207.9921875, + 6122.94091796875, + -8813.81640625, + 1721.796875, + -1890.8314208984375, + -1206.8155517578125, + -1042.297607421875, + -2874.382568359375, + 6513.28076171875, + 3734.991943359375, + 1976.394287109375, + 919.9979248046875, + -3806.2138671875, + 2303.591552734375, + 805.9589233398438, + -2748.346923828125, + 3018.161376953125, + 6573.0546875, + 6708.9189453125, + 9273.876953125, + 3763.1875, + 935.1942749023438, + -2080.417236328125, + -4890.1083984375, + 13713.203125, + -6873.9677734375, + 8481.697265625, + -768.6249389648438, + 844.0834350585938, + -165.5791473388672, + -4214.3623046875, + -232.75265502929688, + -5629.44921875, + -26.025653839111328, + -626.6198120117188 + ], + "type": "float32" + } + }, + { + "name": "convTranspose2d float32 4D input and filter tensors options.inputLayout=nchw", + "inputs": { + "input": { + "shape": [1, 1, 3, 3], + "data": [ + 9.894964540954291, + 85.68415702346587, + 24.094748480252548, + 12.874409836228523, + 32.236353301686904, + -38.46024349445712, + -68.43195409231569, + -96.19399584390335, + -10.756102339485494 + ], + "type": "float32" + }, + "filter": { + "shape": [1, 2, 3, 3], + "data": [ + 40.96311950512268, + -92.30080102023575, + 93.07175377236138, + -24.275884210454365, + 40.96179340360786, + 63.58423287755542, + 66.61102029547635, + 38.26567426829985, + 35.453481305983416, + -50.56008968241721, + -95.59720535330331, + -14.890781966723395, + -86.73116027713128, + 71.45942817317783, + -78.4748360510919, + 2.367216720219375, + 2.41961735973382, + 58.25714567285877 + ], + "type": "float32", + "constant": true + } + }, + "options": { + "inputLayout": "nchw" + }, + "expected": { + "shape": [1, 2, 5, 5], + "data": [ + 405.32861328125, + 2596.5771484375, + -6000.77880859375, + 5750.810546875, + 2242.54052734375, + 287.1669616699219, + -1542.5599365234375, + 201.3699493408203, + 12985.3310546875, + -2047.5162353515625, + -2456.6103515625, + 8206.8583984375, + 10376.37109375, + -3526.02001953125, + -2592.311767578125, + 2518.82373046875, + 2172.04345703125, + -8902.2451171875, + -6885.82666015625, + -2047.468017578125, + -4558.322265625, + -9026.1748046875, + -6823.5537109375, + -3822.001220703125, + -381.3412780761719, + -500.290283203125, + -5278.12939453125, + -9556.7421875, + -3579.294677734375, + -358.7896423339844, + -1509.133056640625, + -9585.0283203125, + 1927.8074951171875, + -1805.5863037109375, + -1318.1282958984375, + 2366.736572265625, + 9756.3564453125, + 16228.5, + 2232.58203125, + 4582.01953125, + 5965.65966796875, + 3560.370361328125, + 166.09043884277344, + 8565.1220703125, + -1396.5006103515625, + -161.99327087402344, + -393.29119873046875, + -4244.86474609375, + -5630.01318359375, + -626.6198120117188 + ], + "type": "float32" + } + }, + { + "name": "convTranspose2d float32 4D input and filter tensors options.inputLayout=nhwc", + "inputs": { + "input": { + "shape": [1, 3, 3, 1], + "data": [ + 9.894964540954291, + 85.68415702346587, + 24.094748480252548, + 12.874409836228523, + 32.236353301686904, + -38.46024349445712, + -68.43195409231569, + -96.19399584390335, + -10.756102339485494 + ], + "type": "float32" + }, + "filter": { + "shape": [1, 2, 3, 3], + "data": [ + 40.96311950512268, + -92.30080102023575, + 93.07175377236138, + -24.275884210454365, + 40.96179340360786, + 63.58423287755542, + 66.61102029547635, + 38.26567426829985, + 35.453481305983416, + -50.56008968241721, + -95.59720535330331, + -14.890781966723395, + -86.73116027713128, + 71.45942817317783, + -78.4748360510919, + 2.367216720219375, + 2.41961735973382, + 58.25714567285877 + ], + "type": "float32", + "constant": true + } + }, + "options": { + "inputLayout": "nhwc" + }, + "expected": { + "shape": [1, 5, 5, 2], + "data": [ + 405.32861328125, + -500.290283203125, + 2596.5771484375, + -5278.12939453125, + -6000.77880859375, + -9556.7421875, + 5750.810546875, + -3579.294677734375, + 2242.54052734375, + -358.7896423339844, + 287.1669616699219, + -1509.133056640625, + -1542.5599365234375, + -9585.0283203125, + 201.3699493408203, + 1927.8074951171875, + 12985.3310546875, + -1805.5863037109375, + -2047.5162353515625, + -1318.1282958984375, + -2456.6103515625, + 2366.736572265625, + 8206.8583984375, + 9756.3564453125, + 10376.37109375, + 16228.5, + -3526.02001953125, + 2232.58203125, + -2592.311767578125, + 4582.01953125, + 2518.82373046875, + 5965.65966796875, + 2172.04345703125, + 3560.370361328125, + -8902.2451171875, + 166.09043884277344, + -6885.82666015625, + 8565.1220703125, + -2047.468017578125, + -1396.5006103515625, + -4558.322265625, + -161.99327087402344, + -9026.1748046875, + -393.29119873046875, + -6823.5537109375, + -4244.86474609375, + -3822.001220703125, + -5630.01318359375, + -381.3412780761719, + -626.6198120117188 + ], + "type": "float32" + } + }, + { + "name": "convTranspose2d float32 4D input and filter tensors options.filterLayout=iohw", + "inputs": { + "input": { + "shape": [1, 1, 3, 3], + "data": [ + 9.894964540954291, + 85.68415702346587, + 24.094748480252548, + 12.874409836228523, + 32.236353301686904, + -38.46024349445712, + -68.43195409231569, + -96.19399584390335, + -10.756102339485494 + ], + "type": "float32" + }, + "filter": { + "shape": [1, 2, 3, 3], + "data": [ + 40.96311950512268, + -92.30080102023575, + 93.07175377236138, + -24.275884210454365, + 40.96179340360786, + 63.58423287755542, + 66.61102029547635, + 38.26567426829985, + 35.453481305983416, + -50.56008968241721, + -95.59720535330331, + -14.890781966723395, + -86.73116027713128, + 71.45942817317783, + -78.4748360510919, + 2.367216720219375, + 2.41961735973382, + 58.25714567285877 + ], + "type": "float32", + "constant": true + } + }, + "options": { + "filterLayout": "iohw" + }, + "expected": { + "shape": [1, 2, 5, 5], + "data": [ + 405.32861328125, + 2596.5771484375, + -6000.77880859375, + 5750.810546875, + 2242.54052734375, + 287.1669616699219, + -1542.5599365234375, + 201.3699493408203, + 12985.3310546875, + -2047.5162353515625, + -2456.6103515625, + 8206.8583984375, + 10376.37109375, + -3526.02001953125, + -2592.311767578125, + 2518.82373046875, + 2172.04345703125, + -8902.2451171875, + -6885.82666015625, + -2047.468017578125, + -4558.322265625, + -9026.1748046875, + -6823.5537109375, + -3822.001220703125, + -381.3412780761719, + -500.290283203125, + -5278.12939453125, + -9556.7421875, + -3579.294677734375, + -358.7896423339844, + -1509.133056640625, + -9585.0283203125, + 1927.8074951171875, + -1805.5863037109375, + -1318.1282958984375, + 2366.736572265625, + 9756.3564453125, + 16228.5, + 2232.58203125, + 4582.01953125, + 5965.65966796875, + 3560.370361328125, + 166.09043884277344, + 8565.1220703125, + -1396.5006103515625, + -161.99327087402344, + -393.29119873046875, + -4244.86474609375, + -5630.01318359375, + -626.6198120117188 + ], + "type": "float32" + } + }, + { + "name": "convTranspose2d float32 4D input and filter tensors options.filterLayout=hwoi", + "inputs": { + "input": { + "shape": [1, 1, 3, 3], + "data": [ + 9.894964540954291, + 85.68415702346587, + 24.094748480252548, + 12.874409836228523, + 32.236353301686904, + -38.46024349445712, + -68.43195409231569, + -96.19399584390335, + -10.756102339485494 + ], + "type": "float32" + }, + "filter": { + "shape": [3, 3, 2, 1], + "data": [ + 40.96311950512268, + -50.56008968241721, + -92.30080102023575, + -95.59720535330331, + 93.07175377236138, + -14.890781966723395, + -24.275884210454365, + -86.73116027713128, + 40.96179340360786, + 71.45942817317783, + 63.58423287755542, + -78.4748360510919, + 66.61102029547635, + 2.367216720219375, + 38.26567426829985, + 2.41961735973382, + 35.453481305983416, + 58.25714567285877 + ], + "type": "float32", + "constant": true + } + }, + "options": { + "filterLayout": "hwoi" + }, + "expected": { + "shape": [1, 2, 5, 5], + "data": [ + 405.32861328125, + 2596.5771484375, + -6000.77880859375, + 5750.810546875, + 2242.54052734375, + 287.1669616699219, + -1542.5599365234375, + 201.3699493408203, + 12985.3310546875, + -2047.5162353515625, + -2456.6103515625, + 8206.8583984375, + 10376.37109375, + -3526.02001953125, + -2592.311767578125, + 2518.82373046875, + 2172.04345703125, + -8902.2451171875, + -6885.82666015625, + -2047.468017578125, + -4558.322265625, + -9026.1748046875, + -6823.5537109375, + -3822.001220703125, + -381.3412780761719, + -500.290283203125, + -5278.12939453125, + -9556.7421875, + -3579.294677734375, + -358.7896423339844, + -1509.133056640625, + -9585.0283203125, + 1927.8074951171875, + -1805.5863037109375, + -1318.1282958984375, + 2366.736572265625, + 9756.3564453125, + 16228.5, + 2232.58203125, + 4582.01953125, + 5965.65966796875, + 3560.370361328125, + 166.09043884277344, + 8565.1220703125, + -1396.5006103515625, + -161.99327087402344, + -393.29119873046875, + -4244.86474609375, + -5630.01318359375, + -626.6198120117188 + ], + "type": "float32" + } + }, + { + "name": "convTranspose2d float32 4D input and filter tensors options.filterLayout=ohwi", + "inputs": { + "input": { + "shape": [1, 1, 3, 3], + "data": [ + 9.894964540954291, + 85.68415702346587, + 24.094748480252548, + 12.874409836228523, + 32.236353301686904, + -38.46024349445712, + -68.43195409231569, + -96.19399584390335, + -10.756102339485494 + ], + "type": "float32" + }, + "filter": { + "shape": [2, 3, 3, 1], + "data": [ + 40.96311950512268, + -92.30080102023575, + 93.07175377236138, + -24.275884210454365, + 40.96179340360786, + 63.58423287755542, + 66.61102029547635, + 38.26567426829985, + 35.453481305983416, + -50.56008968241721, + -95.59720535330331, + -14.890781966723395, + -86.73116027713128, + 71.45942817317783, + -78.4748360510919, + 2.367216720219375, + 2.41961735973382, + 58.25714567285877 + ], + "type": "float32", + "constant": true + } + }, + "options": { + "filterLayout": "ohwi" + }, + "expected": { + "shape": [1, 2, 5, 5], + "data": [ + 405.32861328125, + 2596.5771484375, + -6000.77880859375, + 5750.810546875, + 2242.54052734375, + 287.1669616699219, + -1542.5599365234375, + 201.3699493408203, + 12985.3310546875, + -2047.5162353515625, + -2456.6103515625, + 8206.8583984375, + 10376.37109375, + -3526.02001953125, + -2592.311767578125, + 2518.82373046875, + 2172.04345703125, + -8902.2451171875, + -6885.82666015625, + -2047.468017578125, + -4558.322265625, + -9026.1748046875, + -6823.5537109375, + -3822.001220703125, + -381.3412780761719, + -500.290283203125, + -5278.12939453125, + -9556.7421875, + -3579.294677734375, + -358.7896423339844, + -1509.133056640625, + -9585.0283203125, + 1927.8074951171875, + -1805.5863037109375, + -1318.1282958984375, + 2366.736572265625, + 9756.3564453125, + 16228.5, + 2232.58203125, + 4582.01953125, + 5965.65966796875, + 3560.370361328125, + 166.09043884277344, + 8565.1220703125, + -1396.5006103515625, + -161.99327087402344, + -393.29119873046875, + -4244.86474609375, + -5630.01318359375, + -626.6198120117188 + ], + "type": "float32" + } + }, + { + "name": "convTranspose2d float32 4D input and filter tensors options.bias", + "inputs": { + "input": { + "shape": [1, 1, 3, 3], + "data": [ + -35.50202479799816, + -65.90990648626578, + -66.672293514068, + 80.32994045387008, + -89.53493227053441, + -52.51627346126466, + -99.28214091000234, + -13.35498515563036, + -46.226616683751544 + ], + "type": "float32" + }, + "filter": { + "shape": [1, 1, 3, 3], + "data": [ + 64.41018509298152, + 2.8492947110761833, + -74.475134769611, + 45.144679656015455, + 66.50646443100189, + -59.3402779768406, + 50.17738650272881, + -72.58010817012352, + 48.844270540309566 + ], + "type": "float32", + "constant": true + } + }, + "options": { + "bias": { + "shape": [1], + "data": [ + 3.3796334459218684 + ], + "type": "float32", + "constant": true + } + }, + "expected": { + "shape": [1, 1, 5, 5], + "data": [ + -2283.3125, + -4343.04541015625, + -1834.77392578125, + 4722.0595703125, + 4968.8076171875, + 3574.718505859375, + -10871.2939453125, + -14903.5322265625, + 5998.84521484375, + 7870.888671875, + -4546.3310546875, + -569.7133178710938, + -9006.1337890625, + 4306.3984375, + 3305.884033203125, + -447.93438720703125, + -17525.416015625, + 10706.7138671875, + -2840.132080078125, + 181.3609161376953, + -4978.3388671875, + 6539.169921875, + -6196.20849609375, + 2706.197998046875, + -2254.525634765625 + ], + "type": "float32" + } + }, + { + "name": "convTranspose2d float32 4D input and filter tensors options.activation=relu", + "inputs": { + "input": { + "shape": [1, 1, 3, 3], + "data": [ + -35.50202479799816, + -65.90990648626578, + -66.672293514068, + 80.32994045387008, + -89.53493227053441, + -52.51627346126466, + -99.28214091000234, + -13.35498515563036, + -46.226616683751544 + ], + "type": "float32" + }, + "filter": { + "shape": [1, 1, 3, 3], + "data": [ + 64.41018509298152, + 2.8492947110761833, + -74.475134769611, + 45.144679656015455, + 66.50646443100189, + -59.3402779768406, + 50.17738650272881, + -72.58010817012352, + 48.844270540309566 + ], + "type": "float32", + "constant": true + } + }, + "options": { + "activation": "relu" // relu operator + }, + "expected": { + "shape": [1, 1, 5, 5], + "data": [ + 0, + 0, + 0, + 4718.68017578125, + 4965.42822265625, + 3571.3388671875, + 0, + 0, + 5995.4658203125, + 7867.50927734375, + 0, + 0, + 0, + 4303.01904296875, + 3302.50439453125, + 0, + 0, + 10703.3349609375, + 0, + 177.98129272460938, + 0, + 6535.79052734375, + 0, + 2702.818359375, + 0 + ], + "type": "float32" + } + } + ] +}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/webnn/resources/test_data/reshape.json b/tests/wpt/web-platform-tests/webnn/resources/test_data/reshape.json index f04b7b1dbe6..7d48ed3a18f 100644 --- a/tests/wpt/web-platform-tests/webnn/resources/test_data/reshape.json +++ b/tests/wpt/web-platform-tests/webnn/resources/test_data/reshape.json @@ -202,7 +202,7 @@ } }, { - "name": "reshape float32 tensor to a new shape (one dimension being the special value -1)", + "name": "reshape float32 tensor to a new shape (one dimension being the special value of null)", "inputs": { "input": { "shape": [3, 2, 2, 2], @@ -235,7 +235,7 @@ "type": "float32" } }, - "newShape": [4, -1, 3, 1], + "newShape": [4, null, 3, 1], "expected": { "name": "output", "shape": [4, 2, 3, 1], @@ -336,7 +336,7 @@ } }, { - "name": "reshape float32 tensor to 1D tensor newShape=[-1]", + "name": "reshape float32 tensor to 1D tensor newShape=[null]", "inputs": { "input": { "shape": [3, 2, 2, 2], @@ -369,7 +369,7 @@ "type": "float32" } }, - "newShape": [-1], + "newShape": [null], "expected": { "name": "output", "shape": [24], diff --git a/tests/wpt/web-platform-tests/webnn/resources/utils.js b/tests/wpt/web-platform-tests/webnn/resources/utils.js index 4c7b6bc6ef1..f727d3ffe36 100644 --- a/tests/wpt/web-platform-tests/webnn/resources/utils.js +++ b/tests/wpt/web-platform-tests/webnn/resources/utils.js @@ -68,7 +68,7 @@ const getExpectedDataAndType = (resources, outputName) => { }; /** - * Get ULP tolerance of conv2d operation. + * Get ULP tolerance of conv2d/convTranspose2d operation. * @param {Object} resources - Resources used for building a graph * @param {String} operationName - An operation name * @returns {Number} A tolerance number @@ -81,7 +81,8 @@ const getConv2dPrecisionTolerance = (resources, operationName) => { const options = resources.options; let groups = 1; let inputChannels = inputShape[1]; // default nchw inputLayout - let filterWidth = filterShape[3]; // default oihw filterLayout + // default oihw filterLayout for conv2d or default iohw filterLayout for convTranspose2d + let filterWidth = filterShape[3]; let filterHeight = filterShape[2]; if (options) { if (options.groups) { @@ -94,14 +95,20 @@ const getConv2dPrecisionTolerance = (resources, operationName) => { inputChannels = options.inputLayout === 'nchw' ? inputChannels : inputShape[3]; } if (options.filterLayout) { - if (!['oihw', 'hwio', 'ohwi', 'ihwo'].includes(options.filterLayout)) { + let filterLayouts = ['oihw', 'hwio', 'ohwi', 'ihwo']; // default for conv2d + if (operationName === 'convTranspose2d') { + filterLayouts = ['iohw', 'hwoi', 'ohwi']; + } + if (!filterLayouts.includes(options.filterLayout)) { throw new Error(`Unsupported filterLayout ${options.filterLayout}`); } switch (options.filterLayout) { case 'oihw': + case 'iohw': // Just use the existing filterWidth and filterHeight above. break; case 'hwio': + case 'hwoi': filterWidth = filterShape[1]; filterHeight = filterShape[0]; break; @@ -240,6 +247,7 @@ const PrecisionMetrics = { clamp: {ULP: {float32: 0, float16: 0}}, concat: {ULP: {float32: 0, float16: 0}}, conv2d: {ULP: {float32: getConv2dPrecisionTolerance, float16: getConv2dPrecisionTolerance}}, + convTranspose2d: {ULP: {float32: getConv2dPrecisionTolerance, float16: getConv2dPrecisionTolerance}}, // Begin Element-wise binary operations add: {ULP: {float32: 1, float16: 1}}, sub: {ULP: {float32: 1, float16: 1}}, @@ -445,8 +453,13 @@ const createMultiInputOperands = (builder, resources) => { let inputOperands = []; const inputOperandNameArray = Object.keys(resources.inputs); inputOperandNameArray.forEach(inputOperandName => { - const inputOperand = createSingleInputOperand(builder, resources, inputOperandName); - inputOperands.push(inputOperand); + let operand; + if (resources.inputs[inputOperandName].hasOwnProperty('constant') && resources.inputs[inputOperandName]['constant']) { + operand = createConstantOperand(builder, resources.inputs[inputOperandName]); + } else { + operand = createSingleInputOperand(builder, resources, inputOperandName); + } + inputOperands.push(operand); }); return inputOperands; }; @@ -498,12 +511,16 @@ const buildGraph = (operationName, builder, resources, buildFunc) => { if (Array.isArray(resources.inputs)) { // the inputs of concat() is a sequence for (let subInput of resources.inputs) { - inputs[subInput.name] = new TypedArrayDict[subInput.type](subInput.data); + if (!subInput.hasOwnProperty('constant') || !subInput.constant) { + inputs[subInput.name] = new TypedArrayDict[subInput.type](subInput.data); + } } } else { for (let inputName in resources.inputs) { const subTestByName = resources.inputs[inputName]; - inputs[inputName] = new TypedArrayDict[subTestByName.type](subTestByName.data); + if (!subTestByName.hasOwnProperty('constant') || !subTestByName.constant) { + inputs[inputName] = new TypedArrayDict[subTestByName.type](subTestByName.data); + } } } let outputs = {}; diff --git a/tests/wpt/web-platform-tests/webrtc-extensions/RTCRtpParameters-adaptivePtime.html b/tests/wpt/web-platform-tests/webrtc-extensions/RTCRtpParameters-adaptivePtime.html index a0cc989c13d..8a7a8b6ba68 100644 --- a/tests/wpt/web-platform-tests/webrtc-extensions/RTCRtpParameters-adaptivePtime.html +++ b/tests/wpt/web-platform-tests/webrtc-extensions/RTCRtpParameters-adaptivePtime.html @@ -6,12 +6,6 @@ <script> 'use strict'; - function getFirstEncoding(param) { - const { encodings } = param; - assert_equals(encodings.length, 1); - return encodings[0]; - } - promise_test(async t => { const pc = new RTCPeerConnection(); t.add_cleanup(() => pc.close()); @@ -20,14 +14,14 @@ }); let param = sender.getParameters(); - let encoding = getFirstEncoding(param); + let encoding = param.encodings[0]; assert_true(encoding.adaptivePtime); encoding.adaptivePtime = false; await sender.setParameters(param); param = sender.getParameters(); - encoding = getFirstEncoding(param); + encoding = param.encodings[0]; assert_false(encoding.adaptivePtime); @@ -39,7 +33,7 @@ const { sender } = pc.addTransceiver('audio', { sendEncodings: [{}] }); const param = sender.getParameters(); - const encoding = getFirstEncoding(param); + const encoding = param.encodings[0]; assert_false(encoding.adaptivePtime); diff --git a/tests/wpt/web-platform-tests/webrtc-priority/RTCRtpParameters-encodings.html b/tests/wpt/web-platform-tests/webrtc-priority/RTCRtpParameters-encodings.html index 37c1b919b41..1519ee84f73 100644 --- a/tests/wpt/web-platform-tests/webrtc-priority/RTCRtpParameters-encodings.html +++ b/tests/wpt/web-platform-tests/webrtc-priority/RTCRtpParameters-encodings.html @@ -25,7 +25,7 @@ const param = sender.getParameters(); validateSenderRtpParameters(param); - const encoding = getFirstEncoding(param); + const encoding = param.encodings[0]; assert_equals(encoding.active, false); assert_equals(encoding.priority, 'low'); diff --git a/tests/wpt/web-platform-tests/webrtc-svc/RTCRtpParameters-scalability.html b/tests/wpt/web-platform-tests/webrtc-svc/RTCRtpParameters-scalability.html index d8b1c6e1350..ff28c2b5e95 100644 --- a/tests/wpt/web-platform-tests/webrtc-svc/RTCRtpParameters-scalability.html +++ b/tests/wpt/web-platform-tests/webrtc-svc/RTCRtpParameters-scalability.html @@ -21,7 +21,7 @@ }); const param = sender.getParameters(); - const encoding = getFirstEncoding(param); + const encoding = param.encodings[0]; assert_equals(encoding.scalabilityMode, 'L1T3'); @@ -29,28 +29,18 @@ await sender.setParameters(param); const updatedParam = sender.getParameters(); - const updatedEncoding = getFirstEncoding(updatedParam); + const updatedEncoding = updatedParam.encodings[0]; assert_equals(updatedEncoding.scalabilityMode, 'L1T2'); }, `Setting and updating scalabilityMode to a legal value should be accepted`); promise_test(async t => { - const capabilities = RTCRtpSender.getCapabilities('video'); - var svcSupported = false; - for (const codec of capabilities.codecs) { - if ('scalabilityModes' in codec && codec.scalabilityModes.length > 0) { - svcSupported = true; - } - } - assert_true(svcSupported); - }, `Sender capabilities should include at least some scalability modes`); - - promise_test(async t => { const pc = new RTCPeerConnection(); t.add_cleanup(() => pc.close()); const { sender } = pc.addTransceiver('video'); const param = sender.getParameters(); - assert_equals(param.encodings.length, 0); + const encoding = param.encodings[0]; + assert_true(!('scalabilityMode' in encoding)); }, 'Not setting sendEncodings results in no mode info before negotiation'); promise_test(async t => { @@ -60,30 +50,11 @@ sendEncodings: [{}], }); const param = sender.getParameters(); - const encoding = getFirstEncoding(param); - + const encoding = param.encodings[0]; assert_true(!('scalabilityMode' in encoding)); }, 'Not setting a scalability mode results in no mode set before negotiation'); promise_test(async t => { - const pc1 = new RTCPeerConnection(); - const pc2 = new RTCPeerConnection(); - t.add_cleanup(() => pc1.close()); - t.add_cleanup(() => pc2.close()); - const { sender } = pc1.addTransceiver('video', { - sendEncodings: [{}], - }); - const param = sender.getParameters(); - const encoding = getFirstEncoding(param); - - exchangeIceCandidates(pc1, pc2); - await exchangeOfferAnswer(pc1, pc2); - const param2 = sender.getParameters(); - const encoding2 = getFirstEncoding(param); - assert_true('scalabilityMode' in encoding2); - }, 'Not setting a scalability mode results in some mode set after negotiation'); - - promise_test(async t => { const pc = new RTCPeerConnection(); t.add_cleanup(() => pc.close()); assert_throws_dom('OperationError', () => { @@ -105,7 +76,7 @@ }); // Before negotiation, the mode should be preserved. const param = transceiver.sender.getParameters(); - const encoding = getFirstEncoding(param); + const encoding = param.encodings[0]; assert_true('scalabilityMode' in encoding); // If L3T3 is not supported at all, abort test. assert_implements_optional(encoding.scalabilityMode === 'L3T3'); diff --git a/tests/wpt/web-platform-tests/webrtc/RTCRtpSender-replaceTrack.https.html b/tests/wpt/web-platform-tests/webrtc/RTCRtpSender-replaceTrack.https.html index a370b6c059a..bec44c53e46 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCRtpSender-replaceTrack.https.html +++ b/tests/wpt/web-platform-tests/webrtc/RTCRtpSender-replaceTrack.https.html @@ -275,33 +275,64 @@ 1. If connection's [[isClosed]] slot is true, abort these steps. */ -promise_test(async t => { - const v = document.createElement('video'); - v.autoplay = true; - const pc1 = new RTCPeerConnection(); - t.add_cleanup(() => pc1.close()); - const pc2 = new RTCPeerConnection(); - t.add_cleanup(() => pc2.close()); - const stream1 = await getNoiseStream({video: {signal: 20}}); - t.add_cleanup(() => stream1.getTracks().forEach(track => track.stop())); - const [track1] = stream1.getTracks(); - const stream2 = await getNoiseStream({video: {signal: 250}}); - t.add_cleanup(() => stream2.getTracks().forEach(track => track.stop())); - const [track2] = stream2.getTracks(); - const sender = pc1.addTrack(track1); - pc2.ontrack = (e) => { - v.srcObject = new MediaStream([e.track]); - }; - const metadataToBeLoaded = new Promise((resolve) => { - v.addEventListener('loadedmetadata', () => { - resolve(); + promise_test(async t => { + const v = document.createElement('video'); + v.autoplay = true; + const pc1 = new RTCPeerConnection(); + t.add_cleanup(() => pc1.close()); + const pc2 = new RTCPeerConnection(); + t.add_cleanup(() => pc2.close()); + const stream1 = await getNoiseStream({video: {signal: 20}}); + t.add_cleanup(() => stream1.getTracks().forEach(track => track.stop())); + const [track1] = stream1.getTracks(); + const stream2 = await getNoiseStream({video: {signal: 250}}); + t.add_cleanup(() => stream2.getTracks().forEach(track => track.stop())); + const [track2] = stream2.getTracks(); + const sender = pc1.addTrack(track1); + pc2.ontrack = (e) => { + v.srcObject = new MediaStream([e.track]); + }; + const metadataToBeLoaded = new Promise((resolve) => { + v.addEventListener('loadedmetadata', () => { + resolve(); + }); + }); + exchangeIceCandidates(pc1, pc2); + exchangeOfferAnswer(pc1, pc2); + await metadataToBeLoaded; + await detectSignal(t, v, 20); + await sender.replaceTrack(track2); + await detectSignal(t, v, 250); + }, 'ReplaceTrack transmits the new track not the old track'); + + promise_test(async t => { + const v = document.createElement('video'); + v.autoplay = true; + const pc1 = new RTCPeerConnection(); + t.add_cleanup(() => pc1.close()); + const pc2 = new RTCPeerConnection(); + t.add_cleanup(() => pc2.close()); + const stream1 = await getNoiseStream({video: {signal: 20}}); + t.add_cleanup(() => stream1.getTracks().forEach(track => track.stop())); + const [track1] = stream1.getTracks(); + const stream2 = await getNoiseStream({video: {signal: 250}}); + t.add_cleanup(() => stream2.getTracks().forEach(track => track.stop())); + const [track2] = stream2.getTracks(); + const sender = pc1.addTrack(track1); + pc2.ontrack = (e) => { + v.srcObject = new MediaStream([e.track]); + }; + const metadataToBeLoaded = new Promise((resolve) => { + v.addEventListener('loadedmetadata', () => { + resolve(); + }); }); - }); - exchangeIceCandidates(pc1, pc2); - exchangeOfferAnswer(pc1, pc2); - await metadataToBeLoaded; - await detectSignal(t, v, 20); - await sender.replaceTrack(track2); - await detectSignal(t, v, 250); -}, 'ReplaceTrack transmits the new track not the old track'); + exchangeIceCandidates(pc1, pc2); + exchangeOfferAnswer(pc1, pc2); + await metadataToBeLoaded; + await detectSignal(t, v, 20); + await sender.replaceTrack(null); + await sender.replaceTrack(track2); + await detectSignal(t, v, 250); + }, 'ReplaceTrack null -> new track transmits the new track'); </script> |