diff options
author | WPT Sync Bot <josh+wptsync@joshmatthews.net> | 2023-03-11 01:43:56 +0000 |
---|---|---|
committer | WPT Sync Bot <josh+wptsync@joshmatthews.net> | 2023-03-11 01:46:58 +0000 |
commit | 2ebdfcea9d202ab6bf5350803697645ca5fe7301 (patch) | |
tree | d5dcc2624831ccf86846396299dfae68245e22bd | |
parent | 111363d338fe8655047db9484e58209958e86dc1 (diff) | |
download | servo-2ebdfcea9d202ab6bf5350803697645ca5fe7301.tar.gz servo-2ebdfcea9d202ab6bf5350803697645ca5fe7301.zip |
Update web-platform-tests to revision b'3ee7ccc2abbbc8d8f6efbb45f80bffdb3c0c76ba'
630 files changed, 8273 insertions, 4955 deletions
diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index 45ef9dee917..c4006a71035 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -56,13 +56,6 @@ {} ] ], - "aria-owns-presentation.html": [ - "138625a1534faca65cb00ff3d615dc4fb3fc080b", - [ - null, - {} - ] - ], "aria-owns-reparent.html": [ "2eaceb66f6957b0240a4f02b0c23b74e8ca4921a", [ @@ -3842,6 +3835,13 @@ } }, "css-view-transitions": { + "document-element-detatched-crash.html": [ + "3c5419a8102c2160ac82e69bf046408b2c542e41", + [ + null, + {} + ] + ], "get-computed-style-crash.html": [ "38cd5af7f83d60976f9712e446a55d11fe07160e", [ @@ -4081,6 +4081,13 @@ null, {} ] + ], + "visited-part-crash.html": [ + "f4cb28995b181c330d3605a96546c1ffb33c4fb1", + [ + null, + {} + ] ] } }, @@ -6116,6 +6123,15 @@ ] }, "scroll-animations": { + "crashtests": { + "invalid-animation-range.html": [ + "43b23c93b607ac943d0c996f1baffed82dc5fbfe", + [ + null, + {} + ] + ] + }, "scroll-timelines": { "animation-with-delay-crash.html": [ "9d821f9e20f58eef9ff5aa0706fa528f3250935f", @@ -8704,6 +8720,48 @@ {} ] ], + "aria-expanded_not_supported_on_alert-manual.html": [ + "1317cc658f76a8e19a4dc862cc638e17a859d0fe", + [ + null, + {} + ] + ], + "aria-expanded_not_supported_on_banner-manual.html": [ + "e1bf9cc7f45a9342d244c262186bbb1636cb2b1b", + [ + null, + {} + ] + ], + "aria-expanded_not_supported_on_dialog-manual.html": [ + "c7feeddf2bbb35e82211055c8dcc5c8e689b815f", + [ + null, + {} + ] + ], + "aria-expanded_not_supported_on_feed-manual.html": [ + "e81f3e49494c499ab2411cbcc7c82d41e5b3d816", + [ + null, + {} + ] + ], + "aria-expanded_not_supported_on_form-manual.html": [ + "6b533da6f7205bad6e14e8cddf525e7adb1e521b", + [ + null, + {} + ] + ], + "aria-expanded_not_supported_on_group-manual.html": [ + "8deb17c2b24a07c1801d214db6990e30cd883d54", + [ + null, + {} + ] + ], "aria-expanded_true-manual.html": [ "30f0c6a0f5d9eedcb7dfd5875b9b91458434efa1", [ @@ -9475,7 +9533,7 @@ ] ], "generic_roledescription_prohibited-manual.html": [ - "7c54dff15495bf6793c88c6fdf2d974af1a47be3", + "07f32ccc5cdd5375bb16b174ce48d4062ba4dbc7", [ null, {} @@ -26023,1637 +26081,1639 @@ ] }, "wai-aria": { - "alertdialog_modal_false-manual.html": [ - "ee64c9dbf0d285707f59a4f2f11674f79822967a", - [ - null, - {} - ] - ], - "alertdialog_modal_true-manual.html": [ - "4affe2fd5e61d718aa89f967d02a79f91570f1af", - [ - null, - {} - ] - ], - "application_activedescendant-manual.html": [ - "a6ef85ac3dd1a00ca10a24b47c6a0da4d548d179", - [ - null, - {} - ] - ], - "application_activedescendant_value_changes-manual.html": [ - "d923c84dea717c384387f32d0d36d2e4de657e8e", - [ - null, - {} - ] - ], - "aria-current_not_declared-manual.html": [ - "ecf95bb64fc1fcd7fcad5565d34ca8d964eb413f", - [ - null, - {} - ] - ], - "aria-current_with_value_changes-manual.html": [ - "d3f1eae0052126b77d9ea73be413cf443f8cd836", - [ - null, - {} - ] - ], - "aria-current_with_value_date-manual.html": [ - "b15f5ec13adc85014a86101d0c13a36e0efd0c8c", - [ - null, - {} - ] - ], - "aria-current_with_value_location-manual.html": [ - "e8cf762c0e7af162dd01e438732e13fbb4fca121", - [ - null, - {} - ] - ], - "aria-current_with_value_page-manual.html": [ - "ba48b738cc0686edc97b471cbe5af931a038c824", - [ - null, - {} - ] - ], - "aria-current_with_value_step-manual.html": [ - "6f4d5986c610a1ddcabff58afa9c62f991d5f094", - [ - null, - {} - ] - ], - "aria-current_with_value_time-manual.html": [ - "046fb817695d4aa25f004c6294f8e269fdb6bd89", - [ - null, - {} - ] - ], - "aria-current_with_value_true-manual.html": [ - "3ce799f8b2cfedb906854599b79fc9e11a847f92", - [ - null, - {} - ] - ], - "aria-current_with_value_unspecified-manual.html": [ - "c017a000a114d087a493d738003c88cb26d81b8a", - [ - null, - {} - ] - ], - "aria-details_pointing_to_details_element-manual.html": [ - "6a0d9d776a6f9308dd26b14f2e7a43df4ee1efce", - [ - null, - {} - ] - ], - "aria-details_pointing_to_div_element-manual.html": [ - "8a46e78d9711a887bb91780cd296033151b5bebe", - [ - null, - {} - ] - ], - "article_in_feed_posinset_and_setsize-manual.html": [ - "9c89dc3fa993f06d5539ee5ebac5365b8b0609ce", - [ - null, - {} - ] - ], - "article_in_feed_setsize_-1-manual.html": [ - "0552f926e942c424650f8fe3c1ab15d4769bd9b8", - [ - null, - {} - ] - ], - "article_not_in_feed_posinset_and_setsize-manual.html": [ - "91cb0e0eb4877a6ab8e963d60654159ed7f7c8d9", - [ - null, - {} - ] - ], - "button_haspopup_dialog-manual.html": [ - "8ba0a22a8d4d7319f5b8318088993fb2603885f7", - [ - null, - {} - ] - ], - "button_haspopup_emptystring-manual.html": [ - "e9091489068aec3746912f34e91e996486b69777", - [ - null, - {} - ] - ], - "button_haspopup_false-manual.html": [ - "97188995e526378196d31e558b09de2640bc4867", - [ - null, - {} - ] - ], - "button_haspopup_foo-manual.html": [ - "a09d21c07416ccc41cfcf7e235f8553baf0c46fc", - [ - null, - {} - ] - ], - "button_haspopup_grid-manual.html": [ - "57c8efbde24d1be47bd91e3343874ccc2240c985", - [ - null, - {} - ] - ], - "button_haspopup_listbox-manual.html": [ - "4191fc40a3c8c3dfcacd57ebcedd81228643bebc", - [ - null, - {} - ] - ], - "button_haspopup_menu-manual.html": [ - "9378993f55817876d17ba1f5d60da47abc7e8190", - [ - null, - {} - ] - ], - "button_haspopup_tree-manual.html": [ - "e62b87f59d64c5eee03583937868dacc9d3ffd85", - [ - null, - {} - ] - ], - "button_haspopup_true-manual.html": [ - "a6d94658d272d2f9f52506aab61cebd7696d66aa", - [ - null, - {} - ] - ], - "button_haspopup_unspecified-manual.html": [ - "96d7095d4ded71226c7105e68c0ba2218bc05de4", - [ - null, - {} - ] - ], - "button_roledescription_empty-manual.html": [ - "d9eb0fe7cc82e534107d0aac34b89497cb321dbf", - [ - null, - {} - ] - ], - "button_roledescription_valid-manual.html": [ - "cdcf6071e619c30e8a884242a85b78d783ff53dc", - [ - null, - {} - ] - ], - "button_roledescription_whitespace_only-manual.html": [ - "59e463778a12adcbe324118ecf75aad3b1e9c59c", - [ - null, - {} - ] - ], - "cell-manual.html": [ - "d9f0eafbe076c9ab9ad8bbf2f6c9ceb5a77ff101", - [ - null, - {} - ] - ], - "cell_aria-colspan_2_on_div-manual.html": [ - "fa120dc5e43d8c23b2e4b86f85025ad6b0287fec", - [ - null, - {} - ] - ], - "cell_aria-colspan_2_on_td_html_colspan_3-manual.html": [ - "a7c65fed3d49b269c61f719edf22ea02a9ff720b", - [ - null, - {} - ] - ], - "cell_aria-colspan_2_on_td_html_colspan_3_with_headers_and_border-manual.html": [ - "057918c6b0cd85af3c2e25bfc253ef28cba7ded8", - [ - null, - {} - ] - ], - "cell_aria-colspan_2_on_td_html_colspan_3_with_three_actual_columns-manual.html": [ - "2c05e6ea71f99948bbeec975069b923e422b34d0", - [ - null, - {} - ] - ], - "cell_aria-colspan_2_on_td_with_html_colspan_not_specified-manual.html": [ - "06212078b74d09a305fa5755c98594adc9bee882", - [ - null, - {} - ] - ], - "cell_aria-rowspan_2_on_div-manual.html": [ - "e94303848dac70e70a99e28b292f68051c3c2eed", - [ - null, - {} - ] - ], - "cell_aria-rowspan_2_on_td_html_rowspan_3-manual.html": [ - "86ea1a4aec1ebcf94f6a2bfa86857aa450e5cc98", - [ - null, - {} - ] - ], - "cell_aria-rowspan_2_on_td_html_rowspan_3_with_three_actual_rows-manual.html": [ - "f1572046f29e7fbf7d0ecff0c9b551971bfec216", - [ - null, - {} - ] - ], - "cell_aria-rowspan_2_on_td_with_html_rowspan_not_specified-manual.html": [ - "0978186febafcfaf39d1db30e9af32dad3ff9182", - [ - null, - {} - ] - ], - "cell_colindex_4-manual.html": [ - "02003065e09b85dc966105d98f38837dc1d57c2e", - [ - null, - {} - ] - ], - "cell_rowindex_4-manual.html": [ - "ea2937efcbfa0484d7eb9557979fea96c647a566", - [ - null, - {} - ] - ], - "checkbox_readonly_false-manual.html": [ - "558dc8e3912daed372f14acf926e56600e526ab2", - [ - null, - {} - ] - ], - "checkbox_readonly_true-manual.html": [ - "f3c879038f75f4c56ef21fee2f6ec098eecf201d", - [ - null, - {} - ] - ], - "checkbox_readonly_unspecified-manual.html": [ - "583985f0009588e52180249342e5de131d963cb0", - [ - null, - {} - ] - ], - "columnheader_aria-colspan_2_on_div-manual.html": [ - "4789ced84d260d67bd937cf130a63528de1ac878", - [ - null, - {} - ] - ], - "columnheader_aria-colspan_2_on_th_html_colspan_3-manual.html": [ - "2ad8cb4bed9d9be89fc2222688d61517d2ede446", - [ - null, - {} - ] - ], - "columnheader_aria-colspan_2_on_th_html_colspan_3_with_three_actual_columns-manual.html": [ - "3ac8701f5d7b6c23baad9b561932ad0cba383c8e", - [ - null, - {} - ] - ], - "columnheader_aria-colspan_2_on_th_with_html_colspan_not_specified-manual.html": [ - "82c75991885f9c57d8a93ea9fb29fb58bf7b1fa2", - [ - null, - {} - ] - ], - "columnheader_aria-rowspan_2_on_div-manual.html": [ - "00c00683924fe2919b8e21a15d11de1146c4e2b3", - [ - null, - {} - ] - ], - "columnheader_aria-rowspan_2_on_th_html_rowspan_3-manual.html": [ - "256a3d73bde1954ffae5243d0a5d91293b97ca1b", - [ - null, - {} - ] - ], - "columnheader_aria-rowspan_2_on_th_html_rowspan_3_with_three_actual_rows-manual.html": [ - "6327e5fb4ec86649ff515a3725bd5f7ba85c8ccd", - [ - null, - {} - ] - ], - "columnheader_aria-rowspan_2_on_th_with_html_rowspan_not_specified-manual.html": [ - "425eb5b15e0ce070ed124165d043eb23d95ebafc", - [ - null, - {} - ] - ], - "columnheader_colindex_4-manual.html": [ - "f44e8343fb05523a71065fe0f8f7d3b088954232", - [ - null, - {} - ] - ], - "columnheader_rowindex_4-manual.html": [ - "7ab7e9c8d0f1f89d4a45b541407c39279ad19429", - [ - null, - {} - ] - ], - "columnheader_selected_false_not_automatically_propagated-manual.html": [ - "7624f2a3b80b6e04afd8a2b499fe4cc25de9c717", - [ - null, - {} - ] - ], - "columnheader_selected_true_not_automatically_propagated-manual.html": [ - "1bc364cb884c3d930e6757631afc5d76ec532a7d", - [ - null, - {} - ] - ], - "combobox_controls_an_invalid_id-manual.html": [ - "91188d8e3ca5c0438ea470e0683b2ef4929a501c", - [ - null, - {} - ] - ], - "combobox_haspopup_dialog-manual.html": [ - "d9cf618d9b55c841c06d962e62301d9b31e923ad", - [ - null, - {} - ] - ], - "combobox_haspopup_false-manual.html": [ - "2b0ca94745a059293749b8165917bfcb5da96ea5", - [ - null, - {} - ] - ], - "combobox_haspopup_grid-manual.html": [ - "a3929cf79e73a99addcaf0a7160535373186143e", - [ - null, - {} - ] - ], - "combobox_haspopup_listbox-manual.html": [ - "e1c9084fd540851d620e4888bc6c882a36db6193", - [ - null, - {} - ] - ], - "combobox_haspopup_menu-manual.html": [ - "a9439ed496ac8fe7cb4db2d65a71507156460fb0", - [ - null, - {} - ] - ], - "combobox_haspopup_tree-manual.html": [ - "a0602b520f7207ddad1655a42edc4ded9d2883a7", - [ - null, - {} - ] - ], - "combobox_haspopup_true-manual.html": [ - "c7548ce5cd3b93755fbd602c350333d6d28c57f6", - [ - null, - {} - ] - ], - "combobox_haspopup_unspecified-manual.html": [ - "cd61076fb4e3ae797d34d26163849543b7064446", - [ - null, - {} - ] - ], - "combobox_orientation_horizontal-manual.html": [ - "a5bcc700eca6edf06edfe7d4cef627f902f30d68", - [ - null, - {} - ] - ], - "combobox_orientation_unspecified-manual.html": [ - "20bd53d8d118e5d8b1ec9d26aa5e16155215ea0c", - [ - null, - {} - ] - ], - "combobox_orientation_vertical-manual.html": [ - "189345c4151bbdd7e3159270cf0fb01acd29aba9", - [ - null, - {} - ] - ], - "combobox_readonly_false-manual.html": [ - "978ab1194842938c95393e81a38fbd25936c3678", - [ - null, - {} - ] - ], - "combobox_readonly_true-manual.html": [ - "26a4302c24b8643e25c6b83c8f55006de7c328ad", - [ - null, - {} - ] - ], - "combobox_readonly_unspecified-manual.html": [ - "4ad87b2c0a91d27b316773a3bd022a4596ba738e", - [ - null, - {} - ] - ], - "dialog_modal_false-manual.html": [ - "6c906d320f15821444bb5de99d0dc6d77e3b4694", - [ - null, - {} - ] - ], - "dialog_modal_true-manual.html": [ - "02cbfb5fe897acda12e58642f30fc34c9af435cd", - [ - null, - {} - ] - ], - "dialog_modal_unspecified-manual.html": [ - "edd4605dad83935bb4566ef299065d250f9dcbf2", - [ - null, - {} - ] - ], - "div_element_without_role_roledescription_valid-manual.html": [ - "68b6cc51c728b339b1686c684c26e172489e8570", - [ - null, - {} - ] - ], - "errormessage_object_in_invalid_state-manual.html": [ - "999656826281546f33fa73232fc08429c34bdfdb", - [ - null, - {} - ] - ], - "errormessage_object_in_valid_state-manual.html": [ - "7c194c6d0ace9ece9b12cd7f04b55d69530096af", - [ - null, - {} - ] - ], - "feed-manual.html": [ - "91fc6778dbfec8480ed578812db3f8a4ca5cc5dc", - [ - null, - {} - ] - ], - "figure-manual.html": [ - "d60973527a9c4fd7270d4262483679efcd521efd", - [ - null, - {} - ] - ], - "grid_aria-readonly_false_automatically_propagated-manual.html": [ - "d373a3023efa1f9bce448970dca89306f6da0caf", - [ - null, - {} - ] - ], - "grid_aria-readonly_true_automatically_propagated-manual.html": [ - "7b6a22e2921a93034ae017f340b8c9a497cbc9da", - [ - null, - {} - ] - ], - "grid_busy_false-manual.html": [ - "48edba5bf765a19d50741d59e9ed4c7f4758eaea", - [ - null, - {} - ] - ], - "grid_busy_true-manual.html": [ - "ddcdf0198f897df038a72de9f891f8034e486db3", - [ - null, - {} - ] - ], - "grid_busy_value_changes-manual.html": [ - "4891198882acf72d50f73c05a2075186100cf870", - [ - null, - {} - ] - ], - "grid_colcount_8-manual.html": [ - "0f03b12605df254eae653094b9714beba4ca88ab", - [ - null, - {} - ] - ], - "grid_columnheader_readonly_false-manual.html": [ - "bb8dd34a92f84074df85226effa0543dc95df0f5", - [ - null, - {} - ] - ], - "grid_columnheader_readonly_true-manual.html": [ - "a81e4cbdced1de0640f1f32ca6286f415a5acda7", - [ - null, - {} - ] - ], - "grid_columnheader_readonly_unspecified-manual.html": [ - "d45d3b9ca71a0b1c8e8978c8635cb2b362a0b4c7", - [ - null, - {} - ] - ], - "grid_columnheader_required_false-manual.html": [ - "b8f7ae332ca6e6b7bb344f842e60d6fe8dc83455", - [ - null, - {} - ] - ], - "grid_columnheader_required_true-manual.html": [ - "76155ab905d682b5c95450c3a7a159fe5ce15047", - [ - null, - {} - ] - ], - "grid_columnheader_required_unspecified-manual.html": [ - "491cbed6f2ffe8ee82274651fede675e569fda0e", - [ - null, - {} - ] - ], - "grid_rowcount_3-manual.html": [ - "3079b59b4de72f52eea82350d3c7877e3900cd28", - [ - null, - {} - ] - ], - "grid_rowheader_readonly_false-manual.html": [ - "883918fd043f8d63aa62497f71c7d3e9ce72f40e", - [ - null, - {} - ] - ], - "grid_rowheader_readonly_true-manual.html": [ - "5d53c3624c6233c6040265624730627adde4dc14", - [ - null, - {} - ] - ], - "grid_rowheader_readonly_unspecified-manual.html": [ - "f9321cac1021bd9c4e4677d5962d20ce88d74669", - [ - null, - {} - ] - ], - "grid_rowheader_required_false-manual.html": [ - "4fafba50a983f726443f6aedcc4081f34a36b1a9", - [ - null, - {} - ] - ], - "grid_rowheader_required_true-manual.html": [ - "0f14d2dea8bd44077820dc3b3331c448385b062d", - [ - null, - {} - ] - ], - "grid_rowheader_required_unspecified-manual.html": [ - "208f0c5e56d7d6aa3ae5ee5459b3162cc2317062", - [ - null, - {} - ] - ], - "gridcell_aria-colspan_2_on_div-manual.html": [ - "c151087767e3b1c50093ca5010664581868eef05", - [ - null, - {} - ] - ], - "gridcell_aria-rowspan_2_on_div-manual.html": [ - "318709b360908482be27f99ebc1c060cc5f1db53", - [ - null, - {} - ] - ], - "gridcell_colindex_4-manual.html": [ - "6ef4fb3a166944114e3be9e9950f10c24c082863", - [ - null, - {} - ] - ], - "gridcell_rowindex_4-manual.html": [ - "8b9daaa7030e3fa77072e816c851800f828875f9", - [ - null, - {} - ] - ], - "group_hidden_undefined_element_not_rendered-manual.html": [ - "ef947859dba1906a2aa7d4be256beb0763a4ccc5", - [ - null, - {} - ] - ], - "group_hidden_undefined_element_rendered-manual.html": [ - "92c067c2160a849320fc08306f18d31e9bb49864", - [ - null, - {} - ] - ], - "heading_level_unspecified-manual.html": [ - "819bc7b60c6d42df7fb94b46f1249f9591359e23", - [ - null, - {} - ] - ], - "keyshortcuts_multiple_shortcuts-manual.html": [ - "ce4074a4f2cdefb01a6686fea3c9a4c2cf5861e5", - [ - null, - {} - ] - ], - "keyshortcuts_one_shortcut-manual.html": [ - "d0238dbf20e7f22220adb0d1b64e8a6069a5f48a", - [ - null, - {} - ] - ], - "listbox_busy_false-manual.html": [ - "9f6b8b36a88ae9074aabaf8c53d8b3cbaa1156a4", - [ - null, - {} - ] - ], - "listbox_busy_true-manual.html": [ - "c8388f7addfd240b40a5407170e996ccbd303795", - [ - null, - {} - ] - ], - "listbox_orientation_horizontal-manual.html": [ - "c718a54eafb837bb70523239e39653e747c97416", - [ - null, - {} - ] - ], - "listbox_orientation_unspecified-manual.html": [ - "7dd2762d6db08c22408a4beb5e56c88268f28493", - [ - null, - {} - ] - ], - "listbox_orientation_vertical-manual.html": [ - "8bcca037d3072dd359054b7fee7692ab21462867", - [ - null, - {} - ] - ], - "listbox_readonly_false-manual.html": [ - "b3bde923a406ecdc3b6c1dead4a2ddf21540ec34", - [ - null, - {} - ] - ], - "listbox_readonly_true-manual.html": [ - "30213919e48879474f68fb20caf53f53e0716583", - [ - null, - {} - ] - ], - "listbox_readonly_unspecified-manual.html": [ - "9283ad24046e27f9d9e91f8853d090d852c6fe68", - [ - null, - {} - ] - ], - "listitem_setsize_-1-manual.html": [ - "7537a4bcd72b3b0fd52dfb85b80f3c55dbdb95e4", - [ - null, - {} - ] - ], - "menu_orientation_horizontal-manual.html": [ - "184c42052e4fe19f03905b63c6694a083595a934", - [ - null, - {} - ] - ], - "menu_orientation_unspecified-manual.html": [ - "07e8e691b9432b539f63dad6e8ee9ed25430a55b", - [ - null, - {} - ] - ], - "menu_orientation_vertical-manual.html": [ - "10a65e997d5a3d3a7b4a55c01e12d98d32c07fe3", - [ - null, - {} - ] - ], - "menubar_busy_false-manual.html": [ - "8224d79b87625eb4407ec2fb62b785638012ec83", - [ - null, - {} - ] - ], - "menubar_busy_true-manual.html": [ - "b1695dcef4caf0dc9e387680da7085e8f0992dce", - [ - null, - {} - ] - ], - "menubar_orientation_horizontal-manual.html": [ - "e47a68e81af133f97684d2c09102f7a83f2b66ab", - [ - null, - {} - ] - ], - "menubar_orientation_unspecified-manual.html": [ - "0e945ae26f24fad7bcf842e165193de35dd81ac4", - [ - null, - {} - ] - ], - "menubar_orientation_vertical-manual.html": [ - "c0830abc7fe84562dbfda4a008055c713f087447", - [ - null, - {} - ] - ], - "menuitem_expanded_false-manual.html": [ - "7e5ca5485bac03490a7f6486ec62f449500fa64d", - [ - null, - {} - ] - ], - "menuitem_expanded_true-manual.html": [ - "a9d9b5df359c8c8e30238cf53bd08c7c04d61765", - [ - null, - {} - ] - ], - "menuitem_posinset_and_setsize-manual.html": [ - "ac0ec8871d5599b57dc99d8f4352f2a3bb7dd0dd", - [ - null, - {} - ] - ], - "menuitemcheckbox_expanded_false-manual.html": [ - "e05ea1af711be9603fe44a6830d89a0abceccb1c", - [ - null, - {} - ] - ], - "menuitemcheckbox_expanded_true-manual.html": [ - "b2ac5db68f32becde41dfe29ec757cb618775fc0", - [ - null, - {} - ] - ], - "menuitemcheckbox_posinset_and_setsize-manual.html": [ - "cf867c1cf927fd475bda19ab08c6b942044429e4", - [ - null, - {} - ] - ], - "menuitemcheckbox_readonly_false-manual.html": [ - "59f12ed0fc992ea1cad913c93ec4729a9b9c01d1", - [ - null, - {} - ] - ], - "menuitemcheckbox_readonly_true-manual.html": [ - "faa9703fda36a390de76458c76090785bc52b2f6", - [ - null, - {} - ] - ], - "menuitemcheckbox_readonly_unspecified-manual.html": [ - "d9b5dc2980724bf363302d50278c3b3efb218754", - [ - null, - {} - ] - ], - "menuitemradio_expanded_false-manual.html": [ - "52c599d90ef0cf6dd60fed9be34b6b00de54a440", - [ - null, - {} - ] - ], - "menuitemradio_expanded_true-manual.html": [ - "601879885fe3afdb531557fc1ac64b0da132a1cb", - [ - null, - {} - ] - ], - "menuitemradio_posinset_and_setsize-manual.html": [ - "d512e95dddbdf02e34648e3415c657aa33f2a96a", - [ - null, - {} - ] - ], - "menuitemradio_readonly_false-manual.html": [ - "164bde7ae177ada9c1dfffca22eef4d0beda519f", - [ - null, - {} - ] - ], - "menuitemradio_readonly_true-manual.html": [ - "70690f372c07a8d4aa97b23ad6e5a3d773848db7", - [ - null, - {} - ] - ], - "menuitemradio_readonly_unspecified-manual.html": [ - "a4257c439f800d0d410a1c45517d010a4e820f2e", - [ - null, - {} - ] - ], - "none-manual.html": [ - "ded346faa6d68864345740772c9b8a51af9ca4a5", - [ - null, - {} - ] - ], - "option_selected_false-manual.html": [ - "02b1ec8293db444645369ee34bf2f093a0dfdbf5", - [ - null, - {} - ] - ], - "option_selected_true-manual.html": [ - "8bb7dd7ef54bb402d098f918bdff28b8f0798f35", - [ - null, - {} - ] - ], - "option_selected_undefined-manual.html": [ - "5930de9a48250300d2c122eea10f93dde265a2b2", - [ - null, - {} - ] - ], - "option_selected_value_changes-manual.html": [ - "2c02a8707d3e128ae74c4b1757397b75ee559d99", - [ - null, - {} - ] - ], - "radiogroup_orientation_horizontal-manual.html": [ - "4943335cf26448995fac6ec2a85b3b928dc3013a", - [ - null, - {} - ] - ], - "radiogroup_orientation_unspecified-manual.html": [ - "40ceab71ca8e10ff54095dac86ec7c90eff775d2", - [ - null, - {} - ] - ], - "radiogroup_orientation_vertical-manual.html": [ - "def4543652a0b1ec6ae83ca221347b6bdeb2bbb3", - [ - null, - {} - ] - ], - "radiogroup_readonly_false-manual.html": [ - "102f51757baf7456dfbc72fb555564d44b03327d", - [ - null, - {} - ] - ], - "radiogroup_readonly_true-manual.html": [ - "0c97e24a8bf0a76d24bcac20f92afcaec8e2ccd4", - [ - null, - {} - ] - ], - "radiogroup_readonly_unspecified-manual.html": [ - "6e8c641ac7b595cd5fc2ace06b168575a51d8c58", - [ - null, - {} - ] - ], - "region_with_name-manual.html": [ - "ba868a77b2e481787208ded2e07e12c16273c508", - [ - null, - {} - ] - ], - "region_without_name-manual.html": [ - "84ea6658e70505466602c856635dbdabb75b4c84", - [ - null, - {} - ] - ], - "row_colindex_4-manual.html": [ - "82ee257d9e51f1dd81ffe3a94a029936e1fcb16f", - [ - null, - {} - ] - ], - "row_rowindex_4-manual.html": [ - "1333219e0486c685ab1a29f91801556e8c58bcd9", - [ - null, - {} - ] - ], - "rowheader_aria-colspan_2_on_div-manual.html": [ - "3d8288895974c786dc21e7e3188da1672ca16dc1", - [ - null, - {} - ] - ], - "rowheader_aria-rowspan_2_on_div-manual.html": [ - "4ddf4f5c9acfbe6b4a46f8e2d74f7e46809e343e", - [ - null, - {} - ] - ], - "rowheader_colindex_4-manual.html": [ - "8b1eb477e47e07371b3fb2f0924ca8a74e746205", - [ - null, - {} - ] - ], - "rowheader_rowindex_4-manual.html": [ - "716403cfeb6101c9bec4839bb8812a7f07e133de", - [ - null, - {} - ] - ], - "rowheader_selected_false_not_automatically_propagated-manual.html": [ - "7cd9a559900769094c42c4986aebb5fb5da0807a", - [ - null, - {} - ] - ], - "rowheader_selected_true_not_automatically_propagated-manual.html": [ - "51b2b68fee31b0241eaa12bdaa12f4fb9fd75596", - [ - null, - {} - ] - ], - "scrollbar_all_values_unspecified-manual.html": [ - "910fe2b11812a8e6ec08ba67fc23a5ffc1acb9a3", - [ - null, - {} - ] - ], - "scrollbar_only_valuenow_unspecified-manual.html": [ - "73e315817635fe552fe7abdcd83b2c926b41a134", - [ - null, - {} - ] - ], - "scrollbar_orientation_unspecified-manual.html": [ - "32791ae1d8df74fd3045cd22a194e032aa8866cd", - [ - null, - {} - ] - ], - "searchbox-manual.html": [ - "979bd0fad45a6ddab51e9c284f72e864393f698c", - [ - null, - {} - ] - ], - "searchbox_activedescendant-manual.html": [ - "a72cf9326364bc44b4cb96f29a94b174016cb04b", - [ - null, - {} - ] - ], - "searchbox_activedescendant_value_changes-manual.html": [ - "956f931ae863ad643821c91783952502e6247a40", - [ - null, - {} - ] - ], - "searchbox_autocomplete_both-manual.html": [ - "ea8b69867946322bda7261e3b9bc8571516b8ddb", - [ - null, - {} - ] - ], - "searchbox_autocomplete_inline-manual.html": [ - "77e707666c563c42d781139244476c317bb76998", - [ - null, - {} - ] - ], - "searchbox_autocomplete_list-manual.html": [ - "0ce8068ea94cf9f34b442837d1da4cd9a2091d2f", - [ - null, - {} - ] - ], - "searchbox_autocomplete_none-manual.html": [ - "341d75c5320116135551df3f8d7b4e750b215a30", - [ - null, - {} - ] - ], - "searchbox_autocomplete_unspecified-manual.html": [ - "59becae655e94f39d9773df4a4eba1086e058929", - [ - null, - {} - ] - ], - "searchbox_multiline_false-manual.html": [ - "8f49eb61e93a4b3de4a0d19ed9f970fc7e75ba77", - [ - null, - {} - ] - ], - "searchbox_multiline_true-manual.html": [ - "47e6c3aaa97011ed2053d0ffa08b4c4ea6bcbda3", - [ - null, - {} - ] - ], - "searchbox_multiline_unspecified-manual.html": [ - "5c1d7f5185aa67b3fdc589b03d0c43401aff5f54", - [ - null, - {} - ] - ], - "searchbox_placeholder-manual.html": [ - "da513456d2de45ee7fd1d371ffb443674201f7d9", - [ - null, - {} - ] - ], - "searchbox_readonly_false-manual.html": [ - "574666a0177b890e1b27e6d60aa2c251e05ffa91", - [ - null, - {} - ] - ], - "searchbox_readonly_true-manual.html": [ - "833f1bc4288c1dba08b0e72573fa691696fdd5b1", - [ - null, - {} - ] - ], - "searchbox_readonly_unspecified-manual.html": [ - "51b9893595d4d0dc14b7c71cbf7c35d7231b226a", - [ - null, - {} - ] - ], - "searchbox_required_false-manual.html": [ - "1bfc8953564d28e199b52abc903aea537f2ce541", - [ - null, - {} - ] - ], - "searchbox_required_true-manual.html": [ - "7e26e5ab03ab4bc45d855b34ebc87ac99b0c7734", - [ - null, - {} - ] - ], - "searchbox_required_unspecified-manual.html": [ - "13489ad13a0ca80b9cda0eb911013ad561ed30fd", - [ - null, - {} - ] - ], - "separator_focusable_all_values_unspecified-manual.html": [ - "fb8e852bb17c196d33cac5475145bdd092fb3e0e", - [ - null, - {} - ] - ], - "separator_focusable_only_valuenow_unspecified-manual.html": [ - "680c2a3605a10fca3bef753b2e6dd08d32c80052", - [ - null, - {} - ] - ], - "separator_focusable_valuetext-manual.html": [ - "5992f15aeb0077ace637e577d1615ee006ce6354", - [ - null, - {} - ] - ], - "separator_orientation_unspecified-manual.html": [ - "3a3901b4244040b42fb2f6b3f63af949bbadc87f", - [ - null, - {} - ] - ], - "separator_unfocusable_all_values_unspecified-manual.html": [ - "171370f422bcbbc357e2b68c405cdac64786c4c3", - [ - null, - {} - ] - ], - "separator_unfocusable_valuetext-manual.html": [ - "db8ee6322dd1356eca5e546c8cc1c20cdfe9849a", - [ - null, - {} - ] - ], - "slider_all_values_unspecified-manual.html": [ - "0dea62e620f7a3a1d8ce21db5a31e4136557e3f1", - [ - null, - {} - ] - ], - "slider_only_valuenow_unspecified-manual.html": [ - "ffcbc783734e3708b33ebe5884d65b2f92cdee62", - [ - null, - {} - ] - ], - "slider_orientation_unspecified-manual.html": [ - "295b0a61960b92c5691c14b66e46ecaad485b8b7", - [ - null, - {} - ] - ], - "slider_readonly_false-manual.html": [ - "f5a70984d51d74c649ca3b1a308c9942efe30a6f", - [ - null, - {} - ] - ], - "slider_readonly_true-manual.html": [ - "2588079d784cfd659df39504032d2494dc481995", - [ - null, - {} - ] - ], - "slider_readonly_unspecified-manual.html": [ - "271325a47d39f3b2d2cb95a0a6b8c49a741d2aea", - [ - null, - {} - ] - ], - "spinbutton_all_values_unspecified-manual.html": [ - "8da69af36d6e8e7ac6028de683ba576d7262ec5d", - [ - null, - {} - ] - ], - "spinbutton_only_aria-valuenow_unspecified-manual.html": [ - "bbb94702fe333831ae34a10cf15aaa796efaf0b5", - [ - null, - {} - ] - ], - "spinbutton_readonly_false-manual.html": [ - "5e9429ca28a46413e56896794a4341813c75e2d4", - [ - null, - {} - ] - ], - "spinbutton_readonly_true-manual.html": [ - "a7a3abe632797531f82b09ca861e87d70f5d259a", - [ - null, - {} - ] - ], - "spinbutton_readonly_unspecified-manual.html": [ - "0976b0737c7acd5e34cd9aa719d2a9141de8f4e1", - [ - null, - {} - ] - ], - "switch_checked_false-manual.html": [ - "ac61802bdfb39a197e14e607c25cc48d895d1f35", - [ - null, - {} - ] - ], - "switch_checked_mixed-manual.html": [ - "a674c7d7bcf6dcbe4134e2fbff97d35395c19832", - [ - null, - {} - ] - ], - "switch_checked_true-manual.html": [ - "e23e7235616334f41fa0c29780e5b42051125659", - [ - null, - {} - ] - ], - "switch_checked_undefined-manual.html": [ - "4f5399e88ceb23d91a4c00d1bd1f4ac562725d18", - [ - null, - {} - ] - ], - "switch_checked_value_changes-manual.html": [ - "b58e52fefb039216c64c48a9701bd9c50f86b4c6", - [ - null, - {} - ] - ], - "switch_readonly_false-manual.html": [ - "e68b6bb0d27aef4cbfad98217151a544fa5231ba", - [ - null, - {} - ] - ], - "switch_readonly_true-manual.html": [ - "605d2d0d9afdf867c1a23c1759b9e10c05fde336", - [ - null, - {} - ] - ], - "switch_readonly_unspecified-manual.html": [ - "0fd582c0e9bace1a25474c05f55d9e8492100335", - [ - null, - {} - ] - ], - "tab_posinset_and_setsize-manual.html": [ - "f27f485ac97bf2423a72507925016f2a2cc227e2", - [ - null, - {} - ] - ], - "table_colcount_-1-manual.html": [ - "2135f6ed8d0d760ddace412faf1e490902fbf8ed", - [ - null, - {} - ] - ], - "table_colcount_8-manual.html": [ - "1b8e0affdd5dd5ff2728fc32fabca877d8a117fc", - [ - null, - {} - ] - ], - "table_rowcount_-1-manual.html": [ - "5e7b5b8bf49aa121b50e6ddacfd768026e025115", - [ - null, - {} - ] - ], - "table_rowcount_3-manual.html": [ - "5bfad69b240d6c6fd57f5a8dc554069771a9f9d4", - [ - null, - {} - ] - ], - "tablist_orientation_horizontal-manual.html": [ - "104668cbb95e044d2055f7a35f69da6adfa93b04", - [ - null, - {} - ] - ], - "tablist_orientation_unspecified-manual.html": [ - "001c2ee77b31778169f377e2be4013912e164910", - [ - null, - {} - ] - ], - "tablist_orientation_vertical-manual.html": [ - "f6fe16e8955cd5914167a943675db0bd7e399ea9", - [ - null, - {} - ] - ], - "term_role-manual.html": [ - "ac5030df950334c912f57821c9ae978c47d49efd", - [ - null, - {} - ] - ], - "textbox_placeholder-manual.html": [ - "fdf0635be67baf7d71e22a43d59cfa551b17d018", - [ - null, - {} - ] - ], - "toolbar_orientation_horizontal-manual.html": [ - "1b8fda8dd60bbab169349ce227574a9737cfbf14", - [ - null, - {} - ] - ], - "toolbar_orientation_unspecified-manual.html": [ - "4607511874bd8b16b47789b20c7a727ffc8ffd88", - [ - null, - {} - ] - ], - "toolbar_orientation_vertical-manual.html": [ - "792952d323d178819a83f237c1f25b8d02274712", - [ - null, - {} - ] - ], - "tree_orientation_horizontal-manual.html": [ - "15813f5f039a7c93581c0132e2913580dac72ea8", - [ - null, - {} - ] - ], - "tree_orientation_unspecified-manual.html": [ - "dfc1bdcc587e104444691895a2840388f1e242f7", - [ - null, - {} - ] - ], - "tree_orientation_vertical-manual.html": [ - "b9afa33ff44cd4e4c3a4646b2398e10e55069bcc", - [ - null, - {} - ] - ], - "treegrid_colcount_8-manual.html": [ - "a3e9ea14963ca5da01235724200d3df4a7f79ad1", - [ - null, - {} - ] - ], - "treegrid_orientation_horizontal-manual.html": [ - "756153abf3bc68e62e68840393645b823f320741", - [ - null, - {} - ] - ], - "treegrid_orientation_unspecified-manual.html": [ - "d536e9afbed7c6d83185c4416cbe424a4bf27941", - [ - null, - {} - ] - ], - "treegrid_orientation_vertical-manual.html": [ - "62a19d09046691bbcccd81922d29efbe5b92c4bd", - [ - null, - {} - ] - ], - "treegrid_rowcount_3-manual.html": [ - "9d9b8acf44700de3166430c34e3b751ce6d8f177", - [ - null, - {} - ] - ], - "treeitem_selected_false-manual.html": [ - "684fda69b6d157bef02d1ef60a9ce9cc602d0f82", - [ - null, - {} - ] - ], - "treeitem_selected_true-manual.html": [ - "b951c54dec674ac8d7e9a537cf8a064f6b4d0d97", - [ - null, - {} - ] - ], - "treeitem_selected_undefined-manual.html": [ - "dddfd3826f094c6557f939734819ea437497aaa0", - [ - null, - {} - ] - ], - "treeitem_selected_value_changes-manual.html": [ - "69734c82ddaa1455b7473c84b27fac49c8cf1c82", - [ - null, - {} + "manual": { + "alertdialog_modal_false-manual.html": [ + "ee64c9dbf0d285707f59a4f2f11674f79822967a", + [ + null, + {} + ] + ], + "alertdialog_modal_true-manual.html": [ + "4affe2fd5e61d718aa89f967d02a79f91570f1af", + [ + null, + {} + ] + ], + "application_activedescendant-manual.html": [ + "a6ef85ac3dd1a00ca10a24b47c6a0da4d548d179", + [ + null, + {} + ] + ], + "application_activedescendant_value_changes-manual.html": [ + "d923c84dea717c384387f32d0d36d2e4de657e8e", + [ + null, + {} + ] + ], + "aria-current_not_declared-manual.html": [ + "ecf95bb64fc1fcd7fcad5565d34ca8d964eb413f", + [ + null, + {} + ] + ], + "aria-current_with_value_changes-manual.html": [ + "d3f1eae0052126b77d9ea73be413cf443f8cd836", + [ + null, + {} + ] + ], + "aria-current_with_value_date-manual.html": [ + "b15f5ec13adc85014a86101d0c13a36e0efd0c8c", + [ + null, + {} + ] + ], + "aria-current_with_value_location-manual.html": [ + "e8cf762c0e7af162dd01e438732e13fbb4fca121", + [ + null, + {} + ] + ], + "aria-current_with_value_page-manual.html": [ + "ba48b738cc0686edc97b471cbe5af931a038c824", + [ + null, + {} + ] + ], + "aria-current_with_value_step-manual.html": [ + "6f4d5986c610a1ddcabff58afa9c62f991d5f094", + [ + null, + {} + ] + ], + "aria-current_with_value_time-manual.html": [ + "046fb817695d4aa25f004c6294f8e269fdb6bd89", + [ + null, + {} + ] + ], + "aria-current_with_value_true-manual.html": [ + "3ce799f8b2cfedb906854599b79fc9e11a847f92", + [ + null, + {} + ] + ], + "aria-current_with_value_unspecified-manual.html": [ + "c017a000a114d087a493d738003c88cb26d81b8a", + [ + null, + {} + ] + ], + "aria-details_pointing_to_details_element-manual.html": [ + "6a0d9d776a6f9308dd26b14f2e7a43df4ee1efce", + [ + null, + {} + ] + ], + "aria-details_pointing_to_div_element-manual.html": [ + "8a46e78d9711a887bb91780cd296033151b5bebe", + [ + null, + {} + ] + ], + "article_in_feed_posinset_and_setsize-manual.html": [ + "9c89dc3fa993f06d5539ee5ebac5365b8b0609ce", + [ + null, + {} + ] + ], + "article_in_feed_setsize_-1-manual.html": [ + "0552f926e942c424650f8fe3c1ab15d4769bd9b8", + [ + null, + {} + ] + ], + "article_not_in_feed_posinset_and_setsize-manual.html": [ + "91cb0e0eb4877a6ab8e963d60654159ed7f7c8d9", + [ + null, + {} + ] + ], + "button_haspopup_dialog-manual.html": [ + "8ba0a22a8d4d7319f5b8318088993fb2603885f7", + [ + null, + {} + ] + ], + "button_haspopup_emptystring-manual.html": [ + "e9091489068aec3746912f34e91e996486b69777", + [ + null, + {} + ] + ], + "button_haspopup_false-manual.html": [ + "97188995e526378196d31e558b09de2640bc4867", + [ + null, + {} + ] + ], + "button_haspopup_foo-manual.html": [ + "a09d21c07416ccc41cfcf7e235f8553baf0c46fc", + [ + null, + {} + ] + ], + "button_haspopup_grid-manual.html": [ + "57c8efbde24d1be47bd91e3343874ccc2240c985", + [ + null, + {} + ] + ], + "button_haspopup_listbox-manual.html": [ + "4191fc40a3c8c3dfcacd57ebcedd81228643bebc", + [ + null, + {} + ] + ], + "button_haspopup_menu-manual.html": [ + "9378993f55817876d17ba1f5d60da47abc7e8190", + [ + null, + {} + ] + ], + "button_haspopup_tree-manual.html": [ + "e62b87f59d64c5eee03583937868dacc9d3ffd85", + [ + null, + {} + ] + ], + "button_haspopup_true-manual.html": [ + "a6d94658d272d2f9f52506aab61cebd7696d66aa", + [ + null, + {} + ] + ], + "button_haspopup_unspecified-manual.html": [ + "96d7095d4ded71226c7105e68c0ba2218bc05de4", + [ + null, + {} + ] + ], + "button_roledescription_empty-manual.html": [ + "d9eb0fe7cc82e534107d0aac34b89497cb321dbf", + [ + null, + {} + ] + ], + "button_roledescription_valid-manual.html": [ + "cdcf6071e619c30e8a884242a85b78d783ff53dc", + [ + null, + {} + ] + ], + "button_roledescription_whitespace_only-manual.html": [ + "59e463778a12adcbe324118ecf75aad3b1e9c59c", + [ + null, + {} + ] + ], + "cell-manual.html": [ + "d9f0eafbe076c9ab9ad8bbf2f6c9ceb5a77ff101", + [ + null, + {} + ] + ], + "cell_aria-colspan_2_on_div-manual.html": [ + "fa120dc5e43d8c23b2e4b86f85025ad6b0287fec", + [ + null, + {} + ] + ], + "cell_aria-colspan_2_on_td_html_colspan_3-manual.html": [ + "a7c65fed3d49b269c61f719edf22ea02a9ff720b", + [ + null, + {} + ] + ], + "cell_aria-colspan_2_on_td_html_colspan_3_with_headers_and_border-manual.html": [ + "057918c6b0cd85af3c2e25bfc253ef28cba7ded8", + [ + null, + {} + ] + ], + "cell_aria-colspan_2_on_td_html_colspan_3_with_three_actual_columns-manual.html": [ + "2c05e6ea71f99948bbeec975069b923e422b34d0", + [ + null, + {} + ] + ], + "cell_aria-colspan_2_on_td_with_html_colspan_not_specified-manual.html": [ + "06212078b74d09a305fa5755c98594adc9bee882", + [ + null, + {} + ] + ], + "cell_aria-rowspan_2_on_div-manual.html": [ + "e94303848dac70e70a99e28b292f68051c3c2eed", + [ + null, + {} + ] + ], + "cell_aria-rowspan_2_on_td_html_rowspan_3-manual.html": [ + "86ea1a4aec1ebcf94f6a2bfa86857aa450e5cc98", + [ + null, + {} + ] + ], + "cell_aria-rowspan_2_on_td_html_rowspan_3_with_three_actual_rows-manual.html": [ + "f1572046f29e7fbf7d0ecff0c9b551971bfec216", + [ + null, + {} + ] + ], + "cell_aria-rowspan_2_on_td_with_html_rowspan_not_specified-manual.html": [ + "0978186febafcfaf39d1db30e9af32dad3ff9182", + [ + null, + {} + ] + ], + "cell_colindex_4-manual.html": [ + "02003065e09b85dc966105d98f38837dc1d57c2e", + [ + null, + {} + ] + ], + "cell_rowindex_4-manual.html": [ + "ea2937efcbfa0484d7eb9557979fea96c647a566", + [ + null, + {} + ] + ], + "checkbox_readonly_false-manual.html": [ + "558dc8e3912daed372f14acf926e56600e526ab2", + [ + null, + {} + ] + ], + "checkbox_readonly_true-manual.html": [ + "f3c879038f75f4c56ef21fee2f6ec098eecf201d", + [ + null, + {} + ] + ], + "checkbox_readonly_unspecified-manual.html": [ + "583985f0009588e52180249342e5de131d963cb0", + [ + null, + {} + ] + ], + "columnheader_aria-colspan_2_on_div-manual.html": [ + "4789ced84d260d67bd937cf130a63528de1ac878", + [ + null, + {} + ] + ], + "columnheader_aria-colspan_2_on_th_html_colspan_3-manual.html": [ + "2ad8cb4bed9d9be89fc2222688d61517d2ede446", + [ + null, + {} + ] + ], + "columnheader_aria-colspan_2_on_th_html_colspan_3_with_three_actual_columns-manual.html": [ + "3ac8701f5d7b6c23baad9b561932ad0cba383c8e", + [ + null, + {} + ] + ], + "columnheader_aria-colspan_2_on_th_with_html_colspan_not_specified-manual.html": [ + "82c75991885f9c57d8a93ea9fb29fb58bf7b1fa2", + [ + null, + {} + ] + ], + "columnheader_aria-rowspan_2_on_div-manual.html": [ + "00c00683924fe2919b8e21a15d11de1146c4e2b3", + [ + null, + {} + ] + ], + "columnheader_aria-rowspan_2_on_th_html_rowspan_3-manual.html": [ + "256a3d73bde1954ffae5243d0a5d91293b97ca1b", + [ + null, + {} + ] + ], + "columnheader_aria-rowspan_2_on_th_html_rowspan_3_with_three_actual_rows-manual.html": [ + "6327e5fb4ec86649ff515a3725bd5f7ba85c8ccd", + [ + null, + {} + ] + ], + "columnheader_aria-rowspan_2_on_th_with_html_rowspan_not_specified-manual.html": [ + "425eb5b15e0ce070ed124165d043eb23d95ebafc", + [ + null, + {} + ] + ], + "columnheader_colindex_4-manual.html": [ + "f44e8343fb05523a71065fe0f8f7d3b088954232", + [ + null, + {} + ] + ], + "columnheader_rowindex_4-manual.html": [ + "7ab7e9c8d0f1f89d4a45b541407c39279ad19429", + [ + null, + {} + ] + ], + "columnheader_selected_false_not_automatically_propagated-manual.html": [ + "7624f2a3b80b6e04afd8a2b499fe4cc25de9c717", + [ + null, + {} + ] + ], + "columnheader_selected_true_not_automatically_propagated-manual.html": [ + "1bc364cb884c3d930e6757631afc5d76ec532a7d", + [ + null, + {} + ] + ], + "combobox_controls_an_invalid_id-manual.html": [ + "91188d8e3ca5c0438ea470e0683b2ef4929a501c", + [ + null, + {} + ] + ], + "combobox_haspopup_dialog-manual.html": [ + "d9cf618d9b55c841c06d962e62301d9b31e923ad", + [ + null, + {} + ] + ], + "combobox_haspopup_false-manual.html": [ + "2b0ca94745a059293749b8165917bfcb5da96ea5", + [ + null, + {} + ] + ], + "combobox_haspopup_grid-manual.html": [ + "a3929cf79e73a99addcaf0a7160535373186143e", + [ + null, + {} + ] + ], + "combobox_haspopup_listbox-manual.html": [ + "e1c9084fd540851d620e4888bc6c882a36db6193", + [ + null, + {} + ] + ], + "combobox_haspopup_menu-manual.html": [ + "a9439ed496ac8fe7cb4db2d65a71507156460fb0", + [ + null, + {} + ] + ], + "combobox_haspopup_tree-manual.html": [ + "a0602b520f7207ddad1655a42edc4ded9d2883a7", + [ + null, + {} + ] + ], + "combobox_haspopup_true-manual.html": [ + "c7548ce5cd3b93755fbd602c350333d6d28c57f6", + [ + null, + {} + ] + ], + "combobox_haspopup_unspecified-manual.html": [ + "cd61076fb4e3ae797d34d26163849543b7064446", + [ + null, + {} + ] + ], + "combobox_orientation_horizontal-manual.html": [ + "a5bcc700eca6edf06edfe7d4cef627f902f30d68", + [ + null, + {} + ] + ], + "combobox_orientation_unspecified-manual.html": [ + "20bd53d8d118e5d8b1ec9d26aa5e16155215ea0c", + [ + null, + {} + ] + ], + "combobox_orientation_vertical-manual.html": [ + "189345c4151bbdd7e3159270cf0fb01acd29aba9", + [ + null, + {} + ] + ], + "combobox_readonly_false-manual.html": [ + "978ab1194842938c95393e81a38fbd25936c3678", + [ + null, + {} + ] + ], + "combobox_readonly_true-manual.html": [ + "26a4302c24b8643e25c6b83c8f55006de7c328ad", + [ + null, + {} + ] + ], + "combobox_readonly_unspecified-manual.html": [ + "4ad87b2c0a91d27b316773a3bd022a4596ba738e", + [ + null, + {} + ] + ], + "dialog_modal_false-manual.html": [ + "6c906d320f15821444bb5de99d0dc6d77e3b4694", + [ + null, + {} + ] + ], + "dialog_modal_true-manual.html": [ + "02cbfb5fe897acda12e58642f30fc34c9af435cd", + [ + null, + {} + ] + ], + "dialog_modal_unspecified-manual.html": [ + "edd4605dad83935bb4566ef299065d250f9dcbf2", + [ + null, + {} + ] + ], + "div_element_without_role_roledescription_valid-manual.html": [ + "68b6cc51c728b339b1686c684c26e172489e8570", + [ + null, + {} + ] + ], + "errormessage_object_in_invalid_state-manual.html": [ + "999656826281546f33fa73232fc08429c34bdfdb", + [ + null, + {} + ] + ], + "errormessage_object_in_valid_state-manual.html": [ + "7c194c6d0ace9ece9b12cd7f04b55d69530096af", + [ + null, + {} + ] + ], + "feed-manual.html": [ + "91fc6778dbfec8480ed578812db3f8a4ca5cc5dc", + [ + null, + {} + ] + ], + "figure-manual.html": [ + "d60973527a9c4fd7270d4262483679efcd521efd", + [ + null, + {} + ] + ], + "grid_aria-readonly_false_automatically_propagated-manual.html": [ + "d373a3023efa1f9bce448970dca89306f6da0caf", + [ + null, + {} + ] + ], + "grid_aria-readonly_true_automatically_propagated-manual.html": [ + "7b6a22e2921a93034ae017f340b8c9a497cbc9da", + [ + null, + {} + ] + ], + "grid_busy_false-manual.html": [ + "48edba5bf765a19d50741d59e9ed4c7f4758eaea", + [ + null, + {} + ] + ], + "grid_busy_true-manual.html": [ + "ddcdf0198f897df038a72de9f891f8034e486db3", + [ + null, + {} + ] + ], + "grid_busy_value_changes-manual.html": [ + "4891198882acf72d50f73c05a2075186100cf870", + [ + null, + {} + ] + ], + "grid_colcount_8-manual.html": [ + "0f03b12605df254eae653094b9714beba4ca88ab", + [ + null, + {} + ] + ], + "grid_columnheader_readonly_false-manual.html": [ + "bb8dd34a92f84074df85226effa0543dc95df0f5", + [ + null, + {} + ] + ], + "grid_columnheader_readonly_true-manual.html": [ + "a81e4cbdced1de0640f1f32ca6286f415a5acda7", + [ + null, + {} + ] + ], + "grid_columnheader_readonly_unspecified-manual.html": [ + "d45d3b9ca71a0b1c8e8978c8635cb2b362a0b4c7", + [ + null, + {} + ] + ], + "grid_columnheader_required_false-manual.html": [ + "b8f7ae332ca6e6b7bb344f842e60d6fe8dc83455", + [ + null, + {} + ] + ], + "grid_columnheader_required_true-manual.html": [ + "76155ab905d682b5c95450c3a7a159fe5ce15047", + [ + null, + {} + ] + ], + "grid_columnheader_required_unspecified-manual.html": [ + "491cbed6f2ffe8ee82274651fede675e569fda0e", + [ + null, + {} + ] + ], + "grid_rowcount_3-manual.html": [ + "3079b59b4de72f52eea82350d3c7877e3900cd28", + [ + null, + {} + ] + ], + "grid_rowheader_readonly_false-manual.html": [ + "883918fd043f8d63aa62497f71c7d3e9ce72f40e", + [ + null, + {} + ] + ], + "grid_rowheader_readonly_true-manual.html": [ + "5d53c3624c6233c6040265624730627adde4dc14", + [ + null, + {} + ] + ], + "grid_rowheader_readonly_unspecified-manual.html": [ + "f9321cac1021bd9c4e4677d5962d20ce88d74669", + [ + null, + {} + ] + ], + "grid_rowheader_required_false-manual.html": [ + "4fafba50a983f726443f6aedcc4081f34a36b1a9", + [ + null, + {} + ] + ], + "grid_rowheader_required_true-manual.html": [ + "0f14d2dea8bd44077820dc3b3331c448385b062d", + [ + null, + {} + ] + ], + "grid_rowheader_required_unspecified-manual.html": [ + "208f0c5e56d7d6aa3ae5ee5459b3162cc2317062", + [ + null, + {} + ] + ], + "gridcell_aria-colspan_2_on_div-manual.html": [ + "c151087767e3b1c50093ca5010664581868eef05", + [ + null, + {} + ] + ], + "gridcell_aria-rowspan_2_on_div-manual.html": [ + "318709b360908482be27f99ebc1c060cc5f1db53", + [ + null, + {} + ] + ], + "gridcell_colindex_4-manual.html": [ + "6ef4fb3a166944114e3be9e9950f10c24c082863", + [ + null, + {} + ] + ], + "gridcell_rowindex_4-manual.html": [ + "8b9daaa7030e3fa77072e816c851800f828875f9", + [ + null, + {} + ] + ], + "group_hidden_undefined_element_not_rendered-manual.html": [ + "ef947859dba1906a2aa7d4be256beb0763a4ccc5", + [ + null, + {} + ] + ], + "group_hidden_undefined_element_rendered-manual.html": [ + "92c067c2160a849320fc08306f18d31e9bb49864", + [ + null, + {} + ] + ], + "heading_level_unspecified-manual.html": [ + "819bc7b60c6d42df7fb94b46f1249f9591359e23", + [ + null, + {} + ] + ], + "keyshortcuts_multiple_shortcuts-manual.html": [ + "ce4074a4f2cdefb01a6686fea3c9a4c2cf5861e5", + [ + null, + {} + ] + ], + "keyshortcuts_one_shortcut-manual.html": [ + "d0238dbf20e7f22220adb0d1b64e8a6069a5f48a", + [ + null, + {} + ] + ], + "listbox_busy_false-manual.html": [ + "9f6b8b36a88ae9074aabaf8c53d8b3cbaa1156a4", + [ + null, + {} + ] + ], + "listbox_busy_true-manual.html": [ + "c8388f7addfd240b40a5407170e996ccbd303795", + [ + null, + {} + ] + ], + "listbox_orientation_horizontal-manual.html": [ + "c718a54eafb837bb70523239e39653e747c97416", + [ + null, + {} + ] + ], + "listbox_orientation_unspecified-manual.html": [ + "7dd2762d6db08c22408a4beb5e56c88268f28493", + [ + null, + {} + ] + ], + "listbox_orientation_vertical-manual.html": [ + "8bcca037d3072dd359054b7fee7692ab21462867", + [ + null, + {} + ] + ], + "listbox_readonly_false-manual.html": [ + "b3bde923a406ecdc3b6c1dead4a2ddf21540ec34", + [ + null, + {} + ] + ], + "listbox_readonly_true-manual.html": [ + "30213919e48879474f68fb20caf53f53e0716583", + [ + null, + {} + ] + ], + "listbox_readonly_unspecified-manual.html": [ + "9283ad24046e27f9d9e91f8853d090d852c6fe68", + [ + null, + {} + ] + ], + "listitem_setsize_-1-manual.html": [ + "7537a4bcd72b3b0fd52dfb85b80f3c55dbdb95e4", + [ + null, + {} + ] + ], + "menu_orientation_horizontal-manual.html": [ + "184c42052e4fe19f03905b63c6694a083595a934", + [ + null, + {} + ] + ], + "menu_orientation_unspecified-manual.html": [ + "07e8e691b9432b539f63dad6e8ee9ed25430a55b", + [ + null, + {} + ] + ], + "menu_orientation_vertical-manual.html": [ + "10a65e997d5a3d3a7b4a55c01e12d98d32c07fe3", + [ + null, + {} + ] + ], + "menubar_busy_false-manual.html": [ + "8224d79b87625eb4407ec2fb62b785638012ec83", + [ + null, + {} + ] + ], + "menubar_busy_true-manual.html": [ + "b1695dcef4caf0dc9e387680da7085e8f0992dce", + [ + null, + {} + ] + ], + "menubar_orientation_horizontal-manual.html": [ + "e47a68e81af133f97684d2c09102f7a83f2b66ab", + [ + null, + {} + ] + ], + "menubar_orientation_unspecified-manual.html": [ + "0e945ae26f24fad7bcf842e165193de35dd81ac4", + [ + null, + {} + ] + ], + "menubar_orientation_vertical-manual.html": [ + "c0830abc7fe84562dbfda4a008055c713f087447", + [ + null, + {} + ] + ], + "menuitem_expanded_false-manual.html": [ + "7e5ca5485bac03490a7f6486ec62f449500fa64d", + [ + null, + {} + ] + ], + "menuitem_expanded_true-manual.html": [ + "a9d9b5df359c8c8e30238cf53bd08c7c04d61765", + [ + null, + {} + ] + ], + "menuitem_posinset_and_setsize-manual.html": [ + "ac0ec8871d5599b57dc99d8f4352f2a3bb7dd0dd", + [ + null, + {} + ] + ], + "menuitemcheckbox_expanded_false-manual.html": [ + "e05ea1af711be9603fe44a6830d89a0abceccb1c", + [ + null, + {} + ] + ], + "menuitemcheckbox_expanded_true-manual.html": [ + "b2ac5db68f32becde41dfe29ec757cb618775fc0", + [ + null, + {} + ] + ], + "menuitemcheckbox_posinset_and_setsize-manual.html": [ + "cf867c1cf927fd475bda19ab08c6b942044429e4", + [ + null, + {} + ] + ], + "menuitemcheckbox_readonly_false-manual.html": [ + "59f12ed0fc992ea1cad913c93ec4729a9b9c01d1", + [ + null, + {} + ] + ], + "menuitemcheckbox_readonly_true-manual.html": [ + "faa9703fda36a390de76458c76090785bc52b2f6", + [ + null, + {} + ] + ], + "menuitemcheckbox_readonly_unspecified-manual.html": [ + "d9b5dc2980724bf363302d50278c3b3efb218754", + [ + null, + {} + ] + ], + "menuitemradio_expanded_false-manual.html": [ + "52c599d90ef0cf6dd60fed9be34b6b00de54a440", + [ + null, + {} + ] + ], + "menuitemradio_expanded_true-manual.html": [ + "601879885fe3afdb531557fc1ac64b0da132a1cb", + [ + null, + {} + ] + ], + "menuitemradio_posinset_and_setsize-manual.html": [ + "d512e95dddbdf02e34648e3415c657aa33f2a96a", + [ + null, + {} + ] + ], + "menuitemradio_readonly_false-manual.html": [ + "164bde7ae177ada9c1dfffca22eef4d0beda519f", + [ + null, + {} + ] + ], + "menuitemradio_readonly_true-manual.html": [ + "70690f372c07a8d4aa97b23ad6e5a3d773848db7", + [ + null, + {} + ] + ], + "menuitemradio_readonly_unspecified-manual.html": [ + "a4257c439f800d0d410a1c45517d010a4e820f2e", + [ + null, + {} + ] + ], + "none-manual.html": [ + "ded346faa6d68864345740772c9b8a51af9ca4a5", + [ + null, + {} + ] + ], + "option_selected_false-manual.html": [ + "02b1ec8293db444645369ee34bf2f093a0dfdbf5", + [ + null, + {} + ] + ], + "option_selected_true-manual.html": [ + "8bb7dd7ef54bb402d098f918bdff28b8f0798f35", + [ + null, + {} + ] + ], + "option_selected_undefined-manual.html": [ + "5930de9a48250300d2c122eea10f93dde265a2b2", + [ + null, + {} + ] + ], + "option_selected_value_changes-manual.html": [ + "2c02a8707d3e128ae74c4b1757397b75ee559d99", + [ + null, + {} + ] + ], + "radiogroup_orientation_horizontal-manual.html": [ + "4943335cf26448995fac6ec2a85b3b928dc3013a", + [ + null, + {} + ] + ], + "radiogroup_orientation_unspecified-manual.html": [ + "40ceab71ca8e10ff54095dac86ec7c90eff775d2", + [ + null, + {} + ] + ], + "radiogroup_orientation_vertical-manual.html": [ + "def4543652a0b1ec6ae83ca221347b6bdeb2bbb3", + [ + null, + {} + ] + ], + "radiogroup_readonly_false-manual.html": [ + "102f51757baf7456dfbc72fb555564d44b03327d", + [ + null, + {} + ] + ], + "radiogroup_readonly_true-manual.html": [ + "0c97e24a8bf0a76d24bcac20f92afcaec8e2ccd4", + [ + null, + {} + ] + ], + "radiogroup_readonly_unspecified-manual.html": [ + "6e8c641ac7b595cd5fc2ace06b168575a51d8c58", + [ + null, + {} + ] + ], + "region_with_name-manual.html": [ + "ba868a77b2e481787208ded2e07e12c16273c508", + [ + null, + {} + ] + ], + "region_without_name-manual.html": [ + "84ea6658e70505466602c856635dbdabb75b4c84", + [ + null, + {} + ] + ], + "row_colindex_4-manual.html": [ + "82ee257d9e51f1dd81ffe3a94a029936e1fcb16f", + [ + null, + {} + ] + ], + "row_rowindex_4-manual.html": [ + "1333219e0486c685ab1a29f91801556e8c58bcd9", + [ + null, + {} + ] + ], + "rowheader_aria-colspan_2_on_div-manual.html": [ + "3d8288895974c786dc21e7e3188da1672ca16dc1", + [ + null, + {} + ] + ], + "rowheader_aria-rowspan_2_on_div-manual.html": [ + "4ddf4f5c9acfbe6b4a46f8e2d74f7e46809e343e", + [ + null, + {} + ] + ], + "rowheader_colindex_4-manual.html": [ + "8b1eb477e47e07371b3fb2f0924ca8a74e746205", + [ + null, + {} + ] + ], + "rowheader_rowindex_4-manual.html": [ + "716403cfeb6101c9bec4839bb8812a7f07e133de", + [ + null, + {} + ] + ], + "rowheader_selected_false_not_automatically_propagated-manual.html": [ + "7cd9a559900769094c42c4986aebb5fb5da0807a", + [ + null, + {} + ] + ], + "rowheader_selected_true_not_automatically_propagated-manual.html": [ + "51b2b68fee31b0241eaa12bdaa12f4fb9fd75596", + [ + null, + {} + ] + ], + "scrollbar_all_values_unspecified-manual.html": [ + "910fe2b11812a8e6ec08ba67fc23a5ffc1acb9a3", + [ + null, + {} + ] + ], + "scrollbar_only_valuenow_unspecified-manual.html": [ + "73e315817635fe552fe7abdcd83b2c926b41a134", + [ + null, + {} + ] + ], + "scrollbar_orientation_unspecified-manual.html": [ + "32791ae1d8df74fd3045cd22a194e032aa8866cd", + [ + null, + {} + ] + ], + "searchbox-manual.html": [ + "979bd0fad45a6ddab51e9c284f72e864393f698c", + [ + null, + {} + ] + ], + "searchbox_activedescendant-manual.html": [ + "a72cf9326364bc44b4cb96f29a94b174016cb04b", + [ + null, + {} + ] + ], + "searchbox_activedescendant_value_changes-manual.html": [ + "956f931ae863ad643821c91783952502e6247a40", + [ + null, + {} + ] + ], + "searchbox_autocomplete_both-manual.html": [ + "ea8b69867946322bda7261e3b9bc8571516b8ddb", + [ + null, + {} + ] + ], + "searchbox_autocomplete_inline-manual.html": [ + "77e707666c563c42d781139244476c317bb76998", + [ + null, + {} + ] + ], + "searchbox_autocomplete_list-manual.html": [ + "0ce8068ea94cf9f34b442837d1da4cd9a2091d2f", + [ + null, + {} + ] + ], + "searchbox_autocomplete_none-manual.html": [ + "341d75c5320116135551df3f8d7b4e750b215a30", + [ + null, + {} + ] + ], + "searchbox_autocomplete_unspecified-manual.html": [ + "59becae655e94f39d9773df4a4eba1086e058929", + [ + null, + {} + ] + ], + "searchbox_multiline_false-manual.html": [ + "8f49eb61e93a4b3de4a0d19ed9f970fc7e75ba77", + [ + null, + {} + ] + ], + "searchbox_multiline_true-manual.html": [ + "47e6c3aaa97011ed2053d0ffa08b4c4ea6bcbda3", + [ + null, + {} + ] + ], + "searchbox_multiline_unspecified-manual.html": [ + "5c1d7f5185aa67b3fdc589b03d0c43401aff5f54", + [ + null, + {} + ] + ], + "searchbox_placeholder-manual.html": [ + "da513456d2de45ee7fd1d371ffb443674201f7d9", + [ + null, + {} + ] + ], + "searchbox_readonly_false-manual.html": [ + "574666a0177b890e1b27e6d60aa2c251e05ffa91", + [ + null, + {} + ] + ], + "searchbox_readonly_true-manual.html": [ + "833f1bc4288c1dba08b0e72573fa691696fdd5b1", + [ + null, + {} + ] + ], + "searchbox_readonly_unspecified-manual.html": [ + "51b9893595d4d0dc14b7c71cbf7c35d7231b226a", + [ + null, + {} + ] + ], + "searchbox_required_false-manual.html": [ + "1bfc8953564d28e199b52abc903aea537f2ce541", + [ + null, + {} + ] + ], + "searchbox_required_true-manual.html": [ + "7e26e5ab03ab4bc45d855b34ebc87ac99b0c7734", + [ + null, + {} + ] + ], + "searchbox_required_unspecified-manual.html": [ + "13489ad13a0ca80b9cda0eb911013ad561ed30fd", + [ + null, + {} + ] + ], + "separator_focusable_all_values_unspecified-manual.html": [ + "fb8e852bb17c196d33cac5475145bdd092fb3e0e", + [ + null, + {} + ] + ], + "separator_focusable_only_valuenow_unspecified-manual.html": [ + "680c2a3605a10fca3bef753b2e6dd08d32c80052", + [ + null, + {} + ] + ], + "separator_focusable_valuetext-manual.html": [ + "5992f15aeb0077ace637e577d1615ee006ce6354", + [ + null, + {} + ] + ], + "separator_orientation_unspecified-manual.html": [ + "3a3901b4244040b42fb2f6b3f63af949bbadc87f", + [ + null, + {} + ] + ], + "separator_unfocusable_all_values_unspecified-manual.html": [ + "171370f422bcbbc357e2b68c405cdac64786c4c3", + [ + null, + {} + ] + ], + "separator_unfocusable_valuetext-manual.html": [ + "db8ee6322dd1356eca5e546c8cc1c20cdfe9849a", + [ + null, + {} + ] + ], + "slider_all_values_unspecified-manual.html": [ + "0dea62e620f7a3a1d8ce21db5a31e4136557e3f1", + [ + null, + {} + ] + ], + "slider_only_valuenow_unspecified-manual.html": [ + "ffcbc783734e3708b33ebe5884d65b2f92cdee62", + [ + null, + {} + ] + ], + "slider_orientation_unspecified-manual.html": [ + "295b0a61960b92c5691c14b66e46ecaad485b8b7", + [ + null, + {} + ] + ], + "slider_readonly_false-manual.html": [ + "f5a70984d51d74c649ca3b1a308c9942efe30a6f", + [ + null, + {} + ] + ], + "slider_readonly_true-manual.html": [ + "2588079d784cfd659df39504032d2494dc481995", + [ + null, + {} + ] + ], + "slider_readonly_unspecified-manual.html": [ + "271325a47d39f3b2d2cb95a0a6b8c49a741d2aea", + [ + null, + {} + ] + ], + "spinbutton_all_values_unspecified-manual.html": [ + "8da69af36d6e8e7ac6028de683ba576d7262ec5d", + [ + null, + {} + ] + ], + "spinbutton_only_aria-valuenow_unspecified-manual.html": [ + "bbb94702fe333831ae34a10cf15aaa796efaf0b5", + [ + null, + {} + ] + ], + "spinbutton_readonly_false-manual.html": [ + "5e9429ca28a46413e56896794a4341813c75e2d4", + [ + null, + {} + ] + ], + "spinbutton_readonly_true-manual.html": [ + "a7a3abe632797531f82b09ca861e87d70f5d259a", + [ + null, + {} + ] + ], + "spinbutton_readonly_unspecified-manual.html": [ + "0976b0737c7acd5e34cd9aa719d2a9141de8f4e1", + [ + null, + {} + ] + ], + "switch_checked_false-manual.html": [ + "ac61802bdfb39a197e14e607c25cc48d895d1f35", + [ + null, + {} + ] + ], + "switch_checked_mixed-manual.html": [ + "a674c7d7bcf6dcbe4134e2fbff97d35395c19832", + [ + null, + {} + ] + ], + "switch_checked_true-manual.html": [ + "e23e7235616334f41fa0c29780e5b42051125659", + [ + null, + {} + ] + ], + "switch_checked_undefined-manual.html": [ + "4f5399e88ceb23d91a4c00d1bd1f4ac562725d18", + [ + null, + {} + ] + ], + "switch_checked_value_changes-manual.html": [ + "b58e52fefb039216c64c48a9701bd9c50f86b4c6", + [ + null, + {} + ] + ], + "switch_readonly_false-manual.html": [ + "e68b6bb0d27aef4cbfad98217151a544fa5231ba", + [ + null, + {} + ] + ], + "switch_readonly_true-manual.html": [ + "605d2d0d9afdf867c1a23c1759b9e10c05fde336", + [ + null, + {} + ] + ], + "switch_readonly_unspecified-manual.html": [ + "0fd582c0e9bace1a25474c05f55d9e8492100335", + [ + null, + {} + ] + ], + "tab_posinset_and_setsize-manual.html": [ + "f27f485ac97bf2423a72507925016f2a2cc227e2", + [ + null, + {} + ] + ], + "table_colcount_-1-manual.html": [ + "2135f6ed8d0d760ddace412faf1e490902fbf8ed", + [ + null, + {} + ] + ], + "table_colcount_8-manual.html": [ + "1b8e0affdd5dd5ff2728fc32fabca877d8a117fc", + [ + null, + {} + ] + ], + "table_rowcount_-1-manual.html": [ + "5e7b5b8bf49aa121b50e6ddacfd768026e025115", + [ + null, + {} + ] + ], + "table_rowcount_3-manual.html": [ + "5bfad69b240d6c6fd57f5a8dc554069771a9f9d4", + [ + null, + {} + ] + ], + "tablist_orientation_horizontal-manual.html": [ + "104668cbb95e044d2055f7a35f69da6adfa93b04", + [ + null, + {} + ] + ], + "tablist_orientation_unspecified-manual.html": [ + "001c2ee77b31778169f377e2be4013912e164910", + [ + null, + {} + ] + ], + "tablist_orientation_vertical-manual.html": [ + "f6fe16e8955cd5914167a943675db0bd7e399ea9", + [ + null, + {} + ] + ], + "term_role-manual.html": [ + "ac5030df950334c912f57821c9ae978c47d49efd", + [ + null, + {} + ] + ], + "textbox_placeholder-manual.html": [ + "fdf0635be67baf7d71e22a43d59cfa551b17d018", + [ + null, + {} + ] + ], + "toolbar_orientation_horizontal-manual.html": [ + "1b8fda8dd60bbab169349ce227574a9737cfbf14", + [ + null, + {} + ] + ], + "toolbar_orientation_unspecified-manual.html": [ + "4607511874bd8b16b47789b20c7a727ffc8ffd88", + [ + null, + {} + ] + ], + "toolbar_orientation_vertical-manual.html": [ + "792952d323d178819a83f237c1f25b8d02274712", + [ + null, + {} + ] + ], + "tree_orientation_horizontal-manual.html": [ + "15813f5f039a7c93581c0132e2913580dac72ea8", + [ + null, + {} + ] + ], + "tree_orientation_unspecified-manual.html": [ + "dfc1bdcc587e104444691895a2840388f1e242f7", + [ + null, + {} + ] + ], + "tree_orientation_vertical-manual.html": [ + "b9afa33ff44cd4e4c3a4646b2398e10e55069bcc", + [ + null, + {} + ] + ], + "treegrid_colcount_8-manual.html": [ + "a3e9ea14963ca5da01235724200d3df4a7f79ad1", + [ + null, + {} + ] + ], + "treegrid_orientation_horizontal-manual.html": [ + "756153abf3bc68e62e68840393645b823f320741", + [ + null, + {} + ] + ], + "treegrid_orientation_unspecified-manual.html": [ + "d536e9afbed7c6d83185c4416cbe424a4bf27941", + [ + null, + {} + ] + ], + "treegrid_orientation_vertical-manual.html": [ + "62a19d09046691bbcccd81922d29efbe5b92c4bd", + [ + null, + {} + ] + ], + "treegrid_rowcount_3-manual.html": [ + "9d9b8acf44700de3166430c34e3b751ce6d8f177", + [ + null, + {} + ] + ], + "treeitem_selected_false-manual.html": [ + "684fda69b6d157bef02d1ef60a9ce9cc602d0f82", + [ + null, + {} + ] + ], + "treeitem_selected_true-manual.html": [ + "b951c54dec674ac8d7e9a537cf8a064f6b4d0d97", + [ + null, + {} + ] + ], + "treeitem_selected_undefined-manual.html": [ + "dddfd3826f094c6557f939734819ea437497aaa0", + [ + null, + {} + ] + ], + "treeitem_selected_value_changes-manual.html": [ + "69734c82ddaa1455b7473c84b27fac49c8cf1c82", + [ + null, + {} + ] ] - ] + } }, "web-nfc": { "NDEFReader-make-read-only-document-hidden-manual.https.html": [ @@ -28602,149 +28662,6 @@ {} ] ], - "fixedpos-001-print.html": [ - "04feb96e8474bb638254bc0babc22fa378178f48", - [ - null, - [ - [ - "/css/css-break/fixedpos-001-print-ref.html", - "==" - ] - ], - {} - ] - ], - "fixedpos-002-print.html": [ - "c23c6be7d2a3bd2416b7c2765cd7654869918d54", - [ - null, - [ - [ - "/css/css-break/fixedpos-002-print-ref.html", - "==" - ] - ], - {} - ] - ], - "fixedpos-003-print.html": [ - "1b06257175fe3bc93a9205bbaa4c6ee38a778e9f", - [ - null, - [ - [ - "/css/css-break/fixedpos-003-print-ref.html", - "==" - ] - ], - {} - ] - ], - "fixedpos-004-print.html": [ - "c138e9cd6aa591657f65cd80859a8e9e4f33e132", - [ - null, - [ - [ - "/css/css-break/fixedpos-004-print-ref.html", - "==" - ] - ], - {} - ] - ], - "fixedpos-005-print.html": [ - "0a2edc71788aaa76305f1d17951e5499418709bd", - [ - null, - [ - [ - "/css/css-break/fixedpos-005-print-ref.html", - "==" - ] - ], - {} - ] - ], - "fixedpos-006-print.html": [ - "2386c166c81363a904c3e11dfac7dec4e0241029", - [ - null, - [ - [ - "/css/css-break/fixedpos-006-print-ref.html", - "==" - ] - ], - {} - ] - ], - "fixedpos-007-print.html": [ - "8dcb700b96d89c508f9e6696292c79a382a472a2", - [ - null, - [ - [ - "/css/css-break/fixedpos-007-print-ref.html", - "==" - ] - ], - {} - ] - ], - "fixedpos-008-print.html": [ - "02b5d63cc7cd500e8dafa2d7a7e966d2dc90c521", - [ - null, - [ - [ - "/css/css-break/fixedpos-008-print-ref.html", - "==" - ] - ], - {} - ] - ], - "fixedpos-with-abspos-with-link-print.html": [ - "057ddc91460264bbef9bb36fa7be8d89f6d6458e", - [ - null, - [ - [ - "/css/css-break/fixedpos-with-abspos-with-link-print-ref.html", - "==" - ] - ], - {} - ] - ], - "fixedpos-with-iframe-print.html": [ - "5102d045c4202e4bc22c6c876fd3bbbcf620c4b0", - [ - null, - [ - [ - "/css/css-break/fixedpos-with-iframe-print-ref.html", - "==" - ] - ], - {} - ] - ], - "fixedpos-with-link-with-inline-child-print.html": [ - "694e5376cbfab7ee52c1f27b9bf0fd23a2a91375", - [ - null, - [ - [ - "/css/css-break/fixedpos-with-link-with-inline-child-print-ref.html", - "==" - ] - ], - {} - ] - ], "flexbox": { "multi-line-row-flex-fragmentation-063-print.html": [ "1225792abac5a223be7c98cb298e979c1ceda3d7", @@ -28864,19 +28781,6 @@ {} ] ], - "page-name-001-print.html": [ - "56281bb4ed5f8b3e34401420b10504ed6c0e00fd", - [ - null, - [ - [ - "/css/css-break/page-name-001-print-ref.html", - "==" - ] - ], - {} - ] - ], "table": { "repeated-section": { "fixedpos-in-footer-forced-break-print.html": [ @@ -29184,6 +29088,149 @@ {} ] ], + "fixedpos-001-print.html": [ + "04feb96e8474bb638254bc0babc22fa378178f48", + [ + null, + [ + [ + "/css/printing/fixedpos-001-print-ref.html", + "==" + ] + ], + {} + ] + ], + "fixedpos-002-print.html": [ + "c23c6be7d2a3bd2416b7c2765cd7654869918d54", + [ + null, + [ + [ + "/css/printing/fixedpos-002-print-ref.html", + "==" + ] + ], + {} + ] + ], + "fixedpos-003-print.html": [ + "1b06257175fe3bc93a9205bbaa4c6ee38a778e9f", + [ + null, + [ + [ + "/css/printing/fixedpos-003-print-ref.html", + "==" + ] + ], + {} + ] + ], + "fixedpos-004-print.html": [ + "c138e9cd6aa591657f65cd80859a8e9e4f33e132", + [ + null, + [ + [ + "/css/printing/fixedpos-004-print-ref.html", + "==" + ] + ], + {} + ] + ], + "fixedpos-005-print.html": [ + "0a2edc71788aaa76305f1d17951e5499418709bd", + [ + null, + [ + [ + "/css/printing/fixedpos-005-print-ref.html", + "==" + ] + ], + {} + ] + ], + "fixedpos-006-print.html": [ + "2386c166c81363a904c3e11dfac7dec4e0241029", + [ + null, + [ + [ + "/css/printing/fixedpos-006-print-ref.html", + "==" + ] + ], + {} + ] + ], + "fixedpos-007-print.html": [ + "8dcb700b96d89c508f9e6696292c79a382a472a2", + [ + null, + [ + [ + "/css/printing/fixedpos-007-print-ref.html", + "==" + ] + ], + {} + ] + ], + "fixedpos-008-print.html": [ + "02b5d63cc7cd500e8dafa2d7a7e966d2dc90c521", + [ + null, + [ + [ + "/css/printing/fixedpos-008-print-ref.html", + "==" + ] + ], + {} + ] + ], + "fixedpos-with-abspos-with-link-print.html": [ + "057ddc91460264bbef9bb36fa7be8d89f6d6458e", + [ + null, + [ + [ + "/css/printing/fixedpos-with-abspos-with-link-print-ref.html", + "==" + ] + ], + {} + ] + ], + "fixedpos-with-iframe-print.html": [ + "5102d045c4202e4bc22c6c876fd3bbbcf620c4b0", + [ + null, + [ + [ + "/css/printing/fixedpos-with-iframe-print-ref.html", + "==" + ] + ], + {} + ] + ], + "fixedpos-with-link-with-inline-child-print.html": [ + "694e5376cbfab7ee52c1f27b9bf0fd23a2a91375", + [ + null, + [ + [ + "/css/printing/fixedpos-with-link-with-inline-child-print-ref.html", + "==" + ] + ], + {} + ] + ], "fragmented-inline-block-001-print.html": [ "848635431ecfc5ae3835cdc1f8398b1c04c95ed9", [ @@ -29231,6 +29278,19 @@ {} ] ], + "page-name-001-print.html": [ + "56281bb4ed5f8b3e34401420b10504ed6c0e00fd", + [ + null, + [ + [ + "/css/printing/page-name-001-print-ref.html", + "==" + ] + ], + {} + ] + ], "page-overflow-crash-print.html": [ "e295c569d2d634867bab43741baf23c905918fc3", [ @@ -129089,6 +129149,19 @@ {} ] ], + "background-clip-padding-box-with-border-radius.html": [ + "8595caec7bb2d751dd87aebc777be84de6233af7", + [ + null, + [ + [ + "/css/css-backgrounds/reference/background-clip-padding-box-with-border-radius-ref.html", + "==" + ] + ], + {} + ] + ], "background-clip_padding-box.html": [ "354cbba90759471f886961d3b0e1a5202618d577", [ @@ -136330,19 +136403,6 @@ {} ] ], - "simple-bg-color.html": [ - "07bea44d21964b832cd9e4b4f32098ec41a2c206", - [ - null, - [ - [ - "/css/css-backgrounds/simple-bg-color-ref.html", - "==" - ] - ], - {} - ] - ], "subpixel-repeat-no-repeat-mix.html": [ "1828b974877c2dc780388f044126d0499cc5f9fb", [ @@ -138289,6 +138349,19 @@ {} ] ], + "flex-item-content-overflow-003.html": [ + "d3a5b976ccd3fa0dc972b7b61b4a37ba9365e442", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square.xht", + "==" + ] + ], + {} + ] + ], "increase-fragmentainer-size-flex-item-trailing-margin.html": [ "94845449fbf185b2004cc532ecb401eab4e4221d", [ @@ -142359,6 +142432,19 @@ ], {} ] + ], + "grid-item-overflow-001.html": [ + "30d6f3bb21ca1e144c960fffb3cf657dc79cef64", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square.xht", + "==" + ] + ], + {} + ] ] }, "increase-fragmentainer-size-tall-border.html": [ @@ -214744,6 +214830,32 @@ {} ] ], + "first-line-inherited-no-transition.html": [ + "e5253daa63fc7cb074901dd086864e27426cd152", + [ + null, + [ + [ + "/css/css-pseudo/first-line-inherited-no-transition-ref.html", + "==" + ] + ], + {} + ] + ], + "first-line-inherited-with-transition.html": [ + "88b1f34362279e156559e49d6d22f9ca48f5237f", + [ + null, + [ + [ + "/css/css-pseudo/first-line-inherited-with-transition-ref.html", + "==" + ] + ], + {} + ] + ], "first-line-line-height-001.html": [ "f1dd69807ed866374539a4416d0102f043bec5e1", [ @@ -241953,6 +242065,19 @@ {} ] ], + "text-wrap-balance-line-clamp-001.html": [ + "292e655464b750a3c0426fb6c63df8ebdbac5ffe", + [ + null, + [ + [ + "/css/css-text/white-space/reference/text-wrap-balance-line-clamp-001-ref.html", + "==" + ] + ], + {} + ] + ], "textarea-break-spaces-001.html": [ "ad81e99768f9816c6e8a659c13aed81c4f22d940", [ @@ -276528,7 +276653,7 @@ }, "css-view-transitions": { "3d-transform-incoming.html": [ - "e1c172263b7824911d205646f14c93fe97cd78b0", + "b3726d4cd5131f413219d8dcc10ce3e5cce28f61", [ null, [ @@ -276561,7 +276686,7 @@ ] ], "3d-transform-outgoing.html": [ - "1796284c06d0de95538a7b8b923b505fb9218571", + "746b93afd40c1c1e33f8ca3b4a8e0fa2970e635c", [ null, [ @@ -276640,7 +276765,7 @@ ] ], "content-visibility-auto-shared-element.html": [ - "d76eab2fcd67372c3df2558748035929b3a5ed4f", + "11b4957fbcca7d1ceb8b151741eba1b86cb5708e", [ null, [ @@ -276798,7 +276923,7 @@ ] ], "css-tags-paint-order-with-entry.html": [ - "efd1aff5df79b2e8ee6a775bd987876483f3464c", + "703b64f5c68c732d42d5ffeb1bb590f3c8ebf543", [ null, [ @@ -276831,7 +276956,7 @@ ] ], "css-tags-paint-order.html": [ - "28a955bad66c21adfd8f7ec938cb9fc2ff9a62b9", + "c0e8769b473052d3adc8f192d454f5bb59c10647", [ null, [ @@ -276844,7 +276969,7 @@ ] ], "css-tags-shared-element.html": [ - "9046b915b4f03fba81c58e44ad3d61c4236d468a", + "33bbae70fc6b918d12a17c856a3c75c1c0071ff7", [ null, [ @@ -276929,7 +277054,7 @@ ] ], "far-away-capture.html": [ - "7b003cbb76961d9747448949eaf9001cc218b4f3", + "bfe0b9fb9484f5984fbea9460d40818a40ab6ddd", [ null, [ @@ -277017,7 +277142,7 @@ ] ], "hit-test-unrelated-element.html": [ - "dae232b74defa675ca211b3b843a990a3b5ca0c7", + "1b8868280b2a82dbf8d5d4506372c925d642e159", [ null, [ @@ -277143,7 +277268,7 @@ ] ], "japanese-tag.html": [ - "67115a6fae6a8b63db7a7264efe921e056f5c7cb", + "976dcab4fca8f8cf17fbdedbf7af0a162036eb37", [ null, [ @@ -277182,7 +277307,7 @@ ] ], "new-and-old-sizes-match.html": [ - "1549a402af0cfb1fb18e8e8e7d76a71035577ad9", + "78efa9d82fa7591f62d855b2fe8ab80c4140f0fe", [ null, [ @@ -277215,7 +277340,7 @@ ] ], "new-content-captures-clip-path.html": [ - "0d4c94e47d61790b77be1805a128ae93cae1ceb8", + "4a2dfc78c2746c02ca7aae34685292fbc76aed47", [ null, [ @@ -277248,7 +277373,7 @@ ] ], "new-content-captures-different-size.html": [ - "a3ecddaf26c6d4be142525da40caaf947827684d", + "a891dec55532d6a740a459772f65acb39136cd9b", [ null, [ @@ -277282,7 +277407,7 @@ ] ], "new-content-captures-opacity.html": [ - "7f23f9110a915dff94ce768a6e69c73ceb6df5d4", + "ab4efd1f42478c2fb1c78b224a564623b3197046", [ null, [ @@ -277295,7 +277420,7 @@ ] ], "new-content-captures-positioned-spans.html": [ - "39bbfbfb123f70f3282a8ce09a69fb4892e87dc8", + "b88654cd379c92316e6eee6ed6e27ba0c80038fb", [ null, [ @@ -277321,7 +277446,7 @@ ] ], "new-content-captures-spans.html": [ - "661d7c8a01ad9f0c655ba48db7a893ead5da1b4c", + "843f6752d76740550f8348ed3cd3c9134700aa77", [ null, [ @@ -277334,7 +277459,7 @@ ] ], "new-content-container-writing-modes.html": [ - "7b55a0f012fb772fc26c85ea5568553511a82855", + "e7ac768e17d6104d0f70cab29a891c8b08b03c8c", [ null, [ @@ -277347,7 +277472,7 @@ ] ], "new-content-element-writing-modes.html": [ - "78ce545b74ad5df5c8cdb3b4d44e1b77808e9b81", + "d7740d78f54f52766c58adfcd618d1e260bdba42", [ null, [ @@ -277407,7 +277532,7 @@ ] ], "new-content-intrinsic-aspect-ratio.html": [ - "69e8f82e9f1b2c3e0b9fc710260585863e081b9a", + "53ec94122f06998a01c3b69b47d5c312e15e21d0", [ null, [ @@ -277420,7 +277545,7 @@ ] ], "new-content-is-empty-div.html": [ - "53f3e23b686f90fff4582c05b113e713010b6a21", + "bacc63f1945835678628f59c229540e990e6e30e", [ null, [ @@ -277433,7 +277558,7 @@ ] ], "new-content-is-inline.html": [ - "d971ec4eaa618cd4313a9e9ce4b269a1dad6ee13", + "c341444f3425de43a7bc47f2a718a36337398141", [ null, [ @@ -277466,7 +277591,7 @@ ] ], "new-content-object-fit-fill.html": [ - "2a34348c12a6f0df60672f003d5a77fa36fc9564", + "b891eee16d5e93258f8bf8df0ce80b5bdb9b2d6e", [ null, [ @@ -277499,7 +277624,7 @@ ] ], "new-content-object-fit-none.html": [ - "0ec9d0bc8a4f77ec8e9e08f02b0dffc1f1a279e9", + "d4b81b1a0eeadb38f13b7ae00a4d694d90e43568", [ null, [ @@ -277512,7 +277637,7 @@ ] ], "new-content-object-view-box-clip-path-reference.html": [ - "a8507f5f33e98dcb45c2670c88b918682bb3c23b", + "01a3ed3204fb418947a1d89f237ef918327a394e", [ null, [ @@ -277525,7 +277650,7 @@ ] ], "new-content-object-view-box-clip-path.html": [ - "d6a3f925cbf55d600aecd087b8b8bd460a1ef3b3", + "dcd5fec70a1c539c65dbd665d13442f0a4725966", [ null, [ @@ -277538,7 +277663,7 @@ ] ], "new-content-object-view-box-overflow-clipped.html": [ - "247a33d15bc7fb14a74f41027a8b93531f24e64e", + "593901529f43b2daa0b02e1e1eb9c9ff0e05d2fd", [ null, [ @@ -277551,7 +277676,7 @@ ] ], "new-content-object-view-box-overflow.html": [ - "d0c129a1abfe6410d3a1481b4afcf85828721602", + "2bbea1e1c4c54d5e5e6281de8f14ccc4bae8aad1", [ null, [ @@ -277564,7 +277689,7 @@ ] ], "new-content-scaling.html": [ - "5ce6d5ba693b4c493d2481b07ba3d34851389570", + "4ea3c2e04a486b74c8c92b2ca473ad9f2a2bfe44", [ null, [ @@ -277597,7 +277722,7 @@ ] ], "new-content-with-overflow-zoomed.html": [ - "fef9b26b2c2611ecd873e2315174791362d1d665", + "59170ebf00349710d34c8f5fd2966352b1d23594", [ null, [ @@ -277610,7 +277735,7 @@ ] ], "new-content-with-overflow.html": [ - "d2c802dbf53f0769963098f7ae9ddd0c3d971aa9", + "e2dc045089b024fce27e8a1ce1facacbab5ef2aa", [ null, [ @@ -277623,7 +277748,7 @@ ] ], "new-element-on-start.html": [ - "f0a8c144a98e92071f4da0435bbe61f16f9f5e6f", + "e3ec5463bfd3797b18831063253324fdc8fd52c7", [ null, [ @@ -277722,7 +277847,7 @@ ] ], "old-content-captures-clip-path.html": [ - "0734edd56fd19f49ac720da21652043174a0cfa5", + "a2faa7f1575af4c6ac3f65b3fb303f6dbab875d3", [ null, [ @@ -277735,7 +277860,7 @@ ] ], "old-content-captures-different-size.html": [ - "547cc4d7ba2eda41c9a3436206c4dbb580c65a04", + "a8d375f06463eef00ea8bf0d509e0137658c2a88", [ null, [ @@ -277769,7 +277894,7 @@ ] ], "old-content-captures-opacity.html": [ - "0b727f7972fa813f5e560a7805434e7693db34e9", + "ee3e3e4cde132895f9e1b4f2a1ca5dcd02710d3d", [ null, [ @@ -277835,7 +277960,7 @@ ] ], "old-content-container-writing-modes.html": [ - "383585335d65bf0312625362c65d8bf41fe6e5e7", + "9896c27152746f9598666455d1ffa133026ec1b0", [ null, [ @@ -277848,7 +277973,7 @@ ] ], "old-content-element-writing-modes.html": [ - "b6903d10e61c16e981a0bad5e322d182bdc2cdb2", + "5029c6aaaa362e47033389005ba050993100cfeb", [ null, [ @@ -277895,7 +278020,7 @@ ] ], "old-content-intrinsic-aspect-ratio.html": [ - "d166f438f4dae41757bd3f23e269b9fc3c1b411a", + "b46a77821781f857a5fc4742056b296092b1f113", [ null, [ @@ -277908,7 +278033,7 @@ ] ], "old-content-is-empty-div.html": [ - "54c56994d8cdafc2d8ee7612af16f1938b3f2ec6", + "137060c1ddb7ad88da61593238b1b4178f158966", [ null, [ @@ -277921,7 +278046,7 @@ ] ], "old-content-is-inline.html": [ - "9da15266bae3e2a07cd456814024127d7e94053e", + "9f350237adcb1ea234c98f9374c8e357a14e6e78", [ null, [ @@ -277954,7 +278079,7 @@ ] ], "old-content-object-fit-fill.html": [ - "fb7549cc4088fbc83e79eefbc8d6971f40014512", + "9ad8b14843fbb059229234fb8970f87e5a83ee48", [ null, [ @@ -277987,7 +278112,7 @@ ] ], "old-content-object-fit-none.html": [ - "06472302b9e6369303d6c742577fd8770dc2520c", + "1275aece7cae48d02e6fc403af743337d8d20d94", [ null, [ @@ -278000,7 +278125,7 @@ ] ], "old-content-object-view-box-clip-path-reference.html": [ - "ac566029a0feca1b5b5149ec14139a4785d1f09d", + "14a1ee83d9271555f3d85b5e4a73feeb2cf532b2", [ null, [ @@ -278033,7 +278158,7 @@ ] ], "old-content-object-view-box-clip-path.html": [ - "73100d052814a1f935610cd14952ab27fe527d26", + "dff57c68f6b5f5f6cfa807df9d280d499605fc45", [ null, [ @@ -278066,7 +278191,7 @@ ] ], "old-content-object-view-box-overflow.html": [ - "7a1ef2d0052192f151aa5163f382d3ae1c6b93ea", + "ff9bb4e7d2be4eb7194b3bbe9730210e105fd089", [ null, [ @@ -278079,7 +278204,7 @@ ] ], "old-content-with-overflow-zoomed.html": [ - "887bf7c64823d644603f3e319e046259c4b7e21b", + "10257b761fa639410849e8982e317b38baa0161c", [ null, [ @@ -278092,7 +278217,7 @@ ] ], "old-content-with-overflow.html": [ - "7a40c8e386aea92c3129568c109f23be3c15d007", + "6ed31d375c6f83f90253e7d4b324d81cb56f87f2", [ null, [ @@ -278164,7 +278289,7 @@ ] ], "root-style-change-during-animation.html": [ - "1453e5019d7de6176a7967056e14703e01f292e3", + "d1d291124bd6dfa57b36e24072a1be830940753f", [ null, [ @@ -278374,7 +278499,7 @@ ] ], "set-universal-specificity.html": [ - "1e8b7d0eb868b2aa6e9226d4073130a9c565f62c", + "ec50b1e4078589752dcc9f887a39f877cd443a40", [ null, [ @@ -298266,7 +298391,7 @@ ] ], "nth-child-in-shadow-root.html": [ - "740b68f2003848e9f3447ac48e373091691f29a3", + "443a12d229f793c201248583934fa3c05d7f81af", [ null, [ @@ -298396,7 +298521,7 @@ ] ], "nth-last-child-in-shadow-root.html": [ - "766bac0fa385ae97d1c57633a7376b2ca5c066b1", + "890abfe99720b056f068a52e76e7b1580189ffb2", [ null, [ @@ -322102,8 +322227,16 @@ "201dff83ce9cacbd3f61f6a0b16eeb3105fa9ab2", [] ], + "aes_gcm_256_iv_fixtures.js": [ + "9cdbbbb79075c0a90d4a55caf18157fe485a5609", + [] + ], + "aes_gcm_96_iv_fixtures.js": [ + "bb00e2d7dd92cbd780d48273e065e95d5c38e181", + [] + ], "aes_gcm_vectors.js": [ - "bc406f8f0ef78e0759f1dd5b4a48892ce43fcde4", + "965fe9564d461925df00ffc465f161e03436f817", [] ], "rsa.js": [ @@ -322137,7 +322270,7 @@ [] ], "ecdsa_vectors.js": [ - "2d1fb6d5c9e80bbc1b4ece377a4743f7ed371bb7", + "aa9b81ba8a4bd11a5a27adab005aaf5727be18d1", [] ], "eddsa.js": [ @@ -325056,7 +325189,7 @@ "critical-ch": { "resources": { "echo-critical-hint.py": [ - "e4e77ad2a9a3bc9af2b76b6471f275db936bce4d", + "0913dbb19db57c3cacada72547dbe55d2a8e1688", [] ], "util.js": [ @@ -325174,6 +325307,22 @@ "83a6a05e547f39947f21da53de7a3bbc137101d1", [] ], + "accept-ch-mixed.html": [ + "bf604dffeefe14c07ea327ed4887ef9a69d94d9b", + [] + ], + "accept-ch-mixed.html.headers": [ + "39d4e1935da486146c515d132434eff241622c61", + [] + ], + "accept-ch-split.html": [ + "5038b9401398c5f8cd2d0ac247ea447551439c9d", + [] + ], + "accept-ch-split.html.headers": [ + "261e1e8ee6d204afdce3cf5013c51b70a0887163", + [] + ], "accept-ch.html": [ "1f1da26cebe45d3e55fe4aea8af6cefcae94adb5", [] @@ -366475,6 +366624,10 @@ "dc6d9a00d53495e17f21adc8915176dd8c681e1e", [] ], + "background-clip-padding-box-with-border-radius-ref.html": [ + "545b80d35163b43e136d21f7584082b3b9401b38", + [] + ], "background-color-clip.html": [ "18e80a92586f241dbbe9d2a73991d78c98141071", [] @@ -366874,10 +367027,6 @@ [] ] }, - "simple-bg-color-ref.html": [ - "d8003b58e3ac1c5e917500a59b60c0d2e56287a3", - [] - ], "support": { "100x100-blue-and-orange.png": [ "70437d7bda2b56a921b523d4a81ca4df7be4321d", @@ -367506,50 +367655,6 @@ "5c96f31a6ba193f6d86c7a66267581edd65260d2", [] ], - "fixedpos-001-print-ref.html": [ - "3d66305db0e7497f76dd6aa5a42217eb0931a87a", - [] - ], - "fixedpos-002-print-ref.html": [ - "3d66305db0e7497f76dd6aa5a42217eb0931a87a", - [] - ], - "fixedpos-003-print-ref.html": [ - "3d66305db0e7497f76dd6aa5a42217eb0931a87a", - [] - ], - "fixedpos-004-print-ref.html": [ - "3e3473bcb8e41ce1c4ac6aaf0006b25622b24bc3", - [] - ], - "fixedpos-005-print-ref.html": [ - "e692ff8db3764e05601348acfc2d4ce8314f41b5", - [] - ], - "fixedpos-006-print-ref.html": [ - "b03e1d78d003f33d1ad7810bcacf9cf407b95acb", - [] - ], - "fixedpos-007-print-ref.html": [ - "f576c9377153c3e48ce58d8fcd5428da0d705b23", - [] - ], - "fixedpos-008-print-ref.html": [ - "6ed2528115ae3a5634df6a2968a71fcd81424471", - [] - ], - "fixedpos-with-abspos-with-link-print-ref.html": [ - "000c05350b54885c47ea74a7336e02ed857d55ea", - [] - ], - "fixedpos-with-iframe-print-ref.html": [ - "5c1714045083dfc22272b0522273e7a7235cde6f", - [] - ], - "fixedpos-with-link-with-inline-child-print-ref.html": [ - "f12d31acd9d077a24a4ba47bcdbb5b2a3029faf3", - [] - ], "flexbox": { "flex-fragmented-with-float-descendant-001-ref.html": [ "ead53ad704a08d06a2e88ed5e43b9bcaf55aa584", @@ -367676,10 +367781,6 @@ "cf345b59638f28ddf423ed343a269178ab47f1b9", [] ], - "page-name-001-print-ref.html": [ - "69c5c37b5a3cc4ed47fab1f8105e5f2351e2d07b", - [] - ], "reference": { "widows-001-ref.html": [ "4f822f8fd67aed18355177a5e9de18d8a63f895e", @@ -387154,6 +387255,14 @@ "99e9c334bf2c856535c7643911a3050390658a6f", [] ], + "first-line-inherited-no-transition-ref.html": [ + "1955beef3006e11c442f8e23f2e6f8b94976c874", + [] + ], + "first-line-inherited-with-transition-ref.html": [ + "b28c17436a67030b1e7edf9fce17475e7c88d8f2", + [] + ], "first-line-line-height-001-ref.html": [ "13e9b20f34d44cbe436b6bbcbdd6e85884ee71ca", [] @@ -393012,6 +393121,10 @@ "43202e4d97f03c1694176f5c6a95b4a48e938a96", [] ], + "text-wrap-balance-line-clamp-001-ref.html": [ + "4e465be7ccf97dfe4e8523f92aa6aec4470acbe2", + [] + ], "textarea-pre-wrap-001-ref.html": [ "31070ea92815e4d3a3ece48ed69da03de02f671e", [] @@ -398117,7 +398230,7 @@ [] ], "new-and-old-sizes-match-ref.html": [ - "ca597dfbb84be1a473c3d31747a97c7273d5d5b1", + "b8c3b34c03a693c9f1e71a040a2176dd8dc5413d", [] ], "new-content-captures-clip-path-ref.html": [ @@ -402292,6 +402405,50 @@ "305aa2fce2f490ef161c803558cc7a17bf7aa117", [] ], + "fixedpos-001-print-ref.html": [ + "3d66305db0e7497f76dd6aa5a42217eb0931a87a", + [] + ], + "fixedpos-002-print-ref.html": [ + "3d66305db0e7497f76dd6aa5a42217eb0931a87a", + [] + ], + "fixedpos-003-print-ref.html": [ + "3d66305db0e7497f76dd6aa5a42217eb0931a87a", + [] + ], + "fixedpos-004-print-ref.html": [ + "3e3473bcb8e41ce1c4ac6aaf0006b25622b24bc3", + [] + ], + "fixedpos-005-print-ref.html": [ + "e692ff8db3764e05601348acfc2d4ce8314f41b5", + [] + ], + "fixedpos-006-print-ref.html": [ + "b03e1d78d003f33d1ad7810bcacf9cf407b95acb", + [] + ], + "fixedpos-007-print-ref.html": [ + "f576c9377153c3e48ce58d8fcd5428da0d705b23", + [] + ], + "fixedpos-008-print-ref.html": [ + "6ed2528115ae3a5634df6a2968a71fcd81424471", + [] + ], + "fixedpos-with-abspos-with-link-print-ref.html": [ + "000c05350b54885c47ea74a7336e02ed857d55ea", + [] + ], + "fixedpos-with-iframe-print-ref.html": [ + "5c1714045083dfc22272b0522273e7a7235cde6f", + [] + ], + "fixedpos-with-link-with-inline-child-print-ref.html": [ + "f12d31acd9d077a24a4ba47bcdbb5b2a3029faf3", + [] + ], "fragmented-inline-block-002-print-ref.html": [ "dcfa3a1385628a90cb2d1be17e8bf6da09cde20e", [] @@ -402300,6 +402457,10 @@ "fb5255eddb1cdbdc1b9b610a7813b977d822b7b9", [] ], + "page-name-001-print-ref.html": [ + "69c5c37b5a3cc4ed47fab1f8105e5f2351e2d07b", + [] + ], "paused-animations-print-ref.html": [ "c22ecd174585100fd5faae8402f5a6e141b8264e", [] @@ -403761,7 +403922,7 @@ [] ], "making-a-testing-plan.md": [ - "eb96f31202e21fa2509781fead227931075c5e97", + "a4007039ae4aa47ee2f06df784b34b48e8678214", [] ], "manual.md": [ @@ -407417,6 +407578,86 @@ ] } }, + "local-network-access": { + "META.yml": [ + "944ce6f14a1204f048e00db3b7ea21da93037709", + [] + ], + "README.md": [ + "8995e3d7ef6ba5b7286c334842bd0b77426882a1", + [] + ], + "resources": { + "executor.html": [ + "d71212951cb63ebd310820d1df7c8789b5fbd316", + [] + ], + "fetcher.html": [ + "000a5cc25bb72b334d41ff05e7b8f22691f48f30", + [] + ], + "fetcher.js": [ + "3a1859876d406cebe9a2bbc63952d019ddc5ed06", + [] + ], + "iframed.html": [ + "c889c2882a45030fb1257db6be812a722475c9f3", + [] + ], + "iframer.html": [ + "304cc54ae4448b84bf43aad3279b2dd198add165", + [] + ], + "preflight.py": [ + "4b0bfefd4d6356fad7bf0460a67da4b13fb4930e", + [] + ], + "service-worker-bridge.html": [ + "816de535feaa83c224e76159d3defa571b1199fe", + [] + ], + "service-worker.js": [ + "bca71ad910cb189c2de6298b4ea59b5594aba637", + [] + ], + "shared-fetcher.js": [ + "30bde1e0542d144f9b5b0e47824802df13556ee2", + [] + ], + "shared-worker-blob-fetcher.html": [ + "a79869b2f96249969d44e5f18341fa1cbd094f4d", + [] + ], + "shared-worker-fetcher.html": [ + "4af4b1f23959e00c50d48a926f24d97edb8edb90", + [] + ], + "socket-opener.html": [ + "48d27216bedf9aa1daf4d2a4e96f860e9315a0c3", + [] + ], + "support.sub.js": [ + "c07fd2c2acee68967c57826fd093abb013b05761", + [] + ], + "worker-blob-fetcher.html": [ + "5a50271e11b57d808b01a5849b1bee7d3dbeba28", + [] + ], + "worker-fetcher.html": [ + "bd155a532bd2d9dd2b5f96383cb8bde27a289856", + [] + ], + "worker-fetcher.js": [ + "aab49afe6f47c752884d407cfa48ef38e3b4a847", + [] + ], + "xhr-sender.html": [ + "b131fa41f9a8bf14c5c0a1aac8fcc2593bec6c42", + [] + ] + } + }, "metadata": { "META.yml": [ "85f0a7d2ee12616aa7a5698b346954829d8a8bb0", @@ -407775,86 +408016,6 @@ ] } }, - "private-network-access": { - "META.yml": [ - "944ce6f14a1204f048e00db3b7ea21da93037709", - [] - ], - "README.md": [ - "a69aab487239021088f944b0a8cee2dad4b3d111", - [] - ], - "resources": { - "executor.html": [ - "d71212951cb63ebd310820d1df7c8789b5fbd316", - [] - ], - "fetcher.html": [ - "000a5cc25bb72b334d41ff05e7b8f22691f48f30", - [] - ], - "fetcher.js": [ - "3a1859876d406cebe9a2bbc63952d019ddc5ed06", - [] - ], - "iframed.html": [ - "c889c2882a45030fb1257db6be812a722475c9f3", - [] - ], - "iframer.html": [ - "304cc54ae4448b84bf43aad3279b2dd198add165", - [] - ], - "preflight.py": [ - "4b0bfefd4d6356fad7bf0460a67da4b13fb4930e", - [] - ], - "service-worker-bridge.html": [ - "816de535feaa83c224e76159d3defa571b1199fe", - [] - ], - "service-worker.js": [ - "bca71ad910cb189c2de6298b4ea59b5594aba637", - [] - ], - "shared-fetcher.js": [ - "30bde1e0542d144f9b5b0e47824802df13556ee2", - [] - ], - "shared-worker-blob-fetcher.html": [ - "a79869b2f96249969d44e5f18341fa1cbd094f4d", - [] - ], - "shared-worker-fetcher.html": [ - "4af4b1f23959e00c50d48a926f24d97edb8edb90", - [] - ], - "socket-opener.html": [ - "48d27216bedf9aa1daf4d2a4e96f860e9315a0c3", - [] - ], - "support.sub.js": [ - "210184ec4b654e6529adb70d47d058945e5bc298", - [] - ], - "worker-blob-fetcher.html": [ - "5a50271e11b57d808b01a5849b1bee7d3dbeba28", - [] - ], - "worker-fetcher.html": [ - "bd155a532bd2d9dd2b5f96383cb8bde27a289856", - [] - ], - "worker-fetcher.js": [ - "aab49afe6f47c752884d407cfa48ef38e3b4a847", - [] - ], - "xhr-sender.html": [ - "b131fa41f9a8bf14c5c0a1aac8fcc2593bec6c42", - [] - ] - } - }, "range": { "resources": { "basic.html": [ @@ -413182,10 +413343,6 @@ "the-canvas-state.yaml": [ "045208615436efec1596a2f14cb62f02fa8e470a", [] - ], - "transformations.yaml": [ - "876c48f849cb1e111a0a1ead7a17945f443723eb", - [] ] }, "offscreen": { @@ -413216,10 +413373,6 @@ "the-offscreen-canvas.yaml": [ "0bef18bf9d56acccb5a747a791bc038c61857f48", [] - ], - "transformations.yaml": [ - "efc00222bfc70ae08b1d03e2628ea87c76f15f48", - [] ] } }, @@ -413268,6 +413421,10 @@ "dd088aa396f47e70a6e66b0b9c7d8ffca0fa0e1e", [] ], + "transformations.yaml": [ + "0d2265be7aa0c94ccbddc41f4051dbf082bfc186", + [] + ], "video.yaml": [ "f9b48fb8daa2a247e9e22a18b5e891be3351bda9", [] @@ -421183,7 +421340,7 @@ [] ], "popover-utils.js": [ - "9c6ba77549bd76f6bc4f05794547574d95d36224", + "7eb9e6327a285bbb880ae53c5e92c60b746cc7c0", [] ] } @@ -424651,6 +424808,10 @@ "2ff648a04905f9090df637f2140c1c092cc3a247", [] ], + "cicp.png": [ + "8fa0ce2123c4f876a71b1ca80e04931614f3b87f", + [] + ], "clear-100x50.png": [ "eeedd0ff05889ffd4468bf19a2e8e9e0a094201c", [] @@ -424801,6 +424962,10 @@ "55f8e69325bc61ff83f769a6524f7f9c3310be1f", [] ], + "trns.png": [ + "4e309a89a8a27a9f7afb6eee6a4a604a3ef7c249", + [] + ], "undecodable.png": [ "f2581017b43d44664e7137a78c0803554b50f3b1", [] @@ -427025,7 +427190,7 @@ ] }, "lint.ignore": [ - "3b6106fbfc3f8dff9e2f6fb2d6caf05753bdc8bb", + "743986b66eed4d84d10a52b2c47c43ffbf95e53f", [] ], "loading": { @@ -427275,8 +427440,12 @@ ], "tentative": { "resources": { + "busy.js": [ + "9d761b6de5ee65c9067a4c576c90eb9e7dd6ef05", + [] + ], "utils.js": [ - "47c138b1e62ebfbe9287e903e4e7be438674dc34", + "3a121a5a9b571238a548b2f246e3ae1327c4d5a5", [] ] } @@ -427305,7 +427474,7 @@ [] ], "utils.js": [ - "36bd6c7bc28a762343202d1fc44ace6ddbf03467", + "7bb37bab32c181f3138b2ea9ea7ff84f306be3d4", [] ] }, @@ -430566,6 +430735,12 @@ ] } }, + "png": { + "META.yml": [ + "da174ac614d820479e25a9ae86217b128f2c63fa", + [] + ] + }, "pointerevents": { "META.yml": [ "1962feaf8af08b003e519fa525271e70451984d5", @@ -436037,6 +436212,10 @@ "b432854db8bc7f8292c43434d8c24a3ffe97dec0", [] ], + "import-scripts-data-url-worker.js": [ + "fdabdafc63041ea816760afb6e04ee4f6b78c54d", + [] + ], "import-scripts-diff-resource-map-worker.js": [ "0fdcb0fcf80ad7f0dffa284c5b77178bdad95ef6", [] @@ -437936,7 +438115,7 @@ [] ], "helpers.js": [ - "ddc638434aefb0217a4b4c2149d29d91d194a634", + "f718f637cd964b4b2d3fc68879fa9d4a2035480d", [] ], "resources": { @@ -446294,7 +446473,7 @@ }, "tooltool": { "tooltool.py": [ - "53929fce880285629ebf6f243d7bea86036b16d0", + "5abc98a09d8081f025d7269c1e7a1f338eb70d16", [] ] }, @@ -447657,7 +447836,7 @@ [] ], "error.py": [ - "1b65d225fae303108d3a1f0462775563172cf04e", + "81910a63eb2bf3d062cc8a6985002826bb25fa59", [] ], "modules": { @@ -447670,7 +447849,7 @@ [] ], "browsing_context.py": [ - "033929d5ff5f0cfcce215c60cb680ca7713e603d", + "abaf569f92891bb49c3bda0aee53e892d8c6ce2e", [] ], "script.py": [ @@ -447688,7 +447867,7 @@ ] }, "client.py": [ - "ba01e1fe8668de8e889cb237e1c6615c5fdffdb9", + "851c6722fc27c199956e90f4d08a4d2b10ed7976", [] ], "error.py": [ @@ -448308,7 +448487,7 @@ [] ], "testloader.py": [ - "93e2a87826c59926a649bcfb16949aa5c6c93342", + "78e05264d4d40c04c558ab8a0f5031f52ff0bd38", [] ], "testrunner.py": [ @@ -448367,7 +448546,7 @@ [] ], "test_testloader.py": [ - "0936c54ea975335a60176e168f9d98c8d588e337", + "8c8d02a22b90f1acddb9e12859aa33d52eefdb43", [] ], "test_update.py": [ @@ -448484,7 +448663,7 @@ } }, "wptrunner.py": [ - "224a4fde4df64c480232f6d3af0a651da5d0375c", + "740bb7e9f425024d8e930c5581e88940de3a99b0", [] ], "wpttest.py": [ @@ -448885,6 +449064,10 @@ "c9907203322112ffb01a50b09541e891250c4f5e", [] ], + "requestStorageAccess-integration-iframe.https.html": [ + "f4db5cf65ec6814036d40ab165b9705725df39fa", + [] + ], "requestStorageAccessForOrigin-iframe.html": [ "43d16705c8515b48685420c8d14925af90afb62a", [] @@ -449763,10 +449946,12 @@ "864132a5a36c6dde2cf9ff9e8675ac9ed765e8fa", [] ], - "README.md": [ - "4e1a7706e33337e798f98d983a89eb44b77a21d5", - [] - ], + "manual": { + "README.md": [ + "4e1a7706e33337e798f98d983a89eb44b77a21d5", + [] + ] + }, "scripts": { "ATTAcomm.js": [ "b748233fc22c43153212e8a495cdce3b48425fd9", @@ -451537,6 +451722,12 @@ [] ] } + }, + "print": { + "__init__.py": [ + "d34fef9869a859b43646bd0b7a63519cff121fba", + [] + ] } }, "conftest.py": [ @@ -451642,6 +451833,12 @@ [] ] }, + "classic_interop": { + "__init__.py": [ + "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391", + [] + ] + }, "conftest.py": [ "09eea7b7d59c45200f95e979e917599e992aa10d", [] @@ -451654,7 +451851,7 @@ }, "evaluate": { "__init__.py": [ - "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391", + "8b137891791fe96927ad78e64b0aad7bded08bdc", [] ] }, @@ -452050,7 +452247,7 @@ }, "print": { "__init__.py": [ - "788c0e1a3179280604a8634d4db43b4a8db6880a", + "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391", [] ] }, @@ -452126,15 +452323,15 @@ [] ], "fixtures.py": [ - "e63c0d01d269d277fb299d6bf1f6cb41bdd5a091", + "7fff07bb407f7f29dabcf805d12936741cbabf6b", [] ], "fixtures_bidi.py": [ - "6273b8f1575819d6beaef35033a2f326b55b2903", + "6f1106373d955d3fa3558f7bbb65f6af3811645f", [] ], "fixtures_http.py": [ - "748fe214a2b39d57d3581eee6a196cc5ad85ac08", + "65ea064c51977c6f4d96f8e2836be86aab00969f", [] ], "helpers.py": [ @@ -464810,14 +465007,18 @@ ] ], "aes_gcm.https.any.js": [ - "8f1103d8f4a483a93259e1f91541ec4bba1647c7", + "6e3a6efb12d7b8170c204d91dc5812846b44f574", [ "WebCryptoAPI/encrypt_decrypt/aes_gcm.https.any.html", { "script_metadata": [ [ "title", - "WebCryptoAPI: encrypt() Using AES-GCM" + "WebCryptoAPI: encrypt() Using AES-GCM w/ 96-bit iv" + ], + [ + "script", + "aes_gcm_96_iv_fixtures.js" ], [ "script", @@ -464841,7 +465042,70 @@ "script_metadata": [ [ "title", - "WebCryptoAPI: encrypt() Using AES-GCM" + "WebCryptoAPI: encrypt() Using AES-GCM w/ 96-bit iv" + ], + [ + "script", + "aes_gcm_96_iv_fixtures.js" + ], + [ + "script", + "aes_gcm_vectors.js" + ], + [ + "script", + "aes.js" + ], + [ + "timeout", + "long" + ] + ], + "timeout": "long" + } + ] + ], + "aes_gcm_256_iv.https.any.js": [ + "92900fb13ae2ecb928652d37b6d67e6b1a74d708", + [ + "WebCryptoAPI/encrypt_decrypt/aes_gcm_256_iv.https.any.html", + { + "script_metadata": [ + [ + "title", + "WebCryptoAPI: encrypt() Using AES-GCM w/ 256-bit iv" + ], + [ + "script", + "aes_gcm_256_iv_fixtures.js" + ], + [ + "script", + "aes_gcm_vectors.js" + ], + [ + "script", + "aes.js" + ], + [ + "timeout", + "long" + ] + ], + "timeout": "long" + } + ], + [ + "WebCryptoAPI/encrypt_decrypt/aes_gcm_256_iv.https.any.worker.html", + { + "script_metadata": [ + [ + "title", + "WebCryptoAPI: encrypt() Using AES-GCM w/ 256-bit iv" + ], + [ + "script", + "aes_gcm_256_iv_fixtures.js" ], [ "script", @@ -470681,7 +470945,7 @@ }, "wrapKey_unwrapKey": { "wrapKey_unwrapKey.https.any.js": [ - "95102495fe3a5be8cd8f8196328867b0d4ba5c1e", + "edb67d9e30fdba41b759992bddc8ddf755466638", [ "WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.https.any.html", { @@ -470693,6 +470957,10 @@ [ "timeout", "long" + ], + [ + "script", + "../util/helpers.js" ] ], "timeout": "long" @@ -470709,6 +470977,10 @@ [ "timeout", "long" + ], + [ + "script", + "../util/helpers.js" ] ], "timeout": "long" @@ -478446,7 +478718,7 @@ ] }, "accept-ch-change.https.html": [ - "b0a4da61ddd464c418257a3bf4264b429ec1dca6", + "826aca85a4e677730ba21f3f4b10bbe979302633", [ null, {} @@ -478783,7 +479055,7 @@ }, "critical-ch": { "iframe.https.window.js": [ - "f4dd295208fd4acddb084530cae772077004cab4", + "bbb9623752ea593a15e306152b49342c305a3420", [ "client-hints/critical-ch/iframe.https.window.html", { @@ -478797,7 +479069,7 @@ ] ], "mis-matched-count.https.window.js": [ - "54bd66789793babdc8aab812059d30aeaa21ba11", + "23d297837e6ce6cf6a12c5ef9909bb0441501c1b", [ "client-hints/critical-ch/mis-matched-count.https.window.html", { @@ -478815,7 +479087,7 @@ ] ], "mis-matched.https.window.js": [ - "9476640b3513d36850d26ab2154e0bd07db5d77d", + "10f9a30b6d257155f0d775f3baed4b0217294752", [ "client-hints/critical-ch/mis-matched.https.window.html", { @@ -478842,8 +479114,22 @@ } ] ], + "navigation.multiple.https.window.js": [ + "ff9cc210feb96f711c1e49f2ef64269bffacf12b", + [ + "client-hints/critical-ch/navigation.multiple.https.window.html", + { + "script_metadata": [ + [ + "script", + "resources/util.js" + ] + ] + } + ] + ], "non-secure.http.window.js": [ - "cdd79243982a46d60177e8721479e9eab111e88c", + "b634f98e55c94132f8c96295b0b9199e00cd9b94", [ "client-hints/critical-ch/non-secure.http.window.html", { @@ -478874,8 +479160,26 @@ } ] ], + "request-count.multiple.https.window.js": [ + "602803b5d687435273d6e4a5e8a2cc419a028726", + [ + "client-hints/critical-ch/request-count.multiple.https.window.html", + { + "script_metadata": [ + [ + "script", + "resources/util.js" + ], + [ + "script", + "/common/utils.js" + ] + ] + } + ] + ], "subresource.https.window.js": [ - "f8112b628d0f263959fd2a7dd8dfa066920f3514", + "81dfc303c62e03498314abbf9b80a2abc88d2a36", [ "client-hints/critical-ch/subresource.https.window.html", { @@ -478893,7 +479197,7 @@ ] ], "unsafe-method.https.window.js": [ - "0eca0eb8e9aea1c066d56b685f23ffadf3a6754f", + "37bbcb3315e1b14f8d45b35f3b9cfb2b2be602dc", [ "client-hints/critical-ch/unsafe-method.https.window.html", {} @@ -489409,50 +489713,6 @@ ] } }, - "core-aam": { - "aria-expanded_not_supported_on_alert.html": [ - "1317cc658f76a8e19a4dc862cc638e17a859d0fe", - [ - null, - {} - ] - ], - "aria-expanded_not_supported_on_banner.html": [ - "e1bf9cc7f45a9342d244c262186bbb1636cb2b1b", - [ - null, - {} - ] - ], - "aria-expanded_not_supported_on_dialog.html": [ - "c7feeddf2bbb35e82211055c8dcc5c8e689b815f", - [ - null, - {} - ] - ], - "aria-expanded_not_supported_on_feed.html": [ - "e81f3e49494c499ab2411cbcc7c82d41e5b3d816", - [ - null, - {} - ] - ], - "aria-expanded_not_supported_on_form.html": [ - "6b533da6f7205bad6e14e8cddf525e7adb1e521b", - [ - null, - {} - ] - ], - "aria-expanded_not_supported_on_group.html": [ - "8deb17c2b24a07c1801d214db6990e30cd883d54", - [ - null, - {} - ] - ] - }, "cors": { "304.htm": [ "2aee01417a7cdfb5cb9a69cce2bcc59d7b8eded2", @@ -514913,6 +515173,13 @@ {} ] ], + "dynamic-root-element.html": [ + "befc20d1d084d94390bb9fd2c00979a6f1ec7073", + [ + null, + {} + ] + ], "event-dispatch.tentative.html": [ "5ed01cdd2588d1a5a5226a9abb46f60dd441ed13", [ @@ -515334,7 +515601,7 @@ ] ], "zero-duration-multiple-transition.html": [ - "4268ce766d76f14af0a211e829f50434f131bd20", + "7b85702092a988aaced7070198252dda1891e40d", [ null, {} @@ -518524,7 +518791,7 @@ ] ], "calc-infinity-nan-serialize-time.html": [ - "fd3f02524ba1a9980fe98da21fca166d74b1931a", + "2baa890259cb8a4c6c9ef128c611083b4395fd56", [ null, {} @@ -519475,7 +519742,7 @@ ] ], "hit-test-unpainted-element-from-point.html": [ - "47a8e5fb994d60f02cccf5c786d7a9e3a4ad0d43", + "7c9ed911cb7776fd553265146816dfbbf5f18952", [ null, {} @@ -525245,7 +525512,7 @@ ] ], "HTMLElement.html": [ - "bd252282161b59a50b0ee991e7b2d28e94ddd74f", + "0a1d40199e633e9677da09f34e42200965b5241c", [ null, {} @@ -558074,6 +558341,751 @@ ] ] }, + "local-network-access": { + "fetch-from-treat-as-public.https.window.js": [ + "90f7feb63419d7e3c03811679644f6ccc4abd2a7", + [ + "fetch/local-network-access/fetch-from-treat-as-public.https.window.html", + { + "script_metadata": [ + [ + "script", + "/common/utils.js" + ], + [ + "script", + "resources/support.sub.js" + ] + ] + } + ] + ], + "fetch.https.window.js": [ + "dbc4f23f677c716ba439c508c42ee33f4b1b3233", + [ + "fetch/local-network-access/fetch.https.window.html?include=baseline", + { + "script_metadata": [ + [ + "script", + "/common/subset-tests-by-key.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "script", + "resources/support.sub.js" + ], + [ + "variant", + "?include=baseline" + ], + [ + "variant", + "?include=from-local" + ], + [ + "variant", + "?include=from-private" + ], + [ + "variant", + "?include=from-public" + ] + ] + } + ], + [ + "fetch/local-network-access/fetch.https.window.html?include=from-local", + { + "script_metadata": [ + [ + "script", + "/common/subset-tests-by-key.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "script", + "resources/support.sub.js" + ], + [ + "variant", + "?include=baseline" + ], + [ + "variant", + "?include=from-local" + ], + [ + "variant", + "?include=from-private" + ], + [ + "variant", + "?include=from-public" + ] + ] + } + ], + [ + "fetch/local-network-access/fetch.https.window.html?include=from-private", + { + "script_metadata": [ + [ + "script", + "/common/subset-tests-by-key.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "script", + "resources/support.sub.js" + ], + [ + "variant", + "?include=baseline" + ], + [ + "variant", + "?include=from-local" + ], + [ + "variant", + "?include=from-private" + ], + [ + "variant", + "?include=from-public" + ] + ] + } + ], + [ + "fetch/local-network-access/fetch.https.window.html?include=from-public", + { + "script_metadata": [ + [ + "script", + "/common/subset-tests-by-key.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "script", + "resources/support.sub.js" + ], + [ + "variant", + "?include=baseline" + ], + [ + "variant", + "?include=from-local" + ], + [ + "variant", + "?include=from-private" + ], + [ + "variant", + "?include=from-public" + ] + ] + } + ] + ], + "fetch.window.js": [ + "8ee54c905629293255551d560b240c5ac7086707", + [ + "fetch/local-network-access/fetch.window.html", + { + "script_metadata": [ + [ + "script", + "/common/utils.js" + ], + [ + "script", + "resources/support.sub.js" + ] + ] + } + ] + ], + "iframe.tentative.https.window.js": [ + "48bd6420fd9c46a758f8f1f01bf9e2263c8760e1", + [ + "fetch/local-network-access/iframe.tentative.https.window.html", + { + "script_metadata": [ + [ + "script", + "/common/dispatcher/dispatcher.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "script", + "resources/support.sub.js" + ] + ] + } + ] + ], + "iframe.tentative.window.js": [ + "e00cb202bec61b69d5dcd8e6c1f1b519266f9122", + [ + "fetch/local-network-access/iframe.tentative.window.html", + { + "script_metadata": [ + [ + "script", + "/common/dispatcher/dispatcher.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "script", + "resources/support.sub.js" + ] + ] + } + ] + ], + "mixed-content-fetch.tentative.https.window.js": [ + "6f7d765617c9c1f8e2aec16422ad3c561c51a641", + [ + "fetch/local-network-access/mixed-content-fetch.tentative.https.window.html", + { + "script_metadata": [ + [ + "script", + "/common/utils.js" + ], + [ + "script", + "resources/support.sub.js" + ] + ] + } + ] + ], + "nested-worker.https.window.js": [ + "3eeb435badb2d00404e0e214e1d42c4be2817f8a", + [ + "fetch/local-network-access/nested-worker.https.window.html", + { + "script_metadata": [ + [ + "script", + "/common/utils.js" + ], + [ + "script", + "resources/support.sub.js" + ] + ] + } + ] + ], + "nested-worker.window.js": [ + "6d246e1c76d6c5f603c3e29430ae0586fdb9f5ad", + [ + "fetch/local-network-access/nested-worker.window.html", + { + "script_metadata": [ + [ + "script", + "/common/utils.js" + ], + [ + "script", + "resources/support.sub.js" + ] + ] + } + ] + ], + "preflight-cache.https.window.js": [ + "87dbf501f628a25fa299240da5d5856f4366d8cc", + [ + "fetch/local-network-access/preflight-cache.https.window.html", + { + "script_metadata": [ + [ + "script", + "/common/utils.js" + ], + [ + "script", + "resources/support.sub.js" + ] + ] + } + ] + ], + "redirect.https.window.js": [ + "f8a53ad1889e61712b98e0794de398307385b299", + [ + "fetch/local-network-access/redirect.https.window.html", + { + "script_metadata": [ + [ + "script", + "/common/utils.js" + ], + [ + "script", + "resources/support.sub.js" + ] + ] + } + ] + ], + "service-worker-background-fetch.https.window.js": [ + "6369b166e21ef023c17ec5140282990092621990", + [ + "fetch/local-network-access/service-worker-background-fetch.https.window.html", + { + "script_metadata": [ + [ + "script", + "/common/utils.js" + ], + [ + "script", + "resources/support.sub.js" + ] + ] + } + ] + ], + "service-worker-fetch.https.window.js": [ + "5645d78456156d09afd5b074c24215de83b19c4a", + [ + "fetch/local-network-access/service-worker-fetch.https.window.html", + { + "script_metadata": [ + [ + "script", + "/common/utils.js" + ], + [ + "script", + "resources/support.sub.js" + ] + ] + } + ] + ], + "service-worker-update.https.window.js": [ + "fe2bf58f6600470650b9a19707a98ca895b2d86c", + [ + "fetch/local-network-access/service-worker-update.https.window.html", + { + "script_metadata": [ + [ + "script", + "/common/utils.js" + ], + [ + "script", + "resources/support.sub.js" + ] + ] + } + ] + ], + "service-worker.https.window.js": [ + "8dc631f65a85d65a29e891482310f74c942da6b1", + [ + "fetch/local-network-access/service-worker.https.window.html", + { + "script_metadata": [ + [ + "script", + "/common/utils.js" + ], + [ + "script", + "resources/support.sub.js" + ] + ] + } + ] + ], + "shared-worker-blob-fetch.https.window.js": [ + "ad9cd09c31b0a7aa83501f44a9e63455696ab9c2", + [ + "fetch/local-network-access/shared-worker-blob-fetch.https.window.html", + { + "script_metadata": [ + [ + "script", + "/common/utils.js" + ], + [ + "script", + "resources/support.sub.js" + ] + ] + } + ] + ], + "shared-worker-blob-fetch.window.js": [ + "d430ea7383771844bb8955e4c6be23c63e6adc59", + [ + "fetch/local-network-access/shared-worker-blob-fetch.window.html", + { + "script_metadata": [ + [ + "script", + "/common/utils.js" + ], + [ + "script", + "resources/support.sub.js" + ] + ] + } + ] + ], + "shared-worker-fetch.https.window.js": [ + "7066b359caa2ddb173a02a359d012456dd7a43a2", + [ + "fetch/local-network-access/shared-worker-fetch.https.window.html", + { + "script_metadata": [ + [ + "script", + "/common/utils.js" + ], + [ + "script", + "resources/support.sub.js" + ] + ] + } + ] + ], + "shared-worker-fetch.window.js": [ + "9bc1a89beadc673afe783eb56b5e0b2560dbf408", + [ + "fetch/local-network-access/shared-worker-fetch.window.html", + { + "script_metadata": [ + [ + "script", + "/common/utils.js" + ], + [ + "script", + "resources/support.sub.js" + ] + ] + } + ] + ], + "shared-worker.https.window.js": [ + "ecb70c41245e82ab89f652d0de01c1d3b1f80890", + [ + "fetch/local-network-access/shared-worker.https.window.html", + { + "script_metadata": [ + [ + "script", + "/common/utils.js" + ], + [ + "script", + "resources/support.sub.js" + ] + ] + } + ] + ], + "shared-worker.window.js": [ + "ffa8a360c7032138b89d48507b0d1dcb9a23d5a2", + [ + "fetch/local-network-access/shared-worker.window.html", + { + "script_metadata": [ + [ + "script", + "/common/utils.js" + ], + [ + "script", + "resources/support.sub.js" + ] + ] + } + ] + ], + "websocket.https.window.js": [ + "0731896098bcefa614ebdf28765a04766b5e6cda", + [ + "fetch/local-network-access/websocket.https.window.html", + { + "script_metadata": [ + [ + "script", + "resources/support.sub.js" + ] + ] + } + ] + ], + "websocket.window.js": [ + "a44cfaedec78b2570e868f3b81ac59575c76bc54", + [ + "fetch/local-network-access/websocket.window.html", + { + "script_metadata": [ + [ + "script", + "resources/support.sub.js" + ] + ] + } + ] + ], + "worker-blob-fetch.window.js": [ + "e119746b8a6b298a2c57bde63f03a59d8e72d477", + [ + "fetch/local-network-access/worker-blob-fetch.window.html", + { + "script_metadata": [ + [ + "script", + "/common/utils.js" + ], + [ + "script", + "resources/support.sub.js" + ] + ] + } + ] + ], + "worker-fetch.https.window.js": [ + "89e0c3cf1f35f0cf741957c3eb0bff38a4705d93", + [ + "fetch/local-network-access/worker-fetch.https.window.html", + { + "script_metadata": [ + [ + "script", + "/common/utils.js" + ], + [ + "script", + "resources/support.sub.js" + ] + ] + } + ] + ], + "worker-fetch.window.js": [ + "4d6b12f06715a8aaa88e2a290531713c036df3c1", + [ + "fetch/local-network-access/worker-fetch.window.html", + { + "script_metadata": [ + [ + "script", + "/common/utils.js" + ], + [ + "script", + "resources/support.sub.js" + ] + ] + } + ] + ], + "worker.https.window.js": [ + "2d0dddd685cccf4d1ed4064db61ffcc1a3514f09", + [ + "fetch/local-network-access/worker.https.window.html", + { + "script_metadata": [ + [ + "script", + "/common/utils.js" + ], + [ + "script", + "resources/support.sub.js" + ] + ] + } + ] + ], + "worker.window.js": [ + "118c0992544265603671862af5511f6e7220af28", + [ + "fetch/local-network-access/worker.window.html", + { + "script_metadata": [ + [ + "script", + "/common/utils.js" + ], + [ + "script", + "resources/support.sub.js" + ] + ] + } + ] + ], + "xhr-from-treat-as-public.https.window.js": [ + "04fe5449d19e5baecbb1904140b315dc18206070", + [ + "fetch/local-network-access/xhr-from-treat-as-public.https.window.html", + { + "script_metadata": [ + [ + "script", + "/common/utils.js" + ], + [ + "script", + "resources/support.sub.js" + ] + ] + } + ] + ], + "xhr.https.window.js": [ + "4dc5da9912f1012bf72a9e689acfbc125d7c2923", + [ + "fetch/local-network-access/xhr.https.window.html?include=from-local", + { + "script_metadata": [ + [ + "script", + "/common/subset-tests-by-key.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "script", + "resources/support.sub.js" + ], + [ + "variant", + "?include=from-local" + ], + [ + "variant", + "?include=from-private" + ], + [ + "variant", + "?include=from-public" + ] + ] + } + ], + [ + "fetch/local-network-access/xhr.https.window.html?include=from-private", + { + "script_metadata": [ + [ + "script", + "/common/subset-tests-by-key.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "script", + "resources/support.sub.js" + ], + [ + "variant", + "?include=from-local" + ], + [ + "variant", + "?include=from-private" + ], + [ + "variant", + "?include=from-public" + ] + ] + } + ], + [ + "fetch/local-network-access/xhr.https.window.html?include=from-public", + { + "script_metadata": [ + [ + "script", + "/common/subset-tests-by-key.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "script", + "resources/support.sub.js" + ], + [ + "variant", + "?include=from-local" + ], + [ + "variant", + "?include=from-private" + ], + [ + "variant", + "?include=from-public" + ] + ] + } + ] + ], + "xhr.window.js": [ + "fa307dc559a76cb3cd3f70f76a3c904f4602a442", + [ + "fetch/local-network-access/xhr.window.html", + { + "script_metadata": [ + [ + "script", + "/common/utils.js" + ], + [ + "script", + "resources/support.sub.js" + ] + ] + } + ] + ] + }, "metadata": { "audio-worklet.https.html": [ "3b768ef0b5ddd2d13361629afd011e6987cb38d0", @@ -559129,751 +560141,6 @@ ] ] }, - "private-network-access": { - "fetch-from-treat-as-public.https.window.js": [ - "90f7feb63419d7e3c03811679644f6ccc4abd2a7", - [ - "fetch/private-network-access/fetch-from-treat-as-public.https.window.html", - { - "script_metadata": [ - [ - "script", - "/common/utils.js" - ], - [ - "script", - "resources/support.sub.js" - ] - ] - } - ] - ], - "fetch.https.window.js": [ - "dbc4f23f677c716ba439c508c42ee33f4b1b3233", - [ - "fetch/private-network-access/fetch.https.window.html?include=baseline", - { - "script_metadata": [ - [ - "script", - "/common/subset-tests-by-key.js" - ], - [ - "script", - "/common/utils.js" - ], - [ - "script", - "resources/support.sub.js" - ], - [ - "variant", - "?include=baseline" - ], - [ - "variant", - "?include=from-local" - ], - [ - "variant", - "?include=from-private" - ], - [ - "variant", - "?include=from-public" - ] - ] - } - ], - [ - "fetch/private-network-access/fetch.https.window.html?include=from-local", - { - "script_metadata": [ - [ - "script", - "/common/subset-tests-by-key.js" - ], - [ - "script", - "/common/utils.js" - ], - [ - "script", - "resources/support.sub.js" - ], - [ - "variant", - "?include=baseline" - ], - [ - "variant", - "?include=from-local" - ], - [ - "variant", - "?include=from-private" - ], - [ - "variant", - "?include=from-public" - ] - ] - } - ], - [ - "fetch/private-network-access/fetch.https.window.html?include=from-private", - { - "script_metadata": [ - [ - "script", - "/common/subset-tests-by-key.js" - ], - [ - "script", - "/common/utils.js" - ], - [ - "script", - "resources/support.sub.js" - ], - [ - "variant", - "?include=baseline" - ], - [ - "variant", - "?include=from-local" - ], - [ - "variant", - "?include=from-private" - ], - [ - "variant", - "?include=from-public" - ] - ] - } - ], - [ - "fetch/private-network-access/fetch.https.window.html?include=from-public", - { - "script_metadata": [ - [ - "script", - "/common/subset-tests-by-key.js" - ], - [ - "script", - "/common/utils.js" - ], - [ - "script", - "resources/support.sub.js" - ], - [ - "variant", - "?include=baseline" - ], - [ - "variant", - "?include=from-local" - ], - [ - "variant", - "?include=from-private" - ], - [ - "variant", - "?include=from-public" - ] - ] - } - ] - ], - "fetch.window.js": [ - "8ee54c905629293255551d560b240c5ac7086707", - [ - "fetch/private-network-access/fetch.window.html", - { - "script_metadata": [ - [ - "script", - "/common/utils.js" - ], - [ - "script", - "resources/support.sub.js" - ] - ] - } - ] - ], - "iframe.tentative.https.window.js": [ - "48bd6420fd9c46a758f8f1f01bf9e2263c8760e1", - [ - "fetch/private-network-access/iframe.tentative.https.window.html", - { - "script_metadata": [ - [ - "script", - "/common/dispatcher/dispatcher.js" - ], - [ - "script", - "/common/utils.js" - ], - [ - "script", - "resources/support.sub.js" - ] - ] - } - ] - ], - "iframe.tentative.window.js": [ - "e00cb202bec61b69d5dcd8e6c1f1b519266f9122", - [ - "fetch/private-network-access/iframe.tentative.window.html", - { - "script_metadata": [ - [ - "script", - "/common/dispatcher/dispatcher.js" - ], - [ - "script", - "/common/utils.js" - ], - [ - "script", - "resources/support.sub.js" - ] - ] - } - ] - ], - "mixed-content-fetch.tentative.https.window.js": [ - "54485dc70474023683f2a9f4f4fba1f0df0032af", - [ - "fetch/private-network-access/mixed-content-fetch.tentative.https.window.html", - { - "script_metadata": [ - [ - "script", - "/common/utils.js" - ], - [ - "script", - "resources/support.sub.js" - ] - ] - } - ] - ], - "nested-worker.https.window.js": [ - "3eeb435badb2d00404e0e214e1d42c4be2817f8a", - [ - "fetch/private-network-access/nested-worker.https.window.html", - { - "script_metadata": [ - [ - "script", - "/common/utils.js" - ], - [ - "script", - "resources/support.sub.js" - ] - ] - } - ] - ], - "nested-worker.window.js": [ - "6d246e1c76d6c5f603c3e29430ae0586fdb9f5ad", - [ - "fetch/private-network-access/nested-worker.window.html", - { - "script_metadata": [ - [ - "script", - "/common/utils.js" - ], - [ - "script", - "resources/support.sub.js" - ] - ] - } - ] - ], - "preflight-cache.https.window.js": [ - "87dbf501f628a25fa299240da5d5856f4366d8cc", - [ - "fetch/private-network-access/preflight-cache.https.window.html", - { - "script_metadata": [ - [ - "script", - "/common/utils.js" - ], - [ - "script", - "resources/support.sub.js" - ] - ] - } - ] - ], - "redirect.https.window.js": [ - "f8a53ad1889e61712b98e0794de398307385b299", - [ - "fetch/private-network-access/redirect.https.window.html", - { - "script_metadata": [ - [ - "script", - "/common/utils.js" - ], - [ - "script", - "resources/support.sub.js" - ] - ] - } - ] - ], - "service-worker-background-fetch.https.window.js": [ - "6369b166e21ef023c17ec5140282990092621990", - [ - "fetch/private-network-access/service-worker-background-fetch.https.window.html", - { - "script_metadata": [ - [ - "script", - "/common/utils.js" - ], - [ - "script", - "resources/support.sub.js" - ] - ] - } - ] - ], - "service-worker-fetch.https.window.js": [ - "5645d78456156d09afd5b074c24215de83b19c4a", - [ - "fetch/private-network-access/service-worker-fetch.https.window.html", - { - "script_metadata": [ - [ - "script", - "/common/utils.js" - ], - [ - "script", - "resources/support.sub.js" - ] - ] - } - ] - ], - "service-worker-update.https.window.js": [ - "fe2bf58f6600470650b9a19707a98ca895b2d86c", - [ - "fetch/private-network-access/service-worker-update.https.window.html", - { - "script_metadata": [ - [ - "script", - "/common/utils.js" - ], - [ - "script", - "resources/support.sub.js" - ] - ] - } - ] - ], - "service-worker.https.window.js": [ - "8dc631f65a85d65a29e891482310f74c942da6b1", - [ - "fetch/private-network-access/service-worker.https.window.html", - { - "script_metadata": [ - [ - "script", - "/common/utils.js" - ], - [ - "script", - "resources/support.sub.js" - ] - ] - } - ] - ], - "shared-worker-blob-fetch.https.window.js": [ - "ad9cd09c31b0a7aa83501f44a9e63455696ab9c2", - [ - "fetch/private-network-access/shared-worker-blob-fetch.https.window.html", - { - "script_metadata": [ - [ - "script", - "/common/utils.js" - ], - [ - "script", - "resources/support.sub.js" - ] - ] - } - ] - ], - "shared-worker-blob-fetch.window.js": [ - "d430ea7383771844bb8955e4c6be23c63e6adc59", - [ - "fetch/private-network-access/shared-worker-blob-fetch.window.html", - { - "script_metadata": [ - [ - "script", - "/common/utils.js" - ], - [ - "script", - "resources/support.sub.js" - ] - ] - } - ] - ], - "shared-worker-fetch.https.window.js": [ - "7066b359caa2ddb173a02a359d012456dd7a43a2", - [ - "fetch/private-network-access/shared-worker-fetch.https.window.html", - { - "script_metadata": [ - [ - "script", - "/common/utils.js" - ], - [ - "script", - "resources/support.sub.js" - ] - ] - } - ] - ], - "shared-worker-fetch.window.js": [ - "9bc1a89beadc673afe783eb56b5e0b2560dbf408", - [ - "fetch/private-network-access/shared-worker-fetch.window.html", - { - "script_metadata": [ - [ - "script", - "/common/utils.js" - ], - [ - "script", - "resources/support.sub.js" - ] - ] - } - ] - ], - "shared-worker.https.window.js": [ - "ecb70c41245e82ab89f652d0de01c1d3b1f80890", - [ - "fetch/private-network-access/shared-worker.https.window.html", - { - "script_metadata": [ - [ - "script", - "/common/utils.js" - ], - [ - "script", - "resources/support.sub.js" - ] - ] - } - ] - ], - "shared-worker.window.js": [ - "ffa8a360c7032138b89d48507b0d1dcb9a23d5a2", - [ - "fetch/private-network-access/shared-worker.window.html", - { - "script_metadata": [ - [ - "script", - "/common/utils.js" - ], - [ - "script", - "resources/support.sub.js" - ] - ] - } - ] - ], - "websocket.https.window.js": [ - "0731896098bcefa614ebdf28765a04766b5e6cda", - [ - "fetch/private-network-access/websocket.https.window.html", - { - "script_metadata": [ - [ - "script", - "resources/support.sub.js" - ] - ] - } - ] - ], - "websocket.window.js": [ - "a44cfaedec78b2570e868f3b81ac59575c76bc54", - [ - "fetch/private-network-access/websocket.window.html", - { - "script_metadata": [ - [ - "script", - "resources/support.sub.js" - ] - ] - } - ] - ], - "worker-blob-fetch.window.js": [ - "e119746b8a6b298a2c57bde63f03a59d8e72d477", - [ - "fetch/private-network-access/worker-blob-fetch.window.html", - { - "script_metadata": [ - [ - "script", - "/common/utils.js" - ], - [ - "script", - "resources/support.sub.js" - ] - ] - } - ] - ], - "worker-fetch.https.window.js": [ - "89e0c3cf1f35f0cf741957c3eb0bff38a4705d93", - [ - "fetch/private-network-access/worker-fetch.https.window.html", - { - "script_metadata": [ - [ - "script", - "/common/utils.js" - ], - [ - "script", - "resources/support.sub.js" - ] - ] - } - ] - ], - "worker-fetch.window.js": [ - "4d6b12f06715a8aaa88e2a290531713c036df3c1", - [ - "fetch/private-network-access/worker-fetch.window.html", - { - "script_metadata": [ - [ - "script", - "/common/utils.js" - ], - [ - "script", - "resources/support.sub.js" - ] - ] - } - ] - ], - "worker.https.window.js": [ - "2d0dddd685cccf4d1ed4064db61ffcc1a3514f09", - [ - "fetch/private-network-access/worker.https.window.html", - { - "script_metadata": [ - [ - "script", - "/common/utils.js" - ], - [ - "script", - "resources/support.sub.js" - ] - ] - } - ] - ], - "worker.window.js": [ - "118c0992544265603671862af5511f6e7220af28", - [ - "fetch/private-network-access/worker.window.html", - { - "script_metadata": [ - [ - "script", - "/common/utils.js" - ], - [ - "script", - "resources/support.sub.js" - ] - ] - } - ] - ], - "xhr-from-treat-as-public.https.window.js": [ - "04fe5449d19e5baecbb1904140b315dc18206070", - [ - "fetch/private-network-access/xhr-from-treat-as-public.https.window.html", - { - "script_metadata": [ - [ - "script", - "/common/utils.js" - ], - [ - "script", - "resources/support.sub.js" - ] - ] - } - ] - ], - "xhr.https.window.js": [ - "4dc5da9912f1012bf72a9e689acfbc125d7c2923", - [ - "fetch/private-network-access/xhr.https.window.html?include=from-local", - { - "script_metadata": [ - [ - "script", - "/common/subset-tests-by-key.js" - ], - [ - "script", - "/common/utils.js" - ], - [ - "script", - "resources/support.sub.js" - ], - [ - "variant", - "?include=from-local" - ], - [ - "variant", - "?include=from-private" - ], - [ - "variant", - "?include=from-public" - ] - ] - } - ], - [ - "fetch/private-network-access/xhr.https.window.html?include=from-private", - { - "script_metadata": [ - [ - "script", - "/common/subset-tests-by-key.js" - ], - [ - "script", - "/common/utils.js" - ], - [ - "script", - "resources/support.sub.js" - ], - [ - "variant", - "?include=from-local" - ], - [ - "variant", - "?include=from-private" - ], - [ - "variant", - "?include=from-public" - ] - ] - } - ], - [ - "fetch/private-network-access/xhr.https.window.html?include=from-public", - { - "script_metadata": [ - [ - "script", - "/common/subset-tests-by-key.js" - ], - [ - "script", - "/common/utils.js" - ], - [ - "script", - "resources/support.sub.js" - ], - [ - "variant", - "?include=from-local" - ], - [ - "variant", - "?include=from-private" - ], - [ - "variant", - "?include=from-public" - ] - ] - } - ] - ], - "xhr.window.js": [ - "fa307dc559a76cb3cd3f70f76a3c904f4602a442", - [ - "fetch/private-network-access/xhr.window.html", - { - "script_metadata": [ - [ - "script", - "/common/utils.js" - ], - [ - "script", - "resources/support.sub.js" - ] - ] - } - ] - ] - }, "range": { "blob.any.js": [ "f3eb313b34b42d12f6ee7e2740edd9360c4ab6f1", @@ -561755,7 +562022,7 @@ ] ], "FileSystemFileHandle-sync-access-handle-writable-lock.https.tentative.worker.js": [ - "7f244bc02aad96f55137f2be52f13c269b78dade", + "1b7fcda35bf9aada9b7a1a60205525f7a4383349", [ "fs/FileSystemFileHandle-sync-access-handle-writable-lock.https.tentative.worker.html", {} @@ -564871,6 +565138,141 @@ ] } ] + ], + "worker-cookies.tentative.https.window.js": [ + "4c29983c2b23d62dd4888f72565c70ca4454b511", + [ + "html/anonymous-iframe/worker-cookies.tentative.https.window.html?worker=dedicated_worker", + { + "script_metadata": [ + [ + "timeout", + "long" + ], + [ + "variant", + "?worker=dedicated_worker" + ], + [ + "variant", + "?worker=shared_worker" + ], + [ + "variant", + "?worker=service_worker" + ], + [ + "script", + "/common/get-host-info.sub.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "script", + "/common/dispatcher/dispatcher.js" + ], + [ + "script", + "/html/cross-origin-embedder-policy/credentialless/resources/common.js" + ], + [ + "script", + "./resources/common.js" + ] + ], + "timeout": "long" + } + ], + [ + "html/anonymous-iframe/worker-cookies.tentative.https.window.html?worker=service_worker", + { + "script_metadata": [ + [ + "timeout", + "long" + ], + [ + "variant", + "?worker=dedicated_worker" + ], + [ + "variant", + "?worker=shared_worker" + ], + [ + "variant", + "?worker=service_worker" + ], + [ + "script", + "/common/get-host-info.sub.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "script", + "/common/dispatcher/dispatcher.js" + ], + [ + "script", + "/html/cross-origin-embedder-policy/credentialless/resources/common.js" + ], + [ + "script", + "./resources/common.js" + ] + ], + "timeout": "long" + } + ], + [ + "html/anonymous-iframe/worker-cookies.tentative.https.window.html?worker=shared_worker", + { + "script_metadata": [ + [ + "timeout", + "long" + ], + [ + "variant", + "?worker=dedicated_worker" + ], + [ + "variant", + "?worker=shared_worker" + ], + [ + "variant", + "?worker=service_worker" + ], + [ + "script", + "/common/get-host-info.sub.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "script", + "/common/dispatcher/dispatcher.js" + ], + [ + "script", + "/html/cross-origin-embedder-policy/credentialless/resources/common.js" + ], + [ + "script", + "./resources/common.js" + ] + ], + "timeout": "long" + } + ] ] }, "browsers": { @@ -576779,7 +577181,7 @@ ] ], "2d.transformation.scale.zero.html": [ - "4ff7397ae8c4ab109e08302e71a7a745203c0313", + "f495ee2e6a0a194e65f37ce8edb62bee9c23fce3", [ null, {} @@ -589227,308 +589629,308 @@ }, "transformations": { "2d.transformation.order.html": [ - "b1308035936676ff4f37f077b8aee96f9e4b56b7", + "83815f367b7adbbcf54eada88a67753f38d124fe", [ null, {} ] ], "2d.transformation.order.worker.js": [ - "7ac61067b4b870f4ab6b8491ba69bf2e664e1680", + "d00fe230efb9659cc84f71605d8dea709a54acd6", [ "html/canvas/offscreen/transformations/2d.transformation.order.worker.html", {} ] ], "2d.transformation.rotate.direction.html": [ - "0a98c7e65f9b5fb288832048b3696eaac77c1346", + "c20608f81c87eca1485f1724ac3c9ebbc4bb9037", [ null, {} ] ], "2d.transformation.rotate.direction.worker.js": [ - "465d3b679072de2c1d93274c877f8e047f0f0a34", + "8506937583ee0329a1ed6753a024eadbd608bee4", [ "html/canvas/offscreen/transformations/2d.transformation.rotate.direction.worker.html", {} ] ], "2d.transformation.rotate.nonfinite.html": [ - "0f2227a4e5cc185d02236eaf3f1117648240e662", + "bbc294a24fef4bd800c4b13bcea624c7eb72f705", [ null, {} ] ], "2d.transformation.rotate.nonfinite.worker.js": [ - "56a04d874e864de75e904fb7961012f43aaf15a9", + "2c892a561b2e4d5a20739551a73ebb699c845a6f", [ "html/canvas/offscreen/transformations/2d.transformation.rotate.nonfinite.worker.html", {} ] ], "2d.transformation.rotate.radians.html": [ - "8a78dddd7f8e678c4e7ba762e96e8dd17900e64c", + "75121e39d7fbd8255168d452396c5f2d45b9908b", [ null, {} ] ], "2d.transformation.rotate.radians.worker.js": [ - "9780e68a02f77a578dd570f256edd536dd981261", + "8c2fdd8ab0811c8bf96abf0f42b2848aafd701f4", [ "html/canvas/offscreen/transformations/2d.transformation.rotate.radians.worker.html", {} ] ], "2d.transformation.rotate.wrap.html": [ - "7711a8c1404e95fd703737d5208c609540e0c79d", + "1f9eb838c818f473a78e09bf4f5f41abc242d68c", [ null, {} ] ], "2d.transformation.rotate.wrap.worker.js": [ - "db9fbd43bc148a62f905037c9c6db6c0f6dfeeca", + "579a1b6dd687b052276ff19bfc5804879b386a6a", [ "html/canvas/offscreen/transformations/2d.transformation.rotate.wrap.worker.html", {} ] ], "2d.transformation.rotate.wrapnegative.html": [ - "49959dac0227cabcb33cc1a37114804ae451783c", + "c06f6453155a7d84f5568f274432d75a6b877b91", [ null, {} ] ], "2d.transformation.rotate.wrapnegative.worker.js": [ - "7f93f654582433f71d38bdb7b9735540f359e883", + "cce91071210fcbcaa3214a60cbc27e97af86a51e", [ "html/canvas/offscreen/transformations/2d.transformation.rotate.wrapnegative.worker.html", {} ] ], "2d.transformation.rotate.zero.html": [ - "2255b9973dd0ee34a1ebd25fbaf0525b9a91ad57", + "0101fa27c5848c18ef66fd032f36c663e5cd907c", [ null, {} ] ], "2d.transformation.rotate.zero.worker.js": [ - "10e00c4656a0b4301328af8c785e0ee6ff89ab48", + "1ad0aa5985375c8737c7dc9518b14d9a0c054f7c", [ "html/canvas/offscreen/transformations/2d.transformation.rotate.zero.worker.html", {} ] ], "2d.transformation.scale.basic.html": [ - "c78ac79f5abc26f2e61b7da8f54acc6c4849f281", + "5c70438ba16eb54f3109878080724a0275df75f4", [ null, {} ] ], "2d.transformation.scale.basic.worker.js": [ - "39b52d57b5f68267c115b3b61d8310ca378587b4", + "73be61007a5868aee8a573e309e2738cb244d5d6", [ "html/canvas/offscreen/transformations/2d.transformation.scale.basic.worker.html", {} ] ], "2d.transformation.scale.large.html": [ - "a67d05eb2c2d8b52c0619d359d3041d85e969560", + "8974545500a128a02e45fe2a579e1cbc5dbb28a9", [ null, {} ] ], "2d.transformation.scale.large.worker.js": [ - "1293cce196fdb6fe092637de5932a40dc42b099b", + "30af9631e6ccbdfe3f0f6b6ab52ce777f0774c2d", [ "html/canvas/offscreen/transformations/2d.transformation.scale.large.worker.html", {} ] ], "2d.transformation.scale.multiple.html": [ - "717f3d305a146c994410b7bbb3d1b15dd3ada2da", + "b07acf15ce6ee9a7c837f75a24f8a75ef3e151bd", [ null, {} ] ], "2d.transformation.scale.multiple.worker.js": [ - "c5a38207ea0c1a06ba754e6117edbd7f1509d5b2", + "267a7df9441e6fd7cfc95aae12e6a830b2064990", [ "html/canvas/offscreen/transformations/2d.transformation.scale.multiple.worker.html", {} ] ], "2d.transformation.scale.negative.html": [ - "fbcec5d763a9518bf4d9e86baa9d8687e00f8fd1", + "b516c1154f4d8ff4d56352d19ffd68dc8d7784a6", [ null, {} ] ], "2d.transformation.scale.negative.worker.js": [ - "a5344a9a7177e2d128aa72cf089e93de7ba386c7", + "0e68f7e8d8ce8c1b5e03116128e3588713f87254", [ "html/canvas/offscreen/transformations/2d.transformation.scale.negative.worker.html", {} ] ], "2d.transformation.scale.nonfinite.html": [ - "ac38bc1fa468cb3087aa0e4a7fcc30e431fd359d", + "3d9c75a0dc0200245ec34767a0e1257a49ae6e99", [ null, {} ] ], "2d.transformation.scale.nonfinite.worker.js": [ - "95e9922b69b521a2211502a4718425b2434e8648", + "67c5c104481ce86d046044c0692eb1f56e3b02c9", [ "html/canvas/offscreen/transformations/2d.transformation.scale.nonfinite.worker.html", {} ] ], "2d.transformation.scale.zero.html": [ - "9eae3b1db3338dced1ee49738454559cc038d00b", + "4b664125c2271ea2ac069ad1cb924f727ffd2863", [ null, {} ] ], "2d.transformation.scale.zero.worker.js": [ - "0f8dad04422d52a66f4d49b59f22cebae76e300a", + "dc52323bc23a74eff3ac37318e7db02dab7d8c18", [ "html/canvas/offscreen/transformations/2d.transformation.scale.zero.worker.html", {} ] ], "2d.transformation.setTransform.multiple.html": [ - "f8dfb048812c34016a8ae2424855c688e92ce4a7", + "e28710858b1fe476643d1d597a463788942435a2", [ null, {} ] ], "2d.transformation.setTransform.multiple.worker.js": [ - "9d01c1302ec136bce85fe918bda42f176b591bf3", + "b6b004601fb6b4a363acca80dd7b4b0d54ef36b2", [ "html/canvas/offscreen/transformations/2d.transformation.setTransform.multiple.worker.html", {} ] ], "2d.transformation.setTransform.nonfinite.html": [ - "fbed341a04a5599f1646fa3b92cdcd4b5d54d162", + "03c1b74579f0638147a6f8ff14d31dc6bb034e56", [ null, {} ] ], "2d.transformation.setTransform.nonfinite.worker.js": [ - "be7e055a853ccff10e7ba9f76237dd3229a36dc1", + "bd48262ca7d3bc7a5ca87b545ef07c86f906542b", [ "html/canvas/offscreen/transformations/2d.transformation.setTransform.nonfinite.worker.html", {} ] ], "2d.transformation.setTransform.skewed.html": [ - "40fa8015d4ca10258c9b4870843af85b1c9f7022", + "c49d9d8a29855fc29ed7fedf4e8209180dfd0d8d", [ null, {} ] ], "2d.transformation.setTransform.skewed.worker.js": [ - "6490f9b7094ec6094c93953e7178ecfb60ce1580", + "6f4b4769b61cd2f2ae9d4156967b3dec4ffb5ca8", [ "html/canvas/offscreen/transformations/2d.transformation.setTransform.skewed.worker.html", {} ] ], "2d.transformation.transform.identity.html": [ - "92753bc9e3eecb2f7a4b00054c967467be39c9e1", + "1efa306707c06c4e4ca8cd296cf8ad464bb6f8af", [ null, {} ] ], "2d.transformation.transform.identity.worker.js": [ - "99ac58d49d3ae634c1123bc9dd87aaae0bc59b96", + "51a11ee03ded65c2f7235ba02b9356c386874e09", [ "html/canvas/offscreen/transformations/2d.transformation.transform.identity.worker.html", {} ] ], "2d.transformation.transform.multiply.html": [ - "f69fa4330af2d17d88b4315c08a03ae1fa4a3406", + "05a1e7e5ead0af5d3b0ce215219dcb032a226e90", [ null, {} ] ], "2d.transformation.transform.multiply.worker.js": [ - "1a0e702a05bf73984e1c8416bf639e5349eac711", + "61a5f052dc722dcb2f4dbf6b6911081815e47781", [ "html/canvas/offscreen/transformations/2d.transformation.transform.multiply.worker.html", {} ] ], "2d.transformation.transform.nonfinite.html": [ - "6e679341d5d01012a23627e0251fdfe6c6073560", + "b81bda463bd3515346d1967bc4a081b0a171f29a", [ null, {} ] ], "2d.transformation.transform.nonfinite.worker.js": [ - "d596fc9744b70e25f07c6e61ea84480e0b5f215f", + "ee675151b3ab6210d022947fac799d193a7141d5", [ "html/canvas/offscreen/transformations/2d.transformation.transform.nonfinite.worker.html", {} ] ], "2d.transformation.transform.skewed.html": [ - "78e1252c67c517cb9d35f80136178fa8e9ae7416", + "9cb6dfcc52e462a8974e484100c82e9c0fb3f993", [ null, {} ] ], "2d.transformation.transform.skewed.worker.js": [ - "46416bb957010f8bea2d29fc7256e87a8d832949", + "638adc14c44c9b930bb9a9b6bd9f37af35b44e83", [ "html/canvas/offscreen/transformations/2d.transformation.transform.skewed.worker.html", {} ] ], "2d.transformation.translate.basic.html": [ - "8144ab0cc1b4e6317f08953366fec5bd2de9d03b", + "51a7527b5ccb82d4a41dc39cc20dae29fcc12b01", [ null, {} ] ], "2d.transformation.translate.basic.worker.js": [ - "695aff37da54e53f925d65896546cca85a2235af", + "11e8bd897b4d73cdae7758009bdf16931ddd884c", [ "html/canvas/offscreen/transformations/2d.transformation.translate.basic.worker.html", {} ] ], "2d.transformation.translate.nonfinite.html": [ - "4127a7a157ed2bad072b8df45ed80bec903bdbf8", + "010b28f3c6a8ebb88285e67d06f5e071fbf67c26", [ null, {} ] ], "2d.transformation.translate.nonfinite.worker.js": [ - "84b52a203b65bb9bea5834d96197a16f66149148", + "c3ff3a31a8c3fda8d5992c35a38b282aa35f7783", [ "html/canvas/offscreen/transformations/2d.transformation.translate.nonfinite.worker.html", {} @@ -604922,6 +605324,15 @@ {} ] ], + "selectmenu-form-elements.tentative.html": [ + "eed098256ca41f5f5982e8804f03309f6c4ce755", + [ + null, + { + "testdriver": true + } + ] + ], "selectmenu-form-state-restore.tentative.html": [ "1002355a5ab1ea4718ad2194826dac743ea7ec85", [ @@ -606053,7 +606464,7 @@ ] ], "popover-attribute-basic.html": [ - "88051f57394b7d525d24d74a37f5f73b05599e9f", + "c5937cd3237e55b04d93798ad4271a2cca0a22d7", [ null, { @@ -606206,7 +606617,7 @@ ] ], "popover-types.html": [ - "615c5a818c06c1bd75c5bfc80c2fc38e543048a9", + "9941f3228285690149c59d03d5dcba480d18b70b", [ null, {} @@ -616269,7 +616680,7 @@ ] ], "inert-computed-style.html": [ - "3c1748de2b424197c3d37f913cb2f91f8696a4b1", + "f1adbab6b7a5955fa7797ea9a03ed215b365d34f", [ null, {} @@ -616283,7 +616694,7 @@ ] ], "inert-iframe-hittest.html": [ - "bcc542d35edff1bf93fdb7bcc6185fceb0d130d6", + "8d7facf17230d70350adf4cd54a32151e30fc11b", [ null, { @@ -616433,7 +616844,7 @@ ] ], "non-local-ports.sub.window.js": [ - "8c9eb33c4f77ba1b7724a253a3f73d765d7425ab", + "06ecb3ab21b9cee404bb3618117dd0511da076b3", [ "infrastructure/assumptions/non-local-ports.sub.window.html", {} @@ -620787,7 +621198,7 @@ "long-animation-frame": { "tentative": { "loaf-basic.html": [ - "d289f0dd3427af4d29923d091c332113768b3b1c", + "c6d3f8e32a293a4a66af0830d0e7c275ac785f5f", [ null, { @@ -620804,8 +621215,72 @@ } ] ], + "loaf-desired-exec-time.html": [ + "5fecb20fb40dad1313d8935b37835b40d43d43f9", + [ + null, + { + "testdriver": true, + "timeout": "long" + } + ] + ], + "loaf-event-listener.html": [ + "6349c28b3202262c444aaefc558620c7baa19ff3", + [ + null, + { + "timeout": "long" + } + ] + ], + "loaf-idle.html": [ + "bc9f910bb14858527fd6727cdf4b8278df859faf", + [ + null, + { + "timeout": "long" + } + ] + ], "loaf-iframe-popup.html": [ - "83def5729984f63bcd491152f56c548a54bf0d87", + "565273b6c6adfe610778b050f62030b19a786d87", + [ + null, + { + "timeout": "long" + } + ] + ], + "loaf-promise.html": [ + "226d06a8303410d8a4ba5a116df98fa56a588ad5", + [ + null, + { + "timeout": "long" + } + ] + ], + "loaf-script-block.html": [ + "f896a737ce7cc14af380a772a06146b874a6c74e", + [ + null, + { + "timeout": "long" + } + ] + ], + "loaf-script-window-attribution.html": [ + "001bb537f79dea2b100d274ac83340218da5909f", + [ + null, + { + "timeout": "long" + } + ] + ], + "loaf-supportedEntryTypes.html": [ + "efa01481fa18b935fdace923b039065404a969d1", [ null, { @@ -620829,6 +621304,15 @@ {} ] ], + "loaf-user-callback.html": [ + "bc8fdd05e10f5d03bfdebf266701892e76e9a972", + [ + null, + { + "timeout": "long" + } + ] + ], "loaf-visibility.html": [ "97038e30738d36114fcac0a88fec7a5365509a3b", [ @@ -620838,6 +621322,13 @@ "timeout": "long" } ] + ], + "loaf-window-only.worker.js": [ + "c1f0439c4bda4f68aeeb5e89bb55a4d2a475d62c", + [ + "long-animation-frame/tentative/loaf-window-only.worker.html", + {} + ] ] } }, @@ -620952,7 +621443,7 @@ ] ], "longtask-in-raf.html": [ - "d65f8928186aa11361c1ab79ec21e2865a870368", + "169843a7423068ebda950774dbb189fd45088200", [ null, {} @@ -623804,7 +624295,7 @@ ] ], "MediaRecorder-pause-resume.html": [ - "a1495dcb0c7c84867b257286dc9430454b6adec6", + "84efe52e06b7788d71bc44fbec7c9963216f2734", [ null, {} @@ -626887,7 +627378,7 @@ ] ], "navigation-traverseTo-in-iframe-same-document-preventDefault.html": [ - "d68b11fa7ccae6a3dc6287150cf25fe8d96d93cf", + "463746e8f7977017066e4f9525b7c7a55a04a600", [ null, {} @@ -627843,6 +628334,13 @@ {} ] ], + "traverseTo-detach-cross-document-before-navigate-event.html": [ + "ed319f6223936830c15d36a08e9c782f59bffc1b", + [ + null, + {} + ] + ], "traverseTo-detach-cross-document.html": [ "8784313b70546e49d37e227ec9c0f809990b77d5", [ @@ -627850,6 +628348,13 @@ {} ] ], + "traverseTo-detach-same-document-before-navigate-event.html": [ + "592ac6f19906979ff19b7ae85f7ad9006e8a5f22", + [ + null, + {} + ] + ], "traverseTo-detach-same-document.html": [ "b0308b8df8fe4c3ed975fe16b790c29a0de1891c", [ @@ -627894,14 +628399,14 @@ ] }, "sandboxing-back-parent.html": [ - "bc3d4e2e9fb7e3906e027109fe18d275e5db744e", + "6eee3f917cdc5bfae0491685172da2fff918cdb3", [ null, {} ] ], "sandboxing-back-sibling.html": [ - "718ea6d3ddada0bc73ea965a2969f5fe79642a9c", + "97c03ea0c2fbd84cc1cc8d829bfd352d31981544", [ null, {} @@ -633137,6 +633642,22 @@ ] ] }, + "png": { + "cicp-chunk.html": [ + "4afc262dcf5ead61423a5bea21ae6e6f998a401c", + [ + null, + {} + ] + ], + "trns-chunk.html": [ + "652cda0e32089b7ade4e41c0f69a9637177bd9dd", + [ + null, + {} + ] + ] + }, "pointerevents": { "capturing_boundary_event_handler_at_ua_shadowdom.html": [ "7500277f2251fa300f9af99d52e1f73a943f237c", @@ -633229,6 +633750,15 @@ } ] ], + "pointerevent_mouse-pointer-preventdefault-passive.html": [ + "57da09686602f96da63cf8bb0b740f0862732c91", + [ + null, + { + "testdriver": true + } + ] + ], "pointerevent_mouse-pointer-preventdefault.html": [ "549cbf55d8818291f412a1627765df9611ce614c", [ @@ -651359,7 +651889,7 @@ ] ], "animation-shorthand.html": [ - "60d6c7664672b61a40f4b20e0fa89765d2bf67f4", + "87e66d0f532bf85de5e19e90235e8fc71e7cb11a", [ null, {} @@ -651394,7 +651924,7 @@ ] ], "animation-timeline-named-scroll-progress-timeline.tentative.html": [ - "9f55e2d2c91ff0045ab452cd5e30a3e54d34fe2a", + "30461723386a2e5c0440856664ff49b2cfd380e6", [ null, {} @@ -656202,6 +656732,13 @@ {} ] ], + "import-scripts-data-url.https.html": [ + "f0922193dd0112b72881d05a97aafc67c5bdc3d5", + [ + null, + {} + ] + ], "import-scripts-mime-types.https.html": [ "1679831d0f2b98aee22898d820373e80079fbe00", [ @@ -661512,7 +662049,7 @@ ] ], "requestStorageAccess-cross-origin-iframe-navigation.sub.https.window.js": [ - "67906708aed7676accb91efe2e2cad926c0d4706", + "24595ed340856e0f667dbd2671614e5c23ba712c", [ "storage-access-api/requestStorageAccess-cross-origin-iframe-navigation.sub.https.window.html", { @@ -661769,7 +662306,7 @@ ] ], "storage-access-permission.sub.https.window.js": [ - "4222051c10bdc1c2ad060d7da1abec0ba6ea2f25", + "82794061bd013ced4d8a42f3337fddd6a53d6d0a", [ "storage-access-api/storage-access-permission.sub.https.window.html", { @@ -669278,7 +669815,7 @@ ] ], "requestStorageAccessForOrigin.sub.https.window.js": [ - "76e5bf83b1eed2fb19f6c2ae5547b422dea6d764", + "6fff9e9189e495af43ef0a4c9a087cbc05c7d14c", [ "top-level-storage-access-api/tentative/requestStorageAccessForOrigin.sub.https.window.html", { @@ -682793,7 +683330,7 @@ ] ], "getcredential-prf.https.html": [ - "61b52ac5958c7b242168285ad5e83581b4c1497e", + "40dfc5cad33921e3f5c00865a74cf79e5f81e26e", [ null, { @@ -689328,7 +689865,7 @@ ] ], "RTCPeerConnection-getStats.https.html": [ - "8062618dd6170f81dbeb5af4a43bbcc204d96e95", + "96e763985c059679b1e97b9cfab4399632c9b00b", [ null, { @@ -689713,7 +690250,7 @@ ] ], "RTCRtpReceiver-getStats.https.html": [ - "06d0f0b39bf57814114bd35c68156b89752e0c64", + "b8daf12fc275fb68ef47e1556a9ecd194f5b9e90", [ null, { @@ -689747,7 +690284,7 @@ ] ], "RTCRtpSender-getStats.https.html": [ - "27ac3e952f11d37ad50581465e6d8e8454982677", + "62c01aafa6a959f25bfd072a512ddc4b66ed1878", [ null, { @@ -690569,7 +691106,7 @@ ] ], "RTCRtpTransceiver-headerExtensionControl.html": [ - "770aa49f052f5d5f84185ca6420c674a6dadb765", + "b6dc7da5d4076d113419888e814e445e9dd2c40a", [ null, {} @@ -706793,10 +707330,12 @@ ] ], "Worker_script_mimetype.htm": [ - "4768fe70bcb0bde98c1d0bd3801362e2bcdf3150", + "d2278d3717c2f0c57673c220da49a07d8251d0d5", [ null, - {} + { + "timeout": "long" + } ] ], "Worker_terminate_event_queue.htm": [ @@ -730348,13 +730887,6 @@ {} ] ], - "background-clip-padding-box-with-border-radius.html": [ - "ee98dababbcce0d7fbee2f6b7eaff18bb78341e9", - [ - null, - {} - ] - ], "background-clip-root.html": [ "8f9f5f3ebd50137939e6f006e7cb068aa120863c", [ @@ -734769,6 +735301,31 @@ {} ] ] + }, + "print": { + "context.py": [ + "a73bfee96215621a67456a501f5b7f420cda82ce", + [ + null, + {} + ] + ], + "invalid.py": [ + "114aeb62dcc27474a0869c0964b8dca2e95c8053", + [ + null, + {} + ] + ], + "page_ranges.py": [ + "9e466883b0a6e4381b227b3c8115fd3a6e93879e", + [ + null, + { + "timeout": "long" + } + ] + ] } }, "errors": { @@ -734890,7 +735447,7 @@ }, "call_function": { "arguments.py": [ - "9fbe5fb81101054f9cafe1411a6c9a5937473324", + "daf31fc869c3dab31218b508cf4b24b6a084f78a", [ null, {} @@ -734925,7 +735482,7 @@ ] ], "invalid.py": [ - "cf5a07f41b78b00d688e8c3f8b29259856fa79bb", + "d73705c672470e1fe1986b61808b29eae4aea4d6", [ null, {} @@ -734953,7 +735510,7 @@ ] ], "result_node.py": [ - "08e47be5f714de3a53d39c0dfec45a4d6827fb5a", + "e1575374fd594c24e395a4e5c2f2fdfb6c53b563", [ null, {} @@ -734967,7 +735524,7 @@ ] ], "sandbox.py": [ - "e0a4914d8f6024db9966d6f54e215a237f099285", + "382ede3c7839afcaa625aa56ef2b9d728f7730a3", [ null, {} @@ -734988,6 +735545,15 @@ ] ] }, + "classic_interop": { + "node_shared_id.py": [ + "410d029207c6674c2263a58f875c10d3c7784fdd", + [ + null, + {} + ] + ] + }, "disown": { "handles.py": [ "d4a514576624cd9fce98cf244b00ca39008ba0ee", @@ -735069,7 +735635,7 @@ ] ], "result_node.py": [ - "0d0589a5f3816e4aa64aa275360bee0ee76c5958", + "63915a8f4a4781330583b29fbd62f020a9801c2e", [ null, {} @@ -735083,7 +735649,7 @@ ] ], "sandbox.py": [ - "ba4eb732d16f2bb533af67b1ef15d347b6b6734d", + "3a6771780d5f69af4054cd7fdcac35e8f6139aee", [ null, {} @@ -735299,7 +735865,7 @@ }, "element_clear": { "clear.py": [ - "fa96ed3a58aa0ae81216926e153381ecfe3f2ae8", + "9b0d7f2133f7686603449897c659c7e4220ec746", [ null, { @@ -735333,7 +735899,7 @@ ] ], "click.py": [ - "79be957d1b214527b363d9b35d46af67c7d3f9de", + "3c3f7d70e6c6b23932e7452f73e160a2d213a5ba", [ null, {} @@ -735442,7 +736008,7 @@ ] ], "send_keys.py": [ - "854d2af42ccc8f42735a3e7b6df7217fdb8770b3", + "281c7ad719ddd05dac2ab7c6de343e9bebde4a5b", [ null, {} @@ -735460,7 +736026,7 @@ }, "execute_async_script": { "arguments.py": [ - "55fd9527aea390c7a1a9ae7556022ab854cfc6f9", + "ead6e0c186ea40771643aea56ccc7180e6cc28d7", [ null, {} @@ -735527,7 +736093,7 @@ }, "execute_script": { "arguments.py": [ - "53c49aaa6897dc4f60da317480161c1516a7ec18", + "b8657ce0efae2a266158bb8c2846864cd63c1d5e", [ null, {} @@ -735781,7 +736347,7 @@ }, "get_computed_label": { "get.py": [ - "8124fee0c9dec85f9478b6702b25b4fdece96a8e", + "0dc00a471a9a37509e4ed7a448c1213bb978eeda", [ null, {} @@ -735790,7 +736356,7 @@ }, "get_computed_role": { "get.py": [ - "dcfe753f0dcaf65d6cbd77a074a0039ad0564cde", + "8d15e8fb90ddda39c13836134d179ca7cb5cc7fe", [ null, {} @@ -735831,7 +736397,7 @@ }, "get_element_attribute": { "get.py": [ - "e23d7e4d5abbf2ce430e16816e7d49b740e931fb", + "375f25032c06a10fecf78a884647056fbd826b9d", [ null, {} @@ -735849,7 +736415,7 @@ }, "get_element_css_value": { "get.py": [ - "f9797c2cff51b06818c9d2f9f46efdf321e50504", + "6f0a8a56395788be0f9152028f569f133fcd79ed", [ null, {} @@ -735867,7 +736433,7 @@ }, "get_element_property": { "get.py": [ - "072375804e814cfe2dc0d13e89f3389ec52b674d", + "84e4e89628146e3984ba926a2a9a88fb27fa9f4e", [ null, {} @@ -735885,7 +736451,7 @@ }, "get_element_rect": { "get.py": [ - "7f87b44e7e932b9e5215bb277af12a6be779fc3c", + "942f119f43c9bb30eaefd52f3c793d7e47cfbfc4", [ null, {} @@ -735903,7 +736469,7 @@ }, "get_element_shadow_root": { "get.py": [ - "61d0d008100495a308189e2494184b4490cc6e39", + "d9adde0b9e3aee402aa2e03db9d02259d968e81b", [ null, {} @@ -735921,7 +736487,7 @@ }, "get_element_tag_name": { "get.py": [ - "1bf19309e45888edcbf4483daa4970d81a70dad0", + "3bb03d79886d88c6ba045d9f0bedae7414412025", [ null, {} @@ -735939,7 +736505,7 @@ }, "get_element_text": { "get.py": [ - "aa36c487c809e101029689ef4aa1a1b8f25ec8d0", + "e8d559cf661acee18a39cbc4b6bb03289385ca08", [ null, {} @@ -736090,7 +736656,7 @@ }, "is_element_enabled": { "enabled.py": [ - "34e5cce4197cb2f3d33a34e819119f4581ea3b55", + "fccff383a55a7929179810216407acbdea0a079c", [ null, {} @@ -736108,7 +736674,7 @@ }, "is_element_selected": { "selected.py": [ - "b119705e7dd16fc87f41d17fc6b77c159a5a5a65", + "1fb5b9ce86b521069f638956272e3101ea62cc5c", [ null, {} @@ -736477,7 +737043,7 @@ }, "print": { "printcmd.py": [ - "169e2249a99449d99e44eed55f8565836e139468", + "415786675c5936bb55cf4c6c4b49980407aa0547", [ null, { @@ -736651,7 +737217,7 @@ ] ], "screenshot.py": [ - "deea9514ed48f107196447dbe8f1f660720ba48d", + "ea4cc290db4cdd603d9dc20bbc90914c4e241cb5", [ null, {} diff --git a/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/aes_gcm_256_iv.https.any.js.ini b/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/aes_gcm_256_iv.https.any.js.ini new file mode 100644 index 00000000000..751ae3bdb5b --- /dev/null +++ b/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/aes_gcm_256_iv.https.any.js.ini @@ -0,0 +1,5 @@ +[aes_gcm_256_iv.https.any.worker.html] + expected: ERROR + +[aes_gcm_256_iv.https.any.html] + expected: ERROR diff --git a/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-001.html.ini b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-001.html.ini deleted file mode 100644 index 0842d0b5727..00000000000 --- a/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-001.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[hit-test-floats-001.html] - [hit-test-floats-001] - 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 a057f038339..5e3a96e5999 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,8 +8,5 @@ [[data-expected-height\] 3] expected: FAIL - [[data-expected-height\] 1] - expected: FAIL - - [[data-expected-height\] 2] + [[data-expected-height\] 4] expected: FAIL diff --git a/tests/wpt/metadata/css/CSS2/normal-flow/block-in-inline-hittest-float-002.html.ini b/tests/wpt/metadata/css/CSS2/normal-flow/block-in-inline-hittest-float-002.html.ini deleted file mode 100644 index 3e5096beef3..00000000000 --- a/tests/wpt/metadata/css/CSS2/normal-flow/block-in-inline-hittest-float-002.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[block-in-inline-hittest-float-002.html] - [block-in-inline-hittest-float-002] - expected: FAIL diff --git a/tests/wpt/metadata/css/css-text/line-breaking/segment-break-transformation-unremovable-2.html.ini b/tests/wpt/metadata/css/css-text/line-breaking/segment-break-transformation-unremovable-2.html.ini deleted file mode 100644 index 2a64df11b9a..00000000000 --- a/tests/wpt/metadata/css/css-text/line-breaking/segment-break-transformation-unremovable-2.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[segment-break-transformation-unremovable-2.html] - 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-012.html.ini b/tests/wpt/metadata/css/css-text/white-space/trailing-other-space-separators-break-spaces-012.html.ini new file mode 100644 index 00000000000..c4ec0fbcc2f --- /dev/null +++ b/tests/wpt/metadata/css/css-text/white-space/trailing-other-space-separators-break-spaces-012.html.ini @@ -0,0 +1,2 @@ +[trailing-other-space-separators-break-spaces-012.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-transitions/dynamic-root-element.html.ini b/tests/wpt/metadata/css/css-transitions/dynamic-root-element.html.ini new file mode 100644 index 00000000000..f55fcd9f3a4 --- /dev/null +++ b/tests/wpt/metadata/css/css-transitions/dynamic-root-element.html.ini @@ -0,0 +1,2 @@ +[dynamic-root-element.html] + expected: CRASH 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 cfd069eec6c..442caf6e43f 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 @@ -326,3 +326,303 @@ [margin-right length(mm) / values] expected: [FAIL, PASS] + + [margin-right length(cm) / values] + expected: FAIL + + [margin-right length(in) / values] + expected: FAIL + + [margin-top length(pt) / values] + expected: FAIL + + [margin-top length(pc) / values] + expected: FAIL + + [margin-top length(px) / values] + expected: FAIL + + [margin-top length(em) / values] + expected: FAIL + + [margin-top length(ex) / values] + expected: FAIL + + [margin-top length(mm) / values] + expected: FAIL + + [margin-top length(cm) / values] + expected: FAIL + + [margin-top length(in) / values] + expected: FAIL + + [height length(pt) / values] + expected: FAIL + + [height length(pc) / values] + expected: FAIL + + [height length(px) / values] + expected: FAIL + + [height length(em) / values] + expected: FAIL + + [height length(ex) / values] + expected: FAIL + + [height length(mm) / values] + expected: FAIL + + [height length(cm) / values] + expected: FAIL + + [height length(in) / values] + expected: FAIL + + [height percentage(%) / values] + expected: FAIL + + [width length(pt) / values] + expected: FAIL + + [width length(pc) / values] + expected: FAIL + + [width length(px) / values] + expected: FAIL + + [width length(em) / values] + expected: FAIL + + [width length(ex) / values] + expected: FAIL + + [width length(mm) / values] + expected: FAIL + + [width length(cm) / values] + expected: FAIL + + [width length(in) / values] + expected: FAIL + + [width percentage(%) / values] + expected: FAIL + + [min-height length(pt) / values] + expected: FAIL + + [min-height length(pc) / values] + expected: FAIL + + [min-height length(px) / values] + expected: FAIL + + [min-height length(em) / values] + expected: FAIL + + [min-height length(ex) / values] + expected: FAIL + + [min-height length(mm) / values] + expected: FAIL + + [min-height length(cm) / values] + expected: FAIL + + [min-height length(in) / values] + expected: FAIL + + [min-height percentage(%) / values] + expected: FAIL + + [min-width length(pt) / values] + expected: FAIL + + [min-width length(pc) / values] + expected: FAIL + + [min-width length(px) / values] + expected: FAIL + + [min-width length(em) / values] + expected: FAIL + + [min-width length(ex) / values] + expected: FAIL + + [min-width length(mm) / values] + expected: FAIL + + [min-width length(cm) / values] + expected: FAIL + + [min-width length(in) / values] + expected: FAIL + + [min-width percentage(%) / values] + expected: FAIL + + [max-height length(pt) / values] + expected: FAIL + + [max-height length(pc) / values] + expected: FAIL + + [max-height length(px) / values] + expected: FAIL + + [max-height length(em) / values] + expected: FAIL + + [color color(rgba) / values] + expected: FAIL + + [font-size length(pt) / values] + expected: FAIL + + [font-size length(pc) / values] + expected: FAIL + + [font-size length(px) / values] + expected: FAIL + + [font-size length(em) / values] + expected: FAIL + + [font-size length(ex) / values] + expected: FAIL + + [font-size length(mm) / values] + expected: FAIL + + [font-size length(cm) / values] + expected: FAIL + + [font-size length(in) / values] + expected: FAIL + + [font-size percentage(%) / values] + expected: FAIL + + [font-weight font-weight(keyword) / values] + expected: FAIL + + [font-weight font-weight(numeric) / values] + expected: FAIL + + [line-height number(integer) / values] + expected: FAIL + + [line-height number(decimal) / values] + expected: FAIL + + [line-height length(pt) / values] + expected: FAIL + + [line-height length(pc) / values] + expected: FAIL + + [line-height length(px) / values] + expected: FAIL + + [line-height length(em) / values] + expected: FAIL + + [line-height length(ex) / values] + expected: FAIL + + [line-height length(mm) / values] + expected: FAIL + + [line-height length(cm) / values] + expected: FAIL + + [line-height length(in) / values] + expected: FAIL + + [line-height percentage(%) / values] + expected: FAIL + + [letter-spacing length(pt) / values] + expected: FAIL + + [letter-spacing length(pc) / values] + expected: FAIL + + [letter-spacing length(px) / values] + expected: FAIL + + [letter-spacing length(em) / values] + expected: FAIL + + [letter-spacing length(ex) / values] + expected: FAIL + + [letter-spacing length(mm) / values] + expected: FAIL + + [letter-spacing length(cm) / values] + expected: FAIL + + [letter-spacing length(in) / values] + expected: FAIL + + [word-spacing length(pt) / values] + expected: FAIL + + [word-spacing length(pc) / values] + expected: FAIL + + [word-spacing length(px) / values] + expected: FAIL + + [word-spacing length(em) / values] + expected: FAIL + + [word-spacing length(ex) / values] + expected: FAIL + + [word-spacing length(mm) / values] + expected: FAIL + + [word-spacing length(cm) / values] + expected: FAIL + + [word-spacing length(in) / values] + expected: FAIL + + [word-spacing percentage(%) / values] + expected: FAIL + + [text-indent length(pt) / values] + expected: FAIL + + [text-indent length(pc) / values] + expected: FAIL + + [text-indent length(px) / values] + expected: FAIL + + [text-indent length(em) / values] + expected: FAIL + + [text-indent length(ex) / values] + expected: FAIL + + [text-indent length(mm) / values] + expected: FAIL + + [text-indent length(cm) / values] + expected: FAIL + + [text-indent length(in) / values] + expected: FAIL + + [text-indent percentage(%) / values] + expected: FAIL + + [text-shadow shadow(shadow) / values] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-values/calc-infinity-nan-serialize-time.html.ini b/tests/wpt/metadata/css/css-values/calc-infinity-nan-serialize-time.html.ini index 6af7d919ad8..b24f2c792bb 100644 --- a/tests/wpt/metadata/css/css-values/calc-infinity-nan-serialize-time.html.ini +++ b/tests/wpt/metadata/css/css-values/calc-infinity-nan-serialize-time.html.ini @@ -82,3 +82,6 @@ ['calc(1s * clamp(-inFinity, infinity, 10))' as a specified value should serialize as 'calc(10s)'.] expected: FAIL + + ['calc(1ms * NaN)' as a specified value should serialize as 'calc(NaN * 1s)'.] + expected: FAIL diff --git a/tests/wpt/metadata/css/cssom-view/CaretPosition-001.html.ini b/tests/wpt/metadata/css/cssom-view/CaretPosition-001.html.ini new file mode 100644 index 00000000000..f18b8d2fcf9 --- /dev/null +++ b/tests/wpt/metadata/css/cssom-view/CaretPosition-001.html.ini @@ -0,0 +1,3 @@ +[CaretPosition-001.html] + [Element at (400, 100)] + 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 new file mode 100644 index 00000000000..b905fe70fcb --- /dev/null +++ b/tests/wpt/metadata/css/cssom-view/elementFromPoint-ellipsis-in-inline-box.html.ini @@ -0,0 +1,3 @@ +[elementFromPoint-ellipsis-in-inline-box.html] + [elementFromPoint-ellipsis-in-inline-box] + expected: FAIL diff --git a/tests/wpt/metadata/css/cssom-view/elementFromPoint-list-001.html.ini b/tests/wpt/metadata/css/cssom-view/elementFromPoint-list-001.html.ini index 8ae9bae3500..390e170437a 100644 --- a/tests/wpt/metadata/css/cssom-view/elementFromPoint-list-001.html.ini +++ b/tests/wpt/metadata/css/cssom-view/elementFromPoint-list-001.html.ini @@ -13,3 +13,15 @@ [<li>Outside 3</li>] expected: FAIL + + [<li>Inside 2</li>] + expected: FAIL + + [<li>Inside 3</li>] + expected: FAIL + + [<li>Image Inside 1</li>] + expected: FAIL + + [<li>Image Inside 2</li>] + expected: FAIL diff --git a/tests/wpt/metadata/css/cssom-view/elementFromPoint-subpixel.html.ini b/tests/wpt/metadata/css/cssom-view/elementFromPoint-subpixel.html.ini deleted file mode 100644 index 8f6f663ba61..00000000000 --- a/tests/wpt/metadata/css/cssom-view/elementFromPoint-subpixel.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[elementFromPoint-subpixel.html] - [Hit test top left corner of box] - expected: FAIL diff --git a/tests/wpt/metadata/css/cssom-view/elementFromPoint-visibility-hidden-resizer.html.ini b/tests/wpt/metadata/css/cssom-view/elementFromPoint-visibility-hidden-resizer.html.ini new file mode 100644 index 00000000000..a6bca7ac372 --- /dev/null +++ b/tests/wpt/metadata/css/cssom-view/elementFromPoint-visibility-hidden-resizer.html.ini @@ -0,0 +1,3 @@ +[elementFromPoint-visibility-hidden-resizer.html] + [elementFromPoint on resizer area of an element with visibility:hidden] + expected: FAIL diff --git a/tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini b/tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini index ceb43099040..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/custom-elements/reactions/HTMLElement.html.ini b/tests/wpt/metadata/custom-elements/reactions/HTMLElement.html.ini index 0edb8845eed..6b36b7c0d59 100644 --- a/tests/wpt/metadata/custom-elements/reactions/HTMLElement.html.ini +++ b/tests/wpt/metadata/custom-elements/reactions/HTMLElement.html.ini @@ -41,3 +41,9 @@ [outerText on HTMLElement must enqueue a disconnected reaction] expected: FAIL + + [popover on HTMLElement must enqueue an attributeChanged reaction when adding popover content attribute] + expected: FAIL + + [popover on HTMLElement must enqueue an attributeChanged reaction when replacing an existing attribute] + expected: FAIL diff --git a/tests/wpt/metadata/fetch/private-network-access/fetch-from-treat-as-public.https.window.js.ini b/tests/wpt/metadata/fetch/local-network-access/fetch-from-treat-as-public.https.window.js.ini index 6a6b5a69797..6a6b5a69797 100644 --- a/tests/wpt/metadata/fetch/private-network-access/fetch-from-treat-as-public.https.window.js.ini +++ b/tests/wpt/metadata/fetch/local-network-access/fetch-from-treat-as-public.https.window.js.ini diff --git a/tests/wpt/metadata/fetch/private-network-access/fetch.https.window.js.ini b/tests/wpt/metadata/fetch/local-network-access/fetch.https.window.js.ini index b900b72b643..4d6c6cb1bb0 100644 --- a/tests/wpt/metadata/fetch/private-network-access/fetch.https.window.js.ini +++ b/tests/wpt/metadata/fetch/local-network-access/fetch.https.window.js.ini @@ -1,5 +1,3 @@ -[fetch.https.window.html?include=from-local] - [fetch.https.window.html?include=baseline] [local to public: PUT preflight failure.] expected: FAIL @@ -55,6 +53,8 @@ expected: FAIL +[fetch.https.window.html?include=from-local] + [fetch.https.window.html?include=from-private] [private to local: failed preflight.] expected: FAIL @@ -79,17 +79,3 @@ [private to local: no-CORS mode missing PNA header on preflight response.] expected: FAIL - - -[fetch.https.window.html?include=from-treat-as-public] - [treat-as-public-address to local: failed preflight.] - expected: FAIL - - [treat-as-public-address to local: success.] - expected: FAIL - - [treat-as-public-address to private: failed preflight.] - expected: FAIL - - [treat-as-public-address to private: success.] - expected: FAIL diff --git a/tests/wpt/metadata/fetch/private-network-access/fetch.window.js.ini b/tests/wpt/metadata/fetch/local-network-access/fetch.window.js.ini index 7f186d41c92..7f186d41c92 100644 --- a/tests/wpt/metadata/fetch/private-network-access/fetch.window.js.ini +++ b/tests/wpt/metadata/fetch/local-network-access/fetch.window.js.ini diff --git a/tests/wpt/metadata/fetch/private-network-access/iframe.tentative.https.window.js.ini b/tests/wpt/metadata/fetch/local-network-access/iframe.tentative.https.window.js.ini index 5b0348afa74..5b0348afa74 100644 --- a/tests/wpt/metadata/fetch/private-network-access/iframe.tentative.https.window.js.ini +++ b/tests/wpt/metadata/fetch/local-network-access/iframe.tentative.https.window.js.ini diff --git a/tests/wpt/metadata/fetch/private-network-access/iframe.tentative.window.js.ini b/tests/wpt/metadata/fetch/local-network-access/iframe.tentative.window.js.ini index ca42692a9d7..ca42692a9d7 100644 --- a/tests/wpt/metadata/fetch/private-network-access/iframe.tentative.window.js.ini +++ b/tests/wpt/metadata/fetch/local-network-access/iframe.tentative.window.js.ini diff --git a/tests/wpt/metadata/fetch/local-network-access/mixed-content-fetch.tentative.https.window.js.ini b/tests/wpt/metadata/fetch/local-network-access/mixed-content-fetch.tentative.https.window.js.ini new file mode 100644 index 00000000000..87f9c6b6f17 --- /dev/null +++ b/tests/wpt/metadata/fetch/local-network-access/mixed-content-fetch.tentative.https.window.js.ini @@ -0,0 +1,135 @@ +[mixed-content-fetch.tentative.https.window.html] + [https-loopback to http-loopback: wrong targetAddressSpace "unknown".] + expected: FAIL + + [https-loopback to http-loopback: wrong targetAddressSpace "local".] + expected: FAIL + + [https-loopback to http-loopback: wrong targetAddressSpace "public".] + expected: FAIL + + [https-loopback to http-loopback: not a local network request.] + expected: FAIL + + [https-loopback to http-local: wrong targetAddressSpace "unknown".] + expected: FAIL + + [https-loopback to http-local: wrong targetAddressSpace "loopback".] + expected: FAIL + + [https-loopback to http-local: wrong targetAddressSpace "public".] + expected: FAIL + + [https-loopback to http-local: not a local network request.] + expected: FAIL + + [https-loopback to http-public: wrong targetAddressSpace "unknown".] + expected: FAIL + + [https-loopback to http-public: wrong targetAddressSpace "loopback".] + expected: FAIL + + [https-loopback to http-public: wrong targetAddressSpace "local".] + expected: FAIL + + [https-loopback to http-public: not a local network request.] + expected: FAIL + + [https-local to http-loopback: missing targetAddressSpace.] + expected: FAIL + + [https-local to http-loopback: wrong targetAddressSpace "unknown".] + expected: FAIL + + [https-local to http-loopback: wrong targetAddressSpace "local".] + expected: FAIL + + [https-local to http-loopback: wrong targetAddressSpace "public".] + expected: FAIL + + [https-local to http-loopback: failed preflight.] + expected: FAIL + + [https-local to http-loopback: success.] + expected: FAIL + + [https-local to http-local: wrong targetAddressSpace "unknown".] + expected: FAIL + + [https-local to http-local: wrong targetAddressSpace "loopback".] + expected: FAIL + + [https-local to http-local: wrong targetAddressSpace "public".] + expected: FAIL + + [https-local to http-local: not a local network request.] + expected: FAIL + + [https-local to http-public: wrong targetAddressSpace "unknown".] + expected: FAIL + + [https-local to http-public: wrong targetAddressSpace "loopback".] + expected: FAIL + + [https-local to http-public: wrong targetAddressSpace "local".] + expected: FAIL + + [https-local to http-public: not a local network request.] + expected: FAIL + + [https-public to http-loopback: missing targetAddressSpace.] + expected: FAIL + + [https-public to http-loopback: wrong targetAddressSpace "unknown".] + expected: FAIL + + [https-public to http-loopback: wrong targetAddressSpace "local".] + expected: FAIL + + [https-public to http-loopback: wrong targetAddressSpace "public".] + expected: FAIL + + [https-public to http-loopback: failed preflight.] + expected: FAIL + + [https-public to http-loopback: success.] + expected: FAIL + + [https-public to http-local: missing targetAddressSpace.] + expected: FAIL + + [https-public to http-local: wrong targetAddressSpace "unknown".] + expected: FAIL + + [https-public to http-local: wrong targetAddressSpace "loopback".] + expected: FAIL + + [https-public to http-local: wrong targetAddressSpace "public".] + expected: FAIL + + [https-public to http-local: failed preflight.] + expected: FAIL + + [https-public to http-local: success.] + expected: FAIL + + [https-public to http-public: wrong targetAddressSpace "unknown".] + expected: FAIL + + [https-public to http-public: wrong targetAddressSpace "loopback".] + expected: FAIL + + [https-public to http-public: wrong targetAddressSpace "local".] + expected: FAIL + + [https-public to http-public: not a local network request.] + expected: FAIL + + [https-treat-as-public to http-loopback: wrong targetAddressSpace "local".] + expected: FAIL + + [https-treat-as-public to http-local: wrong targetAddressSpace "loopback".] + expected: FAIL + + [https-treat-as-public to http-local: success.] + expected: FAIL diff --git a/tests/wpt/metadata/fetch/private-network-access/nested-worker.https.window.js.ini b/tests/wpt/metadata/fetch/local-network-access/nested-worker.https.window.js.ini index a9b78417a52..a9b78417a52 100644 --- a/tests/wpt/metadata/fetch/private-network-access/nested-worker.https.window.js.ini +++ b/tests/wpt/metadata/fetch/local-network-access/nested-worker.https.window.js.ini diff --git a/tests/wpt/metadata/fetch/private-network-access/nested-worker.window.js.ini b/tests/wpt/metadata/fetch/local-network-access/nested-worker.window.js.ini index 3e9038297b0..3e9038297b0 100644 --- a/tests/wpt/metadata/fetch/private-network-access/nested-worker.window.js.ini +++ b/tests/wpt/metadata/fetch/local-network-access/nested-worker.window.js.ini diff --git a/tests/wpt/metadata/fetch/private-network-access/preflight-cache.https.window.js.ini b/tests/wpt/metadata/fetch/local-network-access/preflight-cache.https.window.js.ini index 552ad51cc01..552ad51cc01 100644 --- a/tests/wpt/metadata/fetch/private-network-access/preflight-cache.https.window.js.ini +++ b/tests/wpt/metadata/fetch/local-network-access/preflight-cache.https.window.js.ini diff --git a/tests/wpt/metadata/fetch/private-network-access/redirect.https.window.js.ini b/tests/wpt/metadata/fetch/local-network-access/redirect.https.window.js.ini index 88e8e246059..88e8e246059 100644 --- a/tests/wpt/metadata/fetch/private-network-access/redirect.https.window.js.ini +++ b/tests/wpt/metadata/fetch/local-network-access/redirect.https.window.js.ini diff --git a/tests/wpt/metadata/fetch/private-network-access/service-worker-background-fetch.https.window.js.ini b/tests/wpt/metadata/fetch/local-network-access/service-worker-background-fetch.https.window.js.ini index 8835e5da97f..8835e5da97f 100644 --- a/tests/wpt/metadata/fetch/private-network-access/service-worker-background-fetch.https.window.js.ini +++ b/tests/wpt/metadata/fetch/local-network-access/service-worker-background-fetch.https.window.js.ini diff --git a/tests/wpt/metadata/fetch/private-network-access/service-worker-fetch.https.window.js.ini b/tests/wpt/metadata/fetch/local-network-access/service-worker-fetch.https.window.js.ini index fdafb082080..fdafb082080 100644 --- a/tests/wpt/metadata/fetch/private-network-access/service-worker-fetch.https.window.js.ini +++ b/tests/wpt/metadata/fetch/local-network-access/service-worker-fetch.https.window.js.ini diff --git a/tests/wpt/metadata/fetch/private-network-access/service-worker-update.https.window.js.ini b/tests/wpt/metadata/fetch/local-network-access/service-worker-update.https.window.js.ini index 3aa79df2da4..3aa79df2da4 100644 --- a/tests/wpt/metadata/fetch/private-network-access/service-worker-update.https.window.js.ini +++ b/tests/wpt/metadata/fetch/local-network-access/service-worker-update.https.window.js.ini diff --git a/tests/wpt/metadata/fetch/private-network-access/service-worker.https.window.js.ini b/tests/wpt/metadata/fetch/local-network-access/service-worker.https.window.js.ini index 4ba4f613562..4ba4f613562 100644 --- a/tests/wpt/metadata/fetch/private-network-access/service-worker.https.window.js.ini +++ b/tests/wpt/metadata/fetch/local-network-access/service-worker.https.window.js.ini diff --git a/tests/wpt/metadata/fetch/private-network-access/shared-worker-blob-fetch.https.window.js.ini b/tests/wpt/metadata/fetch/local-network-access/shared-worker-blob-fetch.https.window.js.ini index 2761ecc3254..2761ecc3254 100644 --- a/tests/wpt/metadata/fetch/private-network-access/shared-worker-blob-fetch.https.window.js.ini +++ b/tests/wpt/metadata/fetch/local-network-access/shared-worker-blob-fetch.https.window.js.ini diff --git a/tests/wpt/metadata/fetch/private-network-access/shared-worker-blob-fetch.window.js.ini b/tests/wpt/metadata/fetch/local-network-access/shared-worker-blob-fetch.window.js.ini index 4a32995af78..4a32995af78 100644 --- a/tests/wpt/metadata/fetch/private-network-access/shared-worker-blob-fetch.window.js.ini +++ b/tests/wpt/metadata/fetch/local-network-access/shared-worker-blob-fetch.window.js.ini diff --git a/tests/wpt/metadata/fetch/private-network-access/shared-worker-fetch.https.window.js.ini b/tests/wpt/metadata/fetch/local-network-access/shared-worker-fetch.https.window.js.ini index 22b714229e3..531ee59cc61 100644 --- a/tests/wpt/metadata/fetch/private-network-access/shared-worker-fetch.https.window.js.ini +++ b/tests/wpt/metadata/fetch/local-network-access/shared-worker-fetch.https.window.js.ini @@ -27,15 +27,6 @@ [public to public: success.] expected: NOTRUN - [treat-as-public to local: failure.] - expected: NOTRUN - - [treat-as-public to private: failure.] - expected: NOTRUN - - [treat-as-public to public: success.] - expected: NOTRUN - [treat-as-public to local: failed preflight.] expected: NOTRUN @@ -47,3 +38,6 @@ [treat-as-public to private: success.] expected: NOTRUN + + [treat-as-public to public: success.] + expected: NOTRUN diff --git a/tests/wpt/metadata/fetch/private-network-access/shared-worker-fetch.window.js.ini b/tests/wpt/metadata/fetch/local-network-access/shared-worker-fetch.window.js.ini index f0099d7d57f..d1acbafe5bf 100644 --- a/tests/wpt/metadata/fetch/private-network-access/shared-worker-fetch.window.js.ini +++ b/tests/wpt/metadata/fetch/local-network-access/shared-worker-fetch.window.js.ini @@ -27,20 +27,14 @@ [treat-as-public to public: success.] expected: NOTRUN - [private https to local: failure.] + [local https to local: success.] expected: NOTRUN - [pubiic https to local: failure.] + [private https to local: failure.] expected: NOTRUN [public https to local: failure.] expected: NOTRUN - [local https to local: failure.] - expected: NOTRUN - - [local https to local: success.] - expected: NOTRUN - [public https to private: failure.] expected: NOTRUN diff --git a/tests/wpt/metadata/fetch/private-network-access/shared-worker.https.window.js.ini b/tests/wpt/metadata/fetch/local-network-access/shared-worker.https.window.js.ini index 612a764cb13..612a764cb13 100644 --- a/tests/wpt/metadata/fetch/private-network-access/shared-worker.https.window.js.ini +++ b/tests/wpt/metadata/fetch/local-network-access/shared-worker.https.window.js.ini diff --git a/tests/wpt/metadata/fetch/private-network-access/shared-worker.window.js.ini b/tests/wpt/metadata/fetch/local-network-access/shared-worker.window.js.ini index fc70a5d539e..fc70a5d539e 100644 --- a/tests/wpt/metadata/fetch/private-network-access/shared-worker.window.js.ini +++ b/tests/wpt/metadata/fetch/local-network-access/shared-worker.window.js.ini diff --git a/tests/wpt/metadata/fetch/private-network-access/websocket.window.js.ini b/tests/wpt/metadata/fetch/local-network-access/websocket.window.js.ini index fa8c34f6050..fa8c34f6050 100644 --- a/tests/wpt/metadata/fetch/private-network-access/websocket.window.js.ini +++ b/tests/wpt/metadata/fetch/local-network-access/websocket.window.js.ini diff --git a/tests/wpt/metadata/fetch/private-network-access/worker-blob-fetch.window.js.ini b/tests/wpt/metadata/fetch/local-network-access/worker-blob-fetch.window.js.ini index 03a7b6f1d92..25ca088668d 100644 --- a/tests/wpt/metadata/fetch/private-network-access/worker-blob-fetch.window.js.ini +++ b/tests/wpt/metadata/fetch/local-network-access/worker-blob-fetch.window.js.ini @@ -1,4 +1,7 @@ [worker-blob-fetch.window.html] + [local to local: success.] + expected: FAIL + [private to local: failure.] expected: FAIL @@ -11,6 +14,9 @@ [public to private: failure.] expected: FAIL + [public to public: success.] + expected: FAIL + [treat-as-public to local: failure.] expected: FAIL @@ -20,18 +26,6 @@ [treat-as-public to public: success.] expected: FAIL - [public https to private: failure.] - expected: FAIL - - [public https to local: failure.] - expected: FAIL - - [private https to local: failure.] - expected: FAIL - - [local to local: success.] - expected: FAIL - [local https to local https: success.] expected: FAIL @@ -43,6 +37,3 @@ [public https to local https: failure.] expected: FAIL - - [public to public: success.] - expected: FAIL diff --git a/tests/wpt/metadata/fetch/private-network-access/worker-fetch.https.window.js.ini b/tests/wpt/metadata/fetch/local-network-access/worker-fetch.https.window.js.ini index 6cd5a624687..9a23a9e10af 100644 --- a/tests/wpt/metadata/fetch/private-network-access/worker-fetch.https.window.js.ini +++ b/tests/wpt/metadata/fetch/local-network-access/worker-fetch.https.window.js.ini @@ -17,9 +17,6 @@ [public to private: success.] expected: FAIL - [treat-as-public to local: failure.] - expected: FAIL - [treat-as-public to local: failed preflight.] expected: FAIL diff --git a/tests/wpt/metadata/fetch/private-network-access/worker-fetch.window.js.ini b/tests/wpt/metadata/fetch/local-network-access/worker-fetch.window.js.ini index 7877d69e75b..3117a884c7c 100644 --- a/tests/wpt/metadata/fetch/private-network-access/worker-fetch.window.js.ini +++ b/tests/wpt/metadata/fetch/local-network-access/worker-fetch.window.js.ini @@ -1,7 +1,4 @@ [worker-fetch.window.html] - [treat-as-public to local: failure.] - expected: FAIL - [private to local: failure.] expected: FAIL @@ -11,6 +8,9 @@ [public to private: failure.] expected: FAIL + [treat-as-public to local: failure.] + expected: FAIL + [treat-as-public to private: failure.] expected: FAIL diff --git a/tests/wpt/metadata/fetch/private-network-access/worker.https.window.js.ini b/tests/wpt/metadata/fetch/local-network-access/worker.https.window.js.ini index b5f3516a4d3..b5f3516a4d3 100644 --- a/tests/wpt/metadata/fetch/private-network-access/worker.https.window.js.ini +++ b/tests/wpt/metadata/fetch/local-network-access/worker.https.window.js.ini diff --git a/tests/wpt/metadata/fetch/private-network-access/worker.window.js.ini b/tests/wpt/metadata/fetch/local-network-access/worker.window.js.ini index cc55ff5bf19..cc55ff5bf19 100644 --- a/tests/wpt/metadata/fetch/private-network-access/worker.window.js.ini +++ b/tests/wpt/metadata/fetch/local-network-access/worker.window.js.ini diff --git a/tests/wpt/metadata/fetch/private-network-access/xhr-from-treat-as-public.https.window.js.ini b/tests/wpt/metadata/fetch/local-network-access/xhr-from-treat-as-public.https.window.js.ini index ed26f02f650..ed26f02f650 100644 --- a/tests/wpt/metadata/fetch/private-network-access/xhr-from-treat-as-public.https.window.js.ini +++ b/tests/wpt/metadata/fetch/local-network-access/xhr-from-treat-as-public.https.window.js.ini diff --git a/tests/wpt/metadata/fetch/private-network-access/xhr.https.window.js.ini b/tests/wpt/metadata/fetch/local-network-access/xhr.https.window.js.ini index 08c2eedd219..55c3b9c0f4a 100644 --- a/tests/wpt/metadata/fetch/private-network-access/xhr.https.window.js.ini +++ b/tests/wpt/metadata/fetch/local-network-access/xhr.https.window.js.ini @@ -8,20 +8,6 @@ expected: FAIL -[xhr.https.window.html?include=from-treat-as-public] - [treat-as-public to local: failed preflight.] - expected: FAIL - - [treat-as-public to local: success.] - expected: FAIL - - [treat-as-public to private: failed preflight.] - expected: FAIL - - [treat-as-public to private: success.] - expected: FAIL - - [xhr.https.window.html?include=from-public] [public to local: failed preflight.] expected: FAIL diff --git a/tests/wpt/metadata/fetch/private-network-access/xhr.window.js.ini b/tests/wpt/metadata/fetch/local-network-access/xhr.window.js.ini index 341bf6fc075..5b0e01c0942 100644 --- a/tests/wpt/metadata/fetch/private-network-access/xhr.window.js.ini +++ b/tests/wpt/metadata/fetch/local-network-access/xhr.window.js.ini @@ -1,7 +1,4 @@ [xhr.window.html] - [treat-as-public-address to local: failure.] - expected: FAIL - [private to local: failure.] expected: FAIL @@ -11,6 +8,9 @@ [public to private: failure.] expected: FAIL + [treat-as-public-address to local: failure.] + expected: FAIL + [treat-as-public-address to private: failure.] 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..0d48169e3cc 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 + + [background-image sec-fetch-site - HTTPS downgrade (header not sent)] + expected: TIMEOUT diff --git a/tests/wpt/metadata/fetch/private-network-access/mixed-content-fetch.tentative.https.window.js.ini b/tests/wpt/metadata/fetch/private-network-access/mixed-content-fetch.tentative.https.window.js.ini deleted file mode 100644 index 061d0a797f4..00000000000 --- a/tests/wpt/metadata/fetch/private-network-access/mixed-content-fetch.tentative.https.window.js.ini +++ /dev/null @@ -1,135 +0,0 @@ -[mixed-content-fetch.tentative.https.window.html] - [https-local to http-local: wrong targetAddressSpace "unknown".] - expected: FAIL - - [https-local to http-local: wrong targetAddressSpace "private".] - expected: FAIL - - [https-local to http-local: wrong targetAddressSpace "public".] - expected: FAIL - - [https-local to http-local: not a private network request.] - expected: FAIL - - [https-local to http-private: wrong targetAddressSpace "unknown".] - expected: FAIL - - [https-local to http-private: wrong targetAddressSpace "local".] - expected: FAIL - - [https-local to http-private: wrong targetAddressSpace "public".] - expected: FAIL - - [https-local to http-private: not a private network request.] - expected: FAIL - - [https-local to http-public: wrong targetAddressSpace "unknown".] - expected: FAIL - - [https-local to http-public: wrong targetAddressSpace "local".] - expected: FAIL - - [https-local to http-public: wrong targetAddressSpace "private".] - expected: FAIL - - [https-local to http-public: not a private network request.] - expected: FAIL - - [https-private to http-local: missing targetAddressSpace.] - expected: FAIL - - [https-private to http-local: wrong targetAddressSpace "unknown".] - expected: FAIL - - [https-private to http-local: wrong targetAddressSpace "private".] - expected: FAIL - - [https-private to http-local: wrong targetAddressSpace "public".] - expected: FAIL - - [https-private to http-local: failed preflight.] - expected: FAIL - - [https-private to http-local: success.] - expected: FAIL - - [https-private to http-private: wrong targetAddressSpace "unknown".] - expected: FAIL - - [https-private to http-private: wrong targetAddressSpace "local".] - expected: FAIL - - [https-private to http-private: wrong targetAddressSpace "public".] - expected: FAIL - - [https-private to http-private: not a private network request.] - expected: FAIL - - [https-private to http-public: wrong targetAddressSpace "unknown".] - expected: FAIL - - [https-private to http-public: wrong targetAddressSpace "local".] - expected: FAIL - - [https-private to http-public: wrong targetAddressSpace "private".] - expected: FAIL - - [https-private to http-public: not a private network request.] - expected: FAIL - - [https-public to http-local: missing targetAddressSpace.] - expected: FAIL - - [https-public to http-local: wrong targetAddressSpace "unknown".] - expected: FAIL - - [https-public to http-local: wrong targetAddressSpace "private".] - expected: FAIL - - [https-public to http-local: wrong targetAddressSpace "public".] - expected: FAIL - - [https-public to http-local: failed preflight.] - expected: FAIL - - [https-public to http-local: success.] - expected: FAIL - - [https-public to http-private: missing targetAddressSpace.] - expected: FAIL - - [https-public to http-private: wrong targetAddressSpace "unknown".] - expected: FAIL - - [https-public to http-private: wrong targetAddressSpace "local".] - expected: FAIL - - [https-public to http-private: wrong targetAddressSpace "public".] - expected: FAIL - - [https-public to http-private: failed preflight.] - expected: FAIL - - [https-public to http-private: success.] - expected: FAIL - - [https-public to http-public: wrong targetAddressSpace "unknown".] - expected: FAIL - - [https-public to http-public: wrong targetAddressSpace "local".] - expected: FAIL - - [https-public to http-public: wrong targetAddressSpace "private".] - expected: FAIL - - [https-public to http-public: not a private network request.] - expected: FAIL - - [https-treat-as-public to http-local: wrong targetAddressSpace "private".] - expected: FAIL - - [https-treat-as-public to http-private: wrong targetAddressSpace "local".] - expected: FAIL - - [https-treat-as-public to http-private: success.] - expected: FAIL diff --git a/tests/wpt/metadata/html/anonymous-iframe/worker-cookies.tentative.https.window.js.ini b/tests/wpt/metadata/html/anonymous-iframe/worker-cookies.tentative.https.window.js.ini new file mode 100644 index 00000000000..1ac26e08597 --- /dev/null +++ b/tests/wpt/metadata/html/anonymous-iframe/worker-cookies.tentative.https.window.js.ini @@ -0,0 +1,21 @@ +[worker-cookies.tentative.https.window.html?worker=shared_worker] + expected: TIMEOUT + [Worker spawned from normal iframe can access global cookies] + expected: TIMEOUT + + [Worker spawned from credentialless iframe can't access global cookies] + expected: NOTRUN + + +[worker-cookies.tentative.https.window.html?worker=service_worker] + expected: TIMEOUT + [Worker spawned from normal iframe can access global cookies] + expected: TIMEOUT + + [Worker spawned from credentialless iframe can't access global cookies] + expected: NOTRUN + + +[worker-cookies.tentative.https.window.html?worker=dedicated_worker] + [Worker spawned from credentialless iframe can't access global cookies] + expected: FAIL diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/scroll-restoration-fragment-scrolling-cross-origin.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/scroll-restoration-fragment-scrolling-cross-origin.html.ini index 6e9f7acf151..c8a3c8f9e68 100644 --- a/tests/wpt/metadata/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/scroll-restoration-fragment-scrolling-cross-origin.html.ini +++ b/tests/wpt/metadata/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/scroll-restoration-fragment-scrolling-cross-origin.html.ini @@ -1,6 +1,6 @@ [scroll-restoration-fragment-scrolling-cross-origin.html] type: testharness - expected: TIMEOUT + expected: ERROR [Manual scroll restoration should take precedent over scrolling to fragment in cross origin navigation] expected: TIMEOUT diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/005.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/005.html.ini index f7ee5361549..33efcdbcf48 100644 --- a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/005.html.ini +++ b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/005.html.ini @@ -1,4 +1,3 @@ [005.html] - expected: TIMEOUT [Link with onclick navigation and href navigation ] expected: FAIL diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-src-aboutblank-navigate-immediately.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-src-aboutblank-navigate-immediately.html.ini index dc1144214ef..dd7320bb46e 100644 --- a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-src-aboutblank-navigate-immediately.html.ini +++ b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-src-aboutblank-navigate-immediately.html.ini @@ -1,9 +1,10 @@ [iframe-src-aboutblank-navigate-immediately.html] + expected: TIMEOUT [Navigating to a different document with window.open] expected: FAIL [Navigating to a different document with form submission] - expected: FAIL + expected: NOTRUN [Navigating to a different document with link click] - expected: FAIL + 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 8ae58f9f1e2..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 @@ -16,6 +16,3 @@ [D83D DE0D set in href="" targeting a frame and clicked] expected: FAIL - - [DE0D 0041 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 27889a98fb5..24d2f8ac554 100644 --- a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/navigate-to-unparseable-url.html.ini +++ b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/navigate-to-unparseable-url.html.ini @@ -1,6 +1,3 @@ [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-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 deleted file mode 100644 index d993e8dcc42..00000000000 --- a/tests/wpt/metadata/html/browsers/browsing-the-web/read-media/pageload-image-in-popup.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[pageload-image-in-popup.html] - [The document for a standalone media file should have one child in the body.] - 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/browsers/windows/auxiliary-browsing-contexts/opener-setter.html.ini b/tests/wpt/metadata/html/browsers/windows/auxiliary-browsing-contexts/opener-setter.html.ini new file mode 100644 index 00000000000..64c79a60c4a --- /dev/null +++ b/tests/wpt/metadata/html/browsers/windows/auxiliary-browsing-contexts/opener-setter.html.ini @@ -0,0 +1,4 @@ +[opener-setter.html] + expected: TIMEOUT + [Auxiliary browsing context created via `window.open` and setting `window.opener` to `test` should report `test`] + expected: TIMEOUT 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 5cdcce07c65..2a54f2f8814 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: FAIL + expected: TIMEOUT diff --git a/tests/wpt/metadata/html/canvas/offscreen/transformations/2d.transformation.scale.large.html.ini b/tests/wpt/metadata/html/canvas/offscreen/transformations/2d.transformation.scale.large.html.ini index a2f6ef4c2cb..e6c27b72f74 100644 --- a/tests/wpt/metadata/html/canvas/offscreen/transformations/2d.transformation.scale.large.html.ini +++ b/tests/wpt/metadata/html/canvas/offscreen/transformations/2d.transformation.scale.large.html.ini @@ -1,4 +1,4 @@ [2d.transformation.scale.large.html] + expected: ERROR [scale() with large scale factors works] - expected: FAIL - + expected: TIMEOUT diff --git a/tests/wpt/metadata/html/canvas/offscreen/transformations/2d.transformation.setTransform.multiple.html.ini b/tests/wpt/metadata/html/canvas/offscreen/transformations/2d.transformation.setTransform.multiple.html.ini new file mode 100644 index 00000000000..951f84bb1b2 --- /dev/null +++ b/tests/wpt/metadata/html/canvas/offscreen/transformations/2d.transformation.setTransform.multiple.html.ini @@ -0,0 +1,4 @@ +[2d.transformation.setTransform.multiple.html] + expected: ERROR + [OffscreenCanvas test: 2d.transformation.setTransform.multiple] + expected: TIMEOUT diff --git a/tests/wpt/metadata/html/canvas/offscreen/transformations/2d.transformation.setTransform.multiple.worker.js.ini b/tests/wpt/metadata/html/canvas/offscreen/transformations/2d.transformation.setTransform.multiple.worker.js.ini new file mode 100644 index 00000000000..1d740cfd1ca --- /dev/null +++ b/tests/wpt/metadata/html/canvas/offscreen/transformations/2d.transformation.setTransform.multiple.worker.js.ini @@ -0,0 +1,3 @@ +[2d.transformation.setTransform.multiple.worker.html] + [2d] + 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..7df8f9458e9 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: CRASH [Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used] expected: FAIL diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini index fe55ddae3f1..eacbe5794ea 100644 --- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini @@ -1,4 +1,5 @@ [iframe_sandbox_popups_escaping-3.html] type: testharness + expected: TIMEOUT [Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used] - expected: FAIL + expected: TIMEOUT diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini index 47b45e65a1c..3cdeb8ebcbc 100644 --- a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini @@ -1,9 +1,3 @@ [non-active-document.html] [DOMParser] expected: FAIL - - [createHTMLDocument] - expected: FAIL - - [<template>] - expected: FAIL diff --git a/tests/wpt/metadata/html/semantics/forms/form-submission-0/multipart-formdata.window.js.ini b/tests/wpt/metadata/html/semantics/forms/form-submission-0/multipart-formdata.window.js.ini index aa36ec5b723..aac39182097 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 @@ -167,9 +167,6 @@ [multipart/form-data: character not in encoding in filename (formdata event)] expected: FAIL - [multipart/form-data: 0x00 in value (normal form)] - expected: FAIL - [multipart/form-data: single quote in value (formdata event)] 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 155e1335aa4..f523b37700a 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 @@ -173,8 +173,5 @@ [text/plain: Basic test (formdata event)] expected: FAIL - [text/plain: Basic File test (formdata event)] - expected: FAIL - [text/plain: 0x00 in name (formdata event)] expected: FAIL diff --git a/tests/wpt/metadata/html/semantics/forms/form-submission-0/urlencoded2.window.js.ini b/tests/wpt/metadata/html/semantics/forms/form-submission-0/urlencoded2.window.js.ini index e21beb8eba0..094fb5842c0 100644 --- a/tests/wpt/metadata/html/semantics/forms/form-submission-0/urlencoded2.window.js.ini +++ b/tests/wpt/metadata/html/semantics/forms/form-submission-0/urlencoded2.window.js.ini @@ -155,12 +155,6 @@ [application/x-www-form-urlencoded: 0x00 in name (formdata event)] expected: FAIL - [application/x-www-form-urlencoded: Basic test (formdata event)] - expected: FAIL - - [application/x-www-form-urlencoded: 0x00 in value (normal form)] - expected: FAIL - [application/x-www-form-urlencoded: backslash in value (normal form)] expected: FAIL @@ -173,8 +167,5 @@ [application/x-www-form-urlencoded: 0x00 in filename (formdata event)] expected: FAIL - [application/x-www-form-urlencoded: 0x00 in name (normal form)] - expected: FAIL - [application/x-www-form-urlencoded: \\r\\n in filename (formdata event)] expected: FAIL diff --git a/tests/wpt/metadata/html/semantics/popovers/popover-types.html.ini b/tests/wpt/metadata/html/semantics/popovers/popover-types.html.ini index 21598a8f1ec..597f4077508 100644 --- a/tests/wpt/metadata/html/semantics/popovers/popover-types.html.ini +++ b/tests/wpt/metadata/html/semantics/popovers/popover-types.html.ini @@ -1,3 +1,4 @@ [popover-types.html] + expected: ERROR [manuals do not close popovers] 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 deleted file mode 100644 index f9a4f08cd70..00000000000 --- a/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/document-write/module-tla-delayed.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[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..8845054116d 100644 --- a/tests/wpt/metadata/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini +++ b/tests/wpt/metadata/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini @@ -3,6 +3,3 @@ expected: TIMEOUT [The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document] expected: TIMEOUT - - [The entry settings object while executing the compiled callback via Web IDL's invoke must be that of the node document] - expected: FAIL diff --git a/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini index 1d71471b73c..4a48dd15a9d 100644 --- a/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini +++ b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini @@ -1,7 +1,6 @@ [promise-rejection-events.html] - expected: TIMEOUT [delayed handling: delaying handling rejected promise created from createImageBitmap will cause both events to fire] - expected: TIMEOUT + expected: FAIL [unhandledrejection: from createImageBitmap which is UA triggered] expected: FAIL diff --git a/tests/wpt/metadata/resource-timing/content-type-parsing.html.ini b/tests/wpt/metadata/resource-timing/content-type-parsing.html.ini index 71ca4ed5411..49b17a921b5 100644 --- a/tests/wpt/metadata/resource-timing/content-type-parsing.html.ini +++ b/tests/wpt/metadata/resource-timing/content-type-parsing.html.ini @@ -94,10 +94,10 @@ expected: FAIL [mime-type 16 : text/html;charset=\x0bgbk] - expected: FAIL + expected: TIMEOUT [mime-type 17 : text/html;charset=\x0cgbk] - expected: TIMEOUT + expected: NOTRUN [mime-type 18 : text/html;\x0bcharset=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 b84e3cf7b11..38df5f01300 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: TIMEOUT + expected: FAIL [This test validates the response status of resources. 89] - expected: NOTRUN + expected: TIMEOUT [This test validates the response status of resources. 90] expected: NOTRUN diff --git a/tests/wpt/metadata/wasm/jsapi/functions/entry.html.ini b/tests/wpt/metadata/wasm/jsapi/functions/entry.html.ini index 145d4a8fe37..2ab19558726 100644 --- a/tests/wpt/metadata/wasm/jsapi/functions/entry.html.ini +++ b/tests/wpt/metadata/wasm/jsapi/functions/entry.html.ini @@ -1,6 +1,7 @@ [entry.html] + expected: TIMEOUT [Start function] - expected: FAIL + expected: TIMEOUT [Sanity check: this all works as expected synchronously] expected: FAIL diff --git a/tests/wpt/metadata/webmessaging/with-ports/017.html.ini b/tests/wpt/metadata/webmessaging/with-ports/017.html.ini new file mode 100644 index 00000000000..c7946fc91b4 --- /dev/null +++ b/tests/wpt/metadata/webmessaging/with-ports/017.html.ini @@ -0,0 +1,4 @@ +[017.html] + expected: TIMEOUT + [origin of the script that invoked the method, about:blank] + expected: TIMEOUT diff --git a/tests/wpt/metadata/webmessaging/without-ports/018.html.ini b/tests/wpt/metadata/webmessaging/without-ports/018.html.ini new file mode 100644 index 00000000000..b7b36c1d3a4 --- /dev/null +++ b/tests/wpt/metadata/webmessaging/without-ports/018.html.ini @@ -0,0 +1,4 @@ +[018.html] + expected: TIMEOUT + [origin of the script that invoked the method, javascript:] + expected: TIMEOUT diff --git a/tests/wpt/metadata/webstorage/localstorage-about-blank-3P-iframe-opens-3P-window.partitioned.tentative.html.ini b/tests/wpt/metadata/webstorage/localstorage-about-blank-3P-iframe-opens-3P-window.partitioned.tentative.html.ini deleted file mode 100644 index aa6c9e5b826..00000000000 --- a/tests/wpt/metadata/webstorage/localstorage-about-blank-3P-iframe-opens-3P-window.partitioned.tentative.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[localstorage-about-blank-3P-iframe-opens-3P-window.partitioned.tentative.html] - expected: TIMEOUT - [StorageKey: test 3P about:blank window opened from a 3P iframe] - expected: TIMEOUT diff --git a/tests/wpt/mozilla/meta/mozilla/scrollBy.html.ini b/tests/wpt/mozilla/meta/mozilla/scrollBy.html.ini new file mode 100644 index 00000000000..f78f699f620 --- /dev/null +++ b/tests/wpt/mozilla/meta/mozilla/scrollBy.html.ini @@ -0,0 +1,3 @@ +[scrollBy.html] + [Ensure that the window.scrollBy function affects scroll position as expected] + expected: FAIL diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_gcm.https.any.js b/tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_gcm.https.any.js index 8f1103d8f4a..6e3a6efb12d 100644 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_gcm.https.any.js +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_gcm.https.any.js @@ -1,4 +1,5 @@ -// META: title=WebCryptoAPI: encrypt() Using AES-GCM +// META: title=WebCryptoAPI: encrypt() Using AES-GCM w/ 96-bit iv +// META: script=aes_gcm_96_iv_fixtures.js // META: script=aes_gcm_vectors.js // META: script=aes.js // META: timeout=long diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_gcm_256_iv.https.any.js b/tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_gcm_256_iv.https.any.js new file mode 100644 index 00000000000..92900fb13ae --- /dev/null +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_gcm_256_iv.https.any.js @@ -0,0 +1,7 @@ +// META: title=WebCryptoAPI: encrypt() Using AES-GCM w/ 256-bit iv +// META: script=aes_gcm_256_iv_fixtures.js +// META: script=aes_gcm_vectors.js +// META: script=aes.js +// META: timeout=long + +run_test(); diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_gcm_256_iv_fixtures.js b/tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_gcm_256_iv_fixtures.js new file mode 100644 index 00000000000..9cdbbbb7907 --- /dev/null +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_gcm_256_iv_fixtures.js @@ -0,0 +1,210 @@ +function getFixtures() { + // Before we can really start, we need to fill a bunch of buffers with data + var plaintext = new Uint8Array([ + 84, 104, 105, 115, 32, 115, 112, 101, 99, 105, 102, 105, 99, 97, 116, 105, + 111, 110, 32, 100, 101, 115, 99, 114, 105, 98, 101, 115, 32, 97, 32, 74, 97, + 118, 97, 83, 99, 114, 105, 112, 116, 32, 65, 80, 73, 32, 102, 111, 114, 32, + 112, 101, 114, 102, 111, 114, 109, 105, 110, 103, 32, 98, 97, 115, 105, 99, + 32, 99, 114, 121, 112, 116, 111, 103, 114, 97, 112, 104, 105, 99, 32, 111, + 112, 101, 114, 97, 116, 105, 111, 110, 115, 32, 105, 110, 32, 119, 101, 98, + 32, 97, 112, 112, 108, 105, 99, 97, 116, 105, 111, 110, 115, 44, 32, 115, + 117, 99, 104, 32, 97, 115, 32, 104, 97, 115, 104, 105, 110, 103, 44, 32, + 115, 105, 103, 110, 97, 116, 117, 114, 101, 32, 103, 101, 110, 101, 114, 97, + 116, 105, 111, 110, 32, 97, 110, 100, 32, 118, 101, 114, 105, 102, 105, 99, + 97, 116, 105, 111, 110, 44, 32, 97, 110, 100, 32, 101, 110, 99, 114, 121, + 112, 116, 105, 111, 110, 32, 97, 110, 100, 32, 100, 101, 99, 114, 121, 112, + 116, 105, 111, 110, 46, 32, 65, 100, 100, 105, 116, 105, 111, 110, 97, 108, + 108, 121, 44, 32, 105, 116, 32, 100, 101, 115, 99, 114, 105, 98, 101, 115, + 32, 97, 110, 32, 65, 80, 73, 32, 102, 111, 114, 32, 97, 112, 112, 108, 105, + 99, 97, 116, 105, 111, 110, 115, 32, 116, 111, 32, 103, 101, 110, 101, 114, + 97, 116, 101, 32, 97, 110, 100, 47, 111, 114, 32, 109, 97, 110, 97, 103, + 101, 32, 116, 104, 101, 32, 107, 101, 121, 105, 110, 103, 32, 109, 97, 116, + 101, 114, 105, 97, 108, 32, 110, 101, 99, 101, 115, 115, 97, 114, 121, 32, + 116, 111, 32, 112, 101, 114, 102, 111, 114, 109, 32, 116, 104, 101, 115, + 101, 32, 111, 112, 101, 114, 97, 116, 105, 111, 110, 115, 46, 32, 85, 115, + 101, 115, 32, 102, 111, 114, 32, 116, 104, 105, 115, 32, 65, 80, 73, 32, + 114, 97, 110, 103, 101, 32, 102, 114, 111, 109, 32, 117, 115, 101, 114, 32, + 111, 114, 32, 115, 101, 114, 118, 105, 99, 101, 32, 97, 117, 116, 104, 101, + 110, 116, 105, 99, 97, 116, 105, 111, 110, 44, 32, 100, 111, 99, 117, 109, + 101, 110, 116, 32, 111, 114, 32, 99, 111, 100, 101, 32, 115, 105, 103, 110, + 105, 110, 103, 44, 32, 97, 110, 100, 32, 116, 104, 101, 32, 99, 111, 110, + 102, 105, 100, 101, 110, 116, 105, 97, 108, 105, 116, 121, 32, 97, 110, 100, + 32, 105, 110, 116, 101, 103, 114, 105, 116, 121, 32, 111, 102, 32, 99, 111, + 109, 109, 117, 110, 105, 99, 97, 116, 105, 111, 110, 115, 46, + ]); + + // We want some random key bytes of various sizes. + // These were randomly generated from a script. + var keyBytes = { + 128: new Uint8Array([ + 222, 192, 212, 252, 191, 60, 71, 65, 200, 146, 218, 189, 28, 212, 192, 78, + ]), + 192: new Uint8Array([ + 208, 238, 131, 65, 63, 68, 196, 63, 186, 208, 61, 207, 166, 18, 99, 152, + 29, 109, 221, 95, 240, 30, 28, 246, + ]), + 256: new Uint8Array([ + 103, 105, 56, 35, 251, 29, 88, 7, 63, 145, 236, 233, 204, 58, 249, 16, + 229, 83, 38, 22, 164, 210, 123, 19, 235, 123, 116, 216, 0, 11, 191, 48, + ]), + }; + + // AES-GCM needs an IV of no more than 2^64 - 1 bytes. Arbitrary 32 bytes is okay then. + var iv = new Uint8Array([ + 58, 146, 115, 42, 166, 234, 57, 191, 57, 134, 224, 199, 63, 169, 32, 0, 32, + 33, 117, 56, 94, 248, 173, 234, 194, 200, 115, 53, 235, 146, 141, 212, + ]); + + // Authenticated encryption via AES-GCM requires additional data that + // will be checked. We use the ASCII encoded Editorial Note + // following the Abstract of the Web Cryptography API recommendation. + var additionalData = new Uint8Array([ + 84, 104, 101, 114, 101, 32, 97, 114, 101, 32, 55, 32, 102, 117, 114, 116, + 104, 101, 114, 32, 101, 100, 105, 116, 111, 114, 105, 97, 108, 32, 110, 111, + 116, 101, 115, 32, 105, 110, 32, 116, 104, 101, 32, 100, 111, 99, 117, 109, + 101, 110, 116, 46, + ]); + + // The length of the tag defaults to 16 bytes (128 bit). + var tag = { + 128: new Uint8Array([ + 194, 226, 198, 253, 239, 28, 197, 240, 123, 216, 176, 151, 239, 200, 184, + 183, + ]), + 192: new Uint8Array([ + 183, 57, 32, 144, 164, 76, 121, 77, 58, 86, 62, 132, 53, 130, 96, 225, + ]), + 256: new Uint8Array([ + 188, 239, 241, 48, 159, 21, 213, 0, 241, 42, 85, 76, 194, 28, 49, 60, + ]), + }; + + var tag_with_empty_ad = { + 128: new Uint8Array([ + 222, 51, 11, 23, 36, 222, 250, 248, 27, 98, 30, 81, 150, 35, 220, 198, + ]), + 192: new Uint8Array([ + 243, 11, 130, 112, 169, 239, 114, 238, 185, 219, 93, 1, 95, 108, 184, 183, + ]), + 256: new Uint8Array([ + 244, 186, 86, 203, 154, 37, 191, 248, 246, 57, 139, 130, 224, 47, 217, + 238, + ]), + }; + + // Results. These were created using the Python cryptography module. + + // AES-GCM produces ciphertext and a tag. + var ciphertext = { + 128: new Uint8Array([ + 180, 241, 40, 183, 105, 52, 147, 238, 224, 175, 175, 236, 168, 244, 241, + 121, 9, 202, 225, 237, 56, 216, 253, 254, 186, 102, 111, 207, 228, 190, + 130, 177, 159, 246, 6, 53, 249, 113, 228, 254, 81, 126, 253, 191, 100, 43, + 251, 147, 107, 91, 166, 231, 201, 241, 180, 214, 112, 47, 123, 164, 186, + 134, 54, 65, 22, 181, 201, 82, 236, 59, 52, 139, 172, 39, 41, 89, 123, 62, + 102, 167, 82, 150, 250, 93, 96, 169, 135, 89, 245, 255, 164, 192, 169, + 159, 25, 16, 139, 145, 76, 4, 144, 131, 148, 197, 204, 46, 23, 110, 193, + 228, 127, 120, 242, 24, 54, 240, 181, 162, 98, 244, 249, 68, 134, 122, + 126, 151, 38, 108, 116, 68, 150, 109, 38, 194, 21, 159, 140, 205, 183, 35, + 97, 151, 186, 120, 145, 22, 235, 22, 210, 223, 187, 143, 162, 183, 93, + 196, 104, 51, 96, 53, 234, 250, 184, 76, 237, 157, 37, 203, 226, 87, 222, + 75, 240, 95, 218, 222, 64, 81, 165, 75, 201, 216, 190, 13, 116, 217, 69, + 66, 47, 161, 68, 247, 74, 253, 157, 181, 162, 121, 53, 32, 91, 124, 230, + 105, 224, 17, 187, 50, 61, 77, 103, 79, 71, 57, 163, 116, 234, 149, 27, + 105, 24, 31, 159, 3, 128, 130, 42, 94, 125, 200, 142, 251, 148, 201, 17, + 149, 232, 84, 50, 17, 18, 203, 186, 226, 164, 227, 202, 76, 65, 16, 163, + 224, 132, 52, 31, 101, 129, 72, 171, 159, 42, 177, 253, 98, 86, 201, 95, + 117, 62, 12, 205, 78, 36, 126, 196, 121, 89, 185, 37, 161, 66, 181, 117, + 186, 71, 124, 132, 110, 120, 27, 246, 163, 18, 13, 90, 200, 127, 82, 209, + 241, 170, 73, 247, 137, 96, 244, 254, 251, 119, 71, 156, 27, 107, 53, 33, + 45, 22, 0, 144, 48, 32, 11, 116, 21, 125, 246, 217, 171, 158, 224, 142, + 234, 141, 242, 168, 89, 154, 66, 227, 161, 182, 96, 1, 88, 78, 12, 7, 239, + 30, 206, 31, 89, 111, 107, 42, 37, 241, 148, 232, 1, 8, 251, 117, 146, + 183, 9, 48, 39, 94, 59, 70, 230, 26, 165, 97, 156, 140, 141, 31, 62, 10, + 206, 55, 48, 207, 0, 197, 202, 197, 108, 133, 175, 80, 4, 16, 154, 223, + 255, 4, 196, 188, 178, 240, 29, 13, 120, 5, 225, 202, 3, 35, 225, 158, 92, + 152, 73, 205, 107, 157, 224, 245, 99, 194, 171, 156, 245, 247, 183, 165, + 40, 62, 200, 110, 29, 151, 206, 100, 175, 88, 36, 242, 90, 4, 82, 73, 250, + 140, 245, 217, 9, 153, 35, 242, 206, 78, 197, 121, 115, 15, 80, 128, 101, + 191, 240, 91, 151, 249, 62, 62, 244, 18, 3, 17, 135, 222, 210, 93, 149, + 123, + ]), + + 192: new Uint8Array([ + 126, 160, 166, 112, 227, 212, 106, 186, 175, 70, 24, 28, 86, 149, 31, 154, + 156, 190, 244, 132, 44, 61, 149, 242, 105, 67, 17, 136, 7, 146, 153, 170, + 200, 214, 142, 205, 170, 225, 85, 44, 241, 159, 255, 234, 10, 13, 37, 48, + 255, 21, 141, 176, 60, 117, 73, 130, 247, 204, 144, 102, 167, 89, 203, + 235, 229, 129, 122, 253, 124, 179, 115, 118, 163, 157, 67, 141, 122, 146, + 209, 11, 112, 5, 230, 117, 123, 184, 243, 99, 83, 10, 31, 166, 96, 1, 121, + 44, 10, 241, 24, 43, 184, 187, 25, 239, 246, 176, 108, 230, 127, 25, 42, + 67, 202, 140, 179, 104, 159, 75, 103, 43, 248, 98, 166, 179, 67, 0, 163, + 227, 84, 40, 129, 227, 198, 205, 7, 156, 16, 185, 24, 166, 59, 218, 197, + 114, 74, 34, 126, 22, 226, 226, 85, 212, 69, 83, 163, 185, 68, 109, 182, + 54, 209, 237, 96, 184, 32, 53, 127, 175, 13, 146, 141, 115, 164, 184, 98, + 245, 174, 223, 46, 32, 167, 39, 103, 19, 210, 80, 131, 254, 103, 249, 247, + 29, 120, 31, 105, 241, 103, 169, 249, 93, 153, 74, 56, 53, 239, 157, 132, + 236, 169, 246, 242, 24, 113, 97, 128, 238, 152, 148, 31, 84, 8, 52, 105, + 198, 116, 103, 132, 48, 199, 23, 90, 24, 29, 63, 41, 117, 191, 57, 31, + 209, 128, 60, 119, 175, 84, 141, 177, 165, 169, 195, 35, 163, 105, 146, + 157, 209, 93, 149, 105, 160, 93, 231, 78, 201, 92, 235, 200, 89, 37, 50, + 181, 30, 213, 242, 59, 156, 219, 19, 158, 17, 224, 81, 108, 52, 87, 248, + 101, 23, 39, 107, 67, 151, 103, 230, 126, 202, 184, 118, 226, 18, 29, 93, + 37, 208, 40, 82, 113, 35, 157, 145, 152, 50, 253, 140, 47, 141, 192, 1, + 148, 114, 40, 10, 112, 79, 227, 16, 105, 247, 31, 49, 102, 195, 75, 183, + 172, 254, 188, 42, 89, 77, 38, 104, 1, 180, 106, 61, 71, 70, 35, 160, 103, + 101, 244, 26, 226, 37, 159, 155, 4, 107, 222, 219, 136, 37, 24, 246, 44, + 23, 44, 248, 132, 108, 59, 179, 99, 145, 132, 82, 53, 203, 111, 150, 55, + 123, 51, 214, 165, 108, 124, 179, 131, 174, 139, 224, 114, 96, 218, 181, + 243, 128, 198, 98, 115, 92, 95, 165, 23, 229, 108, 146, 14, 244, 162, 37, + 85, 201, 33, 44, 92, 106, 112, 185, 16, 189, 42, 114, 109, 59, 124, 131, + 16, 211, 31, 97, 29, 135, 61, 150, 75, 250, 207, 129, 38, 205, 187, 186, + 55, 207, 232, 24, 48, 232, 49, 226, 16, 12, 27, 70, 31, 124, 128, 218, + 100, 91, 200, 184, 78, 252, 100, 235, 62, 43, 69, 214, 163, 65, 14, 44, + 180, + ]), + + 256: new Uint8Array([ + 8, 97, 235, 113, 70, 32, 135, 131, 210, 209, 124, 160, 255, 182, 9, 29, + 125, 193, 27, 240, 129, 46, 2, 137, 169, 142, 61, 7, 145, 54, 170, 207, + 159, 111, 39, 95, 87, 63, 162, 27, 6, 18, 219, 215, 116, 34, 90, 57, 114, + 244, 102, 145, 67, 6, 51, 152, 247, 165, 242, 116, 100, 219, 177, 72, 177, + 17, 110, 67, 93, 219, 100, 217, 20, 207, 89, 154, 45, 37, 105, 83, 67, + 162, 140, 235, 129, 40, 177, 202, 174, 54, 148, 55, 156, 193, 232, 249, + 134, 163, 195, 51, 114, 116, 65, 38, 73, 99, 96, 249, 224, 69, 17, 119, + 186, 188, 181, 43, 78, 156, 76, 138, 226, 63, 5, 248, 9, 94, 26, 1, 2, + 235, 39, 174, 74, 47, 183, 22, 40, 47, 47, 13, 100, 119, 12, 67, 178, 184, + 56, 167, 238, 143, 13, 44, 208, 185, 151, 108, 6, 17, 52, 122, 182, 210, + 207, 42, 219, 37, 74, 94, 126, 36, 249, 37, 32, 4, 218, 44, 238, 69, 56, + 219, 31, 77, 173, 46, 187, 103, 36, 112, 213, 252, 40, 87, 164, 240, 163, + 159, 32, 129, 125, 178, 108, 47, 28, 31, 36, 42, 115, 36, 14, 145, 195, + 156, 191, 46, 163, 249, 181, 31, 90, 73, 30, 72, 57, 223, 63, 60, 79, 140, + 14, 117, 31, 145, 222, 156, 121, 237, 32, 145, 143, 96, 12, 254, 35, 21, + 21, 59, 168, 171, 154, 217, 0, 59, 202, 175, 103, 214, 192, 175, 26, 18, + 43, 54, 176, 222, 75, 22, 7, 122, 253, 224, 145, 61, 42, 208, 73, 237, 84, + 141, 209, 213, 228, 46, 244, 59, 9, 68, 6, 35, 88, 189, 10, 62, 9, 85, 28, + 44, 82, 19, 153, 160, 178, 240, 56, 160, 244, 201, 173, 77, 61, 20, 227, + 30, 180, 167, 16, 105, 185, 193, 95, 207, 41, 23, 134, 78, 198, 182, 93, + 24, 89, 247, 231, 75, 233, 194, 137, 242, 114, 194, 190, 130, 138, 238, + 94, 137, 193, 194, 115, 137, 190, 207, 169, 83, 155, 14, 210, 160, 129, + 195, 161, 234, 221, 255, 114, 67, 98, 12, 93, 41, 65, 183, 244, 103, 247, + 101, 82, 246, 125, 87, 125, 78, 21, 186, 102, 205, 20, 40, 32, 201, 174, + 15, 52, 240, 217, 180, 162, 108, 6, 211, 41, 18, 135, 232, 184, 18, 188, + 169, 157, 190, 76, 166, 75, 176, 127, 39, 251, 22, 203, 153, 80, 49, 241, + 124, 137, 151, 123, 204, 43, 159, 190, 177, 196, 18, 117, 169, 46, 152, + 251, 45, 25, 164, 27, 145, 214, 228, 55, 15, 2, 131, 216, 80, 255, 204, + 175, 100, 59, 145, 15, 103, 40, 33, 45, 255, 200, 254, 172, 138, 20, 58, + 87, 182, 192, 148, 219, 41, 88, 230, 229, 70, 249, + ]), + }; + + return { + plaintext, + keyBytes, + iv, + additionalData, + tag, + tag_with_empty_ad, + ciphertext, + }; +} diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_gcm_96_iv_fixtures.js b/tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_gcm_96_iv_fixtures.js new file mode 100644 index 00000000000..bb00e2d7dd9 --- /dev/null +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_gcm_96_iv_fixtures.js @@ -0,0 +1,209 @@ +function getFixtures() { + // Before we can really start, we need to fill a bunch of buffers with data + var plaintext = new Uint8Array([ + 84, 104, 105, 115, 32, 115, 112, 101, 99, 105, 102, 105, 99, 97, 116, 105, + 111, 110, 32, 100, 101, 115, 99, 114, 105, 98, 101, 115, 32, 97, 32, 74, 97, + 118, 97, 83, 99, 114, 105, 112, 116, 32, 65, 80, 73, 32, 102, 111, 114, 32, + 112, 101, 114, 102, 111, 114, 109, 105, 110, 103, 32, 98, 97, 115, 105, 99, + 32, 99, 114, 121, 112, 116, 111, 103, 114, 97, 112, 104, 105, 99, 32, 111, + 112, 101, 114, 97, 116, 105, 111, 110, 115, 32, 105, 110, 32, 119, 101, 98, + 32, 97, 112, 112, 108, 105, 99, 97, 116, 105, 111, 110, 115, 44, 32, 115, + 117, 99, 104, 32, 97, 115, 32, 104, 97, 115, 104, 105, 110, 103, 44, 32, + 115, 105, 103, 110, 97, 116, 117, 114, 101, 32, 103, 101, 110, 101, 114, 97, + 116, 105, 111, 110, 32, 97, 110, 100, 32, 118, 101, 114, 105, 102, 105, 99, + 97, 116, 105, 111, 110, 44, 32, 97, 110, 100, 32, 101, 110, 99, 114, 121, + 112, 116, 105, 111, 110, 32, 97, 110, 100, 32, 100, 101, 99, 114, 121, 112, + 116, 105, 111, 110, 46, 32, 65, 100, 100, 105, 116, 105, 111, 110, 97, 108, + 108, 121, 44, 32, 105, 116, 32, 100, 101, 115, 99, 114, 105, 98, 101, 115, + 32, 97, 110, 32, 65, 80, 73, 32, 102, 111, 114, 32, 97, 112, 112, 108, 105, + 99, 97, 116, 105, 111, 110, 115, 32, 116, 111, 32, 103, 101, 110, 101, 114, + 97, 116, 101, 32, 97, 110, 100, 47, 111, 114, 32, 109, 97, 110, 97, 103, + 101, 32, 116, 104, 101, 32, 107, 101, 121, 105, 110, 103, 32, 109, 97, 116, + 101, 114, 105, 97, 108, 32, 110, 101, 99, 101, 115, 115, 97, 114, 121, 32, + 116, 111, 32, 112, 101, 114, 102, 111, 114, 109, 32, 116, 104, 101, 115, + 101, 32, 111, 112, 101, 114, 97, 116, 105, 111, 110, 115, 46, 32, 85, 115, + 101, 115, 32, 102, 111, 114, 32, 116, 104, 105, 115, 32, 65, 80, 73, 32, + 114, 97, 110, 103, 101, 32, 102, 114, 111, 109, 32, 117, 115, 101, 114, 32, + 111, 114, 32, 115, 101, 114, 118, 105, 99, 101, 32, 97, 117, 116, 104, 101, + 110, 116, 105, 99, 97, 116, 105, 111, 110, 44, 32, 100, 111, 99, 117, 109, + 101, 110, 116, 32, 111, 114, 32, 99, 111, 100, 101, 32, 115, 105, 103, 110, + 105, 110, 103, 44, 32, 97, 110, 100, 32, 116, 104, 101, 32, 99, 111, 110, + 102, 105, 100, 101, 110, 116, 105, 97, 108, 105, 116, 121, 32, 97, 110, 100, + 32, 105, 110, 116, 101, 103, 114, 105, 116, 121, 32, 111, 102, 32, 99, 111, + 109, 109, 117, 110, 105, 99, 97, 116, 105, 111, 110, 115, 46, + ]); + + // We want some random key bytes of various sizes. + // These were randomly generated from a script. + var keyBytes = { + 128: new Uint8Array([ + 222, 192, 212, 252, 191, 60, 71, 65, 200, 146, 218, 189, 28, 212, 192, 78, + ]), + 192: new Uint8Array([ + 208, 238, 131, 65, 63, 68, 196, 63, 186, 208, 61, 207, 166, 18, 99, 152, + 29, 109, 221, 95, 240, 30, 28, 246, + ]), + 256: new Uint8Array([ + 103, 105, 56, 35, 251, 29, 88, 7, 63, 145, 236, 233, 204, 58, 249, 16, + 229, 83, 38, 22, 164, 210, 123, 19, 235, 123, 116, 216, 0, 11, 191, 48, + ]), + }; + + // AES-GCM specification recommends that the IV should be 96 bits long. + var iv = new Uint8Array([ + 58, 146, 115, 42, 166, 234, 57, 191, 57, 134, 224, 199, + ]); + + // Authenticated encryption via AES-GCM requires additional data that + // will be checked. We use the ASCII encoded Editorial Note + // following the Abstract of the Web Cryptography API recommendation. + var additionalData = new Uint8Array([ + 84, 104, 101, 114, 101, 32, 97, 114, 101, 32, 55, 32, 102, 117, 114, 116, + 104, 101, 114, 32, 101, 100, 105, 116, 111, 114, 105, 97, 108, 32, 110, 111, + 116, 101, 115, 32, 105, 110, 32, 116, 104, 101, 32, 100, 111, 99, 117, 109, + 101, 110, 116, 46, + ]); + + // The length of the tag defaults to 16 bytes (128 bit). + var tag = { + 128: new Uint8Array([ + 180, 165, 14, 180, 121, 113, 220, 168, 254, 117, 18, 66, 110, 98, 146, + 240, + ]), + 192: new Uint8Array([ + 43, 102, 63, 121, 1, 120, 252, 2, 95, 149, 99, 207, 161, 10, 139, 159, + ]), + 256: new Uint8Array([ + 53, 0, 70, 11, 217, 64, 250, 241, 175, 160, 37, 78, 92, 160, 107, 38, + ]), + }; + + var tag_with_empty_ad = { + 128: new Uint8Array([ + 168, 116, 195, 94, 178, 179, 227, 160, 158, 207, 188, 132, 23, 137, 246, + 129, + ]), + 192: new Uint8Array([ + 111, 84, 157, 153, 12, 219, 247, 161, 220, 24, 0, 74, 203, 228, 83, 201, + ]), + 256: new Uint8Array([ + 125, 85, 225, 240, 220, 112, 144, 9, 168, 179, 251, 128, 126, 147, 131, + 244, + ]), + }; + + // Results. These were created using OpenSSL. + + // AES-GCM produces ciphertext and a tag. + var ciphertext = { + 128: new Uint8Array([ + 46, 244, 139, 198, 120, 180, 9, 39, 83, 58, 203, 107, 69, 71, 8, 165, 132, + 200, 94, 31, 228, 120, 170, 81, 241, 29, 38, 175, 99, 215, 241, 157, 144, + 97, 35, 42, 36, 231, 2, 94, 214, 140, 67, 48, 189, 242, 21, 208, 110, 179, + 30, 90, 181, 105, 242, 17, 244, 42, 42, 36, 125, 228, 82, 250, 87, 199, + 95, 168, 210, 57, 174, 20, 220, 188, 107, 65, 242, 43, 217, 122, 145, 160, + 100, 139, 54, 135, 175, 139, 115, 89, 15, 236, 234, 83, 2, 135, 51, 125, + 63, 168, 184, 235, 148, 68, 132, 124, 166, 171, 53, 68, 94, 187, 31, 68, + 119, 47, 252, 73, 63, 138, 154, 84, 167, 0, 54, 33, 11, 200, 22, 91, 245, + 62, 64, 192, 7, 180, 210, 52, 233, 23, 24, 181, 50, 230, 63, 118, 228, 24, + 1, 242, 75, 62, 196, 222, 122, 154, 227, 125, 89, 73, 112, 100, 154, 249, + 61, 141, 126, 145, 46, 247, 102, 242, 62, 148, 94, 172, 128, 181, 110, 6, + 7, 209, 58, 222, 51, 169, 83, 189, 200, 47, 22, 80, 49, 169, 227, 245, + 165, 24, 96, 152, 228, 14, 252, 199, 193, 148, 46, 84, 49, 248, 198, 7, 0, + 134, 255, 174, 151, 103, 48, 154, 178, 198, 103, 45, 226, 118, 19, 41, 85, + 2, 55, 71, 7, 6, 0, 24, 150, 145, 227, 162, 126, 102, 248, 134, 116, 174, + 215, 217, 166, 160, 140, 129, 21, 220, 131, 110, 242, 94, 249, 103, 151, + 154, 81, 225, 35, 111, 131, 129, 111, 172, 214, 168, 30, 169, 71, 210, 64, + 68, 56, 228, 223, 248, 233, 234, 140, 86, 145, 121, 29, 232, 55, 165, 61, + 175, 147, 66, 33, 92, 6, 209, 241, 149, 73, 77, 9, 104, 2, 154, 247, 92, + 87, 159, 191, 113, 82, 122, 148, 89, 28, 122, 111, 93, 110, 60, 42, 34, + 70, 161, 14, 50, 153, 238, 189, 173, 99, 10, 118, 252, 1, 28, 67, 151, + 114, 46, 78, 181, 78, 233, 183, 6, 254, 57, 29, 53, 118, 175, 80, 97, 156, + 237, 219, 196, 71, 80, 161, 248, 139, 96, 124, 181, 154, 124, 149, 219, + 47, 90, 11, 98, 63, 21, 64, 144, 77, 161, 204, 127, 209, 209, 7, 86, 65, + 39, 142, 251, 183, 43, 227, 120, 155, 72, 70, 204, 89, 227, 199, 203, 28, + 128, 23, 104, 188, 215, 32, 190, 18, 156, 57, 105, 7, 179, 155, 136, 236, + 82, 173, 156, 170, 124, 210, 22, 11, 27, 182, 236, 109, 200, 172, 227, 72, + 37, 1, 175, 9, 214, 227, 23, 141, 169, 215, 77, 134, 76, 229, 169, 241, + 116, 222, 157, 77, 158, 213, 118, 223, 17, 31, 212, 97, 21, 237, 83, 2, + 218, 239, 59, 147, 30, 169, 97, 12, + ]), + + 192: new Uint8Array([ + 129, 16, 61, 38, 99, 56, 226, 139, 71, 251, 211, 15, 91, 152, 159, 219, + 112, 147, 210, 73, 97, 204, 203, 240, 183, 243, 104, 241, 37, 67, 169, + 198, 56, 76, 96, 202, 250, 212, 177, 157, 93, 115, 247, 176, 19, 3, 229, + 102, 75, 200, 252, 222, 197, 58, 31, 44, 123, 151, 9, 191, 88, 123, 35, + 48, 47, 25, 149, 35, 191, 219, 223, 94, 251, 152, 109, 171, 225, 31, 236, + 252, 223, 174, 128, 238, 173, 32, 32, 79, 22, 100, 112, 215, 153, 128, 63, + 158, 247, 18, 215, 81, 247, 208, 91, 28, 223, 222, 170, 9, 135, 210, 143, + 47, 247, 132, 183, 252, 84, 19, 78, 85, 17, 215, 20, 51, 32, 124, 149, + 172, 129, 202, 161, 217, 207, 24, 45, 177, 11, 106, 17, 108, 17, 12, 6, + 62, 90, 132, 2, 54, 96, 90, 30, 239, 216, 173, 76, 67, 7, 221, 62, 124, + 228, 156, 243, 31, 111, 160, 192, 188, 87, 107, 182, 138, 95, 122, 152, + 202, 51, 118, 100, 124, 67, 220, 116, 52, 99, 15, 39, 2, 14, 209, 173, + 119, 88, 6, 174, 106, 236, 150, 28, 189, 112, 161, 224, 186, 58, 110, 91, + 54, 211, 132, 149, 7, 188, 77, 232, 118, 197, 43, 107, 101, 179, 44, 195, + 159, 4, 124, 5, 30, 48, 227, 251, 199, 72, 98, 177, 206, 234, 228, 58, + 191, 150, 28, 211, 29, 182, 138, 141, 249, 152, 142, 244, 203, 210, 128, + 143, 244, 44, 187, 251, 221, 101, 152, 31, 119, 194, 51, 27, 167, 215, + 122, 244, 193, 224, 191, 198, 210, 2, 143, 185, 207, 145, 228, 193, 153, + 207, 119, 167, 75, 145, 43, 17, 1, 42, 146, 164, 21, 15, 164, 221, 216, + 140, 122, 248, 49, 19, 246, 84, 214, 176, 226, 118, 140, 130, 123, 163, + 217, 61, 198, 243, 182, 217, 52, 127, 190, 127, 135, 18, 239, 163, 195, + 102, 136, 227, 128, 38, 244, 49, 208, 229, 249, 126, 157, 100, 72, 246, + 10, 102, 163, 241, 155, 112, 165, 95, 32, 61, 66, 24, 233, 123, 236, 190, + 124, 214, 65, 135, 114, 118, 122, 222, 196, 47, 120, 120, 64, 117, 253, + 165, 28, 17, 152, 104, 119, 10, 53, 140, 109, 79, 246, 246, 28, 104, 228, + 175, 102, 71, 246, 183, 79, 30, 31, 186, 32, 64, 146, 72, 228, 1, 175, + 252, 115, 254, 95, 66, 87, 196, 134, 41, 115, 165, 206, 253, 245, 147, + 137, 163, 230, 235, 238, 77, 218, 74, 157, 65, 97, 43, 198, 130, 190, 195, + 142, 22, 166, 4, 179, 184, 167, 254, 156, 243, 38, 46, 66, 68, 252, 252, + 161, 209, 83, 177, 128, 115, 92, 158, 182, 177, 185, 23, 39, 138, 245, 29, + 216, 17, 178, 142, 225, 135, 8, 115, + ]), + + 256: new Uint8Array([ + 191, 72, 167, 1, 122, 218, 148, 218, 15, 239, 202, 129, 96, 108, 229, 157, + 138, 161, 232, 71, 80, 188, 118, 61, 75, 105, 120, 201, 14, 102, 102, 240, + 111, 131, 180, 83, 95, 73, 2, 138, 205, 56, 9, 137, 227, 235, 73, 71, 200, + 62, 246, 0, 223, 209, 3, 255, 113, 112, 63, 103, 41, 154, 77, 13, 149, 89, + 94, 79, 132, 193, 114, 40, 158, 33, 55, 242, 130, 109, 136, 69, 124, 130, + 150, 40, 69, 211, 224, 154, 209, 243, 65, 58, 230, 253, 31, 21, 72, 102, + 18, 250, 139, 230, 235, 11, 108, 184, 133, 108, 181, 138, 188, 189, 91, + 91, 115, 216, 68, 9, 229, 30, 154, 132, 118, 219, 183, 235, 177, 197, 221, + 58, 13, 90, 126, 198, 74, 87, 162, 226, 7, 51, 184, 15, 209, 81, 86, 138, + 169, 154, 12, 206, 58, 187, 228, 177, 68, 65, 62, 68, 141, 93, 241, 105, + 29, 239, 20, 102, 222, 49, 209, 18, 162, 247, 200, 240, 122, 244, 204, + 148, 67, 58, 118, 164, 95, 230, 68, 242, 203, 138, 145, 132, 6, 224, 206, + 234, 131, 183, 137, 249, 2, 11, 254, 123, 235, 70, 14, 136, 207, 76, 57, + 22, 38, 49, 197, 219, 123, 43, 241, 191, 64, 211, 152, 178, 140, 165, 1, + 189, 52, 79, 184, 213, 56, 215, 182, 27, 27, 70, 243, 101, 255, 50, 108, + 210, 105, 13, 22, 218, 176, 238, 36, 113, 251, 18, 218, 138, 214, 193, 21, + 122, 224, 125, 118, 134, 161, 174, 130, 86, 233, 149, 151, 33, 31, 88, 63, + 91, 63, 209, 145, 158, 109, 42, 176, 43, 23, 151, 49, 101, 199, 35, 101, + 158, 139, 198, 219, 209, 125, 221, 205, 99, 69, 142, 165, 139, 110, 220, + 184, 226, 238, 149, 161, 175, 171, 167, 170, 65, 19, 156, 166, 219, 231, + 87, 20, 226, 58, 210, 134, 110, 160, 176, 118, 250, 73, 86, 213, 116, 53, + 114, 24, 101, 34, 185, 59, 237, 47, 39, 206, 67, 12, 74, 236, 130, 7, 249, + 217, 203, 245, 122, 14, 230, 53, 203, 126, 93, 131, 51, 2, 0, 231, 161, + 111, 42, 126, 173, 121, 80, 179, 59, 186, 133, 236, 252, 188, 149, 99, + 221, 182, 55, 5, 38, 83, 132, 43, 123, 233, 174, 208, 140, 165, 77, 1, + 202, 46, 6, 183, 207, 246, 125, 37, 110, 226, 61, 155, 194, 198, 153, 107, + 1, 8, 0, 23, 124, 18, 4, 144, 235, 146, 77, 220, 123, 152, 114, 219, 127, + 59, 126, 10, 79, 106, 198, 11, 27, 111, 11, 155, 1, 137, 38, 74, 3, 248, + 225, 221, 203, 86, 4, 148, 25, 88, 144, 185, 38, 114, 139, 48, 74, 82, + 172, 36, 115, 193, 223, 220, 144, 69, 91, 5, 83, 56, 138, 63, + ]), + }; + + return { + plaintext, + keyBytes, + iv, + additionalData, + tag, + tag_with_empty_ad, + ciphertext, + }; +} diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_gcm_vectors.js b/tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_gcm_vectors.js index bc406f8f0ef..965fe9564d4 100644 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_gcm_vectors.js +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_gcm_vectors.js @@ -1,4 +1,3 @@ - // aes_gcm_vectors.js // The following function returns an array of test vectors @@ -12,200 +11,15 @@ // plaintext - the text to encrypt // result - the expected result (usually just ciphertext, sometimes with added authentication) function getTestVectors() { - // Before we can really start, we need to fill a bunch of buffers with data - var plaintext = new Uint8Array([84, 104, 105, 115, 32, 115, - 112, 101, 99, 105, 102, 105, 99, 97, 116, 105, 111, 110, - 32, 100, 101, 115, 99, 114, 105, 98, 101, 115, 32, 97, 32, - 74, 97, 118, 97, 83, 99, 114, 105, 112, 116, 32, 65, 80, - 73, 32, 102, 111, 114, 32, 112, 101, 114, 102, 111, 114, - 109, 105, 110, 103, 32, 98, 97, 115, 105, 99, 32, 99, 114, - 121, 112, 116, 111, 103, 114, 97, 112, 104, 105, 99, 32, - 111, 112, 101, 114, 97, 116, 105, 111, 110, 115, 32, 105, - 110, 32, 119, 101, 98, 32, 97, 112, 112, 108, 105, 99, 97, - 116, 105, 111, 110, 115, 44, 32, 115, 117, 99, 104, 32, 97, - 115, 32, 104, 97, 115, 104, 105, 110, 103, 44, 32, 115, - 105, 103, 110, 97, 116, 117, 114, 101, 32, 103, 101, 110, - 101, 114, 97, 116, 105, 111, 110, 32, 97, 110, 100, 32, - 118, 101, 114, 105, 102, 105, 99, 97, 116, 105, 111, 110, - 44, 32, 97, 110, 100, 32, 101, 110, 99, 114, 121, 112, - 116, 105, 111, 110, 32, 97, 110, 100, 32, 100, 101, 99, - 114, 121, 112, 116, 105, 111, 110, 46, 32, 65, 100, 100, - 105, 116, 105, 111, 110, 97, 108, 108, 121, 44, 32, 105, - 116, 32, 100, 101, 115, 99, 114, 105, 98, 101, 115, 32, 97, - 110, 32, 65, 80, 73, 32, 102, 111, 114, 32, 97, 112, 112, - 108, 105, 99, 97, 116, 105, 111, 110, 115, 32, 116, 111, - 32, 103, 101, 110, 101, 114, 97, 116, 101, 32, 97, 110, - 100, 47, 111, 114, 32, 109, 97, 110, 97, 103, 101, 32, 116, - 104, 101, 32, 107, 101, 121, 105, 110, 103, 32, 109, 97, - 116, 101, 114, 105, 97, 108, 32, 110, 101, 99, 101, 115, - 115, 97, 114, 121, 32, 116, 111, 32, 112, 101, 114, 102, - 111, 114, 109, 32, 116, 104, 101, 115, 101, 32, 111, 112, - 101, 114, 97, 116, 105, 111, 110, 115, 46, 32, 85, 115, - 101, 115, 32, 102, 111, 114, 32, 116, 104, 105, 115, 32, - 65, 80, 73, 32, 114, 97, 110, 103, 101, 32, 102, 114, 111, - 109, 32, 117, 115, 101, 114, 32, 111, 114, 32, 115, 101, - 114, 118, 105, 99, 101, 32, 97, 117, 116, 104, 101, 110, - 116, 105, 99, 97, 116, 105, 111, 110, 44, 32, 100, 111, - 99, 117, 109, 101, 110, 116, 32, 111, 114, 32, 99, 111, - 100, 101, 32, 115, 105, 103, 110, 105, 110, 103, 44, 32, - 97, 110, 100, 32, 116, 104, 101, 32, 99, 111, 110, 102, - 105, 100, 101, 110, 116, 105, 97, 108, 105, 116, 121, 32, - 97, 110, 100, 32, 105, 110, 116, 101, 103, 114, 105, 116, - 121, 32, 111, 102, 32, 99, 111, 109, 109, 117, 110, 105, - 99, 97, 116, 105, 111, 110, 115, 46]); - - // We want some random key bytes of various sizes. - // These were randomly generated from a script. - var keyBytes = { - 128: new Uint8Array([222, 192, 212, 252, 191, 60, 71, - 65, 200, 146, 218, 189, 28, 212, 192, 78]), - 192: new Uint8Array([208, 238, 131, 65, 63, 68, 196, 63, 186, 208, - 61, 207, 166, 18, 99, 152, 29, 109, 221, 95, 240, 30, 28, 246]), - 256: new Uint8Array([103, 105, 56, 35, 251, 29, 88, 7, 63, 145, 236, - 233, 204, 58, 249, 16, 229, 83, 38, 22, 164, 210, 123, 19, 235, 123, 116, - 216, 0, 11, 191, 48]) - } - - // AES-GCM needs an IV of no more than 2^64 - 1 bytes. Well, 32 bytes is okay then. - var iv = new Uint8Array([58, 146, 115, 42, 166, 234, 57, - 191, 57, 134, 224, 199, 63, 169, 32, 0, 32, 33, 117, 56, - 94, 248, 173, 234, 194, 200, 115, 53, 235, 146, 141, 212]); - - // Authenticated encryption via AES-GCM requires additional data that - // will be checked. We use the ASCII encoded Editorial Note - // following the Abstract of the Web Cryptography API recommendation. - var additionalData = new Uint8Array([84, 104, 101, 114, 101, - 32, 97, 114, 101, 32, 55, 32, 102, 117, 114, 116, 104, 101, - 114, 32, 101, 100, 105, 116, 111, 114, 105, 97, 108, 32, - 110, 111, 116, 101, 115, 32, 105, 110, 32, 116, 104, 101, - 32, 100, 111, 99, 117, 109, 101, 110, 116, 46]); - - // The length of the tag defaults to 16 bytes (128 bit). - var tag = { - 128: new Uint8Array([194, 226, 198, 253, 239, 28, - 197, 240, 123, 216, 176, 151, 239, 200, 184, 183]), - 192: new Uint8Array([183, 57, 32, 144, 164, 76, 121, 77, 58, - 86, 62, 132, 53, 130, 96, 225]), - 256: new Uint8Array([188, 239, 241, 48, 159, 21, 213, 0, 241, - 42, 85, 76, 194, 28, 49, 60]) - }; - - var tag_with_empty_ad = { - 128: new Uint8Array([222, 51, 11, 23, 36, 222, 250, 248, 27, 98, 30, 81, 150, 35, 220, 198]), - 192: new Uint8Array([243, 11, 130, 112, 169, 239, 114, 238, 185, 219, 93, 1, 95, 108, 184, 183]), - 256: new Uint8Array([244, 186, 86, 203, 154, 37, 191, 248, 246, 57, 139, 130, 224, 47, 217, 238]) - }; - - - // Results. These were created using the Python cryptography module. - - // AES-GCM produces ciphertext and a tag. - var ciphertext = { - 128: new Uint8Array([180, 241, 40, 183, 105, - 52, 147, 238, 224, 175, 175, 236, 168, 244, 241, 121, 9, - 202, 225, 237, 56, 216, 253, 254, 186, 102, 111, 207, 228, - 190, 130, 177, 159, 246, 6, 53, 249, 113, 228, 254, 81, - 126, 253, 191, 100, 43, 251, 147, 107, 91, 166, 231, 201, - 241, 180, 214, 112, 47, 123, 164, 186, 134, 54, 65, 22, - 181, 201, 82, 236, 59, 52, 139, 172, 39, 41, 89, 123, 62, - 102, 167, 82, 150, 250, 93, 96, 169, 135, 89, 245, 255, - 164, 192, 169, 159, 25, 16, 139, 145, 76, 4, 144, 131, - 148, 197, 204, 46, 23, 110, 193, 228, 127, 120, 242, 24, - 54, 240, 181, 162, 98, 244, 249, 68, 134, 122, 126, 151, - 38, 108, 116, 68, 150, 109, 38, 194, 21, 159, 140, 205, - 183, 35, 97, 151, 186, 120, 145, 22, 235, 22, 210, 223, - 187, 143, 162, 183, 93, 196, 104, 51, 96, 53, 234, 250, - 184, 76, 237, 157, 37, 203, 226, 87, 222, 75, 240, 95, 218, - 222, 64, 81, 165, 75, 201, 216, 190, 13, 116, 217, 69, 66, - 47, 161, 68, 247, 74, 253, 157, 181, 162, 121, 53, 32, 91, - 124, 230, 105, 224, 17, 187, 50, 61, 77, 103, 79, 71, 57, - 163, 116, 234, 149, 27, 105, 24, 31, 159, 3, 128, 130, 42, - 94, 125, 200, 142, 251, 148, 201, 17, 149, 232, 84, 50, 17, - 18, 203, 186, 226, 164, 227, 202, 76, 65, 16, 163, 224, - 132, 52, 31, 101, 129, 72, 171, 159, 42, 177, 253, 98, 86, - 201, 95, 117, 62, 12, 205, 78, 36, 126, 196, 121, 89, 185, - 37, 161, 66, 181, 117, 186, 71, 124, 132, 110, 120, 27, - 246, 163, 18, 13, 90, 200, 127, 82, 209, 241, 170, 73, 247, - 137, 96, 244, 254, 251, 119, 71, 156, 27, 107, 53, 33, 45, - 22, 0, 144, 48, 32, 11, 116, 21, 125, 246, 217, 171, 158, - 224, 142, 234, 141, 242, 168, 89, 154, 66, 227, 161, 182, - 96, 1, 88, 78, 12, 7, 239, 30, 206, 31, 89, 111, 107, 42, - 37, 241, 148, 232, 1, 8, 251, 117, 146, 183, 9, 48, 39, 94, - 59, 70, 230, 26, 165, 97, 156, 140, 141, 31, 62, 10, 206, - 55, 48, 207, 0, 197, 202, 197, 108, 133, 175, 80, 4, 16, - 154, 223, 255, 4, 196, 188, 178, 240, 29, 13, 120, 5, 225, - 202, 3, 35, 225, 158, 92, 152, 73, 205, 107, 157, 224, 245, - 99, 194, 171, 156, 245, 247, 183, 165, 40, 62, 200, 110, - 29, 151, 206, 100, 175, 88, 36, 242, 90, 4, 82, 73, 250, - 140, 245, 217, 9, 153, 35, 242, 206, 78, 197, 121, 115, 15, - 80, 128, 101, 191, 240, 91, 151, 249, 62, 62, 244, 18, 3, - 17, 135, 222, 210, 93, 149, 123]), - - 192: new Uint8Array([126, 160, 166, 112, 227, 212, 106, - 186, 175, 70, 24, 28, 86, 149, 31, 154, 156, 190, 244, 132, 44, 61, 149, - 242, 105, 67, 17, 136, 7, 146, 153, 170, 200, 214, 142, 205, 170, 225, - 85, 44, 241, 159, 255, 234, 10, 13, 37, 48, 255, 21, 141, 176, 60, 117, - 73, 130, 247, 204, 144, 102, 167, 89, 203, 235, 229, 129, 122, 253, 124, - 179, 115, 118, 163, 157, 67, 141, 122, 146, 209, 11, 112, 5, 230, 117, - 123, 184, 243, 99, 83, 10, 31, 166, 96, 1, 121, 44, 10, 241, 24, 43, - 184, 187, 25, 239, 246, 176, 108, 230, 127, 25, 42, 67, 202, 140, 179, - 104, 159, 75, 103, 43, 248, 98, 166, 179, 67, 0, 163, 227, 84, 40, 129, - 227, 198, 205, 7, 156, 16, 185, 24, 166, 59, 218, 197, 114, 74, 34, 126, - 22, 226, 226, 85, 212, 69, 83, 163, 185, 68, 109, 182, 54, 209, 237, 96, - 184, 32, 53, 127, 175, 13, 146, 141, 115, 164, 184, 98, 245, 174, 223, - 46, 32, 167, 39, 103, 19, 210, 80, 131, 254, 103, 249, 247, 29, 120, 31, - 105, 241, 103, 169, 249, 93, 153, 74, 56, 53, 239, 157, 132, 236, 169, - 246, 242, 24, 113, 97, 128, 238, 152, 148, 31, 84, 8, 52, 105, 198, 116, - 103, 132, 48, 199, 23, 90, 24, 29, 63, 41, 117, 191, 57, 31, 209, 128, - 60, 119, 175, 84, 141, 177, 165, 169, 195, 35, 163, 105, 146, 157, 209, - 93, 149, 105, 160, 93, 231, 78, 201, 92, 235, 200, 89, 37, 50, 181, 30, - 213, 242, 59, 156, 219, 19, 158, 17, 224, 81, 108, 52, 87, 248, 101, 23, - 39, 107, 67, 151, 103, 230, 126, 202, 184, 118, 226, 18, 29, 93, 37, 208, - 40, 82, 113, 35, 157, 145, 152, 50, 253, 140, 47, 141, 192, 1, 148, 114, - 40, 10, 112, 79, 227, 16, 105, 247, 31, 49, 102, 195, 75, 183, 172, 254, - 188, 42, 89, 77, 38, 104, 1, 180, 106, 61, 71, 70, 35, 160, 103, 101, - 244, 26, 226, 37, 159, 155, 4, 107, 222, 219, 136, 37, 24, 246, 44, 23, - 44, 248, 132, 108, 59, 179, 99, 145, 132, 82, 53, 203, 111, 150, 55, - 123, 51, 214, 165, 108, 124, 179, 131, 174, 139, 224, 114, 96, 218, 181, - 243, 128, 198, 98, 115, 92, 95, 165, 23, 229, 108, 146, 14, 244, 162, - 37, 85, 201, 33, 44, 92, 106, 112, 185, 16, 189, 42, 114, 109, 59, 124, - 131, 16, 211, 31, 97, 29, 135, 61, 150, 75, 250, 207, 129, 38, 205, 187, - 186, 55, 207, 232, 24, 48, 232, 49, 226, 16, 12, 27, 70, 31, 124, 128, - 218, 100, 91, 200, 184, 78, 252, 100, 235, 62, 43, 69, 214, 163, 65, 14, - 44, 180]), - - 256: new Uint8Array([8, 97, 235, 113, 70, 32, 135, 131, - 210, 209, 124, 160, 255, 182, 9, 29, 125, 193, 27, 240, 129, 46, 2, 137, - 169, 142, 61, 7, 145, 54, 170, 207, 159, 111, 39, 95, 87, 63, 162, 27, - 6, 18, 219, 215, 116, 34, 90, 57, 114, 244, 102, 145, 67, 6, 51, 152, - 247, 165, 242, 116, 100, 219, 177, 72, 177, 17, 110, 67, 93, 219, 100, - 217, 20, 207, 89, 154, 45, 37, 105, 83, 67, 162, 140, 235, 129, 40, 177, - 202, 174, 54, 148, 55, 156, 193, 232, 249, 134, 163, 195, 51, 114, 116, - 65, 38, 73, 99, 96, 249, 224, 69, 17, 119, 186, 188, 181, 43, 78, 156, - 76, 138, 226, 63, 5, 248, 9, 94, 26, 1, 2, 235, 39, 174, 74, 47, 183, - 22, 40, 47, 47, 13, 100, 119, 12, 67, 178, 184, 56, 167, 238, 143, 13, - 44, 208, 185, 151, 108, 6, 17, 52, 122, 182, 210, 207, 42, 219, 37, 74, - 94, 126, 36, 249, 37, 32, 4, 218, 44, 238, 69, 56, 219, 31, 77, 173, 46, - 187, 103, 36, 112, 213, 252, 40, 87, 164, 240, 163, 159, 32, 129, 125, - 178, 108, 47, 28, 31, 36, 42, 115, 36, 14, 145, 195, 156, 191, 46, 163, - 249, 181, 31, 90, 73, 30, 72, 57, 223, 63, 60, 79, 140, 14, 117, 31, - 145, 222, 156, 121, 237, 32, 145, 143, 96, 12, 254, 35, 21, 21, 59, 168, - 171, 154, 217, 0, 59, 202, 175, 103, 214, 192, 175, 26, 18, 43, 54, 176, - 222, 75, 22, 7, 122, 253, 224, 145, 61, 42, 208, 73, 237, 84, 141, 209, - 213, 228, 46, 244, 59, 9, 68, 6, 35, 88, 189, 10, 62, 9, 85, 28, 44, 82, - 19, 153, 160, 178, 240, 56, 160, 244, 201, 173, 77, 61, 20, 227, 30, - 180, 167, 16, 105, 185, 193, 95, 207, 41, 23, 134, 78, 198, 182, 93, 24, - 89, 247, 231, 75, 233, 194, 137, 242, 114, 194, 190, 130, 138, 238, 94, - 137, 193, 194, 115, 137, 190, 207, 169, 83, 155, 14, 210, 160, 129, 195, - 161, 234, 221, 255, 114, 67, 98, 12, 93, 41, 65, 183, 244, 103, 247, - 101, 82, 246, 125, 87, 125, 78, 21, 186, 102, 205, 20, 40, 32, 201, 174, - 15, 52, 240, 217, 180, 162, 108, 6, 211, 41, 18, 135, 232, 184, 18, 188, - 169, 157, 190, 76, 166, 75, 176, 127, 39, 251, 22, 203, 153, 80, 49, - 241, 124, 137, 151, 123, 204, 43, 159, 190, 177, 196, 18, 117, 169, 46, - 152, 251, 45, 25, 164, 27, 145, 214, 228, 55, 15, 2, 131, 216, 80, 255, - 204, 175, 100, 59, 145, 15, 103, 40, 33, 45, 255, 200, 254, 172, 138, - 20, 58, 87, 182, 192, 148, 219, 41, 88, 230, 229, 70, 249]) - }; + const { + plaintext, + keyBytes, + iv, + additionalData, + tag, + tag_with_empty_ad, + ciphertext, + } = getFixtures(); var keyLengths = [128, 192, 256]; var tagLengths = [32, 64, 96, 104, 112, 120, 128]; @@ -220,7 +34,7 @@ function getTestVectors() { result.set(ciphertext[keyLength], 0); result.set(tag[keyLength].slice(0, byteCount), ciphertext[keyLength].byteLength); passing.push({ - name: "AES-GCM " + keyLength.toString() + "-bit key, " + tagLength.toString() + "-bit tag", + name: "AES-GCM " + keyLength.toString() + "-bit key, " + tagLength.toString() + "-bit tag, " + (iv.byteLength << 3).toString() + "-bit iv", keyBuffer: keyBytes[keyLength], key: null, algorithm: {name: "AES-GCM", iv: iv, additionalData: additionalData, tagLength: tagLength}, @@ -232,7 +46,7 @@ function getTestVectors() { noadresult.set(ciphertext[keyLength], 0); noadresult.set(tag_with_empty_ad[keyLength].slice(0, byteCount), ciphertext[keyLength].byteLength); passing.push({ - name: "AES-GCM " + keyLength.toString() + "-bit key, no additional data, " + tagLength.toString() + "-bit tag", + name: "AES-GCM " + keyLength.toString() + "-bit key, no additional data, " + tagLength.toString() + "-bit tag, " + (iv.byteLength << 3).toString() + "-bit iv", keyBuffer: keyBytes[keyLength], key: null, algorithm: {name: "AES-GCM", iv: iv, tagLength: tagLength}, @@ -248,7 +62,7 @@ function getTestVectors() { // First, make some tests for bad tag lengths [24, 48, 72, 95, 129].forEach(function(badTagLength) { failing.push({ - name: "AES-GCM " + keyLength.toString() + "-bit key, illegal tag length " + badTagLength.toString() + "-bits", + name: "AES-GCM " + keyLength.toString() + "-bit key, " + (iv.byteLength << 3).toString() + "-bit iv, " + "illegal tag length " + badTagLength.toString() + "-bits", keyBuffer: keyBytes[keyLength], key: null, algorithm: {name: "AES-GCM", iv: iv, additionalData: additionalData, tagLength: badTagLength}, diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/ecdsa_vectors.js b/tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/ecdsa_vectors.js index 2d1fb6d5c9e..aa9b81ba8a4 100644 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/ecdsa_vectors.js +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/ecdsa_vectors.js @@ -85,53 +85,55 @@ function getTestVectors() { // Additional test vectors, using the same format as getTestVectors, but the // signatures are invalid. function getInvalidTestVectors() { - var vectors = [ + var vectors = []; + for (const validVector of getTestVectors()) { { - name: "The signature was truncated by 1 byte", - publicKeyBuffer: new Uint8Array([48, 89, 48, 19, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 8, 42, 134, 72, 206, 61, 3, 1, 7, 3, 66, 0, 4, 156, 176, 207, 105, 48, 61, 175, 199, 97, 212, 228, 104, 123, 78, 207, 3, 158, 109, 52, 171, 150, 74, 248, 8, 16, 216, 213, 88, 164, 168, 214, 247, 45, 81, 35, 58, 23, 136, 146, 10, 134, 238, 8, 161, 150, 44, 121, 239, 163, 23, 251, 120, 121, 226, 151, 218, 210, 20, 109, 185, 149, 250, 28, 120]), - publicKeyFormat: "spki", - publicKey: null, - algorithmName: "ECDSA", - namedCurve: "P-256", - hashName: "SHA-512", - plaintext: new Uint8Array([110, 41, 50, 21, 51, 1, 164, 238, 246, 128, 230, 66, 137, 41, 173, 174, 152, 140, 16, 141, 102, 138, 49, 255, 85, 208, 72, 153, 71, 215, 95, 248, 26, 70, 191, 137, 232, 77, 100, 1, 240, 35, 190, 110, 135, 104, 143, 188, 215, 132, 215, 133, 202, 132, 103, 53, 82, 74, 203, 82, 208, 4, 82, 200, 64, 64, 164, 121, 231, 204, 51, 9, 54, 68, 29, 147, 187, 231, 34, 169, 67, 42, 110, 29, 177, 18, 181, 201, 64, 59, 16, 39, 44, 177, 52, 127, 214, 25, 212, 99, 247, 169, 210, 35, 173, 118, 253, 224, 109, 138, 104, 131, 80, 15, 184, 67, 35, 90, 191, 249, 142, 36, 27, 223, 181, 83, 140, 62]), - signature: new Uint8Array([75, 159, 145, 228, 40, 82, 135, 38, 26, 29, 28, 146, 60, 246, 25, 205, 82, 193, 117, 207, 231, 241, 190, 96, 165, 37, 140, 97, 3, 72, 186, 61, 40, 196, 95, 144, 29, 113, 196, 27, 41, 134, 56, 236, 13, 106, 133, 215, 252, 176, 195, 59, 191, 236, 90, 156, 129, 8, 70, 182, 57, 40, 154]), - }, + const vector = structuredClone(validVector); + vector.name = `${vector.name} - The signature was truncated by 1 byte`; + vector.signature = vector.signature.subarray(0, vector.signature.byteLength - 1); + vectors.push(vector); + } + + // The signature was made with a different algorithm + for (const hashName of ["SHA-1", "SHA-256", "SHA-384", "SHA-512"]) { + if (validVector.hashName === hashName) continue; + const vector = structuredClone(validVector); + vector.name = `${vector.name} - The signature was made using ${vector.hashName}, however verification is being done using ${hashName}`; + vector.hashName = hashName; + vectors.push(vector); + } + { - name: "The signature was made using SHA-512, however verification is being done using SHA-1.", - publicKeyBuffer: new Uint8Array([48, 89, 48, 19, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 8, 42, 134, 72, 206, 61, 3, 1, 7, 3, 66, 0, 4, 156, 176, 207, 105, 48, 61, 175, 199, 97, 212, 228, 104, 123, 78, 207, 3, 158, 109, 52, 171, 150, 74, 248, 8, 16, 216, 213, 88, 164, 168, 214, 247, 45, 81, 35, 58, 23, 136, 146, 10, 134, 238, 8, 161, 150, 44, 121, 239, 163, 23, 251, 120, 121, 226, 151, 218, 210, 20, 109, 185, 149, 250, 28, 120]), - publicKeyFormat: "spki", - publicKey: null, - algorithmName: "ECDSA", - namedCurve: "P-256", - hashName: "SHA-1", - plaintext: new Uint8Array([110, 41, 50, 21, 51, 1, 164, 238, 246, 128, 230, 66, 137, 41, 173, 174, 152, 140, 16, 141, 102, 138, 49, 255, 85, 208, 72, 153, 71, 215, 95, 248, 26, 70, 191, 137, 232, 77, 100, 1, 240, 35, 190, 110, 135, 104, 143, 188, 215, 132, 215, 133, 202, 132, 103, 53, 82, 74, 203, 82, 208, 4, 82, 200, 64, 64, 164, 121, 231, 204, 51, 9, 54, 68, 29, 147, 187, 231, 34, 169, 67, 42, 110, 29, 177, 18, 181, 201, 64, 59, 16, 39, 44, 177, 52, 127, 214, 25, 212, 99, 247, 169, 210, 35, 173, 118, 253, 224, 109, 138, 104, 131, 80, 15, 184, 67, 35, 90, 191, 249, 142, 36, 27, 223, 181, 83, 140, 62]), - signature: new Uint8Array([75, 159, 145, 228, 40, 82, 135, 38, 26, 29, 28, 146, 60, 246, 25, 205, 82, 193, 117, 207, 231, 241, 190, 96, 165, 37, 140, 97, 3, 72, 186, 61, 40, 196, 95, 144, 29, 113, 196, 27, 41, 134, 56, 236, 13, 106, 133, 215, 252, 176, 195, 59, 191, 236, 90, 156, 129, 8, 70, 182, 57, 40, 154, 132]), - }, + // Excess padding + const vector = structuredClone(validVector); + vector.name = `${vector.name} - Signature has excess padding`; + + const r = vector.signature.subarray(0, vector.signature.byteLength / 2); + const s = vector.signature.subarray(vector.signature.byteLength); + vector.signature = new Uint8Array([ + 0, ...r, + 0, ...s, + ]); + + vectors.push(vector); + } + { - name: "Excess padding", - publicKeyBuffer: new Uint8Array([48, 118, 48, 16, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 5, 43, 129, 4, 0, 34, 3, 98, 0, 4, 8, 116, 162, 224, 184, 255, 68, 143, 14, 84, 50, 30, 39, 244, 241, 230, 77, 6, 76, 222, 183, 210, 111, 69, 140, 50, 233, 48, 18, 15, 78, 87, 220, 133, 194, 105, 63, 151, 126, 237, 74, 142, 204, 141, 185, 129, 180, 217, 31, 105, 68, 109, 244, 244, 198, 245, 222, 25, 0, 63, 69, 248, 145, 208, 235, 205, 47, 255, 219, 92, 129, 192, 64, 232, 214, 153, 76, 67, 199, 254, 237, 185, 138, 74, 49, 237, 251, 53, 232, 154, 48, 1, 60, 59, 146, 103]), - publicKeyFormat: "spki", - publicKey: null, - algorithmName: "ECDSA", - namedCurve: "P-384", - hashName: "SHA-1", - plaintext: new Uint8Array([63, 7, 131, 165, 142, 102, 243, 210, 192, 204, 251, 95, 172, 63, 9, 219, 111, 134, 9, 208, 89, 43, 199, 127, 223, 254, 217, 207, 14, 19, 125, 38, 168, 103, 5, 118, 101, 243, 173, 129, 190, 235, 187, 219, 114, 61, 90, 71, 197, 128, 130, 143, 16, 247, 52, 122, 184, 169, 194, 77, 25, 95, 115, 109, 250, 230, 234, 227, 125, 136, 254, 59, 71, 53, 231, 198, 105, 168, 10, 193, 145, 62, 92, 36, 200, 193, 213, 205, 177, 95, 153, 79, 62, 194, 241, 199, 116, 117, 46, 20, 245, 150, 179, 140, 47, 191, 3, 118, 22, 214, 8, 36, 77, 61, 167, 212, 186, 223, 53, 19, 48, 249, 71, 224, 76, 195, 80, 231]), - // Each of r and s in this input is padded up to one extra byte. - signature: new Uint8Array([0, 141, 157, 62, 61, 11, 43, 40, 113, 234, 47, 3, 242, 123, 168, 105, 159, 33, 75, 232, 216, 117, 192, 215, 112, 176, 255, 241, 196, 206, 52, 31, 12, 131, 74, 193, 31, 158, 193, 43, 253, 184, 50, 11, 23, 36, 200, 194, 32, 0, 98, 21, 13, 251, 168, 230, 92, 12, 123, 231, 239, 129, 200, 114, 65, 210, 195, 122, 131, 194, 126, 179, 28, 204, 43, 60, 57, 87, 103, 10, 116, 76, 129, 190, 109, 116, 19, 64, 181, 24, 156, 192, 197, 71, 223, 129, 176, 210]), - }, + // Empty signature + const vector = structuredClone(validVector); + vector.name = `${vector.name} - The signature is empty`; + vector.signature = new Uint8Array(); + vectors.push(vector); + } + { - name: "Empty signature", - publicKeyBuffer: new Uint8Array([48, 118, 48, 16, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 5, 43, 129, 4, 0, 34, 3, 98, 0, 4, 8, 116, 162, 224, 184, 255, 68, 143, 14, 84, 50, 30, 39, 244, 241, 230, 77, 6, 76, 222, 183, 210, 111, 69, 140, 50, 233, 48, 18, 15, 78, 87, 220, 133, 194, 105, 63, 151, 126, 237, 74, 142, 204, 141, 185, 129, 180, 217, 31, 105, 68, 109, 244, 244, 198, 245, 222, 25, 0, 63, 69, 248, 145, 208, 235, 205, 47, 255, 219, 92, 129, 192, 64, 232, 214, 153, 76, 67, 199, 254, 237, 185, 138, 74, 49, 237, 251, 53, 232, 154, 48, 1, 60, 59, 146, 103]), - publicKeyFormat: "spki", - publicKey: null, - algorithmName: "ECDSA", - namedCurve: "P-384", - hashName: "SHA-1", - plaintext: new Uint8Array([63, 7, 131, 165, 142, 102, 243, 210, 192, 204, 251, 95, 172, 63, 9, 219, 111, 134, 9, 208, 89, 43, 199, 127, 223, 254, 217, 207, 14, 19, 125, 38, 168, 103, 5, 118, 101, 243, 173, 129, 190, 235, 187, 219, 114, 61, 90, 71, 197, 128, 130, 143, 16, 247, 52, 122, 184, 169, 194, 77, 25, 95, 115, 109, 250, 230, 234, 227, 125, 136, 254, 59, 71, 53, 231, 198, 105, 168, 10, 193, 145, 62, 92, 36, 200, 193, 213, 205, 177, 95, 153, 79, 62, 194, 241, 199, 116, 117, 46, 20, 245, 150, 179, 140, 47, 191, 3, 118, 22, 214, 8, 36, 77, 61, 167, 212, 186, 223, 53, 19, 48, 249, 71, 224, 76, 195, 80, 231]), - signature: new Uint8Array([]), - }, - ]; + // Zeroed signature + const vector = structuredClone(validVector); + vector.name = `${vector.name} - The signature is all zeroes`; + vector.signature = new Uint8Array(vector.signature.byteLength); + vectors.push(vector); + } + } return vectors; } diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.https.any.js b/tests/wpt/web-platform-tests/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.https.any.js index 95102495fe3..edb67d9e30f 100644 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.https.any.js +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.https.any.js @@ -1,5 +1,6 @@ // META: title=WebCryptoAPI: wrapKey() and unwrapKey() // META: timeout=long +// META: script=../util/helpers.js // Tests for wrapKey and unwrapKey round tripping @@ -19,7 +20,7 @@ promises.push(testWrapping(wrapper, key)); }) }); - return Promise.all(promises); + return Promise.allSettled(promises); }); }, "setup"); @@ -48,7 +49,7 @@ { name: "AES-GCM", generateParameters: {name: "AES-GCM", length: 128}, - wrapParameters: {name: "AES-GCM", iv: new Uint8Array(16), additionalData: new Uint8Array(16), tagLength: 64} + wrapParameters: {name: "AES-GCM", iv: new Uint8Array(16), additionalData: new Uint8Array(16), tagLength: 128} }, { name: "AES-KW", @@ -141,7 +142,7 @@ .then(function(wrappedResult) { return subtle.unwrapKey(fmt, wrappedResult, wrapper.unwrappingKey, wrapper.parameters.wrapParameters, toWrap.algorithm, true, toWrap.usages); }).then(function(unwrappedResult) { - assert_true(unwrappedResult.extractable, "Unwrapped result is extractable"); + assert_goodCryptoKey(unwrappedResult, toWrap.algorithm, true, toWrap.usages, toWrap.key.type); return subtle.exportKey(fmt, unwrappedResult) }).then(function(roundTripExport) { assert_true(equalExport(originalExport, roundTripExport), "Post-wrap export matches original export"); @@ -161,7 +162,7 @@ .then(function(wrappedResult) { return subtle.unwrapKey(fmt, wrappedResult, wrapper.unwrappingKey, wrapper.parameters.wrapParameters, toWrap.algorithm, false, toWrap.usages); }).then(function(unwrappedResult){ - assert_false(unwrappedResult.extractable, "Unwrapped result is non-extractable"); + assert_goodCryptoKey(unwrappedResult, toWrap.algorithm, false, toWrap.usages, toWrap.key.type); return equalKeys(toWrap.key, unwrappedResult); }).then(function(result){ assert_true(result, "Unwrapped key matches original"); diff --git a/tests/wpt/web-platform-tests/accessibility/crashtests/aria-owns-presentation.html b/tests/wpt/web-platform-tests/accessibility/crashtests/aria-owns-presentation.html deleted file mode 100644 index 138625a1534..00000000000 --- a/tests/wpt/web-platform-tests/accessibility/crashtests/aria-owns-presentation.html +++ /dev/null @@ -1,3 +0,0 @@ -<!DOCTYPE html> -<div id="parent" aria-owns="owned"></div> -<div id="owned" role="none"></div> diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-change.https.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-change.https.html index b0a4da61ddd..826aca85a4e 100644 --- a/tests/wpt/web-platform-tests/client-hints/accept-ch-change.https.html +++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-change.https.html @@ -60,6 +60,14 @@ promise_test(async () => { // settings have been saved await open_and_expect_headers("resources/expect-no-client-hints-headers.html"); + // Check that multiple headers will fill the cache. + await open_and_add_load_event("resources/accept-ch-split.html"); + await open_and_expect_headers("resources/expect-client-hints-headers.html"); + + // Check that a mix of empty and full headers drops the cache. + await open_and_add_load_event("resources/accept-ch-mixed.html"); + await open_and_expect_headers("resources/expect-no-client-hints-headers.html"); + }, "Accept-CH changes based on header"); </script> diff --git a/tests/wpt/web-platform-tests/client-hints/critical-ch/iframe.https.window.js b/tests/wpt/web-platform-tests/client-hints/critical-ch/iframe.https.window.js index f4dd295208f..bbb9623752e 100644 --- a/tests/wpt/web-platform-tests/client-hints/critical-ch/iframe.https.window.js +++ b/tests/wpt/web-platform-tests/client-hints/critical-ch/iframe.https.window.js @@ -6,3 +6,10 @@ async_test((t) => { document.body.appendChild(iframe); iframe.contentWindow.addEventListener('message', message_listener(t, "FAIL")); }, "Critical-CH iframe"); + +async_test((t) => { + var iframe = document.createElement("iframe"); + iframe.src = ECHO_URL+"?multiple=true"; + document.body.appendChild(iframe); + iframe.contentWindow.addEventListener('message', message_listener(t, "FAIL")); +}, "Critical-CH w/ multiple headers and iframe"); diff --git a/tests/wpt/web-platform-tests/client-hints/critical-ch/mis-matched-count.https.window.js b/tests/wpt/web-platform-tests/client-hints/critical-ch/mis-matched-count.https.window.js index 54bd6678979..23d297837e6 100644 --- a/tests/wpt/web-platform-tests/client-hints/critical-ch/mis-matched-count.https.window.js +++ b/tests/wpt/web-platform-tests/client-hints/critical-ch/mis-matched-count.https.window.js @@ -2,3 +2,4 @@ // META: script=/common/utils.js async_test(make_message_test(ECHO_URL+"?mismatch=true&token="+token(), "1"), "Critical-CH no restart on mismatched hints") +async_test(make_message_test(ECHO_URL+"?multiple=true&mismatch=true&token="+token(), "1"), "Critical-CH w/ multiple headers and no restart on mismatched hints") diff --git a/tests/wpt/web-platform-tests/client-hints/critical-ch/mis-matched.https.window.js b/tests/wpt/web-platform-tests/client-hints/critical-ch/mis-matched.https.window.js index 9476640b351..10f9a30b6d2 100644 --- a/tests/wpt/web-platform-tests/client-hints/critical-ch/mis-matched.https.window.js +++ b/tests/wpt/web-platform-tests/client-hints/critical-ch/mis-matched.https.window.js @@ -1,3 +1,4 @@ // META: script=resources/util.js async_test(make_message_test(ECHO_URL+"?mismatch=true", "FAIL"), "Critical-CH Mis-matched hints") +async_test(make_message_test(ECHO_URL+"?multiple=true&mismatch=true", "FAIL"), "Critical-CH w/ multiple headers and Mis-matched hints") diff --git a/tests/wpt/web-platform-tests/client-hints/critical-ch/navigation.multiple.https.window.js b/tests/wpt/web-platform-tests/client-hints/critical-ch/navigation.multiple.https.window.js new file mode 100644 index 00000000000..ff9cc210feb --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/critical-ch/navigation.multiple.https.window.js @@ -0,0 +1,3 @@ +// META: script=resources/util.js + +async_test(make_message_test(ECHO_URL+"?multiple=true", "PASS"), "Critical-CH w/ multiple headers and navigation") diff --git a/tests/wpt/web-platform-tests/client-hints/critical-ch/non-secure.http.window.js b/tests/wpt/web-platform-tests/client-hints/critical-ch/non-secure.http.window.js index cdd79243982..b634f98e55c 100644 --- a/tests/wpt/web-platform-tests/client-hints/critical-ch/non-secure.http.window.js +++ b/tests/wpt/web-platform-tests/client-hints/critical-ch/non-secure.http.window.js @@ -1,3 +1,4 @@ // META: script=resources/util.js async_test(make_message_test(ECHO_URL, "FAIL"), "Critical-CH navigation non-secure") +async_test(make_message_test(ECHO_URL+"?multiple=true", "FAIL"), "Critical-CH w/ multiple headers and navigation non-secure") diff --git a/tests/wpt/web-platform-tests/client-hints/critical-ch/request-count.multiple.https.window.js b/tests/wpt/web-platform-tests/client-hints/critical-ch/request-count.multiple.https.window.js new file mode 100644 index 00000000000..602803b5d68 --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/critical-ch/request-count.multiple.https.window.js @@ -0,0 +1,4 @@ +// META: script=resources/util.js +// META: script=/common/utils.js + +async_test(make_message_test(ECHO_URL+"?multiple=true&token="+token(), "2"), "Critical-CH w/ multiple headers and navigation restart") diff --git a/tests/wpt/web-platform-tests/client-hints/critical-ch/resources/echo-critical-hint.py b/tests/wpt/web-platform-tests/client-hints/critical-ch/resources/echo-critical-hint.py index e4e77ad2a9a..0913dbb19db 100644 --- a/tests/wpt/web-platform-tests/client-hints/critical-ch/resources/echo-critical-hint.py +++ b/tests/wpt/web-platform-tests/client-hints/critical-ch/resources/echo-critical-hint.py @@ -11,13 +11,22 @@ def main(request, response): response.headers.append(b"Access-Control-Allow-Headers", b"*") response.headers.append(b"Access-Control-Expose-Headers", b"*") - response.headers.append(b"Accept-CH", b"sec-ch-device-memory,device-memory") + accept = b"sec-ch-device-memory,device-memory" + if(request.GET.first(b"multiple", None) is not None): + for accept_part in accept.split(b","): + response.headers.append(b"Accept-CH", accept_part) + else: + response.headers.append(b"Accept-CH", accept) critical = b"sec-ch-device-memory,device-memory" if(request.GET.first(b"mismatch", None) is not None): critical = b"sec-ch-viewport-width,viewport-width" - response.headers.append(b"Critical-CH", critical) + if(request.GET.first(b"multiple", None) is not None): + for critical_part in critical.split(b","): + response.headers.append(b"Critical-CH", critical_part) + else: + response.headers.append(b"Critical-CH", critical) response.headers.append(b"Cache-Control", b"no-store") diff --git a/tests/wpt/web-platform-tests/client-hints/critical-ch/subresource.https.window.js b/tests/wpt/web-platform-tests/client-hints/critical-ch/subresource.https.window.js index f8112b628d0..81dfc303c62 100644 --- a/tests/wpt/web-platform-tests/client-hints/critical-ch/subresource.https.window.js +++ b/tests/wpt/web-platform-tests/client-hints/critical-ch/subresource.https.window.js @@ -2,9 +2,17 @@ // META: script=/common/utils.js promise_test(() => - fetch("resources/echo-critical-hint.py") + fetch(ECHO_URL) .then((r) => r.text()) .then((r) => { assert_true(r.includes("FAIL")); }) , "Critical-CH subresource fetch"); + +promise_test(() => + fetch(ECHO_URL+"?multiple=true") + .then((r) => r.text()) + .then((r) => { + assert_true(r.includes("FAIL")); + }) +, "Critical-CH w/ multiple headers and subresource fetch"); diff --git a/tests/wpt/web-platform-tests/client-hints/critical-ch/unsafe-method.https.window.js b/tests/wpt/web-platform-tests/client-hints/critical-ch/unsafe-method.https.window.js index 0eca0eb8e9a..37bbcb3315e 100644 --- a/tests/wpt/web-platform-tests/client-hints/critical-ch/unsafe-method.https.window.js +++ b/tests/wpt/web-platform-tests/client-hints/critical-ch/unsafe-method.https.window.js @@ -21,3 +21,27 @@ async_test((t) => { form.submit(); }, "Critical-CH unsafe method") + +async_test((t) => { + // This test requires a navigation with a non-safe (i.e. non-GET) HTTP + // response, which the Critical-CH spec says to ignore. The most + // "straight-forward" way to do this in JS is by making a form with an + // unsafe method (e.g. POST) method and submit it. + + // Build the form DOM element + var form = document.createElement("form"); + form.setAttribute("method", "post"); + form.setAttribute("action", "resources/echo-critical-hint.py?multiple=true"); + form.setAttribute("target", "popup"); //don't navigate away from the page running the test... + document.body.appendChild(form); + + var popup_window = window.open("/common/blank.html", "popup"); + assert_not_equals(popup_window, null, "Popup windows not allowed?"); + + popup_window.addEventListener('message', (e) => { + t.step(()=>{assert_equals(e.data, "FAIL")}); + t.done(); + }); + + form.submit(); +}, "Critical-CH w/ multiple headers and unsafe method") diff --git a/tests/wpt/web-platform-tests/client-hints/resources/accept-ch-mixed.html b/tests/wpt/web-platform-tests/client-hints/resources/accept-ch-mixed.html new file mode 100644 index 00000000000..bf604dffeef --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/resources/accept-ch-mixed.html @@ -0,0 +1,10 @@ +<!DOCTYPE html> +<html> +<body> + +<!-- An empty webpage whose response headers include empty and full +Accept-CH headers. Fetching this webpage should cause +the hint cache to be dropped.--> + +</body> +</html> diff --git a/tests/wpt/web-platform-tests/client-hints/resources/accept-ch-mixed.html.headers b/tests/wpt/web-platform-tests/client-hints/resources/accept-ch-mixed.html.headers new file mode 100644 index 00000000000..39d4e1935da --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/resources/accept-ch-mixed.html.headers @@ -0,0 +1,5 @@ +Accept-CH: +Accept-CH: sec-ch-device-memory +Accept-CH: device-memory +Accept-CH: +Access-Control-Allow-Origin: * diff --git a/tests/wpt/web-platform-tests/client-hints/resources/accept-ch-split.html b/tests/wpt/web-platform-tests/client-hints/resources/accept-ch-split.html new file mode 100644 index 00000000000..5038b940139 --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/resources/accept-ch-split.html @@ -0,0 +1,10 @@ +<!DOCTYPE html> +<html> +<body> + +<!-- An empty webpage whose response headers include only +non-empty Accept-CH headers. Fetching this webpage should cause +hints to be added to the cache.--> + +</body> +</html> diff --git a/tests/wpt/web-platform-tests/client-hints/resources/accept-ch-split.html.headers b/tests/wpt/web-platform-tests/client-hints/resources/accept-ch-split.html.headers new file mode 100644 index 00000000000..261e1e8ee6d --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/resources/accept-ch-split.html.headers @@ -0,0 +1,3 @@ +Accept-CH: sec-ch-device-memory +Accept-CH: device-memory +Access-Control-Allow-Origin: * diff --git a/tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_alert.html b/tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_alert-manual.html index 1317cc658f7..1317cc658f7 100644 --- a/tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_alert.html +++ b/tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_alert-manual.html diff --git a/tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_banner.html b/tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_banner-manual.html index e1bf9cc7f45..e1bf9cc7f45 100644 --- a/tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_banner.html +++ b/tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_banner-manual.html diff --git a/tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_dialog.html b/tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_dialog-manual.html index c7feeddf2bb..c7feeddf2bb 100644 --- a/tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_dialog.html +++ b/tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_dialog-manual.html diff --git a/tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_feed.html b/tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_feed-manual.html index e81f3e49494..e81f3e49494 100644 --- a/tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_feed.html +++ b/tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_feed-manual.html diff --git a/tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_form.html b/tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_form-manual.html index 6b533da6f72..6b533da6f72 100644 --- a/tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_form.html +++ b/tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_form-manual.html diff --git a/tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_group.html b/tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_group-manual.html index 8deb17c2b24..8deb17c2b24 100644 --- a/tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_group.html +++ b/tests/wpt/web-platform-tests/core-aam/aria-expanded_not_supported_on_group-manual.html diff --git a/tests/wpt/web-platform-tests/core-aam/generic_roledescription_prohibited-manual.html b/tests/wpt/web-platform-tests/core-aam/generic_roledescription_prohibited-manual.html index 7c54dff1549..07f32ccc5cd 100644 --- a/tests/wpt/web-platform-tests/core-aam/generic_roledescription_prohibited-manual.html +++ b/tests/wpt/web-platform-tests/core-aam/generic_roledescription_prohibited-manual.html @@ -61,7 +61,7 @@ </head> <body> <p>This test examines the ARIA properties for generic with a roledescription.</p> - <p role="generic" id="test" aria-roledescription="foo">content</p> + <div role="generic" id="test" aria-roledescription="foo">content</div> <div id="manualMode"></div> <div id="log"></div> <div id="ATTAmessages"></div> diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/background-clip-padding-box-with-border-radius.html b/tests/wpt/web-platform-tests/css/css-backgrounds/background-clip-padding-box-with-border-radius.html index ee98dababbc..8595caec7bb 100644 --- a/tests/wpt/web-platform-tests/css/css-backgrounds/background-clip-padding-box-with-border-radius.html +++ b/tests/wpt/web-platform-tests/css/css-backgrounds/background-clip-padding-box-with-border-radius.html @@ -7,6 +7,7 @@ <link rel="author" title="Lea Verou" href="http://lea.verou.me" /> <link rel="help" href="http://www.w3.org/TR/css3-background/#the-background-clip" /> <link rel="help" href="http://www.w3.org/TR/css3-background/#corner-shaping" /> +<link rel="match" href="reference/background-clip-padding-box-with-border-radius-ref.html" /> <meta name="assert" content="Backgrounds clipped to the padding box should follow the padding box curve, which should be equal to the outer border radius minus the corresponding border thickness." /> <style> div { diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/reference/background-clip-padding-box-with-border-radius-ref.html b/tests/wpt/web-platform-tests/css/css-backgrounds/reference/background-clip-padding-box-with-border-radius-ref.html new file mode 100644 index 00000000000..545b80d3516 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-backgrounds/reference/background-clip-padding-box-with-border-radius-ref.html @@ -0,0 +1,30 @@ +<!DOCTYPE html> + + <meta charset="UTF-8"> + + <title>CSS Reference File</title> + + <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/"> + + <style> + div + { + background-color: green; + border-radius: 30px; + height: 144px; + margin-left: 18px; + margin-top: 24px; + width: 144px; + } + + div + div + { + margin-top: 6px; + } + </style> + + <p>Test passes if there are two filled green rounded squares and <strong>no red</strong>. + + <div></div> + + <div></div> diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/simple-bg-color-ref.html b/tests/wpt/web-platform-tests/css/css-backgrounds/simple-bg-color-ref.html deleted file mode 100644 index d8003b58e3a..00000000000 --- a/tests/wpt/web-platform-tests/css/css-backgrounds/simple-bg-color-ref.html +++ /dev/null @@ -1,12 +0,0 @@ -<!DOCTYPE html> -<body> - <canvas id="canvas" width="200" height="400"></canvas> -</body> -<script> - var canvas = document.getElementById('canvas'); - var ctx = canvas.getContext('2d'); - ctx.fillStyle = 'green'; - ctx.fillRect(0, 0, 100, 150); - ctx.fillStyle = 'red'; - ctx.fillRect(0, 150, 200, 250); -</script> diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/simple-bg-color.html b/tests/wpt/web-platform-tests/css/css-backgrounds/simple-bg-color.html deleted file mode 100644 index 07bea44d219..00000000000 --- a/tests/wpt/web-platform-tests/css/css-backgrounds/simple-bg-color.html +++ /dev/null @@ -1,19 +0,0 @@ -<!DOCTYPE html> -<link rel="help" href="https://drafts.csswg.org/css-backgrounds-3/#background-color"> -<link rel="match" href="simple-bg-color-ref.html"> -<style> -.box1 { - width: 100px; - height: 150px; - background-color: green; -} -.box2 { - width: 200px; - height: 250px; - background-color: red; -} -</style> -<body> - <div class='box1'></div> - <div class='box2'></div> -</body> diff --git a/tests/wpt/web-platform-tests/css/css-break/flexbox/flex-item-content-overflow-003.html b/tests/wpt/web-platform-tests/css/css-break/flexbox/flex-item-content-overflow-003.html new file mode 100644 index 00000000000..d3a5b976ccd --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/flexbox/flex-item-content-overflow-003.html @@ -0,0 +1,14 @@ +<!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=1417976"> +<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:2; column-fill:auto;"> + <div style="display:flex;"> + <div style="width:100px; max-height:50px;"> + <div style="height:50px; background:green;"></div> + <div style="height:50px; background:red;"></div> + </div> + </div> + <div style="position:relative; width:100px; height:50px; background:green;"></div> +</div> diff --git a/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-overflow-001.html b/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-overflow-001.html new file mode 100644 index 00000000000..30d6f3bb21c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/grid/grid-item-overflow-001.html @@ -0,0 +1,14 @@ +<!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=1417976"> +<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:2; column-fill:auto;"> + <div style="display:grid;"> + <div style="width:100px; max-height:50px;"> + <div style="height:50px; background:green;"></div> + <div style="height:50px; background:red;"></div> + </div> + </div> + <div style="position:relative; width:100px; height:50px; background:green;"></div> +</div> diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/first-line-inherited-no-transition-ref.html b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-inherited-no-transition-ref.html new file mode 100644 index 00000000000..1955beef300 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-inherited-no-transition-ref.html @@ -0,0 +1,6 @@ +<!DOCTYPE html> +<title>CSS Test Reference</title> +<p> + <span style="font-weight:bold">Should be bold</span><br> + Should not be bold +</p> diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/first-line-inherited-no-transition.html b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-inherited-no-transition.html new file mode 100644 index 00000000000..e5253daa63f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-inherited-no-transition.html @@ -0,0 +1,13 @@ +<!DOCTYPE html> +<title>CSS Pseudo-Element Test: ::first-line style should not trigger transitions on elements</title> +<link rel="help" href="https://drafts.csswg.org/css-pseudo-4/#first-line-pseudo"> +<link rel="match" href="first-line-inherited-no-transition-ref.html"> +<style> + p::first-line { font-weight: bold; } + span { + transition-property: font-weight; + transition-duration: 100s; + transition-delay: -50s; + } +</style> +<p><span>Should be bold<br>Should not be bold</span></p> diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/first-line-inherited-with-transition-ref.html b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-inherited-with-transition-ref.html new file mode 100644 index 00000000000..b28c17436a6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-inherited-with-transition-ref.html @@ -0,0 +1,10 @@ +<!DOCTYPE html> +<title>CSS Test Reference</title> +<style> + span { background-color: green; } + #orange { color: orange; } +</style> +<p> + <span id="orange">Orange on green</span><br> + <span>Black on green</span> +</p> diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/first-line-inherited-with-transition.html b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-inherited-with-transition.html new file mode 100644 index 00000000000..88b1f343622 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-inherited-with-transition.html @@ -0,0 +1,19 @@ +<!DOCTYPE html> +<title>CSS Pseudo-Element Test: ::first-line style should not trigger transitions on elements</title> +<link rel="help" href="https://drafts.csswg.org/css-pseudo-4/#first-line-pseudo"> +<link rel="match" href="first-line-inherited-with-transition-ref.html"> +<style> + p::first-line { color: orange; } + span { + background-color: black; + transition: background-color 1000s steps(2, start); + } + span.lime { + background-color: lime; + } +</style> +<p><span id="s">Orange on green<br>Black on green</span></p> +<script> + s.offsetTop; + s.className = "lime"; +</script> diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/reference/text-wrap-balance-line-clamp-001-ref.html b/tests/wpt/web-platform-tests/css/css-text/white-space/reference/text-wrap-balance-line-clamp-001-ref.html new file mode 100644 index 00000000000..4e465be7ccf --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/white-space/reference/text-wrap-balance-line-clamp-001-ref.html @@ -0,0 +1,17 @@ +<!DOCTYPE html> +<style> +.container { + font-family: monospace; + font-size: 20px; + width: 20ch; + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; + overflow: hidden; +} +</style> +<div class="container"> + 123 567 901 345 789 + 123 567 901 345 789 + 123 +</div> diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/text-wrap-balance-line-clamp-001.html b/tests/wpt/web-platform-tests/css/css-text/white-space/text-wrap-balance-line-clamp-001.html new file mode 100644 index 00000000000..292e655464b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/white-space/text-wrap-balance-line-clamp-001.html @@ -0,0 +1,20 @@ +<!DOCTYPE html> +<link rel="help" href="https://w3c.github.io/csswg-drafts/css-text-4/#valdef-text-wrap-balance"> +<link rel="match" href="reference/text-wrap-balance-line-clamp-001-ref.html"> +<style> +.container { + font-family: monospace; + font-size: 20px; + width: 20ch; + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; + overflow: hidden; + text-wrap: balance; +} +</style> +<div class="container"> + 123 567 901 345 789 + 123 567 901 345 789 + 123 +</div> diff --git a/tests/wpt/web-platform-tests/css/css-transitions/dynamic-root-element.html b/tests/wpt/web-platform-tests/css/css-transitions/dynamic-root-element.html new file mode 100644 index 00000000000..befc20d1d08 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-transitions/dynamic-root-element.html @@ -0,0 +1,34 @@ +<!doctype html> +<meta charset="utf-8"> +<link rel="help" href="https://drafts.csswg.org/css-transitions/#starting"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1816672"> +<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io"> +<link rel="author" title="Mozilla" href="https://mozilla.org"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<iframe></iframe> +<script> + let t = async_test("Transitions don't incorrectly start on dynamic document element insertion"); + window.onload = t.step_func_done(function() { + let frame = document.querySelector("iframe"); + let doc = frame.contentDocument; + doc.open(); + doc.write("<!doctype html>"); + let root = doc.createElement("html"); + root.innerHTML = ` + <style> + div { + width: 100px; + height: 100px; + background-color: blue; + transition: margin-left 10s ease; + margin-left: 100px; + } + </style> + <div></div> + `; + doc.appendChild(root); + doc.close(); + assert_equals(frame.contentWindow.getComputedStyle(doc.querySelector("div")).marginLeft, "100px", "Transition shouldn't have started"); + }); +</script> diff --git a/tests/wpt/web-platform-tests/css/css-transitions/zero-duration-multiple-transition.html b/tests/wpt/web-platform-tests/css/css-transitions/zero-duration-multiple-transition.html index 4268ce766d7..7b85702092a 100644 --- a/tests/wpt/web-platform-tests/css/css-transitions/zero-duration-multiple-transition.html +++ b/tests/wpt/web-platform-tests/css/css-transitions/zero-duration-multiple-transition.html @@ -2,7 +2,7 @@ <meta charset="utf-8"> <link rel="help" href="https://drafts.csswg.org/css-transitions/#starting"> <link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1461070"> -<link rel="author" title="Emilio Cobos Álvarez" href="emilio@crisal.io"> +<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <style> diff --git a/tests/wpt/web-platform-tests/css/css-values/calc-infinity-nan-serialize-time.html b/tests/wpt/web-platform-tests/css/css-values/calc-infinity-nan-serialize-time.html index fd3f02524ba..2baa890259c 100644 --- a/tests/wpt/web-platform-tests/css/css-values/calc-infinity-nan-serialize-time.html +++ b/tests/wpt/web-platform-tests/css/css-values/calc-infinity-nan-serialize-time.html @@ -15,6 +15,7 @@ function test_serialization(t,s, {prop="animationDuration"}={}) { var test_map = { "1s * NaN" :"calc(NaN * 1s)", "1s * nan" :"calc(NaN * 1s)", + "1ms * NaN" :"calc(NaN * 1s)", "1s * infinity / infinity" :"calc(NaN * 1s)", "1s * 0 * infinity" :"calc(NaN * 1s)", "1s * (infinity + -infinity)" :"calc(NaN * 1s)", diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/3d-transform-incoming.html b/tests/wpt/web-platform-tests/css/css-view-transitions/3d-transform-incoming.html index e1c172263b7..b3726d4cd51 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/3d-transform-incoming.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/3d-transform-incoming.html @@ -38,7 +38,7 @@ div { box-sizing: border-box; will-change: transform } ::view-transition-group(hidden) { animation-duration: 300s; } ::view-transition-image-pair(hidden) { visibility: hidden; } ::view-transition-group(root) { visibility: hidden; } -::view-transition { width: 100%; height: 100%; background: pink; } +::view-transition { background: pink; } ::view-transition-group(*) { animation-delay: 300s; } ::view-transition-new(*) { animation: unset; opacity: 1; } ::view-transition-old(*) { animation: unset; opacity: 0; } diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/3d-transform-outgoing.html b/tests/wpt/web-platform-tests/css/css-view-transitions/3d-transform-outgoing.html index 1796284c06d..746b93afd40 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/3d-transform-outgoing.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/3d-transform-outgoing.html @@ -39,7 +39,7 @@ div { box-sizing: border-box; will-change: transform } ::view-transition-group(hidden) { animation-duration: 300s; } ::view-transition-image-pair(hidden) { visibility: hidden; } ::view-transition-group(root) { visibility: hidden; } -::view-transition { width: 100%; height: 100%; background: pink; } +::view-transition { background: pink; } ::view-transition-group(*) { animation-duration: 0s; } ::view-transition-new(*) { animation: unset; opacity: 0; } ::view-transition-old(*) { animation: unset; opacity: 1; } diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/content-visibility-auto-shared-element.html b/tests/wpt/web-platform-tests/css/css-view-transitions/content-visibility-auto-shared-element.html index d76eab2fcd6..11b4957fbcc 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/content-visibility-auto-shared-element.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/content-visibility-auto-shared-element.html @@ -47,7 +47,7 @@ html::view-transition-group(*) { animation-duration: 0s; } html::view-transition-new(*) { animation: unset; opacity: 0; } html::view-transition-old(*) { animation: unset; opacity: 1; } html::view-transition-group(root) { display: none; } -html::view-transition { width: 100%; height: 100%; background: pink } +html::view-transition { background: pink } </style> diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/css-tags-paint-order-with-entry.html b/tests/wpt/web-platform-tests/css/css-view-transitions/css-tags-paint-order-with-entry.html index efd1aff5df7..703b64f5c68 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/css-tags-paint-order-with-entry.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/css-tags-paint-order-with-entry.html @@ -84,7 +84,7 @@ html::view-transition-old(two), html::view-transition-old(three) { animation: unset; opacity: 1; } html::view-transition-group(root) { animation: unset; opacity: 0; } -html::view-transition { width: 100%; height: 100%; background: lightpink; } +html::view-transition { background: lightpink; } </style> diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/css-tags-paint-order.html b/tests/wpt/web-platform-tests/css/css-view-transitions/css-tags-paint-order.html index 28a955bad66..c0e8769b473 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/css-tags-paint-order.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/css-tags-paint-order.html @@ -69,7 +69,7 @@ html::view-transition-old(two), html::view-transition-old(three) { animation: unset; opacity: 1; } html::view-transition-group(root) { animation: unset; opacity: 0; } -html::view-transition { width: 100%; height: 100%; background: lightpink; } +html::view-transition { background: lightpink; } </style> diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/css-tags-shared-element.html b/tests/wpt/web-platform-tests/css/css-view-transitions/css-tags-shared-element.html index 9046b915b4f..33bbae70fc6 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/css-tags-shared-element.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/css-tags-shared-element.html @@ -51,7 +51,7 @@ html::view-transition-old(left-element), html::view-transition-old(right-element) { animation: unset; opacity: 1; } html::view-transition-group(root) { animation: unset; opacity: 0; } -html::view-transition { width: 100%; height: 100%; background: lightpink; } +html::view-transition { background: lightpink; } </style> diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/document-element-detatched-crash.html b/tests/wpt/web-platform-tests/css/css-view-transitions/document-element-detatched-crash.html new file mode 100644 index 00000000000..3c5419a8102 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/document-element-detatched-crash.html @@ -0,0 +1,21 @@ +<!DOCTYPE html> +<title>View transitions: documentElement.remove</title> +<link rel="help" href="https://github.com/WICG/view-transitions"> +<link rel="author" href="mailto:vmpstr@chromium.org"> + +<style> +html { + display: none; +} +</style> + +<script> +async function runTest() { + document.startViewTransition(() => { + requestAnimationFrame(() => document.documentElement.remove()); + }) + +} +onload = () => requestAnimationFrame(runTest); +</script> + diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/far-away-capture.html b/tests/wpt/web-platform-tests/css/css-view-transitions/far-away-capture.html index 7b003cbb769..bfe0b9fb948 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/far-away-capture.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/far-away-capture.html @@ -41,7 +41,7 @@ html::view-transition-group(*) { animation-duration: 0s; } html::view-transition-new(*) { animation: unset; opacity: 0; } html::view-transition-old(*) { animation: unset; opacity: 1; } html::view-transition-group(root) { display: none; } -html::view-transition { width: 100%; height: 100%; background: pink } +html::view-transition { background: pink } </style> diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/hit-test-unpainted-element-from-point.html b/tests/wpt/web-platform-tests/css/css-view-transitions/hit-test-unpainted-element-from-point.html index 47a8e5fb994..7c9ed911cb7 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/hit-test-unpainted-element-from-point.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/hit-test-unpainted-element-from-point.html @@ -35,6 +35,13 @@ html { view-transition-name: none } background: blue; } +html::view-transition { + pointer-events: none; +} +html::view-transition-group(*) { + pointer-events: auto; +} + html::view-transition-group(shared) { animation-delay: 300s; } diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/hit-test-unrelated-element.html b/tests/wpt/web-platform-tests/css/css-view-transitions/hit-test-unrelated-element.html index dae232b74de..1b8868280b2 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/hit-test-unrelated-element.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/hit-test-unrelated-element.html @@ -36,6 +36,13 @@ html { view-transition-name: none } background: green; } +html::view-transition { + pointer-events: none; +} +html::view-transition-group(*) { + pointer-events: auto; +} + html::view-transition-group(shared) { animation-delay: 300s; } diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/japanese-tag.html b/tests/wpt/web-platform-tests/css/css-view-transitions/japanese-tag.html index 67115a6fae6..976dcab4fca 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/japanese-tag.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/japanese-tag.html @@ -60,7 +60,7 @@ html::view-transition-old(第三) { animation: unset; opacity: 1; } /* hide the root so we show transition background to ensure we're in a transition */ html::view-transition-group(root) { animation: unset; opacity: 0; } -html::view-transition { width: 100%; height: 100%; background: lightpink; } +html::view-transition { background: lightpink; } </style> diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/new-and-old-sizes-match-ref.html b/tests/wpt/web-platform-tests/css/css-view-transitions/new-and-old-sizes-match-ref.html index ca597dfbb84..b8c3b34c03a 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/new-and-old-sizes-match-ref.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/new-and-old-sizes-match-ref.html @@ -32,7 +32,7 @@ html::view-transition-new(*) { animation: unset; opacity: 0; } html::view-transition-old(*) { animation: unset; opacity: 1; } /* hide the root so we show transition background to ensure we're in a transition */ html::view-transition-group(root) { animation: unset; opacity: 0; } -html::view-transition { width: 100%; height: 100%; background: lightpink; } +html::view-transition { background: lightpink; } </style> <div id=target class=box><div class=inner_overflow>X</div></div> <script> diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/new-and-old-sizes-match.html b/tests/wpt/web-platform-tests/css/css-view-transitions/new-and-old-sizes-match.html index 1549a402af0..78efa9d82fa 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/new-and-old-sizes-match.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/new-and-old-sizes-match.html @@ -34,7 +34,7 @@ html::view-transition-new(*) { animation: unset; opacity: 1; } html::view-transition-old(*) { animation: unset; opacity: 0; } /* hide the root so we show transition background to ensure we're in a transition */ html::view-transition-group(root) { animation: unset; opacity: 0; } -html::view-transition { width: 100%; height: 100%; background: lightpink; } +html::view-transition { background: lightpink; } </style> <div id=target class=box><div class=inner_overflow>X</div></div> <script> diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-captures-clip-path.html b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-captures-clip-path.html index 0d4c94e47d6..4a2dfc78c27 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-captures-clip-path.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-captures-clip-path.html @@ -31,7 +31,7 @@ html::view-transition-new(*) { animation: unset; opacity: 1; } html::view-transition-old(*) { animation: unset; opacity: 0; } /* hide the root so we show transition background to ensure we're in a transition */ html::view-transition-group(root) { animation: unset; opacity: 0; } -html::view-transition { width: 100%; height: 100%; background: lightpink; } +html::view-transition { background: lightpink; } </style> <div id=e1 class=box></div> <script> diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-captures-different-size.html b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-captures-different-size.html index a3ecddaf26c..a891dec5553 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-captures-different-size.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-captures-different-size.html @@ -43,7 +43,7 @@ html::view-transition-new(*) { animation: unset; opacity: 1; } html::view-transition-old(*) { animation: unset; opacity: 0; } /* hide the root so we show transition background to ensure we're in a transition */ html::view-transition-group(root) { animation: unset; opacity: 0; } -html::view-transition { width: 100%; height: 100%; background: lightpink; } +html::view-transition { background: lightpink; } </style> <div id=e1 class=box>one</div> <div id=e2 class=box>two</div> diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-captures-opacity.html b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-captures-opacity.html index 7f23f9110a9..ab4efd1f424 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-captures-opacity.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-captures-opacity.html @@ -26,7 +26,7 @@ html::view-transition-new(*) { animation: unset; opacity: 1; } html::view-transition-old(*) { animation: unset; opacity: 0; } /* hide the root so we show transition background to ensure we're in a transition */ html::view-transition-group(root) { animation: unset; opacity: 0; } -html::view-transition { width: 100%; height: 100%; background: lightpink; } +html::view-transition { background: lightpink; } </style> <div id=e1 class=box></div> <div id=e2 class=box></div> diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-captures-positioned-spans.html b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-captures-positioned-spans.html index 39bbfbfb123..b88654cd379 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-captures-positioned-spans.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-captures-positioned-spans.html @@ -20,7 +20,7 @@ html::view-transition-new(*) { animation: unset; opacity: 1; } html::view-transition-old(*) { animation: unset; opacity: 0; } /* hide the root so we show transition background to ensure we're in a transition */ html::view-transition-group(root) { animation: unset; opacity: 0; } -html::view-transition { width: 100%; height: 100%; background: lightpink; } +html::view-transition { background: lightpink; } </style> <span id=target>This is a span</span> <script> diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-captures-spans.html b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-captures-spans.html index 661d7c8a01a..843f6752d76 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-captures-spans.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-captures-spans.html @@ -17,7 +17,7 @@ html::view-transition-new(*) { animation: unset; opacity: 1; } html::view-transition-old(*) { animation: unset; opacity: 0; } /* hide the root so we show transition background to ensure we're in a transition */ html::view-transition-group(root) { animation: unset; opacity: 0; } -html::view-transition { width: 100%; height: 100%; background: lightpink; } +html::view-transition { background: lightpink; } </style> <span id=target>This is a span</span> <script> diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-container-writing-modes.html b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-container-writing-modes.html index 7b55a0f012f..e7ac768e17d 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-container-writing-modes.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-container-writing-modes.html @@ -53,7 +53,7 @@ html::view-transition-old(s3) { animation: unset; opacity: 0; } /* hide the root so we show transition background to ensure we're in a transition */ html::view-transition-group(root) { animation: unset; opacity: 0; } -html::view-transition { width: 100%; height: 100%; background: lightpink; } +html::view-transition { background: lightpink; } </style> diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-element-writing-modes.html b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-element-writing-modes.html index 78ce545b74a..d7740d78f54 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-element-writing-modes.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-element-writing-modes.html @@ -54,7 +54,7 @@ html::view-transition-old(s3) { animation: unset; opacity: 0; } /* hide the root so we show transition background to ensure we're in a transition */ html::view-transition-group(root) { animation: unset; opacity: 0; } -html::view-transition { width: 100%; height: 100%; background: lightpink; } +html::view-transition { background: lightpink; } </style> diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-intrinsic-aspect-ratio.html b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-intrinsic-aspect-ratio.html index 69e8f82e9f1..53ec94122f0 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-intrinsic-aspect-ratio.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-intrinsic-aspect-ratio.html @@ -47,7 +47,7 @@ html::view-transition-group(target2) { /* hide the root so we show transition background to ensure we're in a transition */ html::view-transition-group(root) { animation: unset; opacity: 0; } -html::view-transition { width: 100%; height: 100%; background: lightpink; } +html::view-transition { background: lightpink; } </style> <div id=target1 class=box></div> diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-is-empty-div.html b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-is-empty-div.html index 53f3e23b686..bacc63f1945 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-is-empty-div.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-is-empty-div.html @@ -37,7 +37,7 @@ html::view-transition-new(shared) { animation: unset; opacity: 1; } html::view-transition-old(shared) { animation: unset; opacity: 1; } html::view-transition-group(root) { animation: unset; opacity: 0; } -html::view-transition { width: 100%; height: 100%; background: lightpink; } +html::view-transition { background: lightpink; } </style> diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-is-inline.html b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-is-inline.html index d971ec4eaa6..c341444f342 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-is-inline.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-is-inline.html @@ -57,8 +57,6 @@ body { margin : 0; } view-transition-name: none; } ::view-transition { - width: 100%; - height: 100%; background-color: rebeccapurple; } diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-object-fit-fill.html b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-object-fit-fill.html index 2a34348c12a..b891eee16d5 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-object-fit-fill.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-object-fit-fill.html @@ -57,7 +57,7 @@ html::view-transition-group(hidden) { } html::view-transition-group(root) { animation: unset; opacity: 0; } -html::view-transition { width: 100%; height: 100%; background: lightpink; } +html::view-transition { background: lightpink; } </style> <div id=target><div id=inner></div></div> diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-object-fit-none.html b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-object-fit-none.html index 0ec9d0bc8a4..d4b81b1a0ee 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-object-fit-none.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-object-fit-none.html @@ -50,7 +50,7 @@ html::view-transition-group(hidden) { } html::view-transition-group(root) { animation: unset; opacity: 0; } -html::view-transition { width: 100%; height: 100%; background: lightpink; } +html::view-transition { background: lightpink; } </style> <div id=target>This is text</div> diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-object-view-box-clip-path-reference.html b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-object-view-box-clip-path-reference.html index a8507f5f33e..01a3ed3204f 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-object-view-box-clip-path-reference.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-object-view-box-clip-path-reference.html @@ -55,7 +55,7 @@ html::view-transition-new(target-two) { } html::view-transition-group(root) { animation: unset; opacity: 0; } -html::view-transition { width: 100%; height: 100%; background: lightpink; } +html::view-transition { background: lightpink; } </style> <div id=one class=target> diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-object-view-box-clip-path.html b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-object-view-box-clip-path.html index d6a3f925cbf..dcd5fec70a1 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-object-view-box-clip-path.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-object-view-box-clip-path.html @@ -55,7 +55,7 @@ html::view-transition-new(target-two) { } html::view-transition-group(root) { animation: unset; opacity: 0; } -html::view-transition { width: 100%; height: 100%; background: lightpink; } +html::view-transition { background: lightpink; } </style> <div id=one class=target> diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-object-view-box-overflow-clipped.html b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-object-view-box-overflow-clipped.html index 247a33d15bc..593901529f4 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-object-view-box-overflow-clipped.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-object-view-box-overflow-clipped.html @@ -46,7 +46,7 @@ html::view-transition-new(target) { html::view-transition-old(target) { animation: unset; opacity: 0; height: 100%; } html::view-transition-group(root) { animation: unset; opacity: 0; } -html::view-transition { width: 100%; height: 100%; background: lightpink; } +html::view-transition { background: lightpink; } </style> <div class=target> diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-object-view-box-overflow.html b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-object-view-box-overflow.html index d0c129a1abf..2bbea1e1c4c 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-object-view-box-overflow.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-object-view-box-overflow.html @@ -46,7 +46,7 @@ html::view-transition-new(target) { html::view-transition-old(target) { animation: unset; opacity: 0; height: 100%; } html::view-transition-group(root) { animation: unset; opacity: 0; } -html::view-transition { width: 100%; height: 100%; background: lightpink; } +html::view-transition { background: lightpink; } </style> <div class=target> diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-scaling.html b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-scaling.html index 5ce6d5ba693..4ea3c2e04a4 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-scaling.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-scaling.html @@ -43,7 +43,7 @@ html::view-transition-old(shared) { } html::view-transition-group(root) { animation: unset; opacity: 0; } -html::view-transition { width: 100%; height: 100%; background: lightpink; } +html::view-transition { background: lightpink; } </style> <div id=target class="shared src"><div class=inner></div></div> diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-with-overflow-zoomed.html b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-with-overflow-zoomed.html index fef9b26b2c2..59170ebf003 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-with-overflow-zoomed.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-with-overflow-zoomed.html @@ -34,7 +34,7 @@ html::view-transition-new(target) { } html::view-transition-group(root) { animation: unset; opacity: 0; } -html::view-transition { width: 100%; height: 100%; background: lightpink; } +html::view-transition { background: lightpink; } </style> <div class=ancestor> diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-with-overflow.html b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-with-overflow.html index d2c802dbf53..e2dc045089b 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-with-overflow.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/new-content-with-overflow.html @@ -31,7 +31,7 @@ html::view-transition-new(target) { } html::view-transition-group(root) { animation: unset; opacity: 0; } -html::view-transition { width: 100%; height: 100%; background: lightpink; } +html::view-transition { background: lightpink; } </style> <div class=target> diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/new-element-on-start.html b/tests/wpt/web-platform-tests/css/css-view-transitions/new-element-on-start.html index f0a8c144a98..e3ec5463bfd 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/new-element-on-start.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/new-element-on-start.html @@ -42,7 +42,7 @@ html::view-transition-new(after) { animation-duration: 0s; } html::view-transition-old(after) { animation-duration: 0s; } html::view-transition-group(root) { animation: unset; opacity: 0; } -html::view-transition { width: 100%; height: 100%; background: lightpink; } +html::view-transition { background: lightpink; } </style> diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-captures-clip-path.html b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-captures-clip-path.html index 0734edd56fd..a2faa7f1575 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-captures-clip-path.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-captures-clip-path.html @@ -29,7 +29,7 @@ html::view-transition-new(*) { animation: unset; opacity: 0; } html::view-transition-old(*) { animation: unset; opacity: 1; } /* hide the root so we show transition background to ensure we're in a transition */ html::view-transition-group(root) { animation: unset; opacity: 0; } -html::view-transition { width: 100%; height: 100%; background: lightpink; } +html::view-transition { background: lightpink; } </style> <div id=e1 class=box></div> <script> diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-captures-different-size.html b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-captures-different-size.html index 547cc4d7ba2..a8d375f0646 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-captures-different-size.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-captures-different-size.html @@ -43,7 +43,7 @@ html::view-transition-new(*) { animation: unset; opacity: 0; } html::view-transition-old(*) { animation: unset; opacity: 1; } /* hide the root so we show transition background to ensure we're in a transition */ html::view-transition-group(root) { animation: unset; opacity: 0; } -html::view-transition { width: 100%; height: 100%; background: lightpink; } +html::view-transition { background: lightpink; } </style> <div id=e1 class=box>one</div> <div id=e2 class=box>two</div> diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-captures-opacity.html b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-captures-opacity.html index 0b727f7972f..ee3e3e4cde1 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-captures-opacity.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-captures-opacity.html @@ -27,7 +27,7 @@ html::view-transition-new(*) { animation: unset; opacity: 0; } html::view-transition-old(*) { animation: unset; opacity: 1; } /* hide the root so we show transition background to ensure we're in a transition */ html::view-transition-group(root) { animation: unset; opacity: 0; } -html::view-transition { width: 100%; height: 100%; background: lightpink; } +html::view-transition { background: lightpink; } </style> <div id=e1 class=box>one</div> <div id=e2 class=box>two</div> diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-container-writing-modes.html b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-container-writing-modes.html index 383585335d6..9896c271527 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-container-writing-modes.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-container-writing-modes.html @@ -60,7 +60,7 @@ html::view-transition-old(s3) { animation: unset; opacity: 1; } /* hide the root so we show transition background to ensure we're in a transition */ html::view-transition-group(root) { animation: unset; opacity: 0; } -html::view-transition { width: 100%; height: 100%; background: lightpink; } +html::view-transition { background: lightpink; } </style> diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-element-writing-modes.html b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-element-writing-modes.html index b6903d10e61..5029c6aaaa3 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-element-writing-modes.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-element-writing-modes.html @@ -60,7 +60,7 @@ html::view-transition-old(s3) { animation: unset; opacity: 1; } /* hide the root so we show transition background to ensure we're in a transition */ html::view-transition-group(root) { animation: unset; opacity: 0; } -html::view-transition { width: 100%; height: 100%; background: lightpink; } +html::view-transition { background: lightpink; } </style> diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-intrinsic-aspect-ratio.html b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-intrinsic-aspect-ratio.html index d166f438f4d..b46a7782178 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-intrinsic-aspect-ratio.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-intrinsic-aspect-ratio.html @@ -47,7 +47,7 @@ html::view-transition-group(target2) { /* hide the root so we show transition background to ensure we're in a transition */ html::view-transition-group(root) { animation: unset; opacity: 0; } -html::view-transition { width: 100%; height: 100%; background: lightpink; } +html::view-transition { background: lightpink; } </style> <div id=target1 class=box></div> diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-is-empty-div.html b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-is-empty-div.html index 54c56994d8c..137060c1ddb 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-is-empty-div.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-is-empty-div.html @@ -36,7 +36,7 @@ html::view-transition-new(shared) { animation: unset; opacity: 1; } html::view-transition-old(shared) { animation: unset; opacity: 1; } html::view-transition-group(root) { animation: unset; opacity: 0; } -html::view-transition { width: 100%; height: 100%; background: lightpink; } +html::view-transition { background: lightpink; } </style> diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-is-inline.html b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-is-inline.html index 9da15266bae..9f350237adc 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-is-inline.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-is-inline.html @@ -57,8 +57,6 @@ body { margin : 0; } view-transition-name: none; } ::view-transition { - width: 100%; - height: 100%; background-color: rebeccapurple; } diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-object-fit-fill.html b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-object-fit-fill.html index fb7549cc408..9ad8b14843f 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-object-fit-fill.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-object-fit-fill.html @@ -57,7 +57,7 @@ html::view-transition-group(hidden) { } html::view-transition-group(root) { animation: unset; opacity: 0; } -html::view-transition { width: 100%; height: 100%; background: lightpink; } +html::view-transition { background: lightpink; } </style> <div id=target><div id=inner></div></div> diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-object-fit-none.html b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-object-fit-none.html index 06472302b9e..1275aece7ca 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-object-fit-none.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-object-fit-none.html @@ -50,7 +50,7 @@ html::view-transition-group(hidden) { } html::view-transition-group(root) { animation: unset; opacity: 0; } -html::view-transition { width: 100%; height: 100%; background: lightpink; } +html::view-transition { background: lightpink; } </style> <div id=target>This is text</div> diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-object-view-box-clip-path-reference.html b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-object-view-box-clip-path-reference.html index ac566029a0f..14a1ee83d92 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-object-view-box-clip-path-reference.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-object-view-box-clip-path-reference.html @@ -56,7 +56,7 @@ html::view-transition-old(target-two) { } html::view-transition-group(root) { animation: unset; opacity: 0; } -html::view-transition { width: 100%; height: 100%; background: lightpink; } +html::view-transition { background: lightpink; } </style> <div id=one class=target> diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-object-view-box-clip-path.html b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-object-view-box-clip-path.html index 73100d05281..dff57c68f6b 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-object-view-box-clip-path.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-object-view-box-clip-path.html @@ -56,7 +56,7 @@ html::view-transition-old(target-two) { } html::view-transition-group(root) { animation: unset; opacity: 0; } -html::view-transition { width: 100%; height: 100%; background: lightpink; } +html::view-transition { background: lightpink; } </style> <div id=one class=target> diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-object-view-box-overflow.html b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-object-view-box-overflow.html index 7a1ef2d0052..ff9bb4e7d2b 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-object-view-box-overflow.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-object-view-box-overflow.html @@ -45,7 +45,7 @@ html::view-transition-old(target) { } html::view-transition-group(root) { animation: unset; opacity: 0; } -html::view-transition { width: 100%; height: 100%; background: lightpink; } +html::view-transition { background: lightpink; } </style> <div class=target> diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-with-overflow-zoomed.html b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-with-overflow-zoomed.html index 887bf7c6482..10257b761fa 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-with-overflow-zoomed.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-with-overflow-zoomed.html @@ -34,7 +34,7 @@ html::view-transition-old(target) { } html::view-transition-group(root) { animation: unset; opacity: 0; } -html::view-transition { width: 100%; height: 100%; background: lightpink; } +html::view-transition { background: lightpink; } </style> <div class=ancestor> diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-with-overflow.html b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-with-overflow.html index 7a40c8e386a..6ed31d375c6 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-with-overflow.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/old-content-with-overflow.html @@ -31,7 +31,7 @@ html::view-transition-old(target) { } html::view-transition-group(root) { animation: unset; opacity: 0; } -html::view-transition { width: 100%; height: 100%; background: lightpink; } +html::view-transition { background: lightpink; } </style> <div class=target> diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/root-style-change-during-animation.html b/tests/wpt/web-platform-tests/css/css-view-transitions/root-style-change-during-animation.html index 1453e5019d7..d1d291124bd 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/root-style-change-during-animation.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/root-style-change-during-animation.html @@ -23,8 +23,6 @@ } html::view-transition { - width: 100%; - height: 100%; background: grey; } diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/set-universal-specificity.html b/tests/wpt/web-platform-tests/css/css-view-transitions/set-universal-specificity.html index 1e8b7d0eb86..ec50b1e4078 100644 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/set-universal-specificity.html +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/set-universal-specificity.html @@ -15,7 +15,7 @@ } /* We're verifying what we capture, so just display the old contents for 5 minutes. */ -html::view-transition { width: 100%; height: 100%; background: pink; } +html::view-transition { background: pink; } html::view-transition-group(shared) { animation-duration: 300s; } html::view-transition-old(shared) { diff --git a/tests/wpt/web-platform-tests/css/css-break/fixedpos-001-print-ref.html b/tests/wpt/web-platform-tests/css/printing/fixedpos-001-print-ref.html index 3d66305db0e..3d66305db0e 100644 --- a/tests/wpt/web-platform-tests/css/css-break/fixedpos-001-print-ref.html +++ b/tests/wpt/web-platform-tests/css/printing/fixedpos-001-print-ref.html diff --git a/tests/wpt/web-platform-tests/css/css-break/fixedpos-001-print.html b/tests/wpt/web-platform-tests/css/printing/fixedpos-001-print.html index 04feb96e847..04feb96e847 100644 --- a/tests/wpt/web-platform-tests/css/css-break/fixedpos-001-print.html +++ b/tests/wpt/web-platform-tests/css/printing/fixedpos-001-print.html diff --git a/tests/wpt/web-platform-tests/css/css-break/fixedpos-002-print-ref.html b/tests/wpt/web-platform-tests/css/printing/fixedpos-002-print-ref.html index 3d66305db0e..3d66305db0e 100644 --- a/tests/wpt/web-platform-tests/css/css-break/fixedpos-002-print-ref.html +++ b/tests/wpt/web-platform-tests/css/printing/fixedpos-002-print-ref.html diff --git a/tests/wpt/web-platform-tests/css/css-break/fixedpos-002-print.html b/tests/wpt/web-platform-tests/css/printing/fixedpos-002-print.html index c23c6be7d2a..c23c6be7d2a 100644 --- a/tests/wpt/web-platform-tests/css/css-break/fixedpos-002-print.html +++ b/tests/wpt/web-platform-tests/css/printing/fixedpos-002-print.html diff --git a/tests/wpt/web-platform-tests/css/css-break/fixedpos-003-print-ref.html b/tests/wpt/web-platform-tests/css/printing/fixedpos-003-print-ref.html index 3d66305db0e..3d66305db0e 100644 --- a/tests/wpt/web-platform-tests/css/css-break/fixedpos-003-print-ref.html +++ b/tests/wpt/web-platform-tests/css/printing/fixedpos-003-print-ref.html diff --git a/tests/wpt/web-platform-tests/css/css-break/fixedpos-003-print.html b/tests/wpt/web-platform-tests/css/printing/fixedpos-003-print.html index 1b06257175f..1b06257175f 100644 --- a/tests/wpt/web-platform-tests/css/css-break/fixedpos-003-print.html +++ b/tests/wpt/web-platform-tests/css/printing/fixedpos-003-print.html diff --git a/tests/wpt/web-platform-tests/css/css-break/fixedpos-004-print-ref.html b/tests/wpt/web-platform-tests/css/printing/fixedpos-004-print-ref.html index 3e3473bcb8e..3e3473bcb8e 100644 --- a/tests/wpt/web-platform-tests/css/css-break/fixedpos-004-print-ref.html +++ b/tests/wpt/web-platform-tests/css/printing/fixedpos-004-print-ref.html diff --git a/tests/wpt/web-platform-tests/css/css-break/fixedpos-004-print.html b/tests/wpt/web-platform-tests/css/printing/fixedpos-004-print.html index c138e9cd6aa..c138e9cd6aa 100644 --- a/tests/wpt/web-platform-tests/css/css-break/fixedpos-004-print.html +++ b/tests/wpt/web-platform-tests/css/printing/fixedpos-004-print.html diff --git a/tests/wpt/web-platform-tests/css/css-break/fixedpos-005-print-ref.html b/tests/wpt/web-platform-tests/css/printing/fixedpos-005-print-ref.html index e692ff8db37..e692ff8db37 100644 --- a/tests/wpt/web-platform-tests/css/css-break/fixedpos-005-print-ref.html +++ b/tests/wpt/web-platform-tests/css/printing/fixedpos-005-print-ref.html diff --git a/tests/wpt/web-platform-tests/css/css-break/fixedpos-005-print.html b/tests/wpt/web-platform-tests/css/printing/fixedpos-005-print.html index 0a2edc71788..0a2edc71788 100644 --- a/tests/wpt/web-platform-tests/css/css-break/fixedpos-005-print.html +++ b/tests/wpt/web-platform-tests/css/printing/fixedpos-005-print.html diff --git a/tests/wpt/web-platform-tests/css/css-break/fixedpos-006-print-ref.html b/tests/wpt/web-platform-tests/css/printing/fixedpos-006-print-ref.html index b03e1d78d00..b03e1d78d00 100644 --- a/tests/wpt/web-platform-tests/css/css-break/fixedpos-006-print-ref.html +++ b/tests/wpt/web-platform-tests/css/printing/fixedpos-006-print-ref.html diff --git a/tests/wpt/web-platform-tests/css/css-break/fixedpos-006-print.html b/tests/wpt/web-platform-tests/css/printing/fixedpos-006-print.html index 2386c166c81..2386c166c81 100644 --- a/tests/wpt/web-platform-tests/css/css-break/fixedpos-006-print.html +++ b/tests/wpt/web-platform-tests/css/printing/fixedpos-006-print.html diff --git a/tests/wpt/web-platform-tests/css/css-break/fixedpos-007-print-ref.html b/tests/wpt/web-platform-tests/css/printing/fixedpos-007-print-ref.html index f576c937715..f576c937715 100644 --- a/tests/wpt/web-platform-tests/css/css-break/fixedpos-007-print-ref.html +++ b/tests/wpt/web-platform-tests/css/printing/fixedpos-007-print-ref.html diff --git a/tests/wpt/web-platform-tests/css/css-break/fixedpos-007-print.html b/tests/wpt/web-platform-tests/css/printing/fixedpos-007-print.html index 8dcb700b96d..8dcb700b96d 100644 --- a/tests/wpt/web-platform-tests/css/css-break/fixedpos-007-print.html +++ b/tests/wpt/web-platform-tests/css/printing/fixedpos-007-print.html diff --git a/tests/wpt/web-platform-tests/css/css-break/fixedpos-008-print-ref.html b/tests/wpt/web-platform-tests/css/printing/fixedpos-008-print-ref.html index 6ed2528115a..6ed2528115a 100644 --- a/tests/wpt/web-platform-tests/css/css-break/fixedpos-008-print-ref.html +++ b/tests/wpt/web-platform-tests/css/printing/fixedpos-008-print-ref.html diff --git a/tests/wpt/web-platform-tests/css/css-break/fixedpos-008-print.html b/tests/wpt/web-platform-tests/css/printing/fixedpos-008-print.html index 02b5d63cc7c..02b5d63cc7c 100644 --- a/tests/wpt/web-platform-tests/css/css-break/fixedpos-008-print.html +++ b/tests/wpt/web-platform-tests/css/printing/fixedpos-008-print.html diff --git a/tests/wpt/web-platform-tests/css/css-break/fixedpos-with-abspos-with-link-print-ref.html b/tests/wpt/web-platform-tests/css/printing/fixedpos-with-abspos-with-link-print-ref.html index 000c05350b5..000c05350b5 100644 --- a/tests/wpt/web-platform-tests/css/css-break/fixedpos-with-abspos-with-link-print-ref.html +++ b/tests/wpt/web-platform-tests/css/printing/fixedpos-with-abspos-with-link-print-ref.html diff --git a/tests/wpt/web-platform-tests/css/css-break/fixedpos-with-abspos-with-link-print.html b/tests/wpt/web-platform-tests/css/printing/fixedpos-with-abspos-with-link-print.html index 057ddc91460..057ddc91460 100644 --- a/tests/wpt/web-platform-tests/css/css-break/fixedpos-with-abspos-with-link-print.html +++ b/tests/wpt/web-platform-tests/css/printing/fixedpos-with-abspos-with-link-print.html diff --git a/tests/wpt/web-platform-tests/css/css-break/fixedpos-with-iframe-print-ref.html b/tests/wpt/web-platform-tests/css/printing/fixedpos-with-iframe-print-ref.html index 5c171404508..5c171404508 100644 --- a/tests/wpt/web-platform-tests/css/css-break/fixedpos-with-iframe-print-ref.html +++ b/tests/wpt/web-platform-tests/css/printing/fixedpos-with-iframe-print-ref.html diff --git a/tests/wpt/web-platform-tests/css/css-break/fixedpos-with-iframe-print.html b/tests/wpt/web-platform-tests/css/printing/fixedpos-with-iframe-print.html index 5102d045c42..5102d045c42 100644 --- a/tests/wpt/web-platform-tests/css/css-break/fixedpos-with-iframe-print.html +++ b/tests/wpt/web-platform-tests/css/printing/fixedpos-with-iframe-print.html diff --git a/tests/wpt/web-platform-tests/css/css-break/fixedpos-with-link-with-inline-child-print-ref.html b/tests/wpt/web-platform-tests/css/printing/fixedpos-with-link-with-inline-child-print-ref.html index f12d31acd9d..f12d31acd9d 100644 --- a/tests/wpt/web-platform-tests/css/css-break/fixedpos-with-link-with-inline-child-print-ref.html +++ b/tests/wpt/web-platform-tests/css/printing/fixedpos-with-link-with-inline-child-print-ref.html diff --git a/tests/wpt/web-platform-tests/css/css-break/fixedpos-with-link-with-inline-child-print.html b/tests/wpt/web-platform-tests/css/printing/fixedpos-with-link-with-inline-child-print.html index 694e5376cbf..694e5376cbf 100644 --- a/tests/wpt/web-platform-tests/css/css-break/fixedpos-with-link-with-inline-child-print.html +++ b/tests/wpt/web-platform-tests/css/printing/fixedpos-with-link-with-inline-child-print.html diff --git a/tests/wpt/web-platform-tests/css/css-break/page-name-001-print-ref.html b/tests/wpt/web-platform-tests/css/printing/page-name-001-print-ref.html index 69c5c37b5a3..69c5c37b5a3 100644 --- a/tests/wpt/web-platform-tests/css/css-break/page-name-001-print-ref.html +++ b/tests/wpt/web-platform-tests/css/printing/page-name-001-print-ref.html diff --git a/tests/wpt/web-platform-tests/css/css-break/page-name-001-print.html b/tests/wpt/web-platform-tests/css/printing/page-name-001-print.html index 56281bb4ed5..56281bb4ed5 100644 --- a/tests/wpt/web-platform-tests/css/css-break/page-name-001-print.html +++ b/tests/wpt/web-platform-tests/css/printing/page-name-001-print.html diff --git a/tests/wpt/web-platform-tests/css/selectors/invalidation/nth-child-in-shadow-root.html b/tests/wpt/web-platform-tests/css/selectors/invalidation/nth-child-in-shadow-root.html index 740b68f2003..443a12d229f 100644 --- a/tests/wpt/web-platform-tests/css/selectors/invalidation/nth-child-in-shadow-root.html +++ b/tests/wpt/web-platform-tests/css/selectors/invalidation/nth-child-in-shadow-root.html @@ -17,6 +17,7 @@ </template> </div> <script> + polyfill_declarative_shadow_dom(host); host.offsetTop; host.shadowRoot.getElementById('toggler').classList.toggle('foo'); </script> diff --git a/tests/wpt/web-platform-tests/css/selectors/invalidation/nth-last-child-in-shadow-root.html b/tests/wpt/web-platform-tests/css/selectors/invalidation/nth-last-child-in-shadow-root.html index 766bac0fa38..890abfe9972 100644 --- a/tests/wpt/web-platform-tests/css/selectors/invalidation/nth-last-child-in-shadow-root.html +++ b/tests/wpt/web-platform-tests/css/selectors/invalidation/nth-last-child-in-shadow-root.html @@ -19,6 +19,7 @@ </template> </div> <script> + polyfill_declarative_shadow_dom(host); host.offsetTop; host.shadowRoot.getElementById("toggler").classList.toggle("foo"); </script> diff --git a/tests/wpt/web-platform-tests/css/selectors/visited-part-crash.html b/tests/wpt/web-platform-tests/css/selectors/visited-part-crash.html new file mode 100644 index 00000000000..f4cb28995b1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/visited-part-crash.html @@ -0,0 +1,8 @@ +<!DOCTYPE html> +<link rel="help" href="https://crbug.com/1413904"> +<style> + .foo:visited::part(test) {} +</style> +<div class=foo> + <a class=foo href="">Test</a> +</div> diff --git a/tests/wpt/web-platform-tests/custom-elements/reactions/HTMLElement.html b/tests/wpt/web-platform-tests/custom-elements/reactions/HTMLElement.html index bd252282161..0a1d40199e6 100644 --- a/tests/wpt/web-platform-tests/custom-elements/reactions/HTMLElement.html +++ b/tests/wpt/web-platform-tests/custom-elements/reactions/HTMLElement.html @@ -3,7 +3,7 @@ <head> <title>Custom Elements: CEReactions on HTMLElement interface</title> <meta name="author" title="Ryosuke Niwa" href="mailto:rniwa@webkit.org"> -<meta name="assert" content="title, lang, translate, dir, hidden, tabIndex, accessKey, draggable, dropzone, contextMenu, spellcheck, innerText, and outerText of HTMLElement interface must have CEReactions"> +<meta name="assert" content="title, lang, translate, dir, hidden, tabIndex, accessKey, draggable, dropzone, contextMenu, spellcheck, popover, innerText, and outerText of HTMLElement interface must have CEReactions"> <meta name="help" content="https://html.spec.whatwg.org/#htmlelement"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> @@ -23,6 +23,7 @@ testReflectAttribute('tabIndex', 'tabindex', '0', '1', 'tabIndex on HTMLElement' testReflectAttribute('accessKey', 'accesskey', 'a', 'b', 'accessKey on HTMLElement'); testReflectAttributeWithContentValues('draggable', 'draggable', true, 'true', false, 'false', 'draggable on HTMLElement'); testReflectAttributeWithContentValues('spellcheck', 'spellcheck', true, 'true', false, 'false', 'spellcheck on HTMLElement'); +testReflectAttribute('popover', 'popover', 'auto', 'manual', 'popover on HTMLElement'); testNodeDisconnector(function (customElement) { customElement.parentNode.innerText = ''; diff --git a/tests/wpt/web-platform-tests/docs/writing-tests/making-a-testing-plan.md b/tests/wpt/web-platform-tests/docs/writing-tests/making-a-testing-plan.md index eb96f31202e..a4007039ae4 100644 --- a/tests/wpt/web-platform-tests/docs/writing-tests/making-a-testing-plan.md +++ b/tests/wpt/web-platform-tests/docs/writing-tests/making-a-testing-plan.md @@ -382,7 +382,7 @@ that looks on a UNIX-like command line: $ ls fetch api/ DIR_METADATA OWNERS - connection-pool/ h1-parsing/ private-network-access/ + connection-pool/ h1-parsing/ local-network-access/ content-encoding/ http-cache/ range/ content-length/ images/ README.md content-type/ metadata/ redirect-navigate/ diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/META.yml b/tests/wpt/web-platform-tests/fetch/local-network-access/META.yml index 944ce6f14a1..944ce6f14a1 100644 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/META.yml +++ b/tests/wpt/web-platform-tests/fetch/local-network-access/META.yml diff --git a/tests/wpt/web-platform-tests/fetch/local-network-access/README.md b/tests/wpt/web-platform-tests/fetch/local-network-access/README.md new file mode 100644 index 00000000000..8995e3d7ef6 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/local-network-access/README.md @@ -0,0 +1,10 @@ +# Local Network Access tests + +This directory contains tests for Local Network Access' integration with +the Fetch specification. + +See also: + +* [The specification](https://wicg.github.io/local-network-access/) +* [The repository](https://github.com/WICG/local-network-access/) +* [Open issues](https://github.com/WICG/local-network-access/issues/) diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/fetch-from-treat-as-public.https.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/fetch-from-treat-as-public.https.window.js index 90f7feb6341..90f7feb6341 100644 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/fetch-from-treat-as-public.https.window.js +++ b/tests/wpt/web-platform-tests/fetch/local-network-access/fetch-from-treat-as-public.https.window.js diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/fetch.https.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/fetch.https.window.js index dbc4f23f677..dbc4f23f677 100644 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/fetch.https.window.js +++ b/tests/wpt/web-platform-tests/fetch/local-network-access/fetch.https.window.js diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/fetch.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/fetch.window.js index 8ee54c90562..8ee54c90562 100644 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/fetch.window.js +++ b/tests/wpt/web-platform-tests/fetch/local-network-access/fetch.window.js diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/iframe.tentative.https.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/iframe.tentative.https.window.js index 48bd6420fd9..48bd6420fd9 100644 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/iframe.tentative.https.window.js +++ b/tests/wpt/web-platform-tests/fetch/local-network-access/iframe.tentative.https.window.js diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/iframe.tentative.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/iframe.tentative.window.js index e00cb202bec..e00cb202bec 100644 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/iframe.tentative.window.js +++ b/tests/wpt/web-platform-tests/fetch/local-network-access/iframe.tentative.window.js diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/mixed-content-fetch.tentative.https.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/mixed-content-fetch.tentative.https.window.js index 54485dc7047..6f7d765617c 100644 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/mixed-content-fetch.tentative.https.window.js +++ b/tests/wpt/web-platform-tests/fetch/local-network-access/mixed-content-fetch.tentative.https.window.js @@ -1,10 +1,10 @@ // META: script=/common/utils.js // META: script=resources/support.sub.js // -// Spec: https://wicg.github.io/private-network-access +// Spec: https://wicg.github.io/local-network-access // // These tests verify that secure contexts can fetch non-secure subresources -// from more private address spaces, avoiding mixed context checks, as long as +// from more local address spaces, avoiding mixed context checks, as long as // they specify a valid `targetAddressSpace` fetch option that matches the // target server's address space. @@ -16,9 +16,9 @@ setup(() => { // Given `addressSpace`, returns the other three possible IP address spaces. function otherAddressSpaces(addressSpace) { switch (addressSpace) { - case "local": return ["unknown", "private", "public"]; - case "private": return ["unknown", "local", "public"]; - case "public": return ["unknown", "local", "private"]; + case "loopback": return ["unknown", "local", "public"]; + case "local": return ["unknown", "loopback", "public"]; + case "public": return ["unknown", "loopback", "local"]; } } @@ -169,64 +169,66 @@ function makeNoBypassTests({ source, target }) { }, fetchOptions: { targetAddressSpace: correctAddressSpace }, expected: FetchTestResult.FAILURE, - }), prefix + 'not a private network request.'); + }), prefix + 'not a local network request.'); } -// Source: local secure context. +// Source: loopback secure context. // -// Fetches to the local and private address spaces cannot use +// Fetches to the loopback and local address spaces cannot use // `targetAddressSpace` to bypass mixed content, as they are not otherwise -// blocked by Private Network Access. +// blocked by Local Network Access. -makeNoBypassTests({ source: "local", target: "local" }); -makeNoBypassTests({ source: "local", target: "private" }); -makeNoBypassTests({ source: "local", target: "public" }); +makeNoBypassTests({ source: "loopback", target: "loopback" }); +makeNoBypassTests({ source: "loopback", target: "local" }); +makeNoBypassTests({ source: "loopback", target: "public" }); -// Source: private secure context. +// Source: local secure context. // -// Fetches to the local address space requires the right `targetAddressSpace` +// Fetches to the loopback address space requires the right `targetAddressSpace` // option, as well as a successful preflight response carrying a PNA-specific // header. // -// Fetches to the private address space cannot use `targetAddressSpace` to -// bypass mixed content, as they are not otherwise blocked by Private Network +// Fetches to the local address space cannot use `targetAddressSpace` to +// bypass mixed content, as they are not otherwise blocked by Local Network // Access. -makeTests({ source: "private", target: "local" }); +makeTests({ source: "local", target: "loopback" }); -makeNoBypassTests({ source: "private", target: "private" }); -makeNoBypassTests({ source: "private", target: "public" }); +makeNoBypassTests({ source: "local", target: "local" }); +makeNoBypassTests({ source: "local", target: "public" }); // Source: public secure context. // -// Fetches to the local and private address spaces require the right +// Fetches to the loopback and local address spaces require the right // `targetAddressSpace` option, as well as a successful preflight response // carrying a PNA-specific header. +makeTests({ source: "public", target: "loopback" }); makeTests({ source: "public", target: "local" }); -makeTests({ source: "public", target: "private" }); makeNoBypassTests({ source: "public", target: "public" }); -// These tests verify that documents fetched from the `local` address space yet -// carrying the `treat-as-public-address` CSP directive are treated as if they -// had been fetched from the `public` address space. +// These tests verify that documents fetched from the `loopback` address space +// yet carrying the `treat-as-public-address` CSP directive are treated as if +// they had been fetched from the `public` address space. -promise_test_parallel(t => fetchTest(t, { - source: { - server: Server.HTTPS_LOCAL, - treatAsPublic: true, - }, - target: { - server: Server.HTTP_LOCAL, - behavior: { - preflight: PreflightBehavior.optionalSuccess(token()), - response: ResponseBehavior.allowCrossOrigin(), - }, - }, - fetchOptions: { targetAddressSpace: "private" }, - expected: FetchTestResult.FAILURE, -}), 'https-treat-as-public to http-local: wrong targetAddressSpace "private".'); +promise_test_parallel( + t => fetchTest(t, { + source: { + server: Server.HTTPS_LOCAL, + treatAsPublic: true, + }, + target: { + server: Server.HTTP_LOCAL, + behavior: { + preflight: PreflightBehavior.optionalSuccess(token()), + response: ResponseBehavior.allowCrossOrigin(), + }, + }, + fetchOptions: {targetAddressSpace: 'local'}, + expected: FetchTestResult.FAILURE, + }), + 'https-treat-as-public to http-loopback: wrong targetAddressSpace "local".'); promise_test_parallel(t => fetchTest(t, { source: { @@ -240,9 +242,9 @@ promise_test_parallel(t => fetchTest(t, { response: ResponseBehavior.allowCrossOrigin(), }, }, - fetchOptions: { targetAddressSpace: "local" }, + fetchOptions: { targetAddressSpace: "loopback" }, expected: FetchTestResult.SUCCESS, -}), "https-treat-as-public to http-local: success."); +}), "https-treat-as-public to http-loopback: success."); promise_test_parallel(t => fetchTest(t, { source: { @@ -256,9 +258,9 @@ promise_test_parallel(t => fetchTest(t, { response: ResponseBehavior.allowCrossOrigin(), }, }, - fetchOptions: { targetAddressSpace: "local" }, + fetchOptions: { targetAddressSpace: "loopback" }, expected: FetchTestResult.FAILURE, -}), 'https-treat-as-public to http-private: wrong targetAddressSpace "local".'); +}), 'https-treat-as-public to http-local: wrong targetAddressSpace "loopback".'); promise_test_parallel(t => fetchTest(t, { source: { @@ -272,6 +274,6 @@ promise_test_parallel(t => fetchTest(t, { response: ResponseBehavior.allowCrossOrigin(), }, }, - fetchOptions: { targetAddressSpace: "private" }, + fetchOptions: { targetAddressSpace: "local" }, expected: FetchTestResult.SUCCESS, -}), "https-treat-as-public to http-private: success."); +}), "https-treat-as-public to http-local: success."); diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/nested-worker.https.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/nested-worker.https.window.js index 3eeb435badb..3eeb435badb 100644 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/nested-worker.https.window.js +++ b/tests/wpt/web-platform-tests/fetch/local-network-access/nested-worker.https.window.js diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/nested-worker.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/nested-worker.window.js index 6d246e1c76d..6d246e1c76d 100644 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/nested-worker.window.js +++ b/tests/wpt/web-platform-tests/fetch/local-network-access/nested-worker.window.js diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/preflight-cache.https.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/preflight-cache.https.window.js index 87dbf501f62..87dbf501f62 100644 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/preflight-cache.https.window.js +++ b/tests/wpt/web-platform-tests/fetch/local-network-access/preflight-cache.https.window.js diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/redirect.https.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/redirect.https.window.js index f8a53ad1889..f8a53ad1889 100644 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/redirect.https.window.js +++ b/tests/wpt/web-platform-tests/fetch/local-network-access/redirect.https.window.js diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/executor.html b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/executor.html index d71212951cb..d71212951cb 100644 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/executor.html +++ b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/executor.html diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/fetcher.html b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/fetcher.html index 000a5cc25bb..000a5cc25bb 100644 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/fetcher.html +++ b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/fetcher.html diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/fetcher.js b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/fetcher.js index 3a1859876d4..3a1859876d4 100644 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/fetcher.js +++ b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/fetcher.js diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/iframed.html b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/iframed.html index c889c2882a4..c889c2882a4 100644 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/iframed.html +++ b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/iframed.html diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/iframer.html b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/iframer.html index 304cc54ae44..304cc54ae44 100644 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/iframer.html +++ b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/iframer.html diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/preflight.py b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/preflight.py index 4b0bfefd4d6..4b0bfefd4d6 100644 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/preflight.py +++ b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/preflight.py diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/service-worker-bridge.html b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/service-worker-bridge.html index 816de535fea..816de535fea 100644 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/service-worker-bridge.html +++ b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/service-worker-bridge.html diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/service-worker.js b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/service-worker.js index bca71ad910c..bca71ad910c 100644 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/service-worker.js +++ b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/service-worker.js diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/shared-fetcher.js b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/shared-fetcher.js index 30bde1e0542..30bde1e0542 100644 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/shared-fetcher.js +++ b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/shared-fetcher.js diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/shared-worker-blob-fetcher.html b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/shared-worker-blob-fetcher.html index a79869b2f96..a79869b2f96 100644 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/shared-worker-blob-fetcher.html +++ b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/shared-worker-blob-fetcher.html diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/shared-worker-fetcher.html b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/shared-worker-fetcher.html index 4af4b1f2395..4af4b1f2395 100644 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/shared-worker-fetcher.html +++ b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/shared-worker-fetcher.html diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/socket-opener.html b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/socket-opener.html index 48d27216bed..48d27216bed 100644 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/socket-opener.html +++ b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/socket-opener.html diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/support.sub.js b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/support.sub.js index 210184ec4b6..c07fd2c2ace 100644 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/support.sub.js +++ b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/support.sub.js @@ -75,20 +75,20 @@ async function postMessageAndAwaitReply(target, message) { // Maps protocol (without the trailing colon) and address space to port. const SERVER_PORTS = { "http": { - "local": {{ports[http][0]}}, - "private": {{ports[http-private][0]}}, + "loopback": {{ports[http][0]}}, + "local": {{ports[http-private][0]}}, "public": {{ports[http-public][0]}}, }, "https": { - "local": {{ports[https][0]}}, - "private": {{ports[https-private][0]}}, + "loopback": {{ports[https][0]}}, + "local": {{ports[https-private][0]}}, "public": {{ports[https-public][0]}}, }, "ws": { - "local": {{ports[ws][0]}}, + "loopback": {{ports[ws][0]}}, }, "wss": { - "local": {{ports[wss][0]}}, + "loopback": {{ports[wss][0]}}, }, }; @@ -126,14 +126,14 @@ class Server { }; } - static HTTP_LOCAL = Server.get("http", "local"); - static HTTP_PRIVATE = Server.get("http", "private"); + static HTTP_LOCAL = Server.get("http", "loopback"); + static HTTP_PRIVATE = Server.get("http", "local"); static HTTP_PUBLIC = Server.get("http", "public"); - static HTTPS_LOCAL = Server.get("https", "local"); - static HTTPS_PRIVATE = Server.get("https", "private"); + static HTTPS_LOCAL = Server.get("https", "loopback"); + static HTTPS_PRIVATE = Server.get("https", "local"); static HTTPS_PUBLIC = Server.get("https", "public"); - static WS_LOCAL = Server.get("ws", "local"); - static WSS_LOCAL = Server.get("wss", "local"); + static WS_LOCAL = Server.get("ws", "loopback"); + static WSS_LOCAL = Server.get("wss", "loopback"); }; // Resolves a URL relative to the current location, returning an absolute URL. diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/worker-blob-fetcher.html b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/worker-blob-fetcher.html index 5a50271e11b..5a50271e11b 100644 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/worker-blob-fetcher.html +++ b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/worker-blob-fetcher.html diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/worker-fetcher.html b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/worker-fetcher.html index bd155a532bd..bd155a532bd 100644 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/worker-fetcher.html +++ b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/worker-fetcher.html diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/worker-fetcher.js b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/worker-fetcher.js index aab49afe6f4..aab49afe6f4 100644 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/worker-fetcher.js +++ b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/worker-fetcher.js diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/xhr-sender.html b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/xhr-sender.html index b131fa41f9a..b131fa41f9a 100644 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/xhr-sender.html +++ b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/xhr-sender.html diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/service-worker-background-fetch.https.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/service-worker-background-fetch.https.window.js index 6369b166e21..6369b166e21 100644 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/service-worker-background-fetch.https.window.js +++ b/tests/wpt/web-platform-tests/fetch/local-network-access/service-worker-background-fetch.https.window.js diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/service-worker-fetch.https.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/service-worker-fetch.https.window.js index 5645d784561..5645d784561 100644 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/service-worker-fetch.https.window.js +++ b/tests/wpt/web-platform-tests/fetch/local-network-access/service-worker-fetch.https.window.js diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/service-worker-update.https.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/service-worker-update.https.window.js index fe2bf58f660..fe2bf58f660 100644 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/service-worker-update.https.window.js +++ b/tests/wpt/web-platform-tests/fetch/local-network-access/service-worker-update.https.window.js diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/service-worker.https.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/service-worker.https.window.js index 8dc631f65a8..8dc631f65a8 100644 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/service-worker.https.window.js +++ b/tests/wpt/web-platform-tests/fetch/local-network-access/service-worker.https.window.js diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/shared-worker-blob-fetch.https.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/shared-worker-blob-fetch.https.window.js index ad9cd09c31b..ad9cd09c31b 100644 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/shared-worker-blob-fetch.https.window.js +++ b/tests/wpt/web-platform-tests/fetch/local-network-access/shared-worker-blob-fetch.https.window.js diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/shared-worker-blob-fetch.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/shared-worker-blob-fetch.window.js index d430ea73837..d430ea73837 100644 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/shared-worker-blob-fetch.window.js +++ b/tests/wpt/web-platform-tests/fetch/local-network-access/shared-worker-blob-fetch.window.js diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/shared-worker-fetch.https.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/shared-worker-fetch.https.window.js index 7066b359caa..7066b359caa 100644 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/shared-worker-fetch.https.window.js +++ b/tests/wpt/web-platform-tests/fetch/local-network-access/shared-worker-fetch.https.window.js diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/shared-worker-fetch.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/shared-worker-fetch.window.js index 9bc1a89bead..9bc1a89bead 100644 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/shared-worker-fetch.window.js +++ b/tests/wpt/web-platform-tests/fetch/local-network-access/shared-worker-fetch.window.js diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/shared-worker.https.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/shared-worker.https.window.js index ecb70c41245..ecb70c41245 100644 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/shared-worker.https.window.js +++ b/tests/wpt/web-platform-tests/fetch/local-network-access/shared-worker.https.window.js diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/shared-worker.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/shared-worker.window.js index ffa8a360c70..ffa8a360c70 100644 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/shared-worker.window.js +++ b/tests/wpt/web-platform-tests/fetch/local-network-access/shared-worker.window.js diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/websocket.https.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/websocket.https.window.js index 0731896098b..0731896098b 100644 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/websocket.https.window.js +++ b/tests/wpt/web-platform-tests/fetch/local-network-access/websocket.https.window.js diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/websocket.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/websocket.window.js index a44cfaedec7..a44cfaedec7 100644 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/websocket.window.js +++ b/tests/wpt/web-platform-tests/fetch/local-network-access/websocket.window.js diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/worker-blob-fetch.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/worker-blob-fetch.window.js index e119746b8a6..e119746b8a6 100644 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/worker-blob-fetch.window.js +++ b/tests/wpt/web-platform-tests/fetch/local-network-access/worker-blob-fetch.window.js diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/worker-fetch.https.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/worker-fetch.https.window.js index 89e0c3cf1f3..89e0c3cf1f3 100644 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/worker-fetch.https.window.js +++ b/tests/wpt/web-platform-tests/fetch/local-network-access/worker-fetch.https.window.js diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/worker-fetch.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/worker-fetch.window.js index 4d6b12f0671..4d6b12f0671 100644 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/worker-fetch.window.js +++ b/tests/wpt/web-platform-tests/fetch/local-network-access/worker-fetch.window.js diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/worker.https.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/worker.https.window.js index 2d0dddd685c..2d0dddd685c 100644 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/worker.https.window.js +++ b/tests/wpt/web-platform-tests/fetch/local-network-access/worker.https.window.js diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/worker.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/worker.window.js index 118c0992544..118c0992544 100644 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/worker.window.js +++ b/tests/wpt/web-platform-tests/fetch/local-network-access/worker.window.js diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/xhr-from-treat-as-public.https.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/xhr-from-treat-as-public.https.window.js index 04fe5449d19..04fe5449d19 100644 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/xhr-from-treat-as-public.https.window.js +++ b/tests/wpt/web-platform-tests/fetch/local-network-access/xhr-from-treat-as-public.https.window.js diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/xhr.https.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/xhr.https.window.js index 4dc5da9912f..4dc5da9912f 100644 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/xhr.https.window.js +++ b/tests/wpt/web-platform-tests/fetch/local-network-access/xhr.https.window.js diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/xhr.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/xhr.window.js index fa307dc559a..fa307dc559a 100644 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/xhr.window.js +++ b/tests/wpt/web-platform-tests/fetch/local-network-access/xhr.window.js diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/README.md b/tests/wpt/web-platform-tests/fetch/private-network-access/README.md deleted file mode 100644 index a69aab48723..00000000000 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/README.md +++ /dev/null @@ -1,10 +0,0 @@ -# Private Network Access tests - -This directory contains tests for Private Network Access' integration with -the Fetch specification. - -See also: - -* [The specification](https://wicg.github.io/private-network-access/) -* [The repository](https://github.com/WICG/private-network-access/) -* [Open issues](https://github.com/WICG/private-network-access/issues/) diff --git a/tests/wpt/web-platform-tests/fs/FileSystemFileHandle-sync-access-handle-writable-lock.https.tentative.worker.js b/tests/wpt/web-platform-tests/fs/FileSystemFileHandle-sync-access-handle-writable-lock.https.tentative.worker.js index 7f244bc02aa..1b7fcda35bf 100644 --- a/tests/wpt/web-platform-tests/fs/FileSystemFileHandle-sync-access-handle-writable-lock.https.tentative.worker.js +++ b/tests/wpt/web-platform-tests/fs/FileSystemFileHandle-sync-access-handle-writable-lock.https.tentative.worker.js @@ -7,6 +7,7 @@ directory_test(async (t, root_dir) => { const fileHandle = await root_dir.getFileHandle('OPFS.test', {create: true}); const syncHandle1 = await fileHandle.createSyncAccessHandle(); + t.add_cleanup(() => syncHandle1.close()); await promise_rejects_dom( t, 'NoModificationAllowedError', fileHandle.createSyncAccessHandle()); @@ -23,6 +24,7 @@ directory_test(async (t, root_dir) => { t.add_cleanup(() => fooSyncHandle.close()); const barSyncHandle1 = await barFileHandle.createSyncAccessHandle(); + t.add_cleanup(() => barSyncHandle1.close()); await promise_rejects_dom( t, 'NoModificationAllowedError', barFileHandle.createSyncAccessHandle()); @@ -60,8 +62,10 @@ directory_test(async (t, root_dir) => { const fileHandle = await root_dir.getFileHandle('OPFS.test', {create: true}); const syncHandle = await fileHandle.createSyncAccessHandle(); + t.add_cleanup(() => { syncHandle.close(); }); await promise_rejects_dom( - t, 'NoModificationAllowedError', fileHandle.createWritable()); + t, 'NoModificationAllowedError', cleanup_writable(t, fileHandle.createWritable())); + syncHandle.close(); const writable = await fileHandle.createWritable(); await writable.close(); diff --git a/tests/wpt/web-platform-tests/html/anonymous-iframe/worker-cookies.tentative.https.window.js b/tests/wpt/web-platform-tests/html/anonymous-iframe/worker-cookies.tentative.https.window.js new file mode 100644 index 00000000000..4c29983c2b2 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/anonymous-iframe/worker-cookies.tentative.https.window.js @@ -0,0 +1,69 @@ +// META: timeout=long +// META: variant=?worker=dedicated_worker +// META: variant=?worker=shared_worker +// META: variant=?worker=service_worker +// META: script=/common/get-host-info.sub.js +// META: script=/common/utils.js +// META: script=/common/dispatcher/dispatcher.js +// META: script=/html/cross-origin-embedder-policy/credentialless/resources/common.js +// META: script=./resources/common.js + +// Execute the same set of tests for every type of worker. +// - DedicatedWorkers +// - SharedWorkers +// - ServiceWorkers. +const params = new URLSearchParams(document.location.search); +const worker_param = params.get("worker") || "dedicated_worker"; + +const cookie_key = token(); +const cookie_value = "cookie_value"; +const cookie_origin = get_host_info().HTTPS_REMOTE_ORIGIN; + +// Create worker spawned from `context` and return its uuid. +const workerFrom = context => { + const reply = token(); + send(context, ` + for(deps of [ + "/common/utils.js", + "/html/cross-origin-embedder-policy/credentialless/resources/common.js", + ]) { + await new Promise(resolve => { + const script = document.createElement("script"); + script.src = deps; + script.onload = resolve; + document.body.appendChild(script); + }); + } + + const worker_constructor = environments["${worker_param}"]; + const headers = ""; + const [worker, error] = worker_constructor(headers); + send("${reply}", worker); + `); + return receive(reply); +}; + +// Set a cookie from a top-level document. +promise_test(async test => { + await setCookie(cookie_origin, cookie_key, cookie_value); +}, "set cookies"); + +// Control: iframe is not credentialless. The worker can access cookies. +promise_test(async test => { + const headers = token(); + send(await workerFrom(newIframe(cookie_origin)), ` + fetch("${showRequestHeaders(cookie_origin, headers)}"); + `); + const cookie = parseCookies(JSON.parse(await receive(headers))); + assert_equals(cookie[cookie_key], cookie_value) +}, "Worker spawned from normal iframe can access global cookies"); + +// Experiment: iframe is credentialless. +promise_test(async test => { + const headers = token(); + send(await workerFrom(newIframeCredentialless(cookie_origin)), ` + fetch("${showRequestHeaders(cookie_origin, headers)}"); + `); + const cookie = parseCookies(JSON.parse(await receive(headers))); + assert_equals(cookie[cookie_key], undefined) +}, "Worker spawned from credentialless iframe can't access global cookies"); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.scale.zero.html b/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.scale.zero.html index 4ff7397ae8c..f495ee2e6a0 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.scale.zero.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.scale.zero.html @@ -36,8 +36,6 @@ ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.restore(); -canvas.toDataURL(); - _assertPixel(canvas, 50,25, 0,255,0,255); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.order.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.order.html index b1308035936..83815f367b7 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.order.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.order.html @@ -15,18 +15,21 @@ var t_pass = t.done.bind(t); var t_fail = t.step_func(function(reason) { throw reason; }); -t.step(function() { +t.step(async function() { var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); +await (function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); + ctx.scale(2, 1); ctx.rotate(Math.PI / 2); ctx.fillStyle = '#0f0'; ctx.fillRect(0, -50, 50, 50); _assertPixel(canvas, 75,25, 0,255,0,255); +})(canvas, ctx); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.order.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.order.worker.js index 7ac61067b4b..d00fe230efb 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.order.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.order.worker.js @@ -18,6 +18,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); + ctx.scale(2, 1); ctx.rotate(Math.PI / 2); ctx.fillStyle = '#0f0'; diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.direction.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.direction.html index 0a98c7e65f9..c20608f81c8 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.direction.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.direction.html @@ -15,17 +15,20 @@ var t_pass = t.done.bind(t); var t_fail = t.step_func(function(reason) { throw reason; }); -t.step(function() { +t.step(async function() { var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); +await (function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); + ctx.rotate(Math.PI / 2); ctx.fillStyle = '#0f0'; ctx.fillRect(0, -100, 50, 100); _assertPixel(canvas, 50,25, 0,255,0,255); +})(canvas, ctx); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.direction.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.direction.worker.js index 465d3b67907..8506937583e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.direction.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.direction.worker.js @@ -18,6 +18,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); + ctx.rotate(Math.PI / 2); ctx.fillStyle = '#0f0'; ctx.fillRect(0, -100, 50, 100); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.nonfinite.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.nonfinite.html index 0f2227a4e5c..bbc294a24fe 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.nonfinite.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.nonfinite.html @@ -15,20 +15,25 @@ var t_pass = t.done.bind(t); var t_fail = t.step_func(function(reason) { throw reason; }); -t.step(function() { +t.step(async function() { var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); +await (function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); + ctx.translate(100, 10); ctx.rotate(Infinity); ctx.rotate(-Infinity); ctx.rotate(NaN); + ctx.fillStyle = '#0f0'; ctx.fillRect(-100, -10, 100, 50); + _assertPixel(canvas, 50,25, 0,255,0,255); +})(canvas, ctx); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.nonfinite.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.nonfinite.worker.js index 56a04d874e8..2c892a561b2 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.nonfinite.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.nonfinite.worker.js @@ -18,12 +18,15 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); + ctx.translate(100, 10); ctx.rotate(Infinity); ctx.rotate(-Infinity); ctx.rotate(NaN); + ctx.fillStyle = '#0f0'; ctx.fillRect(-100, -10, 100, 50); + _assertPixel(canvas, 50,25, 0,255,0,255); t.done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.radians.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.radians.html index 8a78dddd7f8..75121e39d7f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.radians.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.radians.html @@ -15,17 +15,20 @@ var t_pass = t.done.bind(t); var t_fail = t.step_func(function(reason) { throw reason; }); -t.step(function() { +t.step(async function() { var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); +await (function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); + ctx.rotate(Math.PI); // should fail obviously if this is 3.1 degrees ctx.fillStyle = '#0f0'; ctx.fillRect(-100, -50, 100, 50); _assertPixel(canvas, 50,25, 0,255,0,255); +})(canvas, ctx); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.radians.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.radians.worker.js index 9780e68a02f..8c2fdd8ab08 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.radians.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.radians.worker.js @@ -18,6 +18,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); + ctx.rotate(Math.PI); // should fail obviously if this is 3.1 degrees ctx.fillStyle = '#0f0'; ctx.fillRect(-100, -50, 100, 50); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.wrap.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.wrap.html index 7711a8c1404..1f9eb838c81 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.wrap.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.wrap.html @@ -15,13 +15,15 @@ var t_pass = t.done.bind(t); var t_fail = t.step_func(function(reason) { throw reason; }); -t.step(function() { +t.step(async function() { var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); +await (function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); + ctx.rotate(Math.PI * (1 + 4096)); // == pi (mod 2*pi) // We need about pi +/- 0.001 in order to get correct-looking results // 32-bit floats can store pi*4097 with precision 2^-10, so that should @@ -31,6 +33,7 @@ ctx.fillRect(-100, -50, 100, 50); _assertPixel(canvas, 50,25, 0,255,0,255); _assertPixel(canvas, 98,2, 0,255,0,255); _assertPixel(canvas, 98,47, 0,255,0,255); +})(canvas, ctx); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.wrap.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.wrap.worker.js index db9fbd43bc1..579a1b6dd68 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.wrap.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.wrap.worker.js @@ -18,6 +18,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); + ctx.rotate(Math.PI * (1 + 4096)); // == pi (mod 2*pi) // We need about pi +/- 0.001 in order to get correct-looking results // 32-bit floats can store pi*4097 with precision 2^-10, so that should diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.wrapnegative.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.wrapnegative.html index 49959dac022..c06f6453155 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.wrapnegative.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.wrapnegative.html @@ -15,19 +15,22 @@ var t_pass = t.done.bind(t); var t_fail = t.step_func(function(reason) { throw reason; }); -t.step(function() { +t.step(async function() { var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); +await (function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); + ctx.rotate(-Math.PI * (1 + 4096)); ctx.fillStyle = '#0f0'; ctx.fillRect(-100, -50, 100, 50); _assertPixel(canvas, 50,25, 0,255,0,255); _assertPixel(canvas, 98,2, 0,255,0,255); _assertPixel(canvas, 98,47, 0,255,0,255); +})(canvas, ctx); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.wrapnegative.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.wrapnegative.worker.js index 7f93f654582..cce91071210 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.wrapnegative.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.wrapnegative.worker.js @@ -18,6 +18,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); + ctx.rotate(-Math.PI * (1 + 4096)); ctx.fillStyle = '#0f0'; ctx.fillRect(-100, -50, 100, 50); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.zero.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.zero.html index 2255b9973dd..0101fa27c58 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.zero.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.zero.html @@ -15,17 +15,20 @@ var t_pass = t.done.bind(t); var t_fail = t.step_func(function(reason) { throw reason; }); -t.step(function() { +t.step(async function() { var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); +await (function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); + ctx.rotate(0); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); _assertPixel(canvas, 50,25, 0,255,0,255); +})(canvas, ctx); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.zero.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.zero.worker.js index 10e00c4656a..1ad0aa59853 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.zero.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.rotate.zero.worker.js @@ -18,6 +18,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); + ctx.rotate(0); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.basic.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.basic.html index c78ac79f5ab..5c70438ba16 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.basic.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.basic.html @@ -15,17 +15,20 @@ var t_pass = t.done.bind(t); var t_fail = t.step_func(function(reason) { throw reason; }); -t.step(function() { +t.step(async function() { var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); +await (function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); + ctx.scale(2, 4); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 50, 12.5); _assertPixel(canvas, 90,40, 0,255,0,255); +})(canvas, ctx); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.basic.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.basic.worker.js index 39b52d57b5f..73be61007a5 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.basic.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.basic.worker.js @@ -18,6 +18,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); + ctx.scale(2, 4); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 50, 12.5); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.large.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.large.html index a67d05eb2c2..8974545500a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.large.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.large.html @@ -15,17 +15,20 @@ var t_pass = t.done.bind(t); var t_fail = t.step_func(function(reason) { throw reason; }); -t.step(function() { +t.step(async function() { var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); +await (function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); + ctx.scale(1e5, 1e5); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 1, 1); _assertPixel(canvas, 50,25, 0,255,0,255); +})(canvas, ctx); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.large.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.large.worker.js index 1293cce196f..30af9631e6c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.large.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.large.worker.js @@ -18,6 +18,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); + ctx.scale(1e5, 1e5); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 1, 1); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.multiple.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.multiple.html index 717f3d305a1..b07acf15ce6 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.multiple.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.multiple.html @@ -15,18 +15,21 @@ var t_pass = t.done.bind(t); var t_fail = t.step_func(function(reason) { throw reason; }); -t.step(function() { +t.step(async function() { var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); +await (function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); + ctx.scale(Math.sqrt(2), Math.sqrt(2)); ctx.scale(Math.sqrt(2), Math.sqrt(2)); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 50, 25); _assertPixel(canvas, 90,40, 0,255,0,255); +})(canvas, ctx); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.multiple.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.multiple.worker.js index c5a38207ea0..267a7df9441 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.multiple.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.multiple.worker.js @@ -18,6 +18,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); + ctx.scale(Math.sqrt(2), Math.sqrt(2)); ctx.scale(Math.sqrt(2), Math.sqrt(2)); ctx.fillStyle = '#0f0'; diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.negative.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.negative.html index fbcec5d763a..b516c1154f4 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.negative.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.negative.html @@ -15,18 +15,21 @@ var t_pass = t.done.bind(t); var t_fail = t.step_func(function(reason) { throw reason; }); -t.step(function() { +t.step(async function() { var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); +await (function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); + ctx.save(); ctx.scale(-1, 1); ctx.fillStyle = '#0f0'; ctx.fillRect(-50, 0, 50, 50); ctx.restore(); + ctx.save(); ctx.scale(1, -1); ctx.fillStyle = '#0f0'; @@ -34,6 +37,7 @@ ctx.fillRect(50, -50, 50, 50); ctx.restore(); _assertPixel(canvas, 25,25, 0,255,0,255); _assertPixel(canvas, 75,25, 0,255,0,255); +})(canvas, ctx); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.negative.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.negative.worker.js index a5344a9a717..0e68f7e8d8c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.negative.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.negative.worker.js @@ -18,11 +18,13 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); + ctx.save(); ctx.scale(-1, 1); ctx.fillStyle = '#0f0'; ctx.fillRect(-50, 0, 50, 50); ctx.restore(); + ctx.save(); ctx.scale(1, -1); ctx.fillStyle = '#0f0'; diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.nonfinite.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.nonfinite.html index ac38bc1fa46..3d9c75a0dc0 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.nonfinite.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.nonfinite.html @@ -15,13 +15,15 @@ var t_pass = t.done.bind(t); var t_fail = t.step_func(function(reason) { throw reason; }); -t.step(function() { +t.step(async function() { var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); +await (function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); + ctx.translate(100, 10); ctx.scale(Infinity, 0.1); ctx.scale(-Infinity, 0.1); @@ -30,9 +32,12 @@ ctx.scale(0.1, Infinity); ctx.scale(0.1, -Infinity); ctx.scale(0.1, NaN); ctx.scale(Infinity, Infinity); + ctx.fillStyle = '#0f0'; ctx.fillRect(-100, -10, 100, 50); + _assertPixel(canvas, 50,25, 0,255,0,255); +})(canvas, ctx); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.nonfinite.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.nonfinite.worker.js index 95e9922b69b..67c5c104481 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.nonfinite.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.nonfinite.worker.js @@ -18,6 +18,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); + ctx.translate(100, 10); ctx.scale(Infinity, 0.1); ctx.scale(-Infinity, 0.1); @@ -26,8 +27,10 @@ ctx.scale(0.1, Infinity); ctx.scale(0.1, -Infinity); ctx.scale(0.1, NaN); ctx.scale(Infinity, Infinity); + ctx.fillStyle = '#0f0'; ctx.fillRect(-100, -10, 100, 50); + _assertPixel(canvas, 50,25, 0,255,0,255); t.done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.zero.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.zero.html index 9eae3b1db33..4b664125c22 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.zero.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.zero.html @@ -15,26 +15,31 @@ var t_pass = t.done.bind(t); var t_fail = t.step_func(function(reason) { throw reason; }); -t.step(function() { +t.step(async function() { var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); +await (function(canvas, ctx) { ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); + ctx.save(); ctx.translate(50, 0); ctx.scale(0, 1); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.restore(); + ctx.save(); ctx.translate(0, 25); ctx.scale(1, 0); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.restore(); + _assertPixel(canvas, 50,25, 0,255,0,255); +})(canvas, ctx); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.zero.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.zero.worker.js index 0f8dad04422..dc52323bc23 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.zero.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.scale.zero.worker.js @@ -18,18 +18,21 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); + ctx.save(); ctx.translate(50, 0); ctx.scale(0, 1); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.restore(); + ctx.save(); ctx.translate(0, 25); ctx.scale(1, 0); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); ctx.restore(); + _assertPixel(canvas, 50,25, 0,255,0,255); t.done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.multiple.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.multiple.html index f8dfb048812..e28710858b1 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.multiple.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.multiple.html @@ -15,18 +15,22 @@ var t_pass = t.done.bind(t); var t_fail = t.step_func(function(reason) { throw reason; }); -t.step(function() { +t.step(async function() { var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); +await (function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); + ctx.setTransform(1/2,0, 0,1/2, 0,0); +ctx.setTransform(); ctx.setTransform(2,0, 0,2, 0,0); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 50, 25); _assertPixel(canvas, 75,35, 0,255,0,255); +})(canvas, ctx); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.multiple.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.multiple.worker.js index 9d01c1302ec..b6b004601fb 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.multiple.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.multiple.worker.js @@ -18,7 +18,9 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); + ctx.setTransform(1/2,0, 0,1/2, 0,0); +ctx.setTransform(); ctx.setTransform(2,0, 0,2, 0,0); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 50, 25); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.nonfinite.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.nonfinite.html index fbed341a04a..03c1b74579f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.nonfinite.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.nonfinite.html @@ -15,13 +15,15 @@ var t_pass = t.done.bind(t); var t_fail = t.step_func(function(reason) { throw reason; }); -t.step(function() { +t.step(async function() { var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); +await (function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); + ctx.translate(100, 10); ctx.setTransform(Infinity, 0, 0, 0, 0, 0); ctx.setTransform(-Infinity, 0, 0, 0, 0, 0); @@ -98,9 +100,12 @@ ctx.setTransform(0, 0, 0, Infinity, Infinity, 0); ctx.setTransform(0, 0, 0, Infinity, Infinity, Infinity); ctx.setTransform(0, 0, 0, Infinity, 0, Infinity); ctx.setTransform(0, 0, 0, 0, Infinity, Infinity); + ctx.fillStyle = '#0f0'; ctx.fillRect(-100, -10, 100, 50); + _assertPixel(canvas, 50,25, 0,255,0,255); +})(canvas, ctx); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.nonfinite.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.nonfinite.worker.js index be7e055a853..bd48262ca7d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.nonfinite.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.nonfinite.worker.js @@ -18,6 +18,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); + ctx.translate(100, 10); ctx.setTransform(Infinity, 0, 0, 0, 0, 0); ctx.setTransform(-Infinity, 0, 0, 0, 0, 0); @@ -94,8 +95,10 @@ ctx.setTransform(0, 0, 0, Infinity, Infinity, 0); ctx.setTransform(0, 0, 0, Infinity, Infinity, Infinity); ctx.setTransform(0, 0, 0, Infinity, 0, Infinity); ctx.setTransform(0, 0, 0, 0, Infinity, Infinity); + ctx.fillStyle = '#0f0'; ctx.fillRect(-100, -10, 100, 50); + _assertPixel(canvas, 50,25, 0,255,0,255); t.done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.skewed.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.skewed.html index 40fa8015d4c..c49d9d8a298 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.skewed.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.skewed.html @@ -15,11 +15,12 @@ var t_pass = t.done.bind(t); var t_fail = t.step_func(function(reason) { throw reason; }); -t.step(function() { +t.step(async function() { var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); +await (function(canvas, ctx) { // Create green with a red square ring inside it ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -27,6 +28,7 @@ ctx.fillStyle = '#f00'; ctx.fillRect(20, 10, 60, 30); ctx.fillStyle = '#0f0'; ctx.fillRect(40, 20, 20, 10); + // Draw a skewed shape to fill that gap, to make sure it is aligned correctly ctx.setTransform(1,4, 2,3, 5,6); // Post-transform coordinates: @@ -48,6 +50,7 @@ _assertPixel(canvas, 39,19, 0,255,0,255); _assertPixel(canvas, 61,19, 0,255,0,255); _assertPixel(canvas, 39,31, 0,255,0,255); _assertPixel(canvas, 61,31, 0,255,0,255); +})(canvas, ctx); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.skewed.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.skewed.worker.js index 6490f9b7094..6f4b4769b61 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.skewed.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.skewed.worker.js @@ -23,6 +23,7 @@ ctx.fillStyle = '#f00'; ctx.fillRect(20, 10, 60, 30); ctx.fillStyle = '#0f0'; ctx.fillRect(40, 20, 20, 10); + // Draw a skewed shape to fill that gap, to make sure it is aligned correctly ctx.setTransform(1,4, 2,3, 5,6); // Post-transform coordinates: diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.identity.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.identity.html index 92753bc9e3e..1efa306707c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.identity.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.identity.html @@ -15,17 +15,20 @@ var t_pass = t.done.bind(t); var t_fail = t.step_func(function(reason) { throw reason; }); -t.step(function() { +t.step(async function() { var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); +await (function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); + ctx.transform(1,0, 0,1, 0,0); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); _assertPixel(canvas, 50,25, 0,255,0,255); +})(canvas, ctx); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.identity.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.identity.worker.js index 99ac58d49d3..51a11ee03de 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.identity.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.identity.worker.js @@ -18,6 +18,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); + ctx.transform(1,0, 0,1, 0,0); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.multiply.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.multiply.html index f69fa4330af..05a1e7e5ead 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.multiply.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.multiply.html @@ -15,18 +15,21 @@ var t_pass = t.done.bind(t); var t_fail = t.step_func(function(reason) { throw reason; }); -t.step(function() { +t.step(async function() { var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); +await (function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); + ctx.transform(1,2, 3,4, 5,6); ctx.transform(-2,1, 3/2,-1/2, 1,-2); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); _assertPixel(canvas, 50,25, 0,255,0,255); +})(canvas, ctx); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.multiply.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.multiply.worker.js index 1a0e702a05b..61a5f052dc7 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.multiply.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.multiply.worker.js @@ -18,6 +18,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); + ctx.transform(1,2, 3,4, 5,6); ctx.transform(-2,1, 3/2,-1/2, 1,-2); ctx.fillStyle = '#0f0'; diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.nonfinite.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.nonfinite.html index 6e679341d5d..b81bda463bd 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.nonfinite.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.nonfinite.html @@ -15,13 +15,15 @@ var t_pass = t.done.bind(t); var t_fail = t.step_func(function(reason) { throw reason; }); -t.step(function() { +t.step(async function() { var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); +await (function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); + ctx.translate(100, 10); ctx.transform(Infinity, 0, 0, 0, 0, 0); ctx.transform(-Infinity, 0, 0, 0, 0, 0); @@ -98,9 +100,12 @@ ctx.transform(0, 0, 0, Infinity, Infinity, 0); ctx.transform(0, 0, 0, Infinity, Infinity, Infinity); ctx.transform(0, 0, 0, Infinity, 0, Infinity); ctx.transform(0, 0, 0, 0, Infinity, Infinity); + ctx.fillStyle = '#0f0'; ctx.fillRect(-100, -10, 100, 50); + _assertPixel(canvas, 50,25, 0,255,0,255); +})(canvas, ctx); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.nonfinite.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.nonfinite.worker.js index d596fc9744b..ee675151b3a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.nonfinite.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.nonfinite.worker.js @@ -18,6 +18,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); + ctx.translate(100, 10); ctx.transform(Infinity, 0, 0, 0, 0, 0); ctx.transform(-Infinity, 0, 0, 0, 0, 0); @@ -94,8 +95,10 @@ ctx.transform(0, 0, 0, Infinity, Infinity, 0); ctx.transform(0, 0, 0, Infinity, Infinity, Infinity); ctx.transform(0, 0, 0, Infinity, 0, Infinity); ctx.transform(0, 0, 0, 0, Infinity, Infinity); + ctx.fillStyle = '#0f0'; ctx.fillRect(-100, -10, 100, 50); + _assertPixel(canvas, 50,25, 0,255,0,255); t.done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.skewed.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.skewed.html index 78e1252c67c..9cb6dfcc52e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.skewed.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.skewed.html @@ -15,11 +15,12 @@ var t_pass = t.done.bind(t); var t_fail = t.step_func(function(reason) { throw reason; }); -t.step(function() { +t.step(async function() { var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); +await (function(canvas, ctx) { // Create green with a red square ring inside it ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); @@ -27,6 +28,7 @@ ctx.fillStyle = '#f00'; ctx.fillRect(20, 10, 60, 30); ctx.fillStyle = '#0f0'; ctx.fillRect(40, 20, 20, 10); + // Draw a skewed shape to fill that gap, to make sure it is aligned correctly ctx.transform(1,4, 2,3, 5,6); // Post-transform coordinates: @@ -48,6 +50,7 @@ _assertPixel(canvas, 39,19, 0,255,0,255); _assertPixel(canvas, 61,19, 0,255,0,255); _assertPixel(canvas, 39,31, 0,255,0,255); _assertPixel(canvas, 61,31, 0,255,0,255); +})(canvas, ctx); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.skewed.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.skewed.worker.js index 46416bb9570..638adc14c44 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.skewed.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.transform.skewed.worker.js @@ -23,6 +23,7 @@ ctx.fillStyle = '#f00'; ctx.fillRect(20, 10, 60, 30); ctx.fillStyle = '#0f0'; ctx.fillRect(40, 20, 20, 10); + // Draw a skewed shape to fill that gap, to make sure it is aligned correctly ctx.transform(1,4, 2,3, 5,6); // Post-transform coordinates: diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.translate.basic.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.translate.basic.html index 8144ab0cc1b..51a7527b5cc 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.translate.basic.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.translate.basic.html @@ -15,17 +15,20 @@ var t_pass = t.done.bind(t); var t_fail = t.step_func(function(reason) { throw reason; }); -t.step(function() { +t.step(async function() { var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); +await (function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); + ctx.translate(100, 50); ctx.fillStyle = '#0f0'; ctx.fillRect(-100, -50, 100, 50); _assertPixel(canvas, 90,40, 0,255,0,255); +})(canvas, ctx); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.translate.basic.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.translate.basic.worker.js index 695aff37da5..11e8bd897b4 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.translate.basic.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.translate.basic.worker.js @@ -18,6 +18,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); + ctx.translate(100, 50); ctx.fillStyle = '#0f0'; ctx.fillRect(-100, -50, 100, 50); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.translate.nonfinite.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.translate.nonfinite.html index 4127a7a157e..010b28f3c6a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.translate.nonfinite.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.translate.nonfinite.html @@ -15,13 +15,15 @@ var t_pass = t.done.bind(t); var t_fail = t.step_func(function(reason) { throw reason; }); -t.step(function() { +t.step(async function() { var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); +await (function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); + ctx.translate(100, 10); ctx.translate(Infinity, 0.1); ctx.translate(-Infinity, 0.1); @@ -30,9 +32,12 @@ ctx.translate(0.1, Infinity); ctx.translate(0.1, -Infinity); ctx.translate(0.1, NaN); ctx.translate(Infinity, Infinity); + ctx.fillStyle = '#0f0'; ctx.fillRect(-100, -10, 100, 50); + _assertPixel(canvas, 50,25, 0,255,0,255); +})(canvas, ctx); t.done(); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.translate.nonfinite.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.translate.nonfinite.worker.js index 84b52a203b6..c3ff3a31a8c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.translate.nonfinite.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/transformations/2d.transformation.translate.nonfinite.worker.js @@ -18,6 +18,7 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); + ctx.translate(100, 10); ctx.translate(Infinity, 0.1); ctx.translate(-Infinity, 0.1); @@ -26,8 +27,10 @@ ctx.translate(0.1, Infinity); ctx.translate(0.1, -Infinity); ctx.translate(0.1, NaN); ctx.translate(Infinity, Infinity); + ctx.fillStyle = '#0f0'; ctx.fillRect(-100, -10, 100, 50); + _assertPixel(canvas, 50,25, 0,255,0,255); t.done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/transformations.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/yaml-new/transformations.yaml index 876c48f849c..0d2265be7aa 100644 --- a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/transformations.yaml +++ b/tests/wpt/web-platform-tests/html/canvas/tools/yaml-new/transformations.yaml @@ -44,8 +44,6 @@ ctx.fillRect(0, 0, 100, 50); ctx.restore(); - canvas.toDataURL(); - @assert pixel 50,25 == 0,255,0,255; expected: green diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/offscreen/transformations.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/offscreen/transformations.yaml deleted file mode 100644 index efc00222bfc..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/offscreen/transformations.yaml +++ /dev/null @@ -1,320 +0,0 @@ -- name: 2d.transformation.order - desc: Transformations are applied in the right order - code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.scale(2, 1); - ctx.rotate(Math.PI / 2); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, -50, 50, 50); - @assert pixel 75,25 == 0,255,0,255; - t.done(); - -- name: 2d.transformation.scale.basic - desc: scale() works - code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.scale(2, 4); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 50, 12.5); - @assert pixel 90,40 == 0,255,0,255; - t.done(); - -- name: 2d.transformation.scale.zero - desc: scale() with a scale factor of zero works - code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.save(); - ctx.translate(50, 0); - ctx.scale(0, 1); - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.restore(); - ctx.save(); - ctx.translate(0, 25); - ctx.scale(1, 0); - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.restore(); - @assert pixel 50,25 == 0,255,0,255; - t.done(); - -- name: 2d.transformation.scale.negative - desc: scale() with negative scale factors works - code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.save(); - ctx.scale(-1, 1); - ctx.fillStyle = '#0f0'; - ctx.fillRect(-50, 0, 50, 50); - ctx.restore(); - ctx.save(); - ctx.scale(1, -1); - ctx.fillStyle = '#0f0'; - ctx.fillRect(50, -50, 50, 50); - ctx.restore(); - @assert pixel 25,25 == 0,255,0,255; - @assert pixel 75,25 == 0,255,0,255; - t.done(); - -- name: 2d.transformation.scale.large - desc: scale() with large scale factors works - notes: Not really that large at all, but it hits the limits in Firefox. - code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.scale(1e5, 1e5); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 1, 1); - @assert pixel 50,25 == 0,255,0,255; - t.done(); - -- name: 2d.transformation.scale.nonfinite - desc: scale() with Infinity/NaN is ignored - code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.translate(100, 10); - @nonfinite ctx.scale(<0.1 Infinity -Infinity NaN>, <0.1 Infinity -Infinity NaN>); - ctx.fillStyle = '#0f0'; - ctx.fillRect(-100, -10, 100, 50); - @assert pixel 50,25 == 0,255,0,255; - t.done(); - -- name: 2d.transformation.scale.multiple - desc: Multiple scale()s combine - code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.scale(Math.sqrt(2), Math.sqrt(2)); - ctx.scale(Math.sqrt(2), Math.sqrt(2)); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 50, 25); - @assert pixel 90,40 == 0,255,0,255; - t.done(); - - -- name: 2d.transformation.rotate.zero - desc: rotate() by 0 does nothing - code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.rotate(0); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - @assert pixel 50,25 == 0,255,0,255; - t.done(); - -- name: 2d.transformation.rotate.radians - desc: rotate() uses radians - code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.rotate(Math.PI); // should fail obviously if this is 3.1 degrees - ctx.fillStyle = '#0f0'; - ctx.fillRect(-100, -50, 100, 50); - @assert pixel 50,25 == 0,255,0,255; - t.done(); - -- name: 2d.transformation.rotate.direction - desc: rotate() is clockwise - code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.rotate(Math.PI / 2); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, -100, 50, 100); - @assert pixel 50,25 == 0,255,0,255; - t.done(); - -- name: 2d.transformation.rotate.wrap - desc: rotate() wraps large positive values correctly - code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.rotate(Math.PI * (1 + 4096)); // == pi (mod 2*pi) - // We need about pi +/- 0.001 in order to get correct-looking results - // 32-bit floats can store pi*4097 with precision 2^-10, so that should - // be safe enough on reasonable implementations - ctx.fillStyle = '#0f0'; - ctx.fillRect(-100, -50, 100, 50); - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 98,2 == 0,255,0,255; - @assert pixel 98,47 == 0,255,0,255; - t.done(); - -- name: 2d.transformation.rotate.wrapnegative - desc: rotate() wraps large negative values correctly - code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.rotate(-Math.PI * (1 + 4096)); - ctx.fillStyle = '#0f0'; - ctx.fillRect(-100, -50, 100, 50); - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 98,2 == 0,255,0,255; - @assert pixel 98,47 == 0,255,0,255; - t.done(); - -- name: 2d.transformation.rotate.nonfinite - desc: rotate() with Infinity/NaN is ignored - code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.translate(100, 10); - @nonfinite ctx.rotate(<0.1 Infinity -Infinity NaN>); - ctx.fillStyle = '#0f0'; - ctx.fillRect(-100, -10, 100, 50); - @assert pixel 50,25 == 0,255,0,255; - t.done(); - -- name: 2d.transformation.translate.basic - desc: translate() works - code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.translate(100, 50); - ctx.fillStyle = '#0f0'; - ctx.fillRect(-100, -50, 100, 50); - @assert pixel 90,40 == 0,255,0,255; - t.done(); - -- name: 2d.transformation.translate.nonfinite - desc: translate() with Infinity/NaN is ignored - code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.translate(100, 10); - @nonfinite ctx.translate(<0.1 Infinity -Infinity NaN>, <0.1 Infinity -Infinity NaN>); - ctx.fillStyle = '#0f0'; - ctx.fillRect(-100, -10, 100, 50); - @assert pixel 50,25 == 0,255,0,255; - t.done(); - - -- name: 2d.transformation.transform.identity - desc: transform() with the identity matrix does nothing - code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.transform(1,0, 0,1, 0,0); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - @assert pixel 50,25 == 0,255,0,255; - t.done(); - -- name: 2d.transformation.transform.skewed - desc: transform() with skewy matrix transforms correctly - code: | - // Create green with a red square ring inside it - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#f00'; - ctx.fillRect(20, 10, 60, 30); - ctx.fillStyle = '#0f0'; - ctx.fillRect(40, 20, 20, 10); - // Draw a skewed shape to fill that gap, to make sure it is aligned correctly - ctx.transform(1,4, 2,3, 5,6); - // Post-transform coordinates: - // [[20,10],[80,10],[80,40],[20,40],[20,10],[40,20],[40,30],[60,30],[60,20],[40,20],[20,10]]; - // Hence pre-transform coordinates: - var pts=[[-7.4,11.2],[-43.4,59.2],[-31.4,53.2],[4.6,5.2],[-7.4,11.2], - [-15.4,25.2],[-11.4,23.2],[-23.4,39.2],[-27.4,41.2],[-15.4,25.2], - [-7.4,11.2]]; - ctx.beginPath(); - ctx.moveTo(pts[0][0], pts[0][1]); - for (var i = 0; i < pts.length; ++i) - ctx.lineTo(pts[i][0], pts[i][1]); - ctx.fill(); - @assert pixel 21,11 == 0,255,0,255; - @assert pixel 79,11 == 0,255,0,255; - @assert pixel 21,39 == 0,255,0,255; - @assert pixel 79,39 == 0,255,0,255; - @assert pixel 39,19 == 0,255,0,255; - @assert pixel 61,19 == 0,255,0,255; - @assert pixel 39,31 == 0,255,0,255; - @assert pixel 61,31 == 0,255,0,255; - t.done(); - -- name: 2d.transformation.transform.multiply - desc: transform() multiplies the CTM - code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.transform(1,2, 3,4, 5,6); - ctx.transform(-2,1, 3/2,-1/2, 1,-2); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - @assert pixel 50,25 == 0,255,0,255; - t.done(); - -- name: 2d.transformation.transform.nonfinite - desc: transform() with Infinity/NaN is ignored - code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.translate(100, 10); - @nonfinite ctx.transform(<0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>); - ctx.fillStyle = '#0f0'; - ctx.fillRect(-100, -10, 100, 50); - @assert pixel 50,25 == 0,255,0,255; - t.done(); - - -- name: 2d.transformation.setTransform.skewed - code: | - // Create green with a red square ring inside it - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#f00'; - ctx.fillRect(20, 10, 60, 30); - ctx.fillStyle = '#0f0'; - ctx.fillRect(40, 20, 20, 10); - // Draw a skewed shape to fill that gap, to make sure it is aligned correctly - ctx.setTransform(1,4, 2,3, 5,6); - // Post-transform coordinates: - // [[20,10],[80,10],[80,40],[20,40],[20,10],[40,20],[40,30],[60,30],[60,20],[40,20],[20,10]]; - // Hence pre-transform coordinates: - var pts=[[-7.4,11.2],[-43.4,59.2],[-31.4,53.2],[4.6,5.2],[-7.4,11.2], - [-15.4,25.2],[-11.4,23.2],[-23.4,39.2],[-27.4,41.2],[-15.4,25.2], - [-7.4,11.2]]; - ctx.beginPath(); - ctx.moveTo(pts[0][0], pts[0][1]); - for (var i = 0; i < pts.length; ++i) - ctx.lineTo(pts[i][0], pts[i][1]); - ctx.fill(); - @assert pixel 21,11 == 0,255,0,255; - @assert pixel 79,11 == 0,255,0,255; - @assert pixel 21,39 == 0,255,0,255; - @assert pixel 79,39 == 0,255,0,255; - @assert pixel 39,19 == 0,255,0,255; - @assert pixel 61,19 == 0,255,0,255; - @assert pixel 39,31 == 0,255,0,255; - @assert pixel 61,31 == 0,255,0,255; - t.done(); - -- name: 2d.transformation.setTransform.multiple - code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.setTransform(1/2,0, 0,1/2, 0,0); - ctx.setTransform(2,0, 0,2, 0,0); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 50, 25); - @assert pixel 75,35 == 0,255,0,255; - t.done(); - -- name: 2d.transformation.setTransform.nonfinite - desc: setTransform() with Infinity/NaN is ignored - code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.translate(100, 10); - @nonfinite ctx.setTransform(<0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>); - ctx.fillStyle = '#0f0'; - ctx.fillRect(-100, -10, 100, 50); - @assert pixel 50,25 == 0,255,0,255; - t.done(); diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-form-elements.tentative.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-form-elements.tentative.html new file mode 100644 index 00000000000..eed098256ca --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-form-elements.tentative.html @@ -0,0 +1,25 @@ +<!DOCTYPE html> +<html lang="en"> +<title>HTMLSelectMenuElement Test: form.elements</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> + +<form id="form0"> +<selectmenu id="selectmenu0"> + <option>one</option> + <option>two</option> + <option>three</option> +</selectmenu> +<form> + +<script> +promise_test(async t => { + // TODO: Move test to /the-form-element/form-elements-filter.html once + // <selectmenu> becomes part of the HTML spec. + const formElements = document.querySelector("#form0").elements; + assert_equals(formElements.length, 1); + assert_equals(formElements[0].id, "selectmenu0"); +}, "Check that <selectmenu> is exposed in form.elements"); +</script> diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-attribute-basic.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-attribute-basic.html index 88051f57394..c5937cd3237 100644 --- a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-attribute-basic.html +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-attribute-basic.html @@ -160,8 +160,8 @@ window.onload = () => { assert_false(popover.matches(':open')); popover.showPopover(); assert_true(popover.matches(':open')); - popover.setAttribute('popover','manual'); } + popover.setAttribute('popover','manual'); assert_false(popover.matches(':open')); popover.showPopover(); assert_true(popover.matches(':open')); diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-types.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-types.html index 615c5a818c0..9941f322828 100644 --- a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-types.html +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-types.html @@ -5,35 +5,33 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<div> +<div id="container"> <div popover>Popover</div> <div popover=manual>Async</div> <div popover=manual>Async</div> - <script> - { - const auto = document.currentScript.parentElement.querySelector('[popover=""]'); - const manual = document.currentScript.parentElement.querySelectorAll('[popover=manual]')[0]; - const manual2 = document.currentScript.parentElement.querySelectorAll('[popover=manual]')[1]; - function assert_state_1(autoOpen,manualOpen,manual2Open) { - assert_equals(auto.matches(':open'),autoOpen,'auto open state is incorrect'); - assert_equals(manual.matches(':open'),manualOpen,'manual open state is incorrect'); - assert_equals(manual2.matches(':open'),manual2Open,'manual2 open state is incorrect'); - } - test(() => { - assert_state_1(false,false,false); - auto.showPopover(); - assert_state_1(true,false,false); - manual.showPopover(); - assert_state_1(true,true,false); - manual2.showPopover(); - assert_state_1(true,true,true); - auto.hidePopover(); - assert_state_1(false,true,true); - manual.hidePopover(); - assert_state_1(false,false,true); - manual2.hidePopover(); - assert_state_1(false,false,false); - },'manuals do not close popovers'); - } - </script> </div> +<script> + const auto = container.querySelector('[popover=""]'); + const manual = container.querySelectorAll('[popover=manual]')[0]; + const manual2 = container.querySelectorAll('[popover=manual]')[1]; + function assert_state_1(autoOpen,manualOpen,manual2Open) { + assert_equals(auto.matches(':open'),autoOpen,'auto open state is incorrect'); + assert_equals(manual.matches(':open'),manualOpen,'manual open state is incorrect'); + assert_equals(manual2.matches(':open'),manual2Open,'manual2 open state is incorrect'); + } + test(() => { + assert_state_1(false,false,false); + auto.showPopover(); + assert_state_1(true,false,false); + manual.showPopover(); + assert_state_1(true,true,false); + manual2.showPopover(); + assert_state_1(true,true,true); + auto.hidePopover(); + assert_state_1(false,true,true); + manual.hidePopover(); + assert_state_1(false,false,true); + manual2.hidePopover(); + assert_state_1(false,false,false); + }, 'manuals do not close popovers'); +</script> diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/resources/popover-utils.js b/tests/wpt/web-platform-tests/html/semantics/popovers/resources/popover-utils.js index 9c6ba77549b..7eb9e6327a2 100644 --- a/tests/wpt/web-platform-tests/html/semantics/popovers/resources/popover-utils.js +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/resources/popover-utils.js @@ -126,7 +126,7 @@ function assertPopoverVisibility(popover, isPopover, expectedVisibility, message } else { assert_equals(window.getComputedStyle(popover).display,'none',`${message}: Non-showing popovers should have display:none`); assert_false(popover.matches(':open'),`${message}: Non-showing popovers should *not* match :open`); - assert_true(popover.matches(':closed'),`${message}: Non-showing popovers should match :closed`); + assert_equals(popover.matches(':closed'),isPopover,`${message}: Non-showing popovers should match :closed`); } } diff --git a/tests/wpt/web-platform-tests/images/cicp.png b/tests/wpt/web-platform-tests/images/cicp.png Binary files differnew file mode 100644 index 00000000000..8fa0ce2123c --- /dev/null +++ b/tests/wpt/web-platform-tests/images/cicp.png diff --git a/tests/wpt/web-platform-tests/images/trns.png b/tests/wpt/web-platform-tests/images/trns.png Binary files differnew file mode 100644 index 00000000000..4e309a89a8a --- /dev/null +++ b/tests/wpt/web-platform-tests/images/trns.png diff --git a/tests/wpt/web-platform-tests/inert/inert-computed-style.html b/tests/wpt/web-platform-tests/inert/inert-computed-style.html index 3c1748de2b4..f1adbab6b7a 100644 --- a/tests/wpt/web-platform-tests/inert/inert-computed-style.html +++ b/tests/wpt/web-platform-tests/inert/inert-computed-style.html @@ -15,11 +15,11 @@ left: 0; background-color: blue; } - #non-inert { + #nonInert { background-color: red; } </style> -<div id="non-inert"></div> +<div id="nonInert"></div> <div id="inert"></div> <script> test(function() { @@ -32,17 +32,17 @@ inert.inert = true; assert_equals( document.elementFromPoint(50, 50), - document.getElementById("non-inert"), + nonInert, "inert node is transparent to events (as pointer-events: none)", ); assert_equals( getComputedStyle(inert).pointerEvents, - "auto", + getComputedStyle(nonInert).pointerEvents, "inert node doesn't change pointer-events computed value", ); assert_equals( getComputedStyle(inert).userSelect, - "auto", + getComputedStyle(nonInert).userSelect, "inert node doesn't change user-select computed value", ); }); diff --git a/tests/wpt/web-platform-tests/inert/inert-iframe-hittest.html b/tests/wpt/web-platform-tests/inert/inert-iframe-hittest.html index bcc542d35ed..8d7facf1723 100644 --- a/tests/wpt/web-platform-tests/inert/inert-iframe-hittest.html +++ b/tests/wpt/web-platform-tests/inert/inert-iframe-hittest.html @@ -93,7 +93,6 @@ promise_test(async function() { "wrapper got enter and over events"); } - assert_true(target.matches(":focus"), "target is focused"); assert_true(target.matches(":active"), "target is active"); assert_true(target.matches(":hover"), "target is hovered"); assert_true(wrapper.matches(":hover"), "wrapper is hovered"); diff --git a/tests/wpt/web-platform-tests/infrastructure/assumptions/non-local-ports.sub.window.js b/tests/wpt/web-platform-tests/infrastructure/assumptions/non-local-ports.sub.window.js index 8c9eb33c4f7..06ecb3ab21b 100644 --- a/tests/wpt/web-platform-tests/infrastructure/assumptions/non-local-ports.sub.window.js +++ b/tests/wpt/web-platform-tests/infrastructure/assumptions/non-local-ports.sub.window.js @@ -3,10 +3,10 @@ // See the corresponding WPT RFC: // https://github.com/web-platform-tests/rfcs/blob/master/rfcs/address_space_overrides.md // -// These ports are used to test the Private Network Access specification: -// https://wicg.github.io/private-network-access/ +// These ports are used to test the Local Network Access specification: +// https://wicg.github.io/local-network-access/ // -// More tests can be found in `fetch/private-network-access/`. +// More tests can be found in `fetch/local-network-access/`. const alternatePorts = { httpPrivate: "{{ports[http-private][0]}}", diff --git a/tests/wpt/web-platform-tests/lint.ignore b/tests/wpt/web-platform-tests/lint.ignore index 3b6106fbfc3..743986b66ee 100644 --- a/tests/wpt/web-platform-tests/lint.ignore +++ b/tests/wpt/web-platform-tests/lint.ignore @@ -834,8 +834,8 @@ TESTHARNESS-IN-OTHER-TYPE: svg/svg-in-svg/svg-in-svg-circular-filter-reference-c # Adding the testharnessreport.js script causes the test to never complete. MISSING-TESTHARNESSREPORT: accessibility/crashtests/computed-node-checked.html -PRINT STATEMENT: webdriver/tests/print/printcmd.py -PRINT STATEMENT: webdriver/tests/print/user_prompts.py +PRINT STATEMENT: webdriver/tests/print/* +PRINT STATEMENT: webdriver/tests/bidi/browsing_context/print/* DUPLICATE-BASENAME-PATH: acid/acid3/empty.html DUPLICATE-BASENAME-PATH: acid/acid3/empty.xml diff --git a/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-basic.html b/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-basic.html index d289f0dd342..c6d3f8e32a2 100644 --- a/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-basic.html +++ b/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-basic.html @@ -29,6 +29,7 @@ promise_test(async t => { })); }, t); + assert_not_equals(entry, "timeout"); assert_greater_than_equal(entry.renderStart - entry.startTime, segment_duration); }, 'A long busy wait split between a task and a requestAnimationFrame is a long animation frame'); @@ -47,6 +48,8 @@ promise_test(async t => { busy_wait(segment_duration); }).observe(element); }, t); + + assert_not_equals(entry, "timeout"); assert_greater_than_equal(entry.renderStart - entry.startTime, segment_duration); assert_greater_than_equal(entry.styleAndLayoutStart - entry.renderStart, segment_duration); }, 'ResizeObservers should create a long-frame and affect layoutStartTime'); diff --git a/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-desired-exec-time.html b/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-desired-exec-time.html new file mode 100644 index 00000000000..5fecb20fb40 --- /dev/null +++ b/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-desired-exec-time.html @@ -0,0 +1,119 @@ +<!DOCTYPE HTML> +<meta charset=utf-8> +<title>Long Animation Frame Timing: queue time</title> +<meta name="timeout" content="long"> +<script src=/resources/testdriver.js></script> +<script src=/resources/testdriver-actions.js></script> +<script src=/resources/testdriver-vendor.js></script> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/utils.js"></script> + +<body> +<h1>Long Animation Frame: queue time</h1> +<div id="log"></div> +<script> + +promise_test(async t => { + const button = document.createElement("button"); + button.innerText = "Click"; + document.body.appendChild(button); + t.add_cleanup(() => button.remove()); + const eventPromise = new Promise(resolve => button.addEventListener("click", event => { + busy_wait(); + resolve(event); + })); + const entryPromise = new Promise(resolve => new PerformanceObserver( + (entryList, observer) => { + const scriptPredicate = s => s.name === "BUTTON.onclick"; + const entry = entryList.getEntries().find( + e => e.scripts.length && e.scripts.find(scriptPredicate)); + if (entry) { + resolve([entry, entry.scripts.find(scriptPredicate)]); + observer.disconnect(); + } + }).observe({entryTypes: ["long-animation-frame"]})); + test_driver.click(button); + await new Promise(resolve => t.step_timeout(resolve, 0)); + const event = await eventPromise; + const [entry, script] = await entryPromise; + assert_equals(script.desiredExecutionStart, event.timeStamp); +}, "event-listener entries desiredExecutionStart is the eventTimestamp"); + +promise_test(async t => { + const entryPromise = loaf_promise(t); + let timeBeforeSetup, timeAfterSetup; + const delay = 100; + const timeoutPromise = new Promise(resolve => { + timeBeforeSetup = performance.now(); + t.step_timeout(() => { + busy_wait(); + resolve(); + }, delay); + timeAfterSetup = performance.now(); + }); + const entry = await entryPromise; + const script = entry.scripts.find(s => s.name === "Window.setTimeout"); + assert_greater_than_equal(script.desiredExecutionStart, timeBeforeSetup + delay); + assert_less_than_equal(script.desiredExecutionStart, timeAfterSetup + delay); +}, "desiredExecutionStart for setTimeout should be the setup time + delay"); + +promise_test(async t => { + const entryPromise = loaf_promise(t); + let timeBeforeSetup, timeAfterSetup; + const timeoutPromise = new Promise(resolve => { + timeBeforeSetup = performance.now(); + scheduler.postTask(t.step_func(() => { + busy_wait(); + resolve(); + })); + timeAfterSetup = performance.now(); + }); + const entry = await entryPromise; + const script = entry.scripts.find(s => s.name === "Scheduler.postTask"); + assert_greater_than_equal(script.desiredExecutionStart, timeBeforeSetup); + assert_less_than_equal(script.desiredExecutionStart, timeAfterSetup); +}, "desiredExecutionStart for Scheduler.postTask should be the time it was called"); + +promise_test(async t => { + const entryPromise = loaf_promise(t); + const rafPromise = new Promise(resolve => { + // We fire two rAFs to ensure both of them receive the same + // desiredExecutionStart + requestAnimationFrame(rafTime => { + busy_wait(); + }) + requestAnimationFrame(rafTime => { + busy_wait(); + resolve(rafTime); + }) + }); + const entry = await entryPromise; + const rafTime = await rafPromise; + const scripts = entry.scripts.filter( + s => s.name === "Window.requestAnimationFrame"); + for (const script of scripts) { + assert_less_than_equal(Math.abs(script.desiredExecutionStart - rafTime), 1); + } + assert_less_than_equal(Math.abs(entry.desiredRenderStart - rafTime), 1); +}, "desiredExecutionStart & desiredRenderStart for requestAnimationFrame " + + "should be the same as the rAF argument"); + +promise_test(async t => { + const entryPromise = loaf_promise(t); + const timeBeforeWait = performance.now(); + let timeAfterWait; + const rafPromise = new Promise(resolve => t.step_timeout(() => { + requestAnimationFrame(rafTime => { + busy_wait(very_long_frame_duration / 2); + resolve(rafTime); + }); + + busy_wait(very_long_frame_duration / 2); + timeAfterWait = performance.now(); + }), 0); + const [entry, rafTime] = await Promise.all([entryPromise, rafPromise]); + assert_less_than_equal(Math.abs(entry.desiredRenderStart - rafTime), 1); +}, "desiredRenderStart and renderStart should reflect main thread delays"); +</script> +</body> diff --git a/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-event-listener.html b/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-event-listener.html new file mode 100644 index 00000000000..6349c28b320 --- /dev/null +++ b/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-event-listener.html @@ -0,0 +1,33 @@ +<!DOCTYPE HTML> +<meta charset=utf-8> +<title>Long Animation Frame Timing: basic</title> +<meta name="timeout" content="long"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/utils.js"></script> + +<body> +<h1>Long Animation Frame: event handlers</h1> +<div id="log"></div> +<script> + +test_self_event_listener(t => { + const img = document.createElement("img"); + img.src = "/images/green.png"; + img.addEventListener("load", () => { + busy_wait(); + }); + document.body.appendChild(img); + t.add_cleanup(() => img.remove()); +}, "IMG.onload"); + +test_self_event_listener(t => { + const xhr = new XMLHttpRequest(); + xhr.open("GET", "/common/dummy.xml"); + xhr.addEventListener("load", () => { + busy_wait(); + }); + xhr.send(); +}, "XMLHttpRequest.onload"); +</script> +</body> diff --git a/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-idle.html b/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-idle.html new file mode 100644 index 00000000000..bc9f910bb14 --- /dev/null +++ b/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-idle.html @@ -0,0 +1,36 @@ +<!DOCTYPE HTML> +<meta charset=utf-8> +<title>Long Animation Frame Timing: requestIdleCallback</title> +<meta name="timeout" content="long"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/utils.js"></script> + +<body> +<h1>Long Animation Frame: requestIdleCallback</h1> +<div id="log"></div> +<script> +setup(() => + assert_implements(window.requestIdleCallback, + 'requestIdleCallback is not supported.')); + +/* +promise_test(async t => { + await expect_no_long_frame(() => requestIdleCallback(busy_wait), t); +}, 'A long busy wait in an idle callback is not a long animation frame'); +*/ + +promise_test(async t => { + const segment_duration = very_long_frame_duration / 2; + requestIdleCallback(() => { + busy_wait(segment_duration); + requestAnimationFrame(() => { + busy_wait(segment_duration); + }); + }); + await expect_long_frame(() => {}, t); +}, 'A long busy wait split between an idle callback and a ' + + 'requestAnimationFrame is a long animation frame'); + +</script> +</body> diff --git a/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-iframe-popup.html b/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-iframe-popup.html index 83def572998..565273b6c6a 100644 --- a/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-iframe-popup.html +++ b/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-iframe-popup.html @@ -15,7 +15,7 @@ const host_info = get_host_info(); const {ORIGIN, REMOTE_ORIGIN, HTTP_NOTSAMESITE_ORIGIN} = host_info; promise_test(async t => { - const executor = await prepare_exec_iframe(t, ORIGIN); + const [executor] = await prepare_exec_iframe(t, ORIGIN); await expect_no_long_frame(() => executor.execute_script((duration) => { const deadline = performance.now() + duration; while (performance.now() < deadline) {} @@ -23,7 +23,7 @@ promise_test(async t => { }, 'A long busy wait without render in a same-origin iframe is not a long animation frame'); promise_test(async t => { - const executor = await prepare_exec_iframe(t, HTTP_NOTSAMESITE_ORIGIN); + const [executor] = await prepare_exec_iframe(t, HTTP_NOTSAMESITE_ORIGIN); await expect_no_long_frame(() => executor.execute_script((duration) => { const deadline = performance.now() + duration; while (performance.now() < deadline) {} @@ -31,7 +31,7 @@ promise_test(async t => { }, 'A long busy wait in a cross-origin iframe is not a long animation frame'); promise_test(async t => { - const executor = await prepare_exec_iframe(t, ORIGIN); + const [executor] = await prepare_exec_iframe(t, ORIGIN); await expect_long_frame(() => executor.execute_script(async (duration) => { await new Promise(resolve => window.requestAnimationFrame(resolve)); const deadline = performance.now() + duration; @@ -40,7 +40,7 @@ promise_test(async t => { }, 'A long busy wait in a same-origin requestAnimationFrame is a long animation frame'); promise_test(async t => { - const executor = await prepare_exec_popup(t, ORIGIN); + const [executor] = await prepare_exec_popup(t, ORIGIN); await expect_no_long_frame(() => executor.execute_script((duration) => { const deadline = performance.now() + duration; while (performance.now() < deadline) {} @@ -49,7 +49,7 @@ promise_test(async t => { for (const origin of ["ORIGIN", "REMOTE_ORIGIN", "HTTP_NOTSAMESITE_ORIGIN"]) { promise_test(async t => { - const executor = await prepare_exec_iframe(t, host_info[origin]); + const [executor] = await prepare_exec_iframe(t, host_info[origin]); const entry = await executor.execute_script(async (duration) => { const entryPromise = new Promise(resolve => new PerformanceObserver(list => { resolve(list.getEntries(0)); diff --git a/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-promise.html b/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-promise.html new file mode 100644 index 00000000000..226d06a8303 --- /dev/null +++ b/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-promise.html @@ -0,0 +1,52 @@ +<!DOCTYPE HTML> +<meta charset=utf-8> +<title>Long Animation Frame Timing: basic</title> +<meta name="timeout" content="long"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/common/get-host-info.sub.js"></script> +<script src="resources/utils.js"></script> + +<body> +<h1>Long Animation Frame: promise resolvers</h1> +<div id="log"></div> +<script type="module"> + +const {REMOTE_ORIGIN} = get_host_info(); + +test_promise_script(async t => { + await fetch("/common/dummy.xml"); + busy_wait(very_long_frame_duration); +}, "resolve", "Window.fetch.then"); + +test_promise_script(async t => { + const response = await fetch("/common/dummy.xml"); + await response.text(); + busy_wait(very_long_frame_duration); +}, "resolve", "Response.text.then"); + +test_promise_script(async t => { + const response = await fetch("/common/dummy.xml"); + await response.arrayBuffer(); + busy_wait(very_long_frame_duration); +}, "resolve", "Response.arrayBuffer.then"); + +test_promise_script(async t => { + const response = await fetch("/fetch/api/resources/data.json"); + await response.json(); + busy_wait(very_long_frame_duration); +}, "resolve", "Response.json.then"); + +test_promise_script(async t => { + const response = await import("/loading/resources/dummy.js"); + busy_wait(very_long_frame_duration); +}, "resolve", "import.then"); + +test_promise_script(async t => { + fetch(new URL("/common/dummy.xml", REMOTE_ORIGIN).href, {mode: "cors"}) + .catch(() => { + busy_wait(very_long_frame_duration); + }) +}, "reject", "Window.fetch.catch" ); +</script> +</body> diff --git a/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-script-block.html b/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-script-block.html new file mode 100644 index 00000000000..f896a737ce7 --- /dev/null +++ b/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-script-block.html @@ -0,0 +1,47 @@ +<!DOCTYPE HTML> +<meta charset=utf-8> +<title>Long Animation Frame Timing: basic</title> +<meta name="timeout" content="long"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/utils.js"></script> + +<body> +<h1>Long Animation Frame: script blocks</h1> +<div id="log"></div> +<script> +test_self_script_block(t => { + const script = document.createElement("script"); + script.innerHTML = `(${busy_wait.toString()})()`; + document.body.appendChild(script); +}, location.href, "classic-script"); + +test_self_script_block(t => { + const script = document.createElement("script"); + script.type = "module"; + script.innerHTML = `(${busy_wait.toString()})()`; + document.body.appendChild(script); +}, location.href, "module-script"); + +test_self_script_block(t => { + const script = document.createElement("script"); + script.src = "resources/busy.js"; + document.body.appendChild(script); +}, new URL("resources/busy.js", location.href).href, "classic-script"); + +test_self_script_block(t => { + const script = document.createElement("script"); + script.src = "resources/busy.js"; + script.type = "module"; + document.body.appendChild(script); +}, new URL("resources/busy.js", location.href).href, "module-script"); + +test_self_script_block(t => { + const script = document.createElement("script"); + script.type = "module"; + script.innerHTML = `import("./resources/busy.js?import");`; + document.body.appendChild(script); +}, new URL("resources/busy.js?import", location.href).href, "execute-script"); + +</script> +</body> diff --git a/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-script-window-attribution.html b/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-script-window-attribution.html new file mode 100644 index 00000000000..001bb537f79 --- /dev/null +++ b/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-script-window-attribution.html @@ -0,0 +1,62 @@ + +<!DOCTYPE HTML> +<meta charset=utf-8> +<title>Long Animation Frame Timing: window attribution</title> +<meta name="timeout" content="long"> +<body> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/common/get-host-info.sub.js"></script> +<script src="/common/utils.js"></script> +<script src="/common/dispatcher/dispatcher.js"></script> +<script src="resources/utils.js"></script> +<div id="log"></div> +<script> + +const host_info = get_host_info(); +const {ORIGIN, REMOTE_ORIGIN, HTTP_NOTSAMESITE_ORIGIN} = host_info; + +promise_test (async t => { + const [entry, script] = await expect_long_frame_with_script(() => { + requestAnimationFrame(() => busy_wait()); + }, () => true, t); + assert_equals(script.windowAttribution, "self"); + assert_equals(script.window, window); +}, 'Scripts in this window should be self-attributed'); + +promise_test (async t => { + const [executor, iframe] = await prepare_exec_iframe(t, ORIGIN); + const [entry, script] = await expect_long_frame_with_script(() => + executor.execute_script(async (duration) => { + await new Promise(resolve => window.requestAnimationFrame(resolve)); + const deadline = performance.now() + duration; + while (performance.now() < deadline) {} + }, [very_long_frame_duration]), () => true, t); + assert_equals(script.windowAttribution, "descendant"); + assert_equals(script.window, iframe.contentWindow); +}, 'Scripts in subframes should be descendant-attributed'); + +promise_test (async t => { + const [executor1, iframe1] = await prepare_exec_iframe(t, ORIGIN); + const [executor2, iframe2] = await prepare_exec_iframe(t, ORIGIN); + const [entry, script] = await expect_long_frame_with_script(() => + executor1.execute_script(async (duration) => { + await new Promise(resolve => window.requestAnimationFrame(resolve)); + const deadline = performance.now() + duration; + while (performance.now() < deadline) {} + }, [very_long_frame_duration]), () => true, t); + const find_entry = win => + win.performance.getEntriesByType("long-animation-frame").find( + e => e.duration >= very_long_frame_duration && + e.scripts.length).scripts[0]; + + const iframe1_entry = find_entry(iframe1.contentWindow); + const iframe2_entry = find_entry(iframe2.contentWindow); + assert_equals(iframe1_entry.windowAttribution, "self"); + assert_equals(iframe2_entry.windowAttribution, "same-page"); + assert_equals(iframe1_entry.window, iframe1.contentWindow); + assert_equals(iframe2_entry.window, iframe1.contentWindow); +}, 'Scripts in subframes should be same-page-attributed to other subframes'); + +</script> +</body> diff --git a/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-supportedEntryTypes.html b/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-supportedEntryTypes.html new file mode 100644 index 00000000000..efa01481fa1 --- /dev/null +++ b/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-supportedEntryTypes.html @@ -0,0 +1,22 @@ +<!DOCTYPE HTML> +<meta charset=utf-8> +<title>Long Animation Frame Timing: supportedEntryTypes</title> +<meta name="timeout" content="long"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<body> +<h1>Long Animation Frame: supportedEntryTypes</h1> +<div id="log"></div> +<script> + +setup(() => + assert_implements(window.PerformanceLongAnimationFrameTiming, + 'Long animation frames are not supported.')); + +test(() => { + assert_true(PerformanceObserver.supportedEntryTypes.includes("long-animation-frame")); +}, 'supportedEntryTypes should include long-animation-frame'); + +</script> +</body> diff --git a/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-user-callback.html b/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-user-callback.html new file mode 100644 index 00000000000..bc8fdd05e10 --- /dev/null +++ b/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-user-callback.html @@ -0,0 +1,52 @@ +<!DOCTYPE HTML> +<meta charset=utf-8> +<title>Long Animation Frame Timing: basic</title> +<meta name="timeout" content="long"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/utils.js"></script> + +<body> +<h1>Long Animation Frame: user callbacks</h1> +<div id="log"></div> +<script> + + +test_self_user_callback(t => + t.step_timeout(() => busy_wait()), "Window.setTimeout"); + +test_self_user_callback(() => { + const interval = setInterval(() => { + busy_wait(); + clearInterval(interval); + }, 10); +}, "Window.setInterval"); +test_self_user_callback(() => + requestAnimationFrame(() => busy_wait()), "Window.requestAnimationFrame"); + +test_self_user_callback(t => { + const element = document.createElement("div"); + document.body.appendChild(element); + t.add_cleanup(() => element.remove()); + new ResizeObserver((entries, observer) => { + busy_wait(very_long_frame_duration); + observer.disconnect(); + }).observe(element); +}, "ResizeObserver.callback"); + +test_self_user_callback(t => { + const element = document.createElement("div"); + element.innerText = "123"; + t.add_cleanup(() => element.remove()); + new IntersectionObserver((entries, observer) => { + busy_wait(very_long_frame_duration); + observer.disconnect(); + }).observe(element); + document.body.appendChild(element); +}, "IntersectionObserver.callback"); + +test_self_user_callback(t => + scheduler.postTask(() => busy_wait()), "Scheduler.postTask"); + +</script> +</body> diff --git a/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-window-only.worker.js b/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-window-only.worker.js new file mode 100644 index 00000000000..c1f0439c4bd --- /dev/null +++ b/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-window-only.worker.js @@ -0,0 +1,11 @@ +importScripts("/resources/testharness.js"); + +test(() => { + assert_false(PerformanceObserver.supportedEntryTypes.includes("long-animation-frame")); +}, 'PerformanceObserver should not include "long-animation-frame" in workers'); + +test(() => { + assert_false("PerformanceLongAnimationFrameTiming" in self); +}, 'PerformanceLongAnimationFrameTiming should not be exposed in workers'); + +done(); diff --git a/tests/wpt/web-platform-tests/long-animation-frame/tentative/resources/busy.js b/tests/wpt/web-platform-tests/long-animation-frame/tentative/resources/busy.js new file mode 100644 index 00000000000..9d761b6de5e --- /dev/null +++ b/tests/wpt/web-platform-tests/long-animation-frame/tentative/resources/busy.js @@ -0,0 +1,4 @@ +(() => { + const deadline = performance.now() + 360; + while (performance.now() < deadline) {} +})(); diff --git a/tests/wpt/web-platform-tests/long-animation-frame/tentative/resources/utils.js b/tests/wpt/web-platform-tests/long-animation-frame/tentative/resources/utils.js index 47c138b1e62..3a121a5a9b5 100644 --- a/tests/wpt/web-platform-tests/long-animation-frame/tentative/resources/utils.js +++ b/tests/wpt/web-platform-tests/long-animation-frame/tentative/resources/utils.js @@ -5,14 +5,18 @@ setup(() => const very_long_frame_duration = 360; -function loaf_promise() { +function loaf_promise(t) { return new Promise(resolve => { const observer = new PerformanceObserver(entries => { const entry = entries.getEntries()[0]; - if (entry.duration >= very_long_frame_duration) + if (entry.duration >= very_long_frame_duration) { + observer.disconnect(); resolve(entry); + } }); + t.add_cleanup(() => observer.disconnect()); + observer.observe({entryTypes: ['long-animation-frame']}); }); } @@ -28,9 +32,9 @@ async function expect_long_frame(cb, t) { await windowLoaded; await new Promise(resolve => t.step_timeout(resolve, 0)); const timeout = new Promise((resolve, reject) => - t.step_timeout(() => reject("timeout"), no_long_frame_timeout)); - const receivedLongFrame = loaf_promise(); - await cb(); + t.step_timeout(() => resolve("timeout"), no_long_frame_timeout)); + const receivedLongFrame = loaf_promise(t); + await cb(t); const entry = await Promise.race([ receivedLongFrame, timeout @@ -38,10 +42,24 @@ async function expect_long_frame(cb, t) { return entry; } +async function expect_long_frame_with_script(cb, predicate, t) { + for (let i = 0; i < 10; ++i) { + const entry = await expect_long_frame(cb, t); + if (entry === "timeout" || !entry.scripts.length) + continue; + for (const script of entry.scripts) { + if (predicate(script)) + return [entry, script]; + } + } + + return []; +} + async function expect_no_long_frame(cb, t) { await windowLoaded; for (let i = 0; i < 5; ++i) { - const receivedLongFrame = loaf_promise(); + const receivedLongFrame = loaf_promise(t); await cb(); const result = await Promise.race([receivedLongFrame, new Promise(resolve => t.step_timeout(() => resolve("timeout"), @@ -62,7 +80,7 @@ async function prepare_exec_iframe(t, origin) { iframe.src = url.href; document.body.appendChild(iframe); await new Promise(resolve => iframe.addEventListener("load", resolve)); - return new RemoteContext(uuid); + return [new RemoteContext(uuid), iframe]; } @@ -72,5 +90,38 @@ async function prepare_exec_popup(t, origin) { url.searchParams.set("uuid", uuid); const popup = window.open(url); t.add_cleanup(() => popup.close()); - return new RemoteContext(uuid); + return [new RemoteContext(uuid), popup]; +} +function test_loaf_script(cb, name, type, label) { + promise_test(async t => { + const [entry, script] = await expect_long_frame_with_script(cb, + script => (script.type === type && script.duration >= very_long_frame_duration), t); + + assert_true(!!entry, "Entry detected"); + assert_equals(script.name, name); + assert_greater_than_equal(script.duration, very_long_frame_duration); + assert_greater_than_equal(entry.duration, script.duration); + assert_greater_than_equal(script.executionStart, script.startTime); + assert_greater_than_equal(script.startTime, entry.startTime) + assert_equals(script.window, window); + assert_equals(script.forcedStyleAndLayoutDuration, 0); + assert_equals(script.windowAttribution, "self"); +}, `LoAF script: ${name} ${type},${label ? ` ${label}` : ''}`); + +} + +function test_self_user_callback(cb, name) { + test_loaf_script(cb, name, "user-callback"); +} + +function test_self_event_listener(cb, name) { + test_loaf_script(cb, name, "event-listener"); +} + +function test_promise_script(cb, resolve_or_reject, name, label) { + test_loaf_script(cb, name, `${resolve_or_reject}-promise`, label); +} + +function test_self_script_block(cb, name, type) { + test_loaf_script(cb, name, type); } diff --git a/tests/wpt/web-platform-tests/longtask-timing/longtask-in-raf.html b/tests/wpt/web-platform-tests/longtask-timing/longtask-in-raf.html index d65f8928186..169843a7423 100644 --- a/tests/wpt/web-platform-tests/longtask-timing/longtask-in-raf.html +++ b/tests/wpt/web-platform-tests/longtask-timing/longtask-in-raf.html @@ -1,46 +1,52 @@ <!DOCTYPE HTML> -<meta charset=utf-8> -<title>LongTask Timing: long task in rAF</title> +<head> + <meta charset=utf-8> + <title>LongTask Timing: long task in rAF</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="resources/utils.js"></script> +</head> <body> + <h1>Long Task: requestAnimationFrame</h1> + <div id="log"></div> + <script> + promise_test(async () => { + assert_implements(window.PerformanceLongTaskTiming, 'Longtasks are not supported.'); + await new Promise(resolve => { + window.addEventListener('load', resolve); + }); -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="resources/utils.js"></script> + let entries = await new Promise(resolve => { + new PerformanceObserver( + entryList => { + const entries = entryList.getEntries().filter( + e => e.name == 'self' && e.attribution[0].containerType == 'window'); + if (entries) { + resolve(entries); + } + }).observe({ entryTypes: ['longtask'] }); -<h1>Long Task: requestAnimationFrame</h1> -<div id="log"></div> -<script> - async_test(function (t) { - assert_implements(window.PerformanceLongTaskTiming, 'Longtasks are not supported.'); - const observer = new PerformanceObserver( - t.step_func(function (entryList) { - const entries = entryList.getEntries(); - assert_equals(entries.length, 1, - 'Exactly one entry is expected.'); - const longtask = entries[0]; - checkLongTaskEntry(longtask); - // Assert the TaskAttributionTiming entry in attribution. - assert_equals(longtask.attribution.length, 1, - 'Exactly one attribution entry is expected'); - const attribution = longtask.attribution[0]; - assert_equals(attribution.entryType, 'taskattribution'); - assert_equals(attribution.name, 'unknown'); - assert_equals(attribution.duration, 0); - assert_equals(attribution.startTime, 0); - assert_equals(attribution.containerType, 'window'); - assert_equals(attribution.containerId, ''); - assert_equals(attribution.containerName, ''); - assert_equals(attribution.containerSrc, ''); - observer.disconnect(); - t.done(); - }) - ); - observer.observe({entryTypes: ['longtask']}); - window.onload = () => { const script = document.createElement('script'); script.src = 'resources/raflongtask.js'; document.body.appendChild(script); - }; -}, 'Performance longtask entries are observable.'); -</script> + }); + + assert_equals(entries.length, 1, + 'Exactly one entry is expected.'); + const longtask = entries[0]; + checkLongTaskEntry(longtask); + // Assert the TaskAttributionTiming entry in attribution. + assert_equals(longtask.attribution.length, 1, + 'Exactly one attribution entry is expected'); + const attribution = longtask.attribution[0]; + assert_equals(attribution.entryType, 'taskattribution'); + assert_equals(attribution.name, 'unknown'); + assert_equals(attribution.duration, 0); + assert_equals(attribution.startTime, 0); + assert_equals(attribution.containerType, 'window'); + assert_equals(attribution.containerId, ''); + assert_equals(attribution.containerName, ''); + assert_equals(attribution.containerSrc, ''); + }, 'Performance longtask entries are observable.'); + </script> </body> diff --git a/tests/wpt/web-platform-tests/longtask-timing/resources/utils.js b/tests/wpt/web-platform-tests/longtask-timing/resources/utils.js index 36bd6c7bc28..7bb37bab32c 100644 --- a/tests/wpt/web-platform-tests/longtask-timing/resources/utils.js +++ b/tests/wpt/web-platform-tests/longtask-timing/resources/utils.js @@ -1,11 +1,11 @@ -function checkLongTaskEntry(longtask, name='self') { - assert_equals(longtask.entryType, 'longtask'); - assert_equals(longtask.name, name); - assert_true(Number.isInteger(longtask.duration)); - assert_greater_than_equal(longtask.duration, 50); - assert_greater_than_equal(longtask.startTime, 0); +function checkLongTaskEntry(longtask, name = 'self') { + assert_equals(longtask.entryType, 'longtask', 'The entryType should be longtask'); + assert_equals(longtask.name, name, 'Name should be ' + name + '.'); + assert_true(Number.isInteger(longtask.duration, 'The duration should be an integer.')); + assert_greater_than_equal(longtask.duration, 50, 'The Duration should be greater than or equal to 50.'); + assert_greater_than_equal(longtask.startTime, 0, 'The startTime should be greater than or equal to 0.'); const currentTime = performance.now(); - assert_less_than_equal(longtask.startTime, currentTime); + assert_less_than_equal(longtask.startTime, currentTime, 'The startTime should be less than or equal to current time.'); } function hasUnrelatedTaskName(taskName, expectedTaskName) { diff --git a/tests/wpt/web-platform-tests/mediacapture-record/MediaRecorder-pause-resume.html b/tests/wpt/web-platform-tests/mediacapture-record/MediaRecorder-pause-resume.html index a1495dcb0c7..84efe52e06b 100644 --- a/tests/wpt/web-platform-tests/mediacapture-record/MediaRecorder-pause-resume.html +++ b/tests/wpt/web-platform-tests/mediacapture-record/MediaRecorder-pause-resume.html @@ -57,10 +57,11 @@ "Should have gotten expected events"); }, "MediaRecorder handles pause() and resume() calls appropriately in state and events"); - promise_test(async () => { - let video = createVideoStream(); - let recorder = new MediaRecorder(video); - let events = recordEvents(recorder, + promise_test(async t => { + const {stream: video, control} = createVideoStream(t); + control.addVideoFrame(); + const recorder = new MediaRecorder(video); + const events = recordEvents(recorder, ["start", "stop", "dataavailable", "pause", "resume", "error"]); recorder.start(); diff --git a/tests/wpt/web-platform-tests/navigation-api/navigate-event/navigation-traverseTo-in-iframe-same-document-preventDefault.html b/tests/wpt/web-platform-tests/navigation-api/navigate-event/navigation-traverseTo-in-iframe-same-document-preventDefault.html index d68b11fa7cc..463746e8f79 100644 --- a/tests/wpt/web-platform-tests/navigation-api/navigate-event/navigation-traverseTo-in-iframe-same-document-preventDefault.html +++ b/tests/wpt/web-platform-tests/navigation-api/navigate-event/navigation-traverseTo-in-iframe-same-document-preventDefault.html @@ -27,12 +27,9 @@ promise_test(async t => { assert_equals(e.filename, location.href); top_navigateerror_fired = true; }); - let iframe_navigateerror_fired = false; - i.contentWindow.navigation.onnavigateerror = t.step_func(e => { - assert_equals(e.constructor, i.contentWindow.ErrorEvent); - assert_equals(e.filename, i.contentWindow.location.href); - iframe_navigateerror_fired = true; - }); + + i.contentWindow.navigation.onnavigate = t.unreached_func("navigate event should not fire in the iframe, because the traversal was cancelled in the top window"); + i.contentWindow.navigation.onnavigateerror = t.unreached_func("navigateerror event should not fire in the iframe, because the navigate event was not fired"); // When the top window blocks the traversal, it should be blocked in the // iframe as well, and the traversal promises in the iframe should be rejected. @@ -40,7 +37,6 @@ promise_test(async t => { const iDOMException = iWindow.DOMException; await assertBothRejectDOM(t, i.contentWindow.navigation.traverseTo(i.contentWindow.navigation.entries()[0].key), "AbortError", iWindow, iDOMException); assert_true(top_navigateerror_fired); - assert_true(iframe_navigateerror_fired); assert_equals(navigation.currentEntry.index, 1); assert_equals(i.contentWindow.navigation.currentEntry.index, 1); }, "navigation.traverseTo() in an iframe with same-document preventDefault in its parent"); diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/traverseTo-detach-cross-document-before-navigate-event.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/traverseTo-detach-cross-document-before-navigate-event.html new file mode 100644 index 00000000000..ed319f62239 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/traverseTo-detach-cross-document-before-navigate-event.html @@ -0,0 +1,32 @@ +<!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. + await new Promise(resolve => window.onload = () => t.step_timeout(resolve, 0)); + + assert_equals(i.contentWindow.navigation.entries().length, 1); + let key = i.contentWindow.navigation.currentEntry.key; + + i.contentWindow.navigation.navigate("?1"); + await new Promise(resolve => i.onload = resolve); + + assert_equals(i.contentWindow.navigation.entries().length, 2); + assert_equals(i.contentWindow.navigation.currentEntry, i.contentWindow.navigation.entries()[1]); + + const iWindow = i.contentWindow; + const iDOMException = iWindow.DOMException; + i.contentWindow.navigation.onnavigate = t.unreached_func("navigate should not fire"); + i.contentWindow.navigation.onnavigateerror = t.unreached_func("navigateerror should not fire"); + + let promises = i.contentWindow.navigation.traverseTo(key); + i.remove(); + await assertBothRejectDOM(t, promises, "AbortError", iWindow, iDOMException); +}, "traverseTo() promise rejections when detaching an iframe before onnavigate (cross-document)"); +</script> diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/traverseTo-detach-same-document-before-navigate-event.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/traverseTo-detach-same-document-before-navigate-event.html new file mode 100644 index 00000000000..592ac6f1990 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/traverseTo-detach-same-document-before-navigate-event.html @@ -0,0 +1,31 @@ +<!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. + await new Promise(resolve => window.onload = () => t.step_timeout(resolve, 0)); + + assert_equals(i.contentWindow.navigation.entries().length, 1); + let key = i.contentWindow.navigation.currentEntry.key; + + await i.contentWindow.navigation.navigate("#1").committed; + + assert_equals(i.contentWindow.navigation.entries().length, 2); + assert_equals(i.contentWindow.navigation.currentEntry, i.contentWindow.navigation.entries()[1]); + + const iWindow = i.contentWindow; + const iDOMException = iWindow.DOMException; + i.contentWindow.navigation.onnavigate = t.unreached_func("navigate should not fire"); + i.contentWindow.navigation.onnavigateerror = t.unreached_func("navigateerror should not fire"); + + let promises = i.contentWindow.navigation.traverseTo(key); + i.remove(); + await assertBothRejectDOM(t, promises, "AbortError", iWindow, iDOMException); +}, "traverseTo() promise rejections when detaching an iframe before onnavigate (same-document)"); +</script> diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/sandboxing-back-parent.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/sandboxing-back-parent.html index bc3d4e2e9fb..6eee3f917cd 100644 --- a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/sandboxing-back-parent.html +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/sandboxing-back-parent.html @@ -29,6 +29,7 @@ promise_test(async t => { await new Promise(resolve => window.onhashchange = resolve); navigation.onnavigate = t.unreached_func("navigate must not fire"); + navigation.onnavigateerror = t.unreached_func("navigateerror must not fire"); window.onpopstate = t.unreached_func("popstate must not fire"); window.onhashchange = t.unreached_func("hashchange must not fire"); diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/sandboxing-back-sibling.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/sandboxing-back-sibling.html index 718ea6d3dda..97c03ea0c2f 100644 --- a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/sandboxing-back-sibling.html +++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/sandboxing-back-sibling.html @@ -33,6 +33,7 @@ promise_test(async t => { await new Promise(resolve => i.onload = resolve); i.contentWindow.navigation.onnavigate = t.unreached_func("navigate must not fire"); + i.contentWindow.navigation.onnavigateerror = t.unreached_func("navigateerror must not fire"); i.contentWindow.onbeforeunload = t.unreached_func("beforeunload must not fire"); i.contentWindow.onunload = t.unreached_func("unload must not fire"); i.contentWindow.onpagehide = t.unreached_func("pagehide must not fire"); diff --git a/tests/wpt/web-platform-tests/png/META.yml b/tests/wpt/web-platform-tests/png/META.yml new file mode 100644 index 00000000000..da174ac614d --- /dev/null +++ b/tests/wpt/web-platform-tests/png/META.yml @@ -0,0 +1,4 @@ +spec: https://www.w3.org/TR/png/ +suggested_reviewers: + - programmax + - svgeesus diff --git a/tests/wpt/web-platform-tests/png/cicp-chunk.html b/tests/wpt/web-platform-tests/png/cicp-chunk.html new file mode 100644 index 00000000000..4afc262dcf5 --- /dev/null +++ b/tests/wpt/web-platform-tests/png/cicp-chunk.html @@ -0,0 +1,40 @@ +<!DOCTYPE html> +<title>PNG test: cICP chunk</title> +<link rel="help" href="https://w3c.github.io/PNG-spec/#cICP-chunk"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/html/canvas/resources/canvas-tests.js"></script> +<body> + +<h1>cICP chunk</h1> +<p class="desc">test pixel values of a display-p3 PNG</p> + +<p class="output">Actual output:</p> +<canvas id="c" class="output" width="100" height="50"><p class="fallback">FAIL (fallback content)</p></canvas> + +<ul id="d"></ul> +<script> +var t = async_test("test pixel values of a display-p3 PNG"); +const img = new Image(); +img.onload = () => { + _addTest(function(canvas, ctx) { + ctx.drawImage(img, 0, 0); + + var pixel = ctx.getImageData(5, 5, 1, 1, {colorSpace: "srgb", storageFormat: "uint8"}).data; + + // The pixel values stored are (51 red, 102 green, 153 blue). + // These numbers are chosen because 0.2 * 255 = 51. + // The image has a cICP chunk indicating the Display P3 color space. + // This results in decoded pixel values of (27 red, 104 green, 157 blue). + const pixel_expected = [27, 104, 157, 255]; + const epsilon = 2; + + _assertSame(pixel.length, pixel_expected.length, "pixel.length", "pixel_expected.length"); + assert_approx_equals(pixel[0], pixel_expected[0], epsilon); + assert_approx_equals(pixel[1], pixel_expected[1], epsilon); + assert_approx_equals(pixel[2], pixel_expected[2], epsilon); + assert_approx_equals(pixel[3], pixel_expected[3], epsilon); + }, {colorSpace: "display-p3"}); +}; +img.src = "./images/cicp.png"; +</script> diff --git a/tests/wpt/web-platform-tests/png/trns-chunk.html b/tests/wpt/web-platform-tests/png/trns-chunk.html new file mode 100644 index 00000000000..652cda0e320 --- /dev/null +++ b/tests/wpt/web-platform-tests/png/trns-chunk.html @@ -0,0 +1,37 @@ +<!DOCTYPE html> +<title>PNG test: tRNS chunk</title> +<link rel="help" href="https://w3c.github.io/PNG-spec/#11tRNS"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/html/canvas/resources/canvas-tests.js"></script> +<body> + +<h1>tRNS chunk handling</h1> +<p class="desc">test ignored high bits on lower bit depth tRNS</p> + +<p class="output">Actual output:</p> +<canvas id="c" class="output" width="100" height="50"><p class="fallback">FAIL (fallback content)</p></canvas> + +<ul id="d"></ul> +<script> +var t = async_test("test ignored high bits on lower bit depth tRNS"); +const img = new Image(); +img.onload = () => { + _addTest(function(canvas, ctx) { + ctx.drawImage(img, 0, 0); + + var pixel = ctx.getImageData(5, 5, 1, 1, {colorSpace: "srgb", storageFormat: "uint8"}).data; + + const pixel_expected = [255, 0, 0, 0]; + const epsilon = 2; + + _assertSame(pixel.length, pixel_expected.length, "pixel.length", "pixel_expected.length"); + // Ignore the color channel comparisons. + // The image itself stores 255 red, 0 green, 0 blue. + // But there may not be a requirement that this be preserved + // while decoding or through canvas processing. + assert_approx_equals(pixel[3], pixel_expected[3], epsilon); + }); +}; +img.src = "../images/trns.png"; +</script> diff --git a/tests/wpt/web-platform-tests/pointerevents/compat/pointerevent_mouse-pointer-preventdefault-passive.html b/tests/wpt/web-platform-tests/pointerevents/compat/pointerevent_mouse-pointer-preventdefault-passive.html new file mode 100644 index 00000000000..57da0968660 --- /dev/null +++ b/tests/wpt/web-platform-tests/pointerevents/compat/pointerevent_mouse-pointer-preventdefault-passive.html @@ -0,0 +1,84 @@ +<!DOCTYPE HTML> +<title>Canceling passive pointerevents does not affect compat mouseevents</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="../pointerevent_support.js"></script> +<style> + div { + margin: 20px; + padding: 20px; + background-color: green; + user-select: none; // Prevents text selection on drag. + } +</style> +<div id="logger" draggable="false"></div> +<div id="done"></div> + +<script> + 'use strict'; + + const logger = document.getElementById("logger"); + const done = document.getElementById("done"); + + let received_events = []; + + const logged_pointer_events = ["pointerdown", "pointermove", "pointerup", + "pointerenter", "pointerleave", "pointerover", "pointerout"]; + const logged_mouse_events = ["mousedown", "mousemove", "mouseup", + "mouseenter", "mouseleave", "mouseover", "mouseout"]; + + const expected_pointer_events = [ + "pointerover", "pointerenter", + "pointermove", "pointerdown", "pointermove", "pointerup", + "pointerout", "pointerleave" + ]; + + const expected_mouse_events = [ + "mouseover", "mouseenter", + "mousemove", "mousedown", "mousemove", "mouseup", + "mouseout", "mouseleave" + ]; + + logged_pointer_events.forEach(ename => logger.addEventListener(ename, e => { + received_events.push(e.type); + e.preventDefault(); + }, { passive: true })); + + logged_mouse_events.forEach(ename => logger.addEventListener(ename, e => + received_events.push(e.type))); + + promise_test(async () => { + received_events = []; + + let click_on_done = getEvent("click", done); + + let actions = new test_driver.Actions() + // Start outside all event listeners + .pointerMove(0, 0) + .pointerDown() + .pointerUp() + // Drag within "logger" + .pointerMove(0, 0, { origin: logger }) + .pointerDown() + .pointerMove(15, 15, { origin: logger }) + .pointerUp() + // Click "done" + .pointerMove(0, 0, { origin: done }) + .pointerDown() + .pointerUp() + .send(); + + await actions; + await click_on_done; + + assert_array_equals(received_events.filter(isPointerEvent), + expected_pointer_events, "expected pointer events"); + assert_array_equals(received_events.filter(isMouseEvent), + expected_mouse_events, "expected mouse events"); + assert_true(arePointerEventsBeforeCompatMouseEvents(received_events), + "pairing of pointer/mouse events"); + }, "Canceling passive pointerevents does not affect compat mouseevents"); +</script> diff --git a/tests/wpt/web-platform-tests/scroll-animations/crashtests/invalid-animation-range.html b/tests/wpt/web-platform-tests/scroll-animations/crashtests/invalid-animation-range.html new file mode 100644 index 00000000000..43b23c93b60 --- /dev/null +++ b/tests/wpt/web-platform-tests/scroll-animations/crashtests/invalid-animation-range.html @@ -0,0 +1,13 @@ +<!DOCTYPE html> +<title>Invalid animation range</title> +<body onload="runTest()"> + <div id="target"></div> +</body> +<script src="../../web-animations/testcommon.js"></script> +<script> + async function runTest() { + const anim = target.animate(undefined, {rangeStart: "initial" }); + await waitForNextFrame(); + await waitForNextFrame(); + } +</script> diff --git a/tests/wpt/web-platform-tests/scroll-animations/css/animation-shorthand.html b/tests/wpt/web-platform-tests/scroll-animations/css/animation-shorthand.html index 60d6c766467..87e66d0f532 100644 --- a/tests/wpt/web-platform-tests/scroll-animations/css/animation-shorthand.html +++ b/tests/wpt/web-platform-tests/scroll-animations/css/animation-shorthand.html @@ -40,4 +40,53 @@ test_shorthand_value('animation', 'animation-name': 'anim1, anim2, anim3', 'animation-timeline': 'auto, auto, auto' }); + +test((t) => { + t.add_cleanup(() => { + target.style = ''; + }); + + target.style.animation = 'anim 1s'; + target.style.animationTimeline = 'timeline'; + assert_equals(target.style.animation, ''); + assert_equals(target.style.animationName, 'anim'); + assert_equals(target.style.animationDuration, '1s'); +}, 'Animation shorthand can not represent non-initial timelines (specified)'); + +test((t) => { + t.add_cleanup(() => { + target.style = ''; + }); + + target.style.animation = 'anim 1s'; + target.style.animationTimeline = 'timeline'; + assert_equals(getComputedStyle(target).animation, ''); + assert_equals(getComputedStyle(target).animationName, 'anim'); + assert_equals(getComputedStyle(target).animationDuration, '1s'); +}, 'Animation shorthand can not represent non-initial timelines (computed)'); + +test((t) => { + t.add_cleanup(() => { + target.style = ''; + }); + + target.style.animation = 'anim 1s'; + target.style.animationDelayEnd = '42s'; + assert_equals(target.style.animation, ''); + assert_equals(target.style.animationName, 'anim'); + assert_equals(target.style.animationDuration, '1s'); +}, 'Animation shorthand can not represent non-initial animation-delay-end (specified)'); + +test((t) => { + t.add_cleanup(() => { + target.style = ''; + }); + + target.style.animation = 'anim 1s'; + target.style.animationDelayEnd = '42s'; + assert_equals(getComputedStyle(target).animation, ''); + assert_equals(getComputedStyle(target).animationName, 'anim'); + assert_equals(getComputedStyle(target).animationDuration, '1s'); +}, 'Animation shorthand can not represent non-initial animation-delay-end (computed)'); + </script> diff --git a/tests/wpt/web-platform-tests/scroll-animations/css/animation-timeline-named-scroll-progress-timeline.tentative.html b/tests/wpt/web-platform-tests/scroll-animations/css/animation-timeline-named-scroll-progress-timeline.tentative.html index 9f55e2d2c91..30461723386 100644 --- a/tests/wpt/web-platform-tests/scroll-animations/css/animation-timeline-named-scroll-progress-timeline.tentative.html +++ b/tests/wpt/web-platform-tests/scroll-animations/css/animation-timeline-named-scroll-progress-timeline.tentative.html @@ -655,8 +655,25 @@ promise_test(async t => { assert_equals(getComputedStyle(target).translate, '100px'); }, 'scroll-timeline-axis is vertical'); -// TODO: Add more tests which change scroll-timeline-axis property. -// Those animations which use this timeline should be restyled properly. +promise_test(async t => { + let [scroller, target] = createScrollerAndTarget(t); + + document.body.appendChild(scroller); + document.body.appendChild(target); + + scroller.style.scrollTimeline = 'timeline block'; + target.style.animation = "anim 10s linear"; + target.style.animationTimeline = 'timeline'; + + scroller.scrollTop = 50; + scroller.scrollLeft = 25; + await waitForNextFrame(); + assert_equals(getComputedStyle(target).translate, '100px'); + + scroller.style.scrollTimelineAxis = 'inline'; + await waitForNextFrame(); + assert_equals(getComputedStyle(target).translate, '75px'); +}, 'scroll-timeline-axis is mutated'); </script> </body> diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/import-scripts-data-url.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/import-scripts-data-url.https.html new file mode 100644 index 00000000000..f0922193dd0 --- /dev/null +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/import-scripts-data-url.https.html @@ -0,0 +1,18 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>Tests for importScripts: data: URL</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/test-helpers.sub.js"></script> +<body> +<script> +promise_test(async t => { + const scope = 'resources/import-scripts-data-url'; + await service_worker_unregister(t, scope); + let reg = await navigator.serviceWorker.register( + 'resources/import-scripts-data-url-worker.js', { scope: scope }); + t.add_cleanup(_ => reg.unregister()); + assert_not_equals(reg.installing, null, 'worker is installing'); + }, 'importScripts() supports data URLs'); +</script> +</body> diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/import-scripts-data-url-worker.js b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/import-scripts-data-url-worker.js new file mode 100644 index 00000000000..fdabdafc630 --- /dev/null +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/import-scripts-data-url-worker.js @@ -0,0 +1 @@ +importScripts('data:text/javascript,'); diff --git a/tests/wpt/web-platform-tests/storage-access-api/helpers.js b/tests/wpt/web-platform-tests/storage-access-api/helpers.js index ddc638434ae..f718f637cd9 100644 --- a/tests/wpt/web-platform-tests/storage-access-api/helpers.js +++ b/tests/wpt/web-platform-tests/storage-access-api/helpers.js @@ -126,11 +126,11 @@ async function DeleteCookieInFrame(frame, name, params) { } // Tests whether the frame can write cookies via document.cookie. Note that this -// overwrites, then deletes, cookies named "cookie" and "foo". +// overwrites, then optionally deletes, cookies named "cookie" and "foo". // // This function requires the caller to have included // /cookies/resources/cookie-helper.sub.js. -async function CanFrameWriteCookies(frame) { +async function CanFrameWriteCookies(frame, keep_after_writing = false) { const cookie_suffix = "Secure;SameSite=None;Path=/"; await DeleteCookieInFrame(frame, "cookie", cookie_suffix); await DeleteCookieInFrame(frame, "foo", cookie_suffix); @@ -142,8 +142,10 @@ async function CanFrameWriteCookies(frame) { const can_write = cookieStringHasCookie("cookie", "monster", cookies) && cookieStringHasCookie("foo", "bar", cookies); - await DeleteCookieInFrame(frame, "cookie", cookie_suffix); - await DeleteCookieInFrame(frame, "foo", cookie_suffix); + if (!keep_after_writing) { + await DeleteCookieInFrame(frame, "cookie", cookie_suffix); + await DeleteCookieInFrame(frame, "foo", cookie_suffix); + } return can_write; } diff --git a/tests/wpt/web-platform-tests/storage-access-api/requestStorageAccess-cross-origin-iframe-navigation.sub.https.window.js b/tests/wpt/web-platform-tests/storage-access-api/requestStorageAccess-cross-origin-iframe-navigation.sub.https.window.js index 67906708aed..24595ed3408 100644 --- a/tests/wpt/web-platform-tests/storage-access-api/requestStorageAccess-cross-origin-iframe-navigation.sub.https.window.js +++ b/tests/wpt/web-platform-tests/storage-access-api/requestStorageAccess-cross-origin-iframe-navigation.sub.https.window.js @@ -30,7 +30,7 @@ assert_true(await RequestStorageAccessInFrame(frame), "requestStorageAccess resolves without requiring a gesture."); assert_true(await FrameHasStorageAccess(frame), "frame has storage access after request."); - assert_true(await CanFrameWriteCookies(frame), "frame can write cookies via JS after request."); + assert_true(await CanFrameWriteCookies(frame, /* keep_after_writing=*/true), "frame can write cookies via JS after request."); return frame; } @@ -42,6 +42,7 @@ await FrameInitiatedReload(frame); + assert_true(cookieStringHasCookie('cookie', 'monster', await GetHTTPCookiesFromFrame(frame)), "The frame's navigation request included cookies."); assert_true(await FrameHasStorageAccess(frame), "frame has storage access after refresh."); assert_true(await CanFrameWriteCookies(frame), "frame can write cookies via JS after refresh."); }, "Self-initiated reloads preserve storage access"); @@ -53,6 +54,7 @@ await FrameInitiatedNavigation(frame, altWwwResponder); + assert_true(cookieStringHasCookie('cookie', 'monster', await GetHTTPCookiesFromFrame(frame)), "The frame's navigation request included cookies."); assert_true(await FrameHasStorageAccess(frame), "frame has storage access after refresh."); assert_true(await CanFrameWriteCookies(frame), "frame can write cookies via JS after refresh."); }, "Self-initiated same-origin navigations preserve storage access"); diff --git a/tests/wpt/web-platform-tests/storage-access-api/storage-access-permission.sub.https.window.js b/tests/wpt/web-platform-tests/storage-access-api/storage-access-permission.sub.https.window.js index 4222051c10b..82794061bd0 100644 --- a/tests/wpt/web-platform-tests/storage-access-api/storage-access-permission.sub.https.window.js +++ b/tests/wpt/web-platform-tests/storage-access-api/storage-access-permission.sub.https.window.js @@ -62,10 +62,10 @@ const permission = await navigator.permissions.query({name: "storage-access"}); assert_equals(permission.name, "storage-access"); - assert_equals(permission.state, "denied"); + assert_equals(permission.state, "prompt"); await test_driver.set_permission({ name: 'storage-access' }, 'prompt'); - }, "Permission denied state can be queried"); + }, "Permission denied state is hidden"); promise_test(async t => { t.add_cleanup(async () => { diff --git a/tests/wpt/web-platform-tests/tools/third_party/tooltool/tooltool.py b/tests/wpt/web-platform-tests/tools/third_party/tooltool/tooltool.py index 53929fce880..5abc98a09d8 100755 --- a/tests/wpt/web-platform-tests/tools/third_party/tooltool/tooltool.py +++ b/tests/wpt/web-platform-tests/tools/third_party/tooltool/tooltool.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # tooltool is a lookaside cache implemented in Python # Copyright (C) 2011 John H. Ford <john@johnford.info> @@ -22,8 +22,6 @@ # in which the manifest file resides and it should be called # 'manifest.tt' -from __future__ import print_function - import base64 import calendar import hashlib @@ -36,72 +34,180 @@ import os import pprint import re import shutil +import stat import sys import tarfile import tempfile import threading import time import zipfile +from contextlib import closing, contextmanager +from functools import wraps +from io import BytesIO, open +from random import random +from subprocess import PIPE, Popen -from io import open -from io import BytesIO -from subprocess import PIPE -from subprocess import Popen - -__version__ = '1' +__version__ = "1.4.0" # Allowed request header characters: # !#$%&'()*+,-./:;<=>?@[]^_`{|}~ and space, a-z, A-Z, 0-9, \, " REQUEST_HEADER_ATTRIBUTE_CHARS = re.compile( - r"^[ a-zA-Z0-9_\!#\$%&'\(\)\*\+,\-\./\:;<\=>\?@\[\]\^`\{\|\}~]*$") -DEFAULT_MANIFEST_NAME = 'manifest.tt' -TOOLTOOL_PACKAGE_SUFFIX = '.TOOLTOOL-PACKAGE' + r"^[ a-zA-Z0-9_\!#\$%&'\(\)\*\+,\-\./\:;<\=>\?@\[\]\^`\{\|\}~]*$" +) +DEFAULT_MANIFEST_NAME = "manifest.tt" +TOOLTOOL_PACKAGE_SUFFIX = ".TOOLTOOL-PACKAGE" HAWK_VER = 1 PY3 = sys.version_info[0] == 3 if PY3: - open_attrs = dict(mode='w', encoding='utf-8') six_binary_type = bytes - six_text_type = str - unicode = str # Silence `pyflakes` from reporting `undefined name 'unicode'` in Python 3. + unicode = ( + str # Silence `pyflakes` from reporting `undefined name 'unicode'` in Python 3. + ) import urllib.request as urllib2 - from http.client import HTTPSConnection, HTTPConnection - from urllib.parse import urlparse, urljoin - from urllib.request import Request + from http.client import HTTPConnection, HTTPSConnection from urllib.error import HTTPError, URLError + from urllib.parse import urljoin, urlparse + from urllib.request import Request else: - open_attrs = dict(mode='wb') six_binary_type = str - six_text_type = unicode import urllib2 - from httplib import HTTPSConnection, HTTPConnection - from urllib2 import Request, HTTPError, URLError - from urlparse import urlparse, urljoin + from httplib import HTTPConnection, HTTPSConnection + from urllib2 import HTTPError, Request, URLError + from urlparse import urljoin, urlparse log = logging.getLogger(__name__) -def request_has_data(req): - if PY3: - return req.data is not None - return req.has_data() +# Vendored code from `redo` module +def retrier(attempts=5, sleeptime=10, max_sleeptime=300, sleepscale=1.5, jitter=1): + """ + This function originates from redo 2.0.3 https://github.com/mozilla-releng/redo + A generator function that sleeps between retries, handles exponential + backoff and jitter. The action you are retrying is meant to run after + retrier yields. + """ + jitter = jitter or 0 # py35 barfs on the next line if jitter is None + if jitter > sleeptime: + # To prevent negative sleep times + raise Exception( + "jitter ({}) must be less than sleep time ({})".format(jitter, sleeptime) + ) + sleeptime_real = sleeptime + for _ in range(attempts): + log.debug("attempt %i/%i", _ + 1, attempts) -def to_binary(val): - if isinstance(val, six_text_type): - return val.encode('utf-8') - return val + yield sleeptime_real + if jitter: + sleeptime_real = sleeptime + random.uniform(-jitter, jitter) + # our jitter should scale along with the sleeptime + jitter = jitter * sleepscale + else: + sleeptime_real = sleeptime -def to_text(val): - if isinstance(val, six_binary_type): - return val.decode('utf-8') - return val + sleeptime *= sleepscale + + if sleeptime_real > max_sleeptime: + sleeptime_real = max_sleeptime + + # Don't need to sleep the last time + if _ < attempts - 1: + log.debug( + "sleeping for %.2fs (attempt %i/%i)", sleeptime_real, _ + 1, attempts + ) + time.sleep(sleeptime_real) + + +def retry( + action, + attempts=5, + sleeptime=60, + max_sleeptime=5 * 60, + sleepscale=1.5, + jitter=1, + retry_exceptions=(Exception,), + cleanup=None, + args=(), + kwargs={}, + log_args=True, +): + """ + This function originates from redo 2.0.3 https://github.com/mozilla-releng/redo + Calls an action function until it succeeds, or we give up. + """ + assert callable(action) + assert not cleanup or callable(cleanup) + + action_name = getattr(action, "__name__", action) + if log_args and (args or kwargs): + log_attempt_args = ( + "retry: calling %s with args: %s," " kwargs: %s, attempt #%d", + action_name, + args, + kwargs, + ) + else: + log_attempt_args = ("retry: calling %s, attempt #%d", action_name) + + if max_sleeptime < sleeptime: + log.debug("max_sleeptime %d less than sleeptime %d", max_sleeptime, sleeptime) + + n = 1 + for _ in retrier( + attempts=attempts, + sleeptime=sleeptime, + max_sleeptime=max_sleeptime, + sleepscale=sleepscale, + jitter=jitter, + ): + try: + logfn = log.info if n != 1 else log.debug + logfn_args = log_attempt_args + (n,) + logfn(*logfn_args) + return action(*args, **kwargs) + except retry_exceptions: + log.debug("retry: Caught exception: ", exc_info=True) + if cleanup: + cleanup() + if n == attempts: + log.info("retry: Giving up on %s", action_name) + raise + continue + finally: + n += 1 + + +def retriable(*retry_args, **retry_kwargs): + """ + This function originates from redo 2.0.3 https://github.com/mozilla-releng/redo + A decorator factory for retry(). Wrap your function in @retriable(...) to + give it retry powers! + """ + + def _retriable_factory(func): + @wraps(func) + def _retriable_wrapper(*args, **kwargs): + return retry(func, args=args, kwargs=kwargs, *retry_args, **retry_kwargs) + + return _retriable_wrapper + + return _retriable_factory + + +# end of vendored code from redo module + + +def request_has_data(req): + if PY3: + return req.data is not None + return req.has_data() def get_hexdigest(val): - return hashlib.sha512(to_binary(val)).hexdigest() + return hashlib.sha512(val).hexdigest() class FileRecordJSONEncoderException(Exception): @@ -113,7 +219,6 @@ class InvalidManifest(Exception): class ExceptionWithFilename(Exception): - def __init__(self, filename): Exception.__init__(self) self.filename = filename @@ -142,22 +247,24 @@ class BadHeaderValue(Exception): def parse_url(url): url_parts = urlparse(url) url_dict = { - 'scheme': url_parts.scheme, - 'hostname': url_parts.hostname, - 'port': url_parts.port, - 'path': url_parts.path, - 'resource': url_parts.path, - 'query': url_parts.query, + "scheme": url_parts.scheme, + "hostname": url_parts.hostname, + "port": url_parts.port, + "path": url_parts.path, + "resource": url_parts.path, + "query": url_parts.query, } - if len(url_dict['query']) > 0: - url_dict['resource'] = '%s?%s' % (url_dict['resource'], # pragma: no cover - url_dict['query']) + if len(url_dict["query"]) > 0: + url_dict["resource"] = "%s?%s" % ( + url_dict["resource"], # pragma: no cover + url_dict["query"], + ) if url_parts.port is None: - if url_parts.scheme == 'http': - url_dict['port'] = 80 - elif url_parts.scheme == 'https': # pragma: no cover - url_dict['port'] = 443 + if url_parts.scheme == "http": + url_dict["port"] = 80 + elif url_parts.scheme == "https": # pragma: no cover + url_dict["port"] = 443 return url_dict @@ -171,110 +278,119 @@ def random_string(length): def prepare_header_val(val): if isinstance(val, six_binary_type): - val = val.decode('utf-8') + val = val.decode("utf-8") if not REQUEST_HEADER_ATTRIBUTE_CHARS.match(val): raise BadHeaderValue( # pragma: no cover - 'header value value={val} contained an illegal character'.format(val=repr(val))) + "header value value={val} contained an illegal character".format( + val=repr(val) + ) + ) return val def parse_content_type(content_type): # pragma: no cover if content_type: - return content_type.split(';')[0].strip().lower() + return content_type.split(";")[0].strip().lower() else: - return '' + return "" def calculate_payload_hash(algorithm, payload, content_type): # pragma: no cover parts = [ - part if isinstance(part, six_binary_type) else part.encode('utf8') - for part in ['hawk.' + str(HAWK_VER) + '.payload\n', - parse_content_type(content_type) + '\n', - payload or '', - '\n', - ] + part if isinstance(part, six_binary_type) else part.encode("utf8") + for part in [ + "hawk." + str(HAWK_VER) + ".payload\n", + parse_content_type(content_type) + "\n", + payload or "", + "\n", + ] ] p_hash = hashlib.new(algorithm) - p_hash.update(''.join(parts)) + for p in parts: + p_hash.update(p) - log.debug('calculating payload hash from:\n{parts}'.format(parts=pprint.pformat(parts))) + log.debug( + "calculating payload hash from:\n{parts}".format(parts=pprint.pformat(parts)) + ) return base64.b64encode(p_hash.digest()) def validate_taskcluster_credentials(credentials): - if not hasattr(credentials, '__getitem__'): - raise InvalidCredentials('credentials must be a dict-like object') # pragma: no cover + if not hasattr(credentials, "__getitem__"): + raise InvalidCredentials( + "credentials must be a dict-like object" + ) # pragma: no cover try: - credentials['clientId'] - credentials['accessToken'] + credentials["clientId"] + credentials["accessToken"] except KeyError: # pragma: no cover etype, val, tb = sys.exc_info() - raise InvalidCredentials('{etype}: {val}'.format(etype=etype, val=val)) + raise InvalidCredentials("{etype}: {val}".format(etype=etype, val=val)) def normalize_header_attr(val): if isinstance(val, six_binary_type): - return val.decode('utf-8') + return val.decode("utf-8") return val # pragma: no cover -def normalize_string(mac_type, - timestamp, - nonce, - method, - name, - host, - port, - content_hash, - ): - return '\n'.join([ - normalize_header_attr(header) - # The blank lines are important. They follow what the Node Hawk lib does. - for header in ['hawk.' + str(HAWK_VER) + '.' + mac_type, - timestamp, - nonce, - method or '', - name or '', - host, - port, - content_hash or '', - '', # for ext which is empty in this case - '', # Add trailing new line. - ] - ]) - - -def calculate_mac(mac_type, - access_token, - algorithm, - timestamp, - nonce, - method, - name, - host, - port, - content_hash, - ): - normalized = normalize_string(mac_type, - timestamp, - nonce, - method, - name, - host, - port, - content_hash) - log.debug(u'normalized resource for mac calc: {norm}'.format(norm=normalized)) +def normalize_string( + mac_type, + timestamp, + nonce, + method, + name, + host, + port, + content_hash, +): + return "\n".join( + [ + normalize_header_attr(header) + # The blank lines are important. They follow what the Node Hawk lib does. + for header in [ + "hawk." + str(HAWK_VER) + "." + mac_type, + timestamp, + nonce, + method or "", + name or "", + host, + port, + content_hash or "", + "", # for ext which is empty in this case + "", # Add trailing new line. + ] + ] + ) + + +def calculate_mac( + mac_type, + access_token, + algorithm, + timestamp, + nonce, + method, + name, + host, + port, + content_hash, +): + normalized = normalize_string( + mac_type, timestamp, nonce, method, name, host, port, content_hash + ) + log.debug(u"normalized resource for mac calc: {norm}".format(norm=normalized)) digestmod = getattr(hashlib, algorithm) if not isinstance(normalized, six_binary_type): - normalized = normalized.encode('utf8') + normalized = normalized.encode("utf8") if not isinstance(access_token, six_binary_type): - access_token = access_token.encode('ascii') + access_token = access_token.encode("ascii") result = hmac.new(access_token, normalized, digestmod) return base64.b64encode(result.digest()) @@ -285,31 +401,36 @@ def make_taskcluster_header(credentials, req): url = req.get_full_url() method = req.get_method() - algorithm = 'sha256' + algorithm = "sha256" timestamp = str(utc_now()) nonce = random_string(6) url_parts = parse_url(url) content_hash = None if request_has_data(req): + if PY3: + data = req.data + else: + data = req.get_data() content_hash = calculate_payload_hash( # pragma: no cover algorithm, - req.get_data(), + data, # maybe we should detect this from req.headers but we anyway expect json - content_type='application/json', + content_type="application/json", ) - mac = calculate_mac('header', - credentials['accessToken'], - algorithm, - timestamp, - nonce, - method, - url_parts['resource'], - url_parts['hostname'], - str(url_parts['port']), - content_hash, - ) + mac = calculate_mac( + "header", + credentials["accessToken"], + algorithm, + timestamp, + nonce, + method, + url_parts["resource"], + url_parts["hostname"], + str(url_parts["port"]), + content_hash, + ) header = u'Hawk mac="{}"'.format(prepare_header_val(mac)) @@ -318,24 +439,32 @@ def make_taskcluster_header(credentials, req): header = u'{header}, id="{id}", ts="{ts}", nonce="{nonce}"'.format( header=header, - id=prepare_header_val(credentials['clientId']), + id=prepare_header_val(credentials["clientId"]), ts=prepare_header_val(timestamp), nonce=prepare_header_val(nonce), ) - log.debug('Hawk header for URL={} method={}: {}'.format(url, method, header)) + log.debug("Hawk header for URL={} method={}: {}".format(url, method, header)) return header class FileRecord(object): - - def __init__(self, filename, size, digest, algorithm, unpack=False, - version=None, visibility=None): + def __init__( + self, + filename, + size, + digest, + algorithm, + unpack=False, + version=None, + visibility=None, + ): object.__init__(self) - if '/' in filename or '\\' in filename: + if "/" in filename or "\\" in filename: log.error( - "The filename provided contains path information and is, therefore, invalid.") + "The filename provided contains path information and is, therefore, invalid." + ) raise BadFilenameException(filename=filename) self.filename = filename self.size = size @@ -348,12 +477,14 @@ class FileRecord(object): def __eq__(self, other): if self is other: return True - if self.filename == other.filename and \ - self.size == other.size and \ - self.digest == other.digest and \ - self.algorithm == other.algorithm and \ - self.version == other.version and \ - self.visibility == other.visibility: + if ( + self.filename == other.filename + and self.size == other.size + and self.digest == other.digest + and self.algorithm == other.algorithm + and self.version == other.version + and self.visibility == other.visibility + ): return True else: return False @@ -365,9 +496,18 @@ class FileRecord(object): return repr(self) def __repr__(self): - return "%s.%s(filename='%s', size=%s, digest='%s', algorithm='%s', visibility=%r)" % ( - __name__, self.__class__.__name__, self.filename, self.size, - self.digest, self.algorithm, self.visibility) + return ( + "%s.%s(filename='%s', size=%s, digest='%s', algorithm='%s', visibility=%r)" + % ( + __name__, + self.__class__.__name__, + self.filename, + self.size, + self.digest, + self.algorithm, + self.visibility, + ) + ) def present(self): # Doesn't check validity @@ -377,17 +517,15 @@ class FileRecord(object): if self.present(): return self.size == os.path.getsize(self.filename) else: - log.debug( - "trying to validate size on a missing file, %s", self.filename) + log.debug("trying to validate size on a missing file, %s", self.filename) raise MissingFileException(filename=self.filename) def validate_digest(self): if self.present(): - with open(self.filename, 'rb') as f: + with open(self.filename, "rb") as f: return self.digest == digest_file(f, self.algorithm) else: - log.debug( - "trying to validate digest on a missing file, %s', self.filename") + log.debug("trying to validate digest on a missing file, %s', self.filename") raise MissingFileException(filename=self.filename) def validate(self): @@ -406,35 +544,40 @@ class FileRecord(object): def create_file_record(filename, algorithm): - fo = open(filename, 'rb') + fo = open(filename, "rb") stored_filename = os.path.split(filename)[1] - fr = FileRecord(stored_filename, os.path.getsize( - filename), digest_file(fo, algorithm), algorithm) + fr = FileRecord( + stored_filename, + os.path.getsize(filename), + digest_file(fo, algorithm), + algorithm, + ) fo.close() return fr class FileRecordJSONEncoder(json.JSONEncoder): - def encode_file_record(self, obj): if not issubclass(type(obj), FileRecord): - err = "FileRecordJSONEncoder is only for FileRecord and lists of FileRecords, " \ - "not %s" % obj.__class__.__name__ + err = ( + "FileRecordJSONEncoder is only for FileRecord and lists of FileRecords, " + "not %s" % obj.__class__.__name__ + ) log.warn(err) raise FileRecordJSONEncoderException(err) else: rv = { - 'filename': obj.filename, - 'size': obj.size, - 'algorithm': obj.algorithm, - 'digest': obj.digest, + "filename": obj.filename, + "size": obj.size, + "algorithm": obj.algorithm, + "digest": obj.digest, } if obj.unpack: - rv['unpack'] = True + rv["unpack"] = True if obj.version: - rv['version'] = obj.version + rv["version"] = obj.version if obj.visibility is not None: - rv['visibility'] = obj.visibility + rv["visibility"] = obj.visibility return rv def default(self, f): @@ -452,6 +595,7 @@ class FileRecordJSONDecoder(json.JSONDecoder): """I help the json module materialize a FileRecord from a JSON file. I understand FileRecords and lists of FileRecords. I ignore things that I don't expect for now""" + # TODO: make this more explicit in what it's looking for # and error out on unexpected things @@ -464,10 +608,10 @@ class FileRecordJSONDecoder(json.JSONDecoder): record_list.append(record) return record_list required_fields = [ - 'filename', - 'size', - 'algorithm', - 'digest', + "filename", + "size", + "algorithm", + "digest", ] if isinstance(obj, dict): missing = False @@ -477,12 +621,18 @@ class FileRecordJSONDecoder(json.JSONDecoder): break if not missing: - unpack = obj.get('unpack', False) - version = obj.get('version', None) - visibility = obj.get('visibility', None) + unpack = obj.get("unpack", False) + version = obj.get("version", None) + visibility = obj.get("visibility", None) rv = FileRecord( - obj['filename'], obj['size'], obj['digest'], obj['algorithm'], - unpack, version, visibility) + obj["filename"], + obj["size"], + obj["digest"], + obj["algorithm"], + unpack, + version, + visibility, + ) log.debug("materialized %s" % rv) return rv return obj @@ -495,7 +645,7 @@ class FileRecordJSONDecoder(json.JSONDecoder): class Manifest(object): - valid_formats = ('json',) + valid_formats = ("json",) def __init__(self, file_records=None): self.file_records = file_records or [] @@ -504,7 +654,7 @@ class Manifest(object): if self is other: return True if len(self.file_records) != len(other.file_records): - log.debug('Manifests differ in number of files') + log.debug("Manifests differ in number of files") return False # sort the file records by filename before comparing mine = sorted((fr.filename, fr) for fr in self.file_records) @@ -536,39 +686,44 @@ class Manifest(object): def validate(self): return all(i.validate() for i in self.file_records) - def load(self, data_file, fmt='json'): + def load(self, data_file, fmt="json"): assert fmt in self.valid_formats - if fmt == 'json': + if fmt == "json": try: self.file_records.extend( - json.load(data_file, cls=FileRecordJSONDecoder)) + json.load(data_file, cls=FileRecordJSONDecoder) + ) except ValueError: raise InvalidManifest("trying to read invalid manifest file") - def loads(self, data_string, fmt='json'): + def loads(self, data_string, fmt="json"): assert fmt in self.valid_formats - if fmt == 'json': + if fmt == "json": try: self.file_records.extend( - json.loads(data_string, cls=FileRecordJSONDecoder)) + json.loads(data_string, cls=FileRecordJSONDecoder) + ) except ValueError: raise InvalidManifest("trying to read invalid manifest file") - def dump(self, output_file, fmt='json'): + def dump(self, output_file, fmt="json"): assert fmt in self.valid_formats - if fmt == 'json': + if fmt == "json": return json.dump( - self.file_records, output_file, - indent=2, separators=(',', ': '), + self.file_records, + output_file, + indent=2, + separators=(",", ": "), cls=FileRecordJSONEncoder, ) - def dumps(self, fmt='json'): + def dumps(self, fmt="json"): assert fmt in self.valid_formats - if fmt == 'json': + if fmt == "json": return json.dumps( self.file_records, - indent=2, separators=(',', ': '), + indent=2, + separators=(",", ": "), cls=FileRecordJSONEncoder, ) @@ -582,8 +737,8 @@ def digest_file(f, a): while data: h.update(data) data = f.read(chunk_size) - name = repr(f.name) if hasattr(f, 'name') else 'a file' - log.debug('hashed %s with %s to be %s', name, a, h.hexdigest()) + name = repr(f.name) if hasattr(f, "name") else "a file" + log.debug("hashed %s with %s to be %s", name, a, h.hexdigest()) return h.hexdigest() @@ -594,7 +749,7 @@ def execute(cmd): line = process.stdout.readline() if not line: break - log.info(line.replace('\n', ' ')) + log.info(line.replace("\n", " ")) return process.wait() == 0 @@ -602,14 +757,13 @@ def open_manifest(manifest_file): """I know how to take a filename and load it into a Manifest object""" if os.path.exists(manifest_file): manifest = Manifest() - with open(manifest_file, "rb") as f: + with open(manifest_file, "r" if PY3 else "rb") as f: manifest.load(f) log.debug("loaded manifest from file '%s'" % manifest_file) return manifest else: log.debug("tried to load absent file '%s' as manifest" % manifest_file) - raise InvalidManifest( - "manifest file '%s' does not exist" % manifest_file) + raise InvalidManifest("manifest file '%s' does not exist" % manifest_file) def list_manifest(manifest_file): @@ -617,15 +771,22 @@ def list_manifest(manifest_file): try: manifest = open_manifest(manifest_file) except InvalidManifest as e: - log.error("failed to load manifest file at '%s': %s" % ( - manifest_file, - str(e), - )) + log.error( + "failed to load manifest file at '%s': %s" + % ( + manifest_file, + str(e), + ) + ) return False for f in manifest.file_records: - print("{}\t{}\t{}".format("P" if f.present() else "-", - "V" if f.present() and f.validate() else "-", - f.filename)) + print( + "{}\t{}\t{}".format( + "P" if f.present() else "-", + "V" if f.present() and f.validate() else "-", + f.filename, + ) + ) return True @@ -635,10 +796,13 @@ def validate_manifest(manifest_file): try: manifest = open_manifest(manifest_file) except InvalidManifest as e: - log.error("failed to load manifest file at '%s': %s" % ( - manifest_file, - str(e), - )) + log.error( + "failed to load manifest file at '%s': %s" + % ( + manifest_file, + str(e), + ) + ) return False invalid_files = [] absent_files = [] @@ -677,13 +841,17 @@ def add_files(manifest_file, algorithm, filenames, version, visibility, unpack): log.debug("appending a new file record to manifest file") add = True for fr in old_manifest.file_records: - log.debug("manifest file has '%s'" % "', ".join( - [x.filename for x in old_manifest.file_records])) + log.debug( + "manifest file has '%s'" + % "', ".join([x.filename for x in old_manifest.file_records]) + ) if new_fr == fr: log.info("file already in old_manifest") add = False elif filename == fr.filename: - log.error("manifest already contains a different file named %s" % filename) + log.error( + "manifest already contains a different file named %s" % filename + ) add = False if add: new_manifest.file_records.append(new_fr) @@ -695,8 +863,12 @@ def add_files(manifest_file, algorithm, filenames, version, visibility, unpack): for old_fr in old_manifest.file_records: if old_fr.filename not in new_filenames: new_manifest.file_records.append(old_fr) - with open(manifest_file, **open_attrs) as output: - new_manifest.dump(output, fmt='json') + if PY3: + with open(manifest_file, mode="w") as output: + new_manifest.dump(output, fmt="json") + else: + with open(manifest_file, mode="wb") as output: + new_manifest.dump(output, fmt="json") return all_files_added @@ -706,7 +878,17 @@ def touch(f): try: os.utime(f, None) except OSError: - log.warn('impossible to update utime of file %s' % f) + log.warn("impossible to update utime of file %s" % f) + + +@contextmanager +@retriable(sleeptime=2) +def request(url, auth_file=None): + req = Request(url) + _authorize(req, auth_file) + with closing(urllib2.urlopen(req)) as f: + log.debug("opened %s for reading" % url) + yield f def fetch_file(base_urls, file_record, grabchunk=1024 * 4, auth_file=None, region=None): @@ -717,42 +899,41 @@ def fetch_file(base_urls, file_record, grabchunk=1024 * 4, auth_file=None, regio fetched_path = None for base_url in base_urls: # Generate the URL for the file on the server side - url = urljoin(base_url, - '%s/%s' % (file_record.algorithm, file_record.digest)) + url = urljoin(base_url, "%s/%s" % (file_record.algorithm, file_record.digest)) if region is not None: - url += '?region=' + region + url += "?region=" + region log.info("Attempting to fetch from '%s'..." % base_url) # Well, the file doesn't exist locally. Let's fetch it. try: - req = Request(url) - _authorize(req, auth_file) - f = urllib2.urlopen(req) - log.debug("opened %s for reading" % url) - with open(temp_path, **open_attrs) as out: + with request(url, auth_file) as f, open(temp_path, mode="wb") as out: k = True size = 0 while k: # TODO: print statistics as file transfers happen both for info and to stop # buildbot timeouts indata = f.read(grabchunk) - if PY3: - indata = to_text(indata) out.write(indata) size += len(indata) if len(indata) == 0: k = False - log.info("File %s fetched from %s as %s" % - (file_record.filename, base_url, temp_path)) + log.info( + "File %s fetched from %s as %s" + % (file_record.filename, base_url, temp_path) + ) fetched_path = temp_path break except (URLError, HTTPError, ValueError): - log.info("...failed to fetch '%s' from %s" % - (file_record.filename, base_url), exc_info=True) + log.info( + "...failed to fetch '%s' from %s" % (file_record.filename, base_url), + exc_info=True, + ) except IOError: # pragma: no cover - log.info("failed to write to temporary file for '%s'" % - file_record.filename, exc_info=True) + log.info( + "failed to write to temporary file for '%s'" % file_record.filename, + exc_info=True, + ) # cleanup temp file in case of issues if fetched_path: @@ -768,16 +949,43 @@ def fetch_file(base_urls, file_record, grabchunk=1024 * 4, auth_file=None, regio def clean_path(dirname): """Remove a subtree if is exists. Helper for unpack_file().""" if os.path.exists(dirname): - log.info('rm tree: %s' % dirname) + log.info("rm tree: %s" % dirname) shutil.rmtree(dirname) CHECKSUM_SUFFIX = ".checksum" +def validate_tar_member(member, path): + def _is_within_directory(directory, target): + real_directory = os.path.realpath(directory) + real_target = os.path.realpath(target) + prefix = os.path.commonprefix([real_directory, real_target]) + return prefix == real_directory + + member_path = os.path.join(path, member.name) + if not _is_within_directory(path, member_path): + raise Exception("Attempted path traversal in tar file: " + member.name) + if member.issym(): + link_path = os.path.join(os.path.dirname(member_path), member.linkname) + if not _is_within_directory(path, link_path): + raise Exception("Attempted link path traversal in tar file: " + member.name) + if member.mode & (stat.S_ISUID | stat.S_ISGID): + raise Exception("Attempted setuid or setgid in tar file: " + member.name) + + +def safe_extract(tar, path=".", *, numeric_owner=False): + def _files(tar, path): + for member in tar: + validate_tar_member(member, path) + yield member + + tar.extractall(path, members=_files(tar, path), numeric_owner=numeric_owner) + + def unpack_file(filename): """Untar `filename`, assuming it is uncompressed or compressed with bzip2, - xz, gzip, or unzip a zip file. The file is assumed to contain a single + xz, gzip, zst, or unzip a zip file. The file is assumed to contain a single directory with a name matching the base of the given filename. Xz support is handled by shelling out to 'tar'.""" if os.path.isfile(filename) and tarfile.is_tarfile(filename): @@ -785,26 +993,34 @@ def unpack_file(filename): base_file, tar_ext = os.path.splitext(tar_file) clean_path(base_file) log.info('untarring "%s"' % filename) - tar = tarfile.open(filename) - tar.extractall() - tar.close() - elif os.path.isfile(filename) and filename.endswith('.tar.xz'): - base_file = filename.replace('.tar.xz', '') + with tarfile.open(filename) as tar: + safe_extract(tar) + elif os.path.isfile(filename) and filename.endswith(".tar.xz"): + base_file = filename.replace(".tar.xz", "") clean_path(base_file) log.info('untarring "%s"' % filename) # Not using tar -Jxf because it fails on Windows for some reason. - process = Popen(['xz', '-d', '-c', filename], stdout=PIPE) + process = Popen(["xz", "-d", "-c", filename], stdout=PIPE) stdout, stderr = process.communicate() if process.returncode != 0: return False fileobj = BytesIO() fileobj.write(stdout) fileobj.seek(0) - tar = tarfile.open(fileobj=fileobj, mode='r|') - tar.extractall() - tar.close() + with tarfile.open(fileobj=fileobj, mode="r|") as tar: + safe_extract(tar) + elif os.path.isfile(filename) and filename.endswith(".tar.zst"): + import zstandard + + base_file = filename.replace(".tar.zst", "") + clean_path(base_file) + log.info('untarring "%s"' % filename) + dctx = zstandard.ZstdDecompressor() + with dctx.stream_reader(open(filename, "rb")) as fileobj: + with tarfile.open(fileobj=fileobj, mode="r|") as tar: + safe_extract(tar) elif os.path.isfile(filename) and zipfile.is_zipfile(filename): - base_file = filename.replace('.zip', '') + base_file = filename.replace(".zip", "") clean_path(base_file) log.info('unzipping "%s"' % filename) z = zipfile.ZipFile(filename) @@ -816,16 +1032,25 @@ def unpack_file(filename): return True -def fetch_files(manifest_file, base_urls, filenames=[], cache_folder=None, - auth_file=None, region=None): +def fetch_files( + manifest_file, + base_urls, + filenames=[], + cache_folder=None, + auth_file=None, + region=None, +): # Lets load the manifest file try: manifest = open_manifest(manifest_file) except InvalidManifest as e: - log.error("failed to load manifest file at '%s': %s" % ( - manifest_file, - str(e), - )) + log.error( + "failed to load manifest file at '%s': %s" + % ( + manifest_file, + str(e), + ) + ) return False # we want to track files already in current working directory AND valid @@ -852,21 +1077,27 @@ def fetch_files(manifest_file, base_urls, filenames=[], cache_folder=None, # we have an invalid file here, better to cleanup! # this invalid file needs to be replaced with a good one # from the local cash or fetched from a tooltool server - log.info("File %s is present locally but it is invalid, so I will remove it " - "and try to fetch it" % f.filename) + log.info( + "File %s is present locally but it is invalid, so I will remove it " + "and try to fetch it" % f.filename + ) os.remove(os.path.join(os.getcwd(), f.filename)) # check if file is already in cache if cache_folder and f.filename not in present_files: try: - shutil.copy(os.path.join(cache_folder, f.digest), - os.path.join(os.getcwd(), f.filename)) - log.info("File %s retrieved from local cache %s" % - (f.filename, cache_folder)) + shutil.copy( + os.path.join(cache_folder, f.digest), + os.path.join(os.getcwd(), f.filename), + ) + log.info( + "File %s retrieved from local cache %s" % (f.filename, cache_folder) + ) touch(os.path.join(cache_folder, f.digest)) filerecord_for_validation = FileRecord( - f.filename, f.size, f.digest, f.algorithm) + f.filename, f.size, f.digest, f.algorithm + ) if filerecord_for_validation.validate(): present_files.append(f.filename) if f.unpack: @@ -874,13 +1105,17 @@ def fetch_files(manifest_file, base_urls, filenames=[], cache_folder=None, else: # the file copied from the cache is invalid, better to # clean up the cache version itself as well - log.warn("File %s retrieved from cache is invalid! I am deleting it from the " - "cache as well" % f.filename) + log.warn( + "File %s retrieved from cache is invalid! I am deleting it from the " + "cache as well" % f.filename + ) os.remove(os.path.join(os.getcwd(), f.filename)) os.remove(os.path.join(cache_folder, f.digest)) except IOError: - log.info("File %s not present in local cache folder %s" % - (f.filename, cache_folder)) + log.info( + "File %s not present in local cache folder %s" + % (f.filename, cache_folder) + ) # now I will try to fetch all files which are not already present and # valid, appending a suffix to avoid race conditions @@ -889,9 +1124,13 @@ def fetch_files(manifest_file, base_urls, filenames=[], cache_folder=None, # is a non empty list it can be used to filter if filename is in # present_files, it means that I have it already because it was already # either in the working dir or in the cache - if (f.filename in filenames or len(filenames) == 0) and f.filename not in present_files: + if ( + f.filename in filenames or len(filenames) == 0 + ) and f.filename not in present_files: log.debug("fetching %s" % f.filename) - temp_file_name = fetch_file(base_urls, f, auth_file=auth_file, region=region) + temp_file_name = fetch_file( + base_urls, f, auth_file=auth_file, region=region + ) if temp_file_name: fetched_files.append((f, temp_file_name)) else: @@ -905,15 +1144,20 @@ def fetch_files(manifest_file, base_urls, filenames=[], cache_folder=None, # this is why filerecord_for_validation is created filerecord_for_validation = FileRecord( - temp_file_name, localfile.size, localfile.digest, localfile.algorithm) + temp_file_name, localfile.size, localfile.digest, localfile.algorithm + ) if filerecord_for_validation.validate(): # great! # I can rename the temp file - log.info("File integrity verified, renaming %s to %s" % - (temp_file_name, localfile.filename)) - os.rename(os.path.join(os.getcwd(), temp_file_name), - os.path.join(os.getcwd(), localfile.filename)) + log.info( + "File integrity verified, renaming %s to %s" + % (temp_file_name, localfile.filename) + ) + os.rename( + os.path.join(os.getcwd(), temp_file_name), + os.path.join(os.getcwd(), localfile.filename), + ) if localfile.unpack: unpack_files.append(localfile.filename) @@ -926,14 +1170,21 @@ def fetch_files(manifest_file, base_urls, filenames=[], cache_folder=None, if not os.path.exists(cache_folder): log.info("Creating cache in %s..." % cache_folder) os.makedirs(cache_folder, 0o0700) - shutil.copy(os.path.join(os.getcwd(), localfile.filename), - os.path.join(cache_folder, localfile.digest)) - log.info("Local cache %s updated with %s" % (cache_folder, - localfile.filename)) + shutil.copy( + os.path.join(os.getcwd(), localfile.filename), + os.path.join(cache_folder, localfile.digest), + ) + log.info( + "Local cache %s updated with %s" + % (cache_folder, localfile.filename) + ) touch(os.path.join(cache_folder, localfile.digest)) except (OSError, IOError): - log.warning('Impossible to add file %s to cache folder %s' % - (localfile.filename, cache_folder), exc_info=True) + log.warning( + "Impossible to add file %s to cache folder %s" + % (localfile.filename, cache_folder), + exc_info=True, + ) else: failed_files.append(localfile.filename) log.error("'%s'" % filerecord_for_validation.describe()) @@ -946,20 +1197,18 @@ def fetch_files(manifest_file, base_urls, filenames=[], cache_folder=None, # If we failed to fetch or validate a file, we need to fail if len(failed_files) > 0: - log.error("The following files failed: '%s'" % - "', ".join(failed_files)) + log.error("The following files failed: '%s'" % "', ".join(failed_files)) return False return True def freespace(p): "Returns the number of bytes free under directory `p`" - if sys.platform == 'win32': # pragma: no cover + if sys.platform == "win32": # pragma: no cover # os.statvfs doesn't work on Windows import win32file - secsPerClus, bytesPerSec, nFreeClus, totClus = win32file.GetDiskFreeSpace( - p) + secsPerClus, bytesPerSec, nFreeClus, totClus = win32file.GetDiskFreeSpace(p) return secsPerClus * bytesPerSec * nFreeClus else: r = os.statvfs(p) @@ -1000,94 +1249,102 @@ def purge(folder, gigs): def _log_api_error(e): - if hasattr(e, 'hdrs') and e.hdrs['content-type'] == 'application/json': + if hasattr(e, "hdrs") and e.hdrs["content-type"] == "application/json": json_resp = json.load(e.fp) - log.error("%s: %s" % (json_resp['error']['name'], - json_resp['error']['description'])) + log.error( + "%s: %s" % (json_resp["error"]["name"], json_resp["error"]["description"]) + ) else: log.exception("Error making RelengAPI request:") def _authorize(req, auth_file): - if not auth_file: - return - is_taskcluster_auth = False - with open(auth_file) as f: - auth_file_content = f.read().strip() + + if not auth_file: try: - auth_file_content = json.loads(auth_file_content) + taskcluster_env_keys = { + "clientId": "TASKCLUSTER_CLIENT_ID", + "accessToken": "TASKCLUSTER_ACCESS_TOKEN", + } + auth_content = {k: os.environ[v] for k, v in taskcluster_env_keys.items()} is_taskcluster_auth = True - except Exception: - pass + except KeyError: + return + else: + with open(auth_file) as f: + auth_content = f.read().strip() + try: + auth_content = json.loads(auth_content) + is_taskcluster_auth = True + except Exception: + pass if is_taskcluster_auth: - taskcluster_header = make_taskcluster_header(auth_file_content, req) + taskcluster_header = make_taskcluster_header(auth_content, req) log.debug("Using taskcluster credentials in %s" % auth_file) - req.add_unredirected_header('Authorization', taskcluster_header) + req.add_unredirected_header("Authorization", taskcluster_header) else: log.debug("Using Bearer token in %s" % auth_file) - req.add_unredirected_header('Authorization', 'Bearer %s' % auth_file_content) + req.add_unredirected_header("Authorization", "Bearer %s" % auth_content) def _send_batch(base_url, auth_file, batch, region): - url = urljoin(base_url, 'upload') + url = urljoin(base_url, "upload") if region is not None: url += "?region=" + region + data = json.dumps(batch) if PY3: - data = to_binary(json.dumps(batch)) - else: - data = json.dumps(batch) - req = Request(url, data, {'Content-Type': 'application/json'}) + data = data.encode("utf-8") + req = Request(url, data, {"Content-Type": "application/json"}) _authorize(req, auth_file) try: resp = urllib2.urlopen(req) except (URLError, HTTPError) as e: _log_api_error(e) return None - return json.load(resp)['result'] + return json.load(resp)["result"] def _s3_upload(filename, file): # urllib2 does not support streaming, so we fall back to good old httplib - url = urlparse(file['put_url']) - cls = HTTPSConnection if url.scheme == 'https' else HTTPConnection - host, port = url.netloc.split(':') if ':' in url.netloc else (url.netloc, 443) + url = urlparse(file["put_url"]) + cls = HTTPSConnection if url.scheme == "https" else HTTPConnection + host, port = url.netloc.split(":") if ":" in url.netloc else (url.netloc, 443) port = int(port) conn = cls(host, port) try: req_path = "%s?%s" % (url.path, url.query) if url.query else url.path - with open(filename, 'rb') as f: + with open(filename, "rb") as f: content = f.read() content_length = len(content) f.seek(0) conn.request( - 'PUT', + "PUT", req_path, f, { - 'Content-Type': 'application/octet-stream', - 'Content-Length': str(content_length), + "Content-Type": "application/octet-stream", + "Content-Length": str(content_length), }, ) resp = conn.getresponse() resp_body = resp.read() conn.close() if resp.status != 200: - raise RuntimeError("Non-200 return from AWS: %s %s\n%s" % - (resp.status, resp.reason, resp_body)) + raise RuntimeError( + "Non-200 return from AWS: %s %s\n%s" + % (resp.status, resp.reason, resp_body) + ) except Exception: - file['upload_exception'] = sys.exc_info() - file['upload_ok'] = False + file["upload_exception"] = sys.exc_info() + file["upload_ok"] = False else: - file['upload_ok'] = True + file["upload_ok"] = True def _notify_upload_complete(base_url, auth_file, file): - req = Request( - urljoin( - base_url, - 'upload/complete/%(algorithm)s/%(digest)s' % file)) + req = Request(urljoin(base_url, "upload/complete/%(algorithm)s/%(digest)s" % file)) _authorize(req, auth_file) try: urllib2.urlopen(req) @@ -1097,7 +1354,7 @@ def _notify_upload_complete(base_url, auth_file, file): return # 409 indicates that the upload URL hasn't expired yet and we # should retry after a delay - to_wait = int(e.headers.get('X-Retry-After', 60)) + to_wait = int(e.headers.get("X-Retry-After", 60)) log.warning("Waiting %d seconds for upload URLs to expire" % to_wait) time.sleep(to_wait) _notify_upload_complete(base_url, auth_file, file) @@ -1114,39 +1371,38 @@ def upload(manifest, message, base_urls, auth_file, region): # verify the manifest, since we'll need the files present to upload if not manifest.validate(): - log.error('manifest is invalid') + log.error("manifest is invalid") return False if any(fr.visibility is None for fr in manifest.file_records): - log.error('All files in a manifest for upload must have a visibility set') + log.error("All files in a manifest for upload must have a visibility set") # convert the manifest to an upload batch batch = { - 'message': message, - 'files': {}, + "message": message, + "files": {}, } for fr in manifest.file_records: - batch['files'][fr.filename] = { - 'size': fr.size, - 'digest': fr.digest, - 'algorithm': fr.algorithm, - 'visibility': fr.visibility, + batch["files"][fr.filename] = { + "size": fr.size, + "digest": fr.digest, + "algorithm": fr.algorithm, + "visibility": fr.visibility, } # make the upload request resp = _send_batch(base_urls[0], auth_file, batch, region) if not resp: return None - files = resp['files'] + files = resp["files"] # Upload the files, each in a thread. This allows us to start all of the # uploads before any of the URLs expire. threads = {} for filename, file in files.items(): - if 'put_url' in file: + if "put_url" in file: log.info("%s: starting upload" % (filename,)) - thd = threading.Thread(target=_s3_upload, - args=(filename, file)) + thd = threading.Thread(target=_s3_upload, args=(filename, file)) thd.daemon = 1 thd.start() threads[filename] = thd @@ -1161,11 +1417,12 @@ def upload(manifest, message, base_urls, auth_file, region): # _s3_upload has annotated file with result information file = files[filename] thread.join() - if file['upload_ok']: + if file["upload_ok"]: log.info("%s: uploaded" % filename) else: - log.error("%s: failed" % filename, - exc_info=file['upload_exception']) + log.error( + "%s: failed" % filename, exc_info=file["upload_exception"] + ) success = False del threads[filename] @@ -1173,54 +1430,120 @@ def upload(manifest, message, base_urls, auth_file, region): # fails, we don't consider that an error (the server will notice # eventually) for filename, file in files.items(): - if 'put_url' in file and file['upload_ok']: + if "put_url" in file and file["upload_ok"]: log.info("notifying server of upload completion for %s" % (filename,)) _notify_upload_complete(base_urls[0], auth_file, file) return success +def send_operation_on_file(data, base_urls, digest, auth_file): + url = base_urls[0] + url = urljoin(url, "file/sha512/" + digest) + + data = json.dumps(data) + + req = Request(url, data, {"Content-Type": "application/json"}) + req.get_method = lambda: "PATCH" + + _authorize(req, auth_file) + + try: + urllib2.urlopen(req) + except (URLError, HTTPError) as e: + _log_api_error(e) + return False + return True + + +def change_visibility(base_urls, digest, visibility, auth_file): + data = [ + { + "op": "set_visibility", + "visibility": visibility, + } + ] + return send_operation_on_file(data, base_urls, digest, auth_file) + + +def delete_instances(base_urls, digest, auth_file): + data = [ + { + "op": "delete_instances", + } + ] + return send_operation_on_file(data, base_urls, digest, auth_file) + + def process_command(options, args): - """ I know how to take a list of program arguments and + """I know how to take a list of program arguments and start doing the right thing with them""" cmd = args[0] cmd_args = args[1:] - log.debug("processing '%s' command with args '%s'" % - (cmd, '", "'.join(cmd_args))) + log.debug("processing '%s' command with args '%s'" % (cmd, '", "'.join(cmd_args))) log.debug("using options: %s" % options) - if cmd == 'list': - return list_manifest(options['manifest']) - if cmd == 'validate': - return validate_manifest(options['manifest']) - elif cmd == 'add': - return add_files(options['manifest'], options['algorithm'], cmd_args, - options['version'], options['visibility'], - options['unpack']) - elif cmd == 'purge': - if options['cache_folder']: - purge(folder=options['cache_folder'], gigs=options['size']) + if cmd == "list": + return list_manifest(options["manifest"]) + if cmd == "validate": + return validate_manifest(options["manifest"]) + elif cmd == "add": + return add_files( + options["manifest"], + options["algorithm"], + cmd_args, + options["version"], + options["visibility"], + options["unpack"], + ) + elif cmd == "purge": + if options["cache_folder"]: + purge(folder=options["cache_folder"], gigs=options["size"]) else: - log.critical('please specify the cache folder to be purged') + log.critical("please specify the cache folder to be purged") return False - elif cmd == 'fetch': + elif cmd == "fetch": return fetch_files( - options['manifest'], - options['base_url'], + options["manifest"], + options["base_url"], cmd_args, - cache_folder=options['cache_folder'], + cache_folder=options["cache_folder"], auth_file=options.get("auth_file"), - region=options.get('region')) - elif cmd == 'upload': - if not options.get('message'): - log.critical('upload command requires a message') + region=options.get("region"), + ) + elif cmd == "upload": + if not options.get("message"): + log.critical("upload command requires a message") return False return upload( - options.get('manifest'), - options.get('message'), - options.get('base_url'), - options.get('auth_file'), - options.get('region')) + options.get("manifest"), + options.get("message"), + options.get("base_url"), + options.get("auth_file"), + options.get("region"), + ) + elif cmd == "change-visibility": + if not options.get("digest"): + log.critical("change-visibility command requires a digest option") + return False + if not options.get("visibility"): + log.critical("change-visibility command requires a visibility option") + return False + return change_visibility( + options.get("base_url"), + options.get("digest"), + options.get("visibility"), + options.get("auth_file"), + ) + elif cmd == "delete": + if not options.get("digest"): + log.critical("change-visibility command requires a digest option") + return False + return delete_instances( + options.get("base_url"), + options.get("digest"), + options.get("auth_file"), + ) else: log.critical('command "%s" is not implemented' % cmd) return False @@ -1229,62 +1552,127 @@ def process_command(options, args): def main(argv, _skip_logging=False): # Set up option parsing parser = optparse.OptionParser() - parser.add_option('-q', '--quiet', default=logging.INFO, - dest='loglevel', action='store_const', const=logging.ERROR) - parser.add_option('-v', '--verbose', - dest='loglevel', action='store_const', const=logging.DEBUG) - parser.add_option('-m', '--manifest', default=DEFAULT_MANIFEST_NAME, - dest='manifest', action='store', - help='specify the manifest file to be operated on') - parser.add_option('-d', '--algorithm', default='sha512', - dest='algorithm', action='store', - help='hashing algorithm to use (only sha512 is allowed)') - parser.add_option('--visibility', default=None, - dest='visibility', choices=['internal', 'public'], - help='Visibility level of this file; "internal" is for ' - 'files that cannot be distributed out of the company ' - 'but not for secrets; "public" files are available to ' - 'anyone without restriction') - parser.add_option('--unpack', default=False, - dest='unpack', action='store_true', - help='Request unpacking this file after fetch.' - ' This is helpful with tarballs.') - parser.add_option('--version', default=None, - dest='version', action='store', - help='Version string for this file. This annotates the ' - 'manifest entry with a version string to help ' - 'identify the contents.') - parser.add_option('-o', '--overwrite', default=False, - dest='overwrite', action='store_true', - help='UNUSED; present for backward compatibility') - parser.add_option('--url', dest='base_url', action='append', - help='RelengAPI URL ending with /tooltool/; default ' - 'is appropriate for Mozilla') - parser.add_option('-c', '--cache-folder', dest='cache_folder', - help='Local cache folder') - parser.add_option('-s', '--size', - help='free space required (in GB)', dest='size', - type='float', default=0.) - parser.add_option('-r', '--region', help='Preferred AWS region for upload or fetch; ' - 'example: --region=us-west-2') - parser.add_option('--message', - help='The "commit message" for an upload; format with a bug number ' - 'and brief comment', - dest='message') - parser.add_option('--authentication-file', - help='Use the RelengAPI token found in the given file to ' - 'authenticate to the RelengAPI server.', - dest='auth_file') + parser.add_option( + "-q", + "--quiet", + default=logging.INFO, + dest="loglevel", + action="store_const", + const=logging.ERROR, + ) + parser.add_option( + "-v", "--verbose", dest="loglevel", action="store_const", const=logging.DEBUG + ) + parser.add_option( + "-m", + "--manifest", + default=DEFAULT_MANIFEST_NAME, + dest="manifest", + action="store", + help="specify the manifest file to be operated on", + ) + parser.add_option( + "-d", + "--algorithm", + default="sha512", + dest="algorithm", + action="store", + help="hashing algorithm to use (only sha512 is allowed)", + ) + parser.add_option( + "--digest", + default=None, + dest="digest", + action="store", + help="digest hash to change visibility for", + ) + parser.add_option( + "--visibility", + default=None, + dest="visibility", + choices=["internal", "public"], + help='Visibility level of this file; "internal" is for ' + "files that cannot be distributed out of the company " + 'but not for secrets; "public" files are available to ' + "anyone without restriction", + ) + parser.add_option( + "--unpack", + default=False, + dest="unpack", + action="store_true", + help="Request unpacking this file after fetch." + " This is helpful with tarballs.", + ) + parser.add_option( + "--version", + default=None, + dest="version", + action="store", + help="Version string for this file. This annotates the " + "manifest entry with a version string to help " + "identify the contents.", + ) + parser.add_option( + "-o", + "--overwrite", + default=False, + dest="overwrite", + action="store_true", + help="UNUSED; present for backward compatibility", + ) + parser.add_option( + "--url", + dest="base_url", + action="append", + help="RelengAPI URL ending with /tooltool/; default " + "is appropriate for Mozilla", + ) + parser.add_option( + "-c", "--cache-folder", dest="cache_folder", help="Local cache folder" + ) + parser.add_option( + "-s", + "--size", + help="free space required (in GB)", + dest="size", + type="float", + default=0.0, + ) + parser.add_option( + "-r", + "--region", + help="Preferred AWS region for upload or fetch; " "example: --region=us-west-2", + ) + parser.add_option( + "--message", + help='The "commit message" for an upload; format with a bug number ' + "and brief comment", + dest="message", + ) + parser.add_option( + "--authentication-file", + help="Use the RelengAPI token found in the given file to " + "authenticate to the RelengAPI server.", + dest="auth_file", + ) (options_obj, args) = parser.parse_args(argv[1:]) - # default the options list if not provided if not options_obj.base_url: - options_obj.base_url = ['https://tooltool.mozilla-releng.net/'] + tooltool_host = os.environ.get("TOOLTOOL_HOST", "tooltool.mozilla-releng.net") + taskcluster_proxy_url = os.environ.get("TASKCLUSTER_PROXY_URL") + if taskcluster_proxy_url: + tooltool_url = "{}/{}".format(taskcluster_proxy_url, tooltool_host) + else: + tooltool_url = "https://{}".format(tooltool_host) + + options_obj.base_url = [tooltool_url] # ensure all URLs have a trailing slash def add_slash(url): - return url if url.endswith('/') else (url + '/') + return url if url.endswith("/") else (url + "/") + options_obj.base_url = [add_slash(u) for u in options_obj.base_url] # expand ~ in --authentication-file @@ -1294,7 +1682,7 @@ def main(argv, _skip_logging=False): # Dictionaries are easier to work with options = vars(options_obj) - log.setLevel(options['loglevel']) + log.setLevel(options["loglevel"]) # Set up logging, for now just to the console if not _skip_logging: # pragma: no cover @@ -1303,11 +1691,11 @@ def main(argv, _skip_logging=False): ch.setFormatter(cf) log.addHandler(ch) - if options['algorithm'] != 'sha512': - parser.error('only --algorithm sha512 is supported') + if options["algorithm"] != "sha512": + parser.error("only --algorithm sha512 is supported") if len(args) < 1: - parser.error('You must specify a command') + parser.error("You must specify a command") return 0 if process_command(options, args) else 1 diff --git a/tests/wpt/web-platform-tests/tools/webdriver/webdriver/bidi/error.py b/tests/wpt/web-platform-tests/tools/webdriver/webdriver/bidi/error.py index 1b65d225fae..81910a63eb2 100644 --- a/tests/wpt/web-platform-tests/tools/webdriver/webdriver/bidi/error.py +++ b/tests/wpt/web-platform-tests/tools/webdriver/webdriver/bidi/error.py @@ -39,6 +39,10 @@ class NoSuchFrameException(BidiException): error_code = "no such frame" +class NoSuchNodeException(BidiException): + error_code = "no such node" + + class NoSuchScriptException(BidiException): error_code = "no such script" diff --git a/tests/wpt/web-platform-tests/tools/webdriver/webdriver/bidi/modules/browsing_context.py b/tests/wpt/web-platform-tests/tools/webdriver/webdriver/bidi/modules/browsing_context.py index 033929d5ff5..abaf569f928 100644 --- a/tests/wpt/web-platform-tests/tools/webdriver/webdriver/bidi/modules/browsing_context.py +++ b/tests/wpt/web-platform-tests/tools/webdriver/webdriver/bidi/modules/browsing_context.py @@ -1,5 +1,5 @@ import base64 -from typing import Any, Optional, Mapping, MutableMapping +from typing import Any, List, Mapping, MutableMapping, Optional from ._module import BidiModule, command @@ -80,3 +80,41 @@ class BrowsingContext(BidiModule): assert isinstance(result["url"], str) return result + + @command + def print( + self, + context: str, + background: Optional[bool] = None, + margin: Optional[Mapping[str, Any]] = None, + orientation: Optional[str] = None, + page: Optional[Mapping[str, Any]] = None, + page_ranges: Optional[List[str]] = None, + scale: Optional[float] = None, + shrink_to_fit: Optional[bool] = None + ) -> Mapping[str, Any]: + params: MutableMapping[str, Any] = { + "context": context + } + + if background is not None: + params["background"] = background + if margin is not None: + params["margin"] = margin + if orientation is not None: + params["orientation"] = orientation + if page is not None: + params["page"] = page + if page_ranges is not None: + params["pageRanges"] = page_ranges + if scale is not None: + params["scale"] = scale + if shrink_to_fit is not None: + params["shrinkToFit"] = shrink_to_fit + + return params + + @print.result + def _print(self, result: Mapping[str, Any]) -> Any: + assert result["data"] is not None + return result["data"] diff --git a/tests/wpt/web-platform-tests/tools/webdriver/webdriver/client.py b/tests/wpt/web-platform-tests/tools/webdriver/webdriver/client.py index ba01e1fe866..851c6722fc2 100644 --- a/tests/wpt/web-platform-tests/tools/webdriver/webdriver/client.py +++ b/tests/wpt/web-platform-tests/tools/webdriver/webdriver/client.py @@ -807,13 +807,12 @@ class Element: """ identifier = "element-6066-11e4-a52e-4f735466cecf" - def __init__(self, id, session): + def __init__(self, session, id): """ Construct a new web element representation. - :param id: Web element UUID which must be unique across - all browsing contexts. :param session: Current ``webdriver.Session``. + :param id: Web element UUID which must be unique across all browsing contexts. """ self.id = id self.session = session @@ -828,7 +827,7 @@ class Element: @classmethod def from_json(cls, json, session): uuid = json[Element.identifier] - return cls(uuid, session) + return cls(session, uuid) def send_element_command(self, method, uri, body=None): url = "element/%s/%s" % (self.id, uri) diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testloader.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testloader.py index 93e2a87826c..78e05264d4d 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testloader.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testloader.py @@ -164,10 +164,8 @@ class TagFilter: def __init__(self, tags): self.tags = set(tags) - def __call__(self, test_iter): - for test in test_iter: - if test.tags & self.tags: - yield test + def __call__(self, test): + return test.tags & self.tags class ManifestLoader: @@ -214,6 +212,7 @@ class TestLoader: test_types, run_info, manifest_filters=None, + test_filters=None, chunk_type="none", total_chunks=1, chunk_number=1, @@ -228,6 +227,7 @@ class TestLoader: self.run_info = run_info self.manifest_filters = manifest_filters if manifest_filters is not None else [] + self.test_filters = test_filters if test_filters is not None else [] self.manifests = test_manifests self.tests = None @@ -310,7 +310,9 @@ class TestLoader: inherit_metadata, test_metadata = self.load_metadata(manifest_file, metadata_path, test_path) for test in tests: - yield test_path, test_type, self.get_test(manifest_file, test, inherit_metadata, test_metadata) + wpt_test = self.get_test(manifest_file, test, inherit_metadata, test_metadata) + if all(f(wpt_test) for f in self.test_filters): + yield test_path, test_type, wpt_test def _load_tests(self): """Read in the tests from the manifest file and add them to a queue""" diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/test_testloader.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/test_testloader.py index 0936c54ea97..8c8d02a22b9 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/test_testloader.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/test_testloader.py @@ -7,7 +7,7 @@ import tempfile import pytest from mozlog import structured -from ..testloader import TestFilter as Filter, TestLoader as Loader +from ..testloader import TestFilter, TestLoader, TagFilter from ..testloader import read_include_from_file from .test_wpttest import make_mock_manifest @@ -46,19 +46,20 @@ def test_loader_h2_tests(): manifest = WPTManifest.from_json("/", manifest_json) # By default, the loader should include the h2 test. - loader = Loader({manifest: {"metadata_path": ""}}, ["testharness"], None) + loader = TestLoader({manifest: {"metadata_path": ""}}, ["testharness"], None) assert "testharness" in loader.tests assert len(loader.tests["testharness"]) == 2 assert len(loader.disabled_tests) == 0 # We can also instruct it to skip them. - loader = Loader({manifest: {"metadata_path": ""}}, ["testharness"], None, include_h2=False) + loader = TestLoader({manifest: {"metadata_path": ""}}, ["testharness"], None, include_h2=False) assert "testharness" in loader.tests assert len(loader.tests["testharness"]) == 1 assert "testharness" in loader.disabled_tests assert len(loader.disabled_tests["testharness"]) == 1 assert loader.disabled_tests["testharness"][0].url == "/a/bar.h2.html" + @pytest.mark.xfail(sys.platform == "win32", reason="NamedTemporaryFile cannot be reopened on Win32") def test_include_file(): @@ -82,6 +83,7 @@ def test_include_file(): assert "/foo/idlharness.https.any.html" in include assert "/foo/idlharness.https.any.worker.html" in include + @pytest.mark.xfail(sys.platform == "win32", reason="NamedTemporaryFile cannot be reopened on Win32") def test_filter_unicode(): @@ -92,4 +94,44 @@ def test_filter_unicode(): f.write(include_ini.encode('utf-8')) f.flush() - Filter(manifest_path=f.name, test_manifests=tests) + TestFilter(manifest_path=f.name, test_manifests=tests) + + +def test_loader_filter_tags(): + manifest_json = { + "items": { + "testharness": { + "a": { + "foo.html": [ + "abcdef123456", + [None, {}], + ], + "bar.html": [ + "uvwxyz987654", + [None, {}], + ], + } + } + }, + "url_base": "/", + "version": 8, + } + manifest = WPTManifest.from_json("/", manifest_json) + + tmpdir_kwargs = {} + if sys.version_info.major >= 3 and sys.version_info.minor >= 10: + tmpdir_kwargs["ignore_cleanup_errors"] = True + with tempfile.TemporaryDirectory(**tmpdir_kwargs) as metadata_path: + a_path = os.path.join(metadata_path, "a") + os.makedirs(a_path) + with open(os.path.join(a_path, "bar.html.ini"), "w") as f: + f.write("tags: [test-include]\n") + + loader = TestLoader({manifest: {"metadata_path": metadata_path}}, ["testharness"], None) + assert len(loader.tests["testharness"]) == 2 + + loader = TestLoader({manifest: {"metadata_path": metadata_path}}, ["testharness"], None, + test_filters=[TagFilter({"test-include"})]) + assert len(loader.tests["testharness"]) == 1 + assert loader.tests["testharness"][0].id == "/a/bar.html" + assert loader.tests["testharness"][0].tags == {"dir:a", "test-include"} diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py index 224a4fde4df..740bb7e9f42 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py @@ -62,10 +62,12 @@ def get_loader(test_paths, product, debug=None, run_info_extras=None, chunker_kw device_serials=kwargs.get("device_serial"), adb_binary=kwargs.get("adb_binary")) - test_manifests = testloader.ManifestLoader(test_paths, force_manifest_update=kwargs["manifest_update"], + test_manifests = testloader.ManifestLoader(test_paths, + force_manifest_update=kwargs["manifest_update"], manifest_download=kwargs["manifest_download"]).load() manifest_filters = [] + test_filters = [] include = kwargs["include"] if kwargs["include_file"]: @@ -74,6 +76,9 @@ def get_loader(test_paths, product, debug=None, run_info_extras=None, chunker_kw if test_groups: include = testloader.update_include_for_groups(test_groups, include) + if kwargs["tags"]: + test_filters.append(testloader.TagFilter(kwargs["tags"])) + if include or kwargs["exclude"] or kwargs["include_manifest"] or kwargs["default_exclude"]: manifest_filters.append(testloader.TestFilter(include=include, exclude=kwargs["exclude"], @@ -87,6 +92,7 @@ def get_loader(test_paths, product, debug=None, run_info_extras=None, chunker_kw kwargs["test_types"], run_info, manifest_filters=manifest_filters, + test_filters=test_filters, chunk_type=kwargs["chunk_type"], total_chunks=kwargs["total_chunks"], chunk_number=kwargs["this_chunk"], diff --git a/tests/wpt/web-platform-tests/top-level-storage-access-api/tentative/requestStorageAccessForOrigin.sub.https.window.js b/tests/wpt/web-platform-tests/top-level-storage-access-api/tentative/requestStorageAccessForOrigin.sub.https.window.js index 76e5bf83b1e..6fff9e9189e 100644 --- a/tests/wpt/web-platform-tests/top-level-storage-access-api/tentative/requestStorageAccessForOrigin.sub.https.window.js +++ b/tests/wpt/web-platform-tests/top-level-storage-access-api/tentative/requestStorageAccessForOrigin.sub.https.window.js @@ -58,6 +58,7 @@ test( promise_setup(async () => { await test_driver.set_permission( { name: 'top-level-storage-access', requestedOrigin }, 'prompt'); + await test_driver.set_permission({name: 'storage-access'}, 'prompt'); }); promise_test( @@ -110,6 +111,29 @@ if (topLevelDocument) { '[' + testPrefix + '] document.requestStorageAccessForOrigin() should be resolved without a user gesture with an existing permission'); + promise_test( + async t => { + const altOrigin = 'https://{{hosts[alt][www]}}:{{ports[https][0]}}'; + t.add_cleanup(async () => { + await test_driver.set_permission( + {name: 'top-level-storage-access', requestedOrigin: altOrigin}, + 'prompt'); + await test_driver.set_permission({name: 'storage-access'}, 'prompt'); + }); + await test_driver.set_permission( + {name: 'top-level-storage-access', requestedOrigin: altOrigin}, + 'granted'); + + await RunCallbackWithGesture(() => { + document.requestStorageAccessForOrigin(altOrigin).then(() => { + RunTestsInIFrame( + 'https://{{hosts[alt][www]}}:{{ports[https][0]}}/top-level-storage-access-api/tentative/resources/requestStorageAccess-integration-iframe.https.html'); + }); + }); + }, + '[' + testPrefix + + '] document.requestStorageAccess() should be resolved without a user gesture after a successful requestStorageAccessForOrigin() call'); + // Create a test with a single-child same-origin iframe. // This will validate that calls to requestStorageAccessForOrigin are rejected // in non-top-level contexts. diff --git a/tests/wpt/web-platform-tests/top-level-storage-access-api/tentative/resources/requestStorageAccess-integration-iframe.https.html b/tests/wpt/web-platform-tests/top-level-storage-access-api/tentative/resources/requestStorageAccess-integration-iframe.https.html new file mode 100644 index 00000000000..f4db5cf65ec --- /dev/null +++ b/tests/wpt/web-platform-tests/top-level-storage-access-api/tentative/resources/requestStorageAccess-integration-iframe.https.html @@ -0,0 +1,15 @@ +<!doctype html> +<meta charset=utf-8> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<!-- no testharnessreport.js --> +<script src="../../storage-access-api/helpers.js"></script> +<div id=log></div> +<script> + promise_test( + async t => document.requestStorageAccess(), + '[request-storage-access-integration] ' + + 'document.requestStorageAccess() should be resolved without a user gesture with an existing top-level-storage-access permission'); +</script> diff --git a/tests/wpt/web-platform-tests/wai-aria/README.md b/tests/wpt/web-platform-tests/wai-aria/manual/README.md index 4e1a7706e33..4e1a7706e33 100644 --- a/tests/wpt/web-platform-tests/wai-aria/README.md +++ b/tests/wpt/web-platform-tests/wai-aria/manual/README.md diff --git a/tests/wpt/web-platform-tests/wai-aria/alertdialog_modal_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/alertdialog_modal_false-manual.html index ee64c9dbf0d..ee64c9dbf0d 100644 --- a/tests/wpt/web-platform-tests/wai-aria/alertdialog_modal_false-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/alertdialog_modal_false-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/alertdialog_modal_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/alertdialog_modal_true-manual.html index 4affe2fd5e6..4affe2fd5e6 100644 --- a/tests/wpt/web-platform-tests/wai-aria/alertdialog_modal_true-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/alertdialog_modal_true-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/application_activedescendant-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/application_activedescendant-manual.html index a6ef85ac3dd..a6ef85ac3dd 100644 --- a/tests/wpt/web-platform-tests/wai-aria/application_activedescendant-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/application_activedescendant-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/application_activedescendant_value_changes-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/application_activedescendant_value_changes-manual.html index d923c84dea7..d923c84dea7 100644 --- a/tests/wpt/web-platform-tests/wai-aria/application_activedescendant_value_changes-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/application_activedescendant_value_changes-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/aria-current_not_declared-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/aria-current_not_declared-manual.html index ecf95bb64fc..ecf95bb64fc 100644 --- a/tests/wpt/web-platform-tests/wai-aria/aria-current_not_declared-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/aria-current_not_declared-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/aria-current_with_value_changes-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/aria-current_with_value_changes-manual.html index d3f1eae0052..d3f1eae0052 100644 --- a/tests/wpt/web-platform-tests/wai-aria/aria-current_with_value_changes-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/aria-current_with_value_changes-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/aria-current_with_value_date-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/aria-current_with_value_date-manual.html index b15f5ec13ad..b15f5ec13ad 100644 --- a/tests/wpt/web-platform-tests/wai-aria/aria-current_with_value_date-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/aria-current_with_value_date-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/aria-current_with_value_location-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/aria-current_with_value_location-manual.html index e8cf762c0e7..e8cf762c0e7 100644 --- a/tests/wpt/web-platform-tests/wai-aria/aria-current_with_value_location-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/aria-current_with_value_location-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/aria-current_with_value_page-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/aria-current_with_value_page-manual.html index ba48b738cc0..ba48b738cc0 100644 --- a/tests/wpt/web-platform-tests/wai-aria/aria-current_with_value_page-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/aria-current_with_value_page-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/aria-current_with_value_step-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/aria-current_with_value_step-manual.html index 6f4d5986c61..6f4d5986c61 100644 --- a/tests/wpt/web-platform-tests/wai-aria/aria-current_with_value_step-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/aria-current_with_value_step-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/aria-current_with_value_time-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/aria-current_with_value_time-manual.html index 046fb817695..046fb817695 100644 --- a/tests/wpt/web-platform-tests/wai-aria/aria-current_with_value_time-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/aria-current_with_value_time-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/aria-current_with_value_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/aria-current_with_value_true-manual.html index 3ce799f8b2c..3ce799f8b2c 100644 --- a/tests/wpt/web-platform-tests/wai-aria/aria-current_with_value_true-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/aria-current_with_value_true-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/aria-current_with_value_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/aria-current_with_value_unspecified-manual.html index c017a000a11..c017a000a11 100644 --- a/tests/wpt/web-platform-tests/wai-aria/aria-current_with_value_unspecified-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/aria-current_with_value_unspecified-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/aria-details_pointing_to_details_element-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/aria-details_pointing_to_details_element-manual.html index 6a0d9d776a6..6a0d9d776a6 100644 --- a/tests/wpt/web-platform-tests/wai-aria/aria-details_pointing_to_details_element-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/aria-details_pointing_to_details_element-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/aria-details_pointing_to_div_element-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/aria-details_pointing_to_div_element-manual.html index 8a46e78d971..8a46e78d971 100644 --- a/tests/wpt/web-platform-tests/wai-aria/aria-details_pointing_to_div_element-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/aria-details_pointing_to_div_element-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/article_in_feed_posinset_and_setsize-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/article_in_feed_posinset_and_setsize-manual.html index 9c89dc3fa99..9c89dc3fa99 100644 --- a/tests/wpt/web-platform-tests/wai-aria/article_in_feed_posinset_and_setsize-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/article_in_feed_posinset_and_setsize-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/article_in_feed_setsize_-1-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/article_in_feed_setsize_-1-manual.html index 0552f926e94..0552f926e94 100644 --- a/tests/wpt/web-platform-tests/wai-aria/article_in_feed_setsize_-1-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/article_in_feed_setsize_-1-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/article_not_in_feed_posinset_and_setsize-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/article_not_in_feed_posinset_and_setsize-manual.html index 91cb0e0eb48..91cb0e0eb48 100644 --- a/tests/wpt/web-platform-tests/wai-aria/article_not_in_feed_posinset_and_setsize-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/article_not_in_feed_posinset_and_setsize-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/button_haspopup_dialog-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/button_haspopup_dialog-manual.html index 8ba0a22a8d4..8ba0a22a8d4 100644 --- a/tests/wpt/web-platform-tests/wai-aria/button_haspopup_dialog-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/button_haspopup_dialog-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/button_haspopup_emptystring-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/button_haspopup_emptystring-manual.html index e9091489068..e9091489068 100644 --- a/tests/wpt/web-platform-tests/wai-aria/button_haspopup_emptystring-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/button_haspopup_emptystring-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/button_haspopup_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/button_haspopup_false-manual.html index 97188995e52..97188995e52 100644 --- a/tests/wpt/web-platform-tests/wai-aria/button_haspopup_false-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/button_haspopup_false-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/button_haspopup_foo-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/button_haspopup_foo-manual.html index a09d21c0741..a09d21c0741 100644 --- a/tests/wpt/web-platform-tests/wai-aria/button_haspopup_foo-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/button_haspopup_foo-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/button_haspopup_grid-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/button_haspopup_grid-manual.html index 57c8efbde24..57c8efbde24 100644 --- a/tests/wpt/web-platform-tests/wai-aria/button_haspopup_grid-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/button_haspopup_grid-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/button_haspopup_listbox-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/button_haspopup_listbox-manual.html index 4191fc40a3c..4191fc40a3c 100644 --- a/tests/wpt/web-platform-tests/wai-aria/button_haspopup_listbox-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/button_haspopup_listbox-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/button_haspopup_menu-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/button_haspopup_menu-manual.html index 9378993f558..9378993f558 100644 --- a/tests/wpt/web-platform-tests/wai-aria/button_haspopup_menu-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/button_haspopup_menu-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/button_haspopup_tree-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/button_haspopup_tree-manual.html index e62b87f59d6..e62b87f59d6 100644 --- a/tests/wpt/web-platform-tests/wai-aria/button_haspopup_tree-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/button_haspopup_tree-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/button_haspopup_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/button_haspopup_true-manual.html index a6d94658d27..a6d94658d27 100644 --- a/tests/wpt/web-platform-tests/wai-aria/button_haspopup_true-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/button_haspopup_true-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/button_haspopup_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/button_haspopup_unspecified-manual.html index 96d7095d4de..96d7095d4de 100644 --- a/tests/wpt/web-platform-tests/wai-aria/button_haspopup_unspecified-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/button_haspopup_unspecified-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/button_roledescription_empty-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/button_roledescription_empty-manual.html index d9eb0fe7cc8..d9eb0fe7cc8 100644 --- a/tests/wpt/web-platform-tests/wai-aria/button_roledescription_empty-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/button_roledescription_empty-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/button_roledescription_valid-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/button_roledescription_valid-manual.html index cdcf6071e61..cdcf6071e61 100644 --- a/tests/wpt/web-platform-tests/wai-aria/button_roledescription_valid-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/button_roledescription_valid-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/button_roledescription_whitespace_only-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/button_roledescription_whitespace_only-manual.html index 59e463778a1..59e463778a1 100644 --- a/tests/wpt/web-platform-tests/wai-aria/button_roledescription_whitespace_only-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/button_roledescription_whitespace_only-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/cell-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/cell-manual.html index d9f0eafbe07..d9f0eafbe07 100644 --- a/tests/wpt/web-platform-tests/wai-aria/cell-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/cell-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/cell_aria-colspan_2_on_div-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/cell_aria-colspan_2_on_div-manual.html index fa120dc5e43..fa120dc5e43 100644 --- a/tests/wpt/web-platform-tests/wai-aria/cell_aria-colspan_2_on_div-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/cell_aria-colspan_2_on_div-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/cell_aria-colspan_2_on_td_html_colspan_3-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/cell_aria-colspan_2_on_td_html_colspan_3-manual.html index a7c65fed3d4..a7c65fed3d4 100644 --- a/tests/wpt/web-platform-tests/wai-aria/cell_aria-colspan_2_on_td_html_colspan_3-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/cell_aria-colspan_2_on_td_html_colspan_3-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/cell_aria-colspan_2_on_td_html_colspan_3_with_headers_and_border-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/cell_aria-colspan_2_on_td_html_colspan_3_with_headers_and_border-manual.html index 057918c6b0c..057918c6b0c 100644 --- a/tests/wpt/web-platform-tests/wai-aria/cell_aria-colspan_2_on_td_html_colspan_3_with_headers_and_border-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/cell_aria-colspan_2_on_td_html_colspan_3_with_headers_and_border-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/cell_aria-colspan_2_on_td_html_colspan_3_with_three_actual_columns-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/cell_aria-colspan_2_on_td_html_colspan_3_with_three_actual_columns-manual.html index 2c05e6ea71f..2c05e6ea71f 100644 --- a/tests/wpt/web-platform-tests/wai-aria/cell_aria-colspan_2_on_td_html_colspan_3_with_three_actual_columns-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/cell_aria-colspan_2_on_td_html_colspan_3_with_three_actual_columns-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/cell_aria-colspan_2_on_td_with_html_colspan_not_specified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/cell_aria-colspan_2_on_td_with_html_colspan_not_specified-manual.html index 06212078b74..06212078b74 100644 --- a/tests/wpt/web-platform-tests/wai-aria/cell_aria-colspan_2_on_td_with_html_colspan_not_specified-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/cell_aria-colspan_2_on_td_with_html_colspan_not_specified-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/cell_aria-rowspan_2_on_div-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/cell_aria-rowspan_2_on_div-manual.html index e94303848da..e94303848da 100644 --- a/tests/wpt/web-platform-tests/wai-aria/cell_aria-rowspan_2_on_div-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/cell_aria-rowspan_2_on_div-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/cell_aria-rowspan_2_on_td_html_rowspan_3-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/cell_aria-rowspan_2_on_td_html_rowspan_3-manual.html index 86ea1a4aec1..86ea1a4aec1 100644 --- a/tests/wpt/web-platform-tests/wai-aria/cell_aria-rowspan_2_on_td_html_rowspan_3-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/cell_aria-rowspan_2_on_td_html_rowspan_3-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/cell_aria-rowspan_2_on_td_html_rowspan_3_with_three_actual_rows-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/cell_aria-rowspan_2_on_td_html_rowspan_3_with_three_actual_rows-manual.html index f1572046f29..f1572046f29 100644 --- a/tests/wpt/web-platform-tests/wai-aria/cell_aria-rowspan_2_on_td_html_rowspan_3_with_three_actual_rows-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/cell_aria-rowspan_2_on_td_html_rowspan_3_with_three_actual_rows-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/cell_aria-rowspan_2_on_td_with_html_rowspan_not_specified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/cell_aria-rowspan_2_on_td_with_html_rowspan_not_specified-manual.html index 0978186feba..0978186feba 100644 --- a/tests/wpt/web-platform-tests/wai-aria/cell_aria-rowspan_2_on_td_with_html_rowspan_not_specified-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/cell_aria-rowspan_2_on_td_with_html_rowspan_not_specified-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/cell_colindex_4-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/cell_colindex_4-manual.html index 02003065e09..02003065e09 100644 --- a/tests/wpt/web-platform-tests/wai-aria/cell_colindex_4-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/cell_colindex_4-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/cell_rowindex_4-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/cell_rowindex_4-manual.html index ea2937efcbf..ea2937efcbf 100644 --- a/tests/wpt/web-platform-tests/wai-aria/cell_rowindex_4-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/cell_rowindex_4-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/checkbox_readonly_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/checkbox_readonly_false-manual.html index 558dc8e3912..558dc8e3912 100644 --- a/tests/wpt/web-platform-tests/wai-aria/checkbox_readonly_false-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/checkbox_readonly_false-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/checkbox_readonly_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/checkbox_readonly_true-manual.html index f3c879038f7..f3c879038f7 100644 --- a/tests/wpt/web-platform-tests/wai-aria/checkbox_readonly_true-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/checkbox_readonly_true-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/checkbox_readonly_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/checkbox_readonly_unspecified-manual.html index 583985f0009..583985f0009 100644 --- a/tests/wpt/web-platform-tests/wai-aria/checkbox_readonly_unspecified-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/checkbox_readonly_unspecified-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/columnheader_aria-colspan_2_on_div-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/columnheader_aria-colspan_2_on_div-manual.html index 4789ced84d2..4789ced84d2 100644 --- a/tests/wpt/web-platform-tests/wai-aria/columnheader_aria-colspan_2_on_div-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/columnheader_aria-colspan_2_on_div-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/columnheader_aria-colspan_2_on_th_html_colspan_3-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/columnheader_aria-colspan_2_on_th_html_colspan_3-manual.html index 2ad8cb4bed9..2ad8cb4bed9 100644 --- a/tests/wpt/web-platform-tests/wai-aria/columnheader_aria-colspan_2_on_th_html_colspan_3-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/columnheader_aria-colspan_2_on_th_html_colspan_3-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/columnheader_aria-colspan_2_on_th_html_colspan_3_with_three_actual_columns-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/columnheader_aria-colspan_2_on_th_html_colspan_3_with_three_actual_columns-manual.html index 3ac8701f5d7..3ac8701f5d7 100644 --- a/tests/wpt/web-platform-tests/wai-aria/columnheader_aria-colspan_2_on_th_html_colspan_3_with_three_actual_columns-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/columnheader_aria-colspan_2_on_th_html_colspan_3_with_three_actual_columns-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/columnheader_aria-colspan_2_on_th_with_html_colspan_not_specified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/columnheader_aria-colspan_2_on_th_with_html_colspan_not_specified-manual.html index 82c75991885..82c75991885 100644 --- a/tests/wpt/web-platform-tests/wai-aria/columnheader_aria-colspan_2_on_th_with_html_colspan_not_specified-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/columnheader_aria-colspan_2_on_th_with_html_colspan_not_specified-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/columnheader_aria-rowspan_2_on_div-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/columnheader_aria-rowspan_2_on_div-manual.html index 00c00683924..00c00683924 100644 --- a/tests/wpt/web-platform-tests/wai-aria/columnheader_aria-rowspan_2_on_div-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/columnheader_aria-rowspan_2_on_div-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/columnheader_aria-rowspan_2_on_th_html_rowspan_3-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/columnheader_aria-rowspan_2_on_th_html_rowspan_3-manual.html index 256a3d73bde..256a3d73bde 100644 --- a/tests/wpt/web-platform-tests/wai-aria/columnheader_aria-rowspan_2_on_th_html_rowspan_3-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/columnheader_aria-rowspan_2_on_th_html_rowspan_3-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/columnheader_aria-rowspan_2_on_th_html_rowspan_3_with_three_actual_rows-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/columnheader_aria-rowspan_2_on_th_html_rowspan_3_with_three_actual_rows-manual.html index 6327e5fb4ec..6327e5fb4ec 100644 --- a/tests/wpt/web-platform-tests/wai-aria/columnheader_aria-rowspan_2_on_th_html_rowspan_3_with_three_actual_rows-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/columnheader_aria-rowspan_2_on_th_html_rowspan_3_with_three_actual_rows-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/columnheader_aria-rowspan_2_on_th_with_html_rowspan_not_specified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/columnheader_aria-rowspan_2_on_th_with_html_rowspan_not_specified-manual.html index 425eb5b15e0..425eb5b15e0 100644 --- a/tests/wpt/web-platform-tests/wai-aria/columnheader_aria-rowspan_2_on_th_with_html_rowspan_not_specified-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/columnheader_aria-rowspan_2_on_th_with_html_rowspan_not_specified-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/columnheader_colindex_4-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/columnheader_colindex_4-manual.html index f44e8343fb0..f44e8343fb0 100644 --- a/tests/wpt/web-platform-tests/wai-aria/columnheader_colindex_4-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/columnheader_colindex_4-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/columnheader_rowindex_4-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/columnheader_rowindex_4-manual.html index 7ab7e9c8d0f..7ab7e9c8d0f 100644 --- a/tests/wpt/web-platform-tests/wai-aria/columnheader_rowindex_4-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/columnheader_rowindex_4-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/columnheader_selected_false_not_automatically_propagated-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/columnheader_selected_false_not_automatically_propagated-manual.html index 7624f2a3b80..7624f2a3b80 100644 --- a/tests/wpt/web-platform-tests/wai-aria/columnheader_selected_false_not_automatically_propagated-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/columnheader_selected_false_not_automatically_propagated-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/columnheader_selected_true_not_automatically_propagated-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/columnheader_selected_true_not_automatically_propagated-manual.html index 1bc364cb884..1bc364cb884 100644 --- a/tests/wpt/web-platform-tests/wai-aria/columnheader_selected_true_not_automatically_propagated-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/columnheader_selected_true_not_automatically_propagated-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/combobox_controls_an_invalid_id-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_controls_an_invalid_id-manual.html index 91188d8e3ca..91188d8e3ca 100644 --- a/tests/wpt/web-platform-tests/wai-aria/combobox_controls_an_invalid_id-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_controls_an_invalid_id-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/combobox_haspopup_dialog-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_haspopup_dialog-manual.html index d9cf618d9b5..d9cf618d9b5 100644 --- a/tests/wpt/web-platform-tests/wai-aria/combobox_haspopup_dialog-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_haspopup_dialog-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/combobox_haspopup_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_haspopup_false-manual.html index 2b0ca94745a..2b0ca94745a 100644 --- a/tests/wpt/web-platform-tests/wai-aria/combobox_haspopup_false-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_haspopup_false-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/combobox_haspopup_grid-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_haspopup_grid-manual.html index a3929cf79e7..a3929cf79e7 100644 --- a/tests/wpt/web-platform-tests/wai-aria/combobox_haspopup_grid-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_haspopup_grid-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/combobox_haspopup_listbox-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_haspopup_listbox-manual.html index e1c9084fd54..e1c9084fd54 100644 --- a/tests/wpt/web-platform-tests/wai-aria/combobox_haspopup_listbox-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_haspopup_listbox-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/combobox_haspopup_menu-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_haspopup_menu-manual.html index a9439ed496a..a9439ed496a 100644 --- a/tests/wpt/web-platform-tests/wai-aria/combobox_haspopup_menu-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_haspopup_menu-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/combobox_haspopup_tree-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_haspopup_tree-manual.html index a0602b520f7..a0602b520f7 100644 --- a/tests/wpt/web-platform-tests/wai-aria/combobox_haspopup_tree-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_haspopup_tree-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/combobox_haspopup_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_haspopup_true-manual.html index c7548ce5cd3..c7548ce5cd3 100644 --- a/tests/wpt/web-platform-tests/wai-aria/combobox_haspopup_true-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_haspopup_true-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/combobox_haspopup_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_haspopup_unspecified-manual.html index cd61076fb4e..cd61076fb4e 100644 --- a/tests/wpt/web-platform-tests/wai-aria/combobox_haspopup_unspecified-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_haspopup_unspecified-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/combobox_orientation_horizontal-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_orientation_horizontal-manual.html index a5bcc700eca..a5bcc700eca 100644 --- a/tests/wpt/web-platform-tests/wai-aria/combobox_orientation_horizontal-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_orientation_horizontal-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/combobox_orientation_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_orientation_unspecified-manual.html index 20bd53d8d11..20bd53d8d11 100644 --- a/tests/wpt/web-platform-tests/wai-aria/combobox_orientation_unspecified-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_orientation_unspecified-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/combobox_orientation_vertical-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_orientation_vertical-manual.html index 189345c4151..189345c4151 100644 --- a/tests/wpt/web-platform-tests/wai-aria/combobox_orientation_vertical-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_orientation_vertical-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/combobox_readonly_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_readonly_false-manual.html index 978ab119484..978ab119484 100644 --- a/tests/wpt/web-platform-tests/wai-aria/combobox_readonly_false-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_readonly_false-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/combobox_readonly_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_readonly_true-manual.html index 26a4302c24b..26a4302c24b 100644 --- a/tests/wpt/web-platform-tests/wai-aria/combobox_readonly_true-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_readonly_true-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/combobox_readonly_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_readonly_unspecified-manual.html index 4ad87b2c0a9..4ad87b2c0a9 100644 --- a/tests/wpt/web-platform-tests/wai-aria/combobox_readonly_unspecified-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/combobox_readonly_unspecified-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/dialog_modal_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/dialog_modal_false-manual.html index 6c906d320f1..6c906d320f1 100644 --- a/tests/wpt/web-platform-tests/wai-aria/dialog_modal_false-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/dialog_modal_false-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/dialog_modal_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/dialog_modal_true-manual.html index 02cbfb5fe89..02cbfb5fe89 100644 --- a/tests/wpt/web-platform-tests/wai-aria/dialog_modal_true-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/dialog_modal_true-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/dialog_modal_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/dialog_modal_unspecified-manual.html index edd4605dad8..edd4605dad8 100644 --- a/tests/wpt/web-platform-tests/wai-aria/dialog_modal_unspecified-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/dialog_modal_unspecified-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/div_element_without_role_roledescription_valid-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/div_element_without_role_roledescription_valid-manual.html index 68b6cc51c72..68b6cc51c72 100644 --- a/tests/wpt/web-platform-tests/wai-aria/div_element_without_role_roledescription_valid-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/div_element_without_role_roledescription_valid-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/errormessage_object_in_invalid_state-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/errormessage_object_in_invalid_state-manual.html index 99965682628..99965682628 100644 --- a/tests/wpt/web-platform-tests/wai-aria/errormessage_object_in_invalid_state-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/errormessage_object_in_invalid_state-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/errormessage_object_in_valid_state-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/errormessage_object_in_valid_state-manual.html index 7c194c6d0ac..7c194c6d0ac 100644 --- a/tests/wpt/web-platform-tests/wai-aria/errormessage_object_in_valid_state-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/errormessage_object_in_valid_state-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/feed-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/feed-manual.html index 91fc6778dbf..91fc6778dbf 100644 --- a/tests/wpt/web-platform-tests/wai-aria/feed-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/feed-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/figure-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/figure-manual.html index d60973527a9..d60973527a9 100644 --- a/tests/wpt/web-platform-tests/wai-aria/figure-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/figure-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/grid_aria-readonly_false_automatically_propagated-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/grid_aria-readonly_false_automatically_propagated-manual.html index d373a3023ef..d373a3023ef 100644 --- a/tests/wpt/web-platform-tests/wai-aria/grid_aria-readonly_false_automatically_propagated-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/grid_aria-readonly_false_automatically_propagated-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/grid_aria-readonly_true_automatically_propagated-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/grid_aria-readonly_true_automatically_propagated-manual.html index 7b6a22e2921..7b6a22e2921 100644 --- a/tests/wpt/web-platform-tests/wai-aria/grid_aria-readonly_true_automatically_propagated-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/grid_aria-readonly_true_automatically_propagated-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/grid_busy_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/grid_busy_false-manual.html index 48edba5bf76..48edba5bf76 100644 --- a/tests/wpt/web-platform-tests/wai-aria/grid_busy_false-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/grid_busy_false-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/grid_busy_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/grid_busy_true-manual.html index ddcdf0198f8..ddcdf0198f8 100644 --- a/tests/wpt/web-platform-tests/wai-aria/grid_busy_true-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/grid_busy_true-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/grid_busy_value_changes-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/grid_busy_value_changes-manual.html index 4891198882a..4891198882a 100644 --- a/tests/wpt/web-platform-tests/wai-aria/grid_busy_value_changes-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/grid_busy_value_changes-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/grid_colcount_8-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/grid_colcount_8-manual.html index 0f03b12605d..0f03b12605d 100644 --- a/tests/wpt/web-platform-tests/wai-aria/grid_colcount_8-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/grid_colcount_8-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/grid_columnheader_readonly_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/grid_columnheader_readonly_false-manual.html index bb8dd34a92f..bb8dd34a92f 100644 --- a/tests/wpt/web-platform-tests/wai-aria/grid_columnheader_readonly_false-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/grid_columnheader_readonly_false-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/grid_columnheader_readonly_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/grid_columnheader_readonly_true-manual.html index a81e4cbdced..a81e4cbdced 100644 --- a/tests/wpt/web-platform-tests/wai-aria/grid_columnheader_readonly_true-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/grid_columnheader_readonly_true-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/grid_columnheader_readonly_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/grid_columnheader_readonly_unspecified-manual.html index d45d3b9ca71..d45d3b9ca71 100644 --- a/tests/wpt/web-platform-tests/wai-aria/grid_columnheader_readonly_unspecified-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/grid_columnheader_readonly_unspecified-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/grid_columnheader_required_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/grid_columnheader_required_false-manual.html index b8f7ae332ca..b8f7ae332ca 100644 --- a/tests/wpt/web-platform-tests/wai-aria/grid_columnheader_required_false-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/grid_columnheader_required_false-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/grid_columnheader_required_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/grid_columnheader_required_true-manual.html index 76155ab905d..76155ab905d 100644 --- a/tests/wpt/web-platform-tests/wai-aria/grid_columnheader_required_true-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/grid_columnheader_required_true-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/grid_columnheader_required_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/grid_columnheader_required_unspecified-manual.html index 491cbed6f2f..491cbed6f2f 100644 --- a/tests/wpt/web-platform-tests/wai-aria/grid_columnheader_required_unspecified-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/grid_columnheader_required_unspecified-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/grid_rowcount_3-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/grid_rowcount_3-manual.html index 3079b59b4de..3079b59b4de 100644 --- a/tests/wpt/web-platform-tests/wai-aria/grid_rowcount_3-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/grid_rowcount_3-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/grid_rowheader_readonly_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/grid_rowheader_readonly_false-manual.html index 883918fd043..883918fd043 100644 --- a/tests/wpt/web-platform-tests/wai-aria/grid_rowheader_readonly_false-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/grid_rowheader_readonly_false-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/grid_rowheader_readonly_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/grid_rowheader_readonly_true-manual.html index 5d53c3624c6..5d53c3624c6 100644 --- a/tests/wpt/web-platform-tests/wai-aria/grid_rowheader_readonly_true-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/grid_rowheader_readonly_true-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/grid_rowheader_readonly_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/grid_rowheader_readonly_unspecified-manual.html index f9321cac102..f9321cac102 100644 --- a/tests/wpt/web-platform-tests/wai-aria/grid_rowheader_readonly_unspecified-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/grid_rowheader_readonly_unspecified-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/grid_rowheader_required_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/grid_rowheader_required_false-manual.html index 4fafba50a98..4fafba50a98 100644 --- a/tests/wpt/web-platform-tests/wai-aria/grid_rowheader_required_false-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/grid_rowheader_required_false-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/grid_rowheader_required_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/grid_rowheader_required_true-manual.html index 0f14d2dea8b..0f14d2dea8b 100644 --- a/tests/wpt/web-platform-tests/wai-aria/grid_rowheader_required_true-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/grid_rowheader_required_true-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/grid_rowheader_required_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/grid_rowheader_required_unspecified-manual.html index 208f0c5e56d..208f0c5e56d 100644 --- a/tests/wpt/web-platform-tests/wai-aria/grid_rowheader_required_unspecified-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/grid_rowheader_required_unspecified-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/gridcell_aria-colspan_2_on_div-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/gridcell_aria-colspan_2_on_div-manual.html index c151087767e..c151087767e 100644 --- a/tests/wpt/web-platform-tests/wai-aria/gridcell_aria-colspan_2_on_div-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/gridcell_aria-colspan_2_on_div-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/gridcell_aria-rowspan_2_on_div-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/gridcell_aria-rowspan_2_on_div-manual.html index 318709b3609..318709b3609 100644 --- a/tests/wpt/web-platform-tests/wai-aria/gridcell_aria-rowspan_2_on_div-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/gridcell_aria-rowspan_2_on_div-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/gridcell_colindex_4-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/gridcell_colindex_4-manual.html index 6ef4fb3a166..6ef4fb3a166 100644 --- a/tests/wpt/web-platform-tests/wai-aria/gridcell_colindex_4-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/gridcell_colindex_4-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/gridcell_rowindex_4-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/gridcell_rowindex_4-manual.html index 8b9daaa7030..8b9daaa7030 100644 --- a/tests/wpt/web-platform-tests/wai-aria/gridcell_rowindex_4-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/gridcell_rowindex_4-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/group_hidden_undefined_element_not_rendered-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/group_hidden_undefined_element_not_rendered-manual.html index ef947859dba..ef947859dba 100644 --- a/tests/wpt/web-platform-tests/wai-aria/group_hidden_undefined_element_not_rendered-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/group_hidden_undefined_element_not_rendered-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/group_hidden_undefined_element_rendered-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/group_hidden_undefined_element_rendered-manual.html index 92c067c2160..92c067c2160 100644 --- a/tests/wpt/web-platform-tests/wai-aria/group_hidden_undefined_element_rendered-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/group_hidden_undefined_element_rendered-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/heading_level_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/heading_level_unspecified-manual.html index 819bc7b60c6..819bc7b60c6 100644 --- a/tests/wpt/web-platform-tests/wai-aria/heading_level_unspecified-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/heading_level_unspecified-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/keyshortcuts_multiple_shortcuts-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/keyshortcuts_multiple_shortcuts-manual.html index ce4074a4f2c..ce4074a4f2c 100644 --- a/tests/wpt/web-platform-tests/wai-aria/keyshortcuts_multiple_shortcuts-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/keyshortcuts_multiple_shortcuts-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/keyshortcuts_one_shortcut-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/keyshortcuts_one_shortcut-manual.html index d0238dbf20e..d0238dbf20e 100644 --- a/tests/wpt/web-platform-tests/wai-aria/keyshortcuts_one_shortcut-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/keyshortcuts_one_shortcut-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/listbox_busy_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/listbox_busy_false-manual.html index 9f6b8b36a88..9f6b8b36a88 100644 --- a/tests/wpt/web-platform-tests/wai-aria/listbox_busy_false-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/listbox_busy_false-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/listbox_busy_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/listbox_busy_true-manual.html index c8388f7addf..c8388f7addf 100644 --- a/tests/wpt/web-platform-tests/wai-aria/listbox_busy_true-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/listbox_busy_true-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/listbox_orientation_horizontal-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/listbox_orientation_horizontal-manual.html index c718a54eafb..c718a54eafb 100644 --- a/tests/wpt/web-platform-tests/wai-aria/listbox_orientation_horizontal-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/listbox_orientation_horizontal-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/listbox_orientation_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/listbox_orientation_unspecified-manual.html index 7dd2762d6db..7dd2762d6db 100644 --- a/tests/wpt/web-platform-tests/wai-aria/listbox_orientation_unspecified-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/listbox_orientation_unspecified-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/listbox_orientation_vertical-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/listbox_orientation_vertical-manual.html index 8bcca037d30..8bcca037d30 100644 --- a/tests/wpt/web-platform-tests/wai-aria/listbox_orientation_vertical-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/listbox_orientation_vertical-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/listbox_readonly_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/listbox_readonly_false-manual.html index b3bde923a40..b3bde923a40 100644 --- a/tests/wpt/web-platform-tests/wai-aria/listbox_readonly_false-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/listbox_readonly_false-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/listbox_readonly_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/listbox_readonly_true-manual.html index 30213919e48..30213919e48 100644 --- a/tests/wpt/web-platform-tests/wai-aria/listbox_readonly_true-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/listbox_readonly_true-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/listbox_readonly_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/listbox_readonly_unspecified-manual.html index 9283ad24046..9283ad24046 100644 --- a/tests/wpt/web-platform-tests/wai-aria/listbox_readonly_unspecified-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/listbox_readonly_unspecified-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/listitem_setsize_-1-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/listitem_setsize_-1-manual.html index 7537a4bcd72..7537a4bcd72 100644 --- a/tests/wpt/web-platform-tests/wai-aria/listitem_setsize_-1-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/listitem_setsize_-1-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/menu_orientation_horizontal-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/menu_orientation_horizontal-manual.html index 184c42052e4..184c42052e4 100644 --- a/tests/wpt/web-platform-tests/wai-aria/menu_orientation_horizontal-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/menu_orientation_horizontal-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/menu_orientation_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/menu_orientation_unspecified-manual.html index 07e8e691b94..07e8e691b94 100644 --- a/tests/wpt/web-platform-tests/wai-aria/menu_orientation_unspecified-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/menu_orientation_unspecified-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/menu_orientation_vertical-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/menu_orientation_vertical-manual.html index 10a65e997d5..10a65e997d5 100644 --- a/tests/wpt/web-platform-tests/wai-aria/menu_orientation_vertical-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/menu_orientation_vertical-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/menubar_busy_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/menubar_busy_false-manual.html index 8224d79b876..8224d79b876 100644 --- a/tests/wpt/web-platform-tests/wai-aria/menubar_busy_false-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/menubar_busy_false-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/menubar_busy_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/menubar_busy_true-manual.html index b1695dcef4c..b1695dcef4c 100644 --- a/tests/wpt/web-platform-tests/wai-aria/menubar_busy_true-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/menubar_busy_true-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/menubar_orientation_horizontal-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/menubar_orientation_horizontal-manual.html index e47a68e81af..e47a68e81af 100644 --- a/tests/wpt/web-platform-tests/wai-aria/menubar_orientation_horizontal-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/menubar_orientation_horizontal-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/menubar_orientation_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/menubar_orientation_unspecified-manual.html index 0e945ae26f2..0e945ae26f2 100644 --- a/tests/wpt/web-platform-tests/wai-aria/menubar_orientation_unspecified-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/menubar_orientation_unspecified-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/menubar_orientation_vertical-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/menubar_orientation_vertical-manual.html index c0830abc7fe..c0830abc7fe 100644 --- a/tests/wpt/web-platform-tests/wai-aria/menubar_orientation_vertical-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/menubar_orientation_vertical-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/menuitem_expanded_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/menuitem_expanded_false-manual.html index 7e5ca5485ba..7e5ca5485ba 100644 --- a/tests/wpt/web-platform-tests/wai-aria/menuitem_expanded_false-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/menuitem_expanded_false-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/menuitem_expanded_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/menuitem_expanded_true-manual.html index a9d9b5df359..a9d9b5df359 100644 --- a/tests/wpt/web-platform-tests/wai-aria/menuitem_expanded_true-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/menuitem_expanded_true-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/menuitem_posinset_and_setsize-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/menuitem_posinset_and_setsize-manual.html index ac0ec8871d5..ac0ec8871d5 100644 --- a/tests/wpt/web-platform-tests/wai-aria/menuitem_posinset_and_setsize-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/menuitem_posinset_and_setsize-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/menuitemcheckbox_expanded_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/menuitemcheckbox_expanded_false-manual.html index e05ea1af711..e05ea1af711 100644 --- a/tests/wpt/web-platform-tests/wai-aria/menuitemcheckbox_expanded_false-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/menuitemcheckbox_expanded_false-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/menuitemcheckbox_expanded_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/menuitemcheckbox_expanded_true-manual.html index b2ac5db68f3..b2ac5db68f3 100644 --- a/tests/wpt/web-platform-tests/wai-aria/menuitemcheckbox_expanded_true-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/menuitemcheckbox_expanded_true-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/menuitemcheckbox_posinset_and_setsize-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/menuitemcheckbox_posinset_and_setsize-manual.html index cf867c1cf92..cf867c1cf92 100644 --- a/tests/wpt/web-platform-tests/wai-aria/menuitemcheckbox_posinset_and_setsize-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/menuitemcheckbox_posinset_and_setsize-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/menuitemcheckbox_readonly_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/menuitemcheckbox_readonly_false-manual.html index 59f12ed0fc9..59f12ed0fc9 100644 --- a/tests/wpt/web-platform-tests/wai-aria/menuitemcheckbox_readonly_false-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/menuitemcheckbox_readonly_false-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/menuitemcheckbox_readonly_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/menuitemcheckbox_readonly_true-manual.html index faa9703fda3..faa9703fda3 100644 --- a/tests/wpt/web-platform-tests/wai-aria/menuitemcheckbox_readonly_true-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/menuitemcheckbox_readonly_true-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/menuitemcheckbox_readonly_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/menuitemcheckbox_readonly_unspecified-manual.html index d9b5dc29807..d9b5dc29807 100644 --- a/tests/wpt/web-platform-tests/wai-aria/menuitemcheckbox_readonly_unspecified-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/menuitemcheckbox_readonly_unspecified-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/menuitemradio_expanded_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/menuitemradio_expanded_false-manual.html index 52c599d90ef..52c599d90ef 100644 --- a/tests/wpt/web-platform-tests/wai-aria/menuitemradio_expanded_false-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/menuitemradio_expanded_false-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/menuitemradio_expanded_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/menuitemradio_expanded_true-manual.html index 601879885fe..601879885fe 100644 --- a/tests/wpt/web-platform-tests/wai-aria/menuitemradio_expanded_true-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/menuitemradio_expanded_true-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/menuitemradio_posinset_and_setsize-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/menuitemradio_posinset_and_setsize-manual.html index d512e95dddb..d512e95dddb 100644 --- a/tests/wpt/web-platform-tests/wai-aria/menuitemradio_posinset_and_setsize-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/menuitemradio_posinset_and_setsize-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/menuitemradio_readonly_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/menuitemradio_readonly_false-manual.html index 164bde7ae17..164bde7ae17 100644 --- a/tests/wpt/web-platform-tests/wai-aria/menuitemradio_readonly_false-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/menuitemradio_readonly_false-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/menuitemradio_readonly_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/menuitemradio_readonly_true-manual.html index 70690f372c0..70690f372c0 100644 --- a/tests/wpt/web-platform-tests/wai-aria/menuitemradio_readonly_true-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/menuitemradio_readonly_true-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/menuitemradio_readonly_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/menuitemradio_readonly_unspecified-manual.html index a4257c439f8..a4257c439f8 100644 --- a/tests/wpt/web-platform-tests/wai-aria/menuitemradio_readonly_unspecified-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/menuitemradio_readonly_unspecified-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/none-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/none-manual.html index ded346faa6d..ded346faa6d 100644 --- a/tests/wpt/web-platform-tests/wai-aria/none-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/none-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/option_selected_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/option_selected_false-manual.html index 02b1ec8293d..02b1ec8293d 100644 --- a/tests/wpt/web-platform-tests/wai-aria/option_selected_false-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/option_selected_false-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/option_selected_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/option_selected_true-manual.html index 8bb7dd7ef54..8bb7dd7ef54 100644 --- a/tests/wpt/web-platform-tests/wai-aria/option_selected_true-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/option_selected_true-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/option_selected_undefined-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/option_selected_undefined-manual.html index 5930de9a482..5930de9a482 100644 --- a/tests/wpt/web-platform-tests/wai-aria/option_selected_undefined-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/option_selected_undefined-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/option_selected_value_changes-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/option_selected_value_changes-manual.html index 2c02a8707d3..2c02a8707d3 100644 --- a/tests/wpt/web-platform-tests/wai-aria/option_selected_value_changes-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/option_selected_value_changes-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/radiogroup_orientation_horizontal-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/radiogroup_orientation_horizontal-manual.html index 4943335cf26..4943335cf26 100644 --- a/tests/wpt/web-platform-tests/wai-aria/radiogroup_orientation_horizontal-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/radiogroup_orientation_horizontal-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/radiogroup_orientation_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/radiogroup_orientation_unspecified-manual.html index 40ceab71ca8..40ceab71ca8 100644 --- a/tests/wpt/web-platform-tests/wai-aria/radiogroup_orientation_unspecified-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/radiogroup_orientation_unspecified-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/radiogroup_orientation_vertical-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/radiogroup_orientation_vertical-manual.html index def4543652a..def4543652a 100644 --- a/tests/wpt/web-platform-tests/wai-aria/radiogroup_orientation_vertical-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/radiogroup_orientation_vertical-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/radiogroup_readonly_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/radiogroup_readonly_false-manual.html index 102f51757ba..102f51757ba 100644 --- a/tests/wpt/web-platform-tests/wai-aria/radiogroup_readonly_false-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/radiogroup_readonly_false-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/radiogroup_readonly_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/radiogroup_readonly_true-manual.html index 0c97e24a8bf..0c97e24a8bf 100644 --- a/tests/wpt/web-platform-tests/wai-aria/radiogroup_readonly_true-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/radiogroup_readonly_true-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/radiogroup_readonly_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/radiogroup_readonly_unspecified-manual.html index 6e8c641ac7b..6e8c641ac7b 100644 --- a/tests/wpt/web-platform-tests/wai-aria/radiogroup_readonly_unspecified-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/radiogroup_readonly_unspecified-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/region_with_name-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/region_with_name-manual.html index ba868a77b2e..ba868a77b2e 100644 --- a/tests/wpt/web-platform-tests/wai-aria/region_with_name-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/region_with_name-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/region_without_name-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/region_without_name-manual.html index 84ea6658e70..84ea6658e70 100644 --- a/tests/wpt/web-platform-tests/wai-aria/region_without_name-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/region_without_name-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/row_colindex_4-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/row_colindex_4-manual.html index 82ee257d9e5..82ee257d9e5 100644 --- a/tests/wpt/web-platform-tests/wai-aria/row_colindex_4-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/row_colindex_4-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/row_rowindex_4-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/row_rowindex_4-manual.html index 1333219e048..1333219e048 100644 --- a/tests/wpt/web-platform-tests/wai-aria/row_rowindex_4-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/row_rowindex_4-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/rowheader_aria-colspan_2_on_div-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/rowheader_aria-colspan_2_on_div-manual.html index 3d828889597..3d828889597 100644 --- a/tests/wpt/web-platform-tests/wai-aria/rowheader_aria-colspan_2_on_div-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/rowheader_aria-colspan_2_on_div-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/rowheader_aria-rowspan_2_on_div-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/rowheader_aria-rowspan_2_on_div-manual.html index 4ddf4f5c9ac..4ddf4f5c9ac 100644 --- a/tests/wpt/web-platform-tests/wai-aria/rowheader_aria-rowspan_2_on_div-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/rowheader_aria-rowspan_2_on_div-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/rowheader_colindex_4-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/rowheader_colindex_4-manual.html index 8b1eb477e47..8b1eb477e47 100644 --- a/tests/wpt/web-platform-tests/wai-aria/rowheader_colindex_4-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/rowheader_colindex_4-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/rowheader_rowindex_4-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/rowheader_rowindex_4-manual.html index 716403cfeb6..716403cfeb6 100644 --- a/tests/wpt/web-platform-tests/wai-aria/rowheader_rowindex_4-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/rowheader_rowindex_4-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/rowheader_selected_false_not_automatically_propagated-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/rowheader_selected_false_not_automatically_propagated-manual.html index 7cd9a559900..7cd9a559900 100644 --- a/tests/wpt/web-platform-tests/wai-aria/rowheader_selected_false_not_automatically_propagated-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/rowheader_selected_false_not_automatically_propagated-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/rowheader_selected_true_not_automatically_propagated-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/rowheader_selected_true_not_automatically_propagated-manual.html index 51b2b68fee3..51b2b68fee3 100644 --- a/tests/wpt/web-platform-tests/wai-aria/rowheader_selected_true_not_automatically_propagated-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/rowheader_selected_true_not_automatically_propagated-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/scrollbar_all_values_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/scrollbar_all_values_unspecified-manual.html index 910fe2b1181..910fe2b1181 100644 --- a/tests/wpt/web-platform-tests/wai-aria/scrollbar_all_values_unspecified-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/scrollbar_all_values_unspecified-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/scrollbar_only_valuenow_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/scrollbar_only_valuenow_unspecified-manual.html index 73e31581763..73e31581763 100644 --- a/tests/wpt/web-platform-tests/wai-aria/scrollbar_only_valuenow_unspecified-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/scrollbar_only_valuenow_unspecified-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/scrollbar_orientation_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/scrollbar_orientation_unspecified-manual.html index 32791ae1d8d..32791ae1d8d 100644 --- a/tests/wpt/web-platform-tests/wai-aria/scrollbar_orientation_unspecified-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/scrollbar_orientation_unspecified-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/searchbox-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox-manual.html index 979bd0fad45..979bd0fad45 100644 --- a/tests/wpt/web-platform-tests/wai-aria/searchbox-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/searchbox_activedescendant-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_activedescendant-manual.html index a72cf932636..a72cf932636 100644 --- a/tests/wpt/web-platform-tests/wai-aria/searchbox_activedescendant-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_activedescendant-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/searchbox_activedescendant_value_changes-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_activedescendant_value_changes-manual.html index 956f931ae86..956f931ae86 100644 --- a/tests/wpt/web-platform-tests/wai-aria/searchbox_activedescendant_value_changes-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_activedescendant_value_changes-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/searchbox_autocomplete_both-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_autocomplete_both-manual.html index ea8b6986794..ea8b6986794 100644 --- a/tests/wpt/web-platform-tests/wai-aria/searchbox_autocomplete_both-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_autocomplete_both-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/searchbox_autocomplete_inline-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_autocomplete_inline-manual.html index 77e707666c5..77e707666c5 100644 --- a/tests/wpt/web-platform-tests/wai-aria/searchbox_autocomplete_inline-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_autocomplete_inline-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/searchbox_autocomplete_list-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_autocomplete_list-manual.html index 0ce8068ea94..0ce8068ea94 100644 --- a/tests/wpt/web-platform-tests/wai-aria/searchbox_autocomplete_list-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_autocomplete_list-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/searchbox_autocomplete_none-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_autocomplete_none-manual.html index 341d75c5320..341d75c5320 100644 --- a/tests/wpt/web-platform-tests/wai-aria/searchbox_autocomplete_none-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_autocomplete_none-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/searchbox_autocomplete_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_autocomplete_unspecified-manual.html index 59becae655e..59becae655e 100644 --- a/tests/wpt/web-platform-tests/wai-aria/searchbox_autocomplete_unspecified-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_autocomplete_unspecified-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/searchbox_multiline_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_multiline_false-manual.html index 8f49eb61e93..8f49eb61e93 100644 --- a/tests/wpt/web-platform-tests/wai-aria/searchbox_multiline_false-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_multiline_false-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/searchbox_multiline_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_multiline_true-manual.html index 47e6c3aaa97..47e6c3aaa97 100644 --- a/tests/wpt/web-platform-tests/wai-aria/searchbox_multiline_true-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_multiline_true-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/searchbox_multiline_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_multiline_unspecified-manual.html index 5c1d7f5185a..5c1d7f5185a 100644 --- a/tests/wpt/web-platform-tests/wai-aria/searchbox_multiline_unspecified-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_multiline_unspecified-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/searchbox_placeholder-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_placeholder-manual.html index da513456d2d..da513456d2d 100644 --- a/tests/wpt/web-platform-tests/wai-aria/searchbox_placeholder-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_placeholder-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/searchbox_readonly_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_readonly_false-manual.html index 574666a0177..574666a0177 100644 --- a/tests/wpt/web-platform-tests/wai-aria/searchbox_readonly_false-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_readonly_false-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/searchbox_readonly_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_readonly_true-manual.html index 833f1bc4288..833f1bc4288 100644 --- a/tests/wpt/web-platform-tests/wai-aria/searchbox_readonly_true-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_readonly_true-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/searchbox_readonly_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_readonly_unspecified-manual.html index 51b9893595d..51b9893595d 100644 --- a/tests/wpt/web-platform-tests/wai-aria/searchbox_readonly_unspecified-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_readonly_unspecified-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/searchbox_required_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_required_false-manual.html index 1bfc8953564..1bfc8953564 100644 --- a/tests/wpt/web-platform-tests/wai-aria/searchbox_required_false-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_required_false-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/searchbox_required_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_required_true-manual.html index 7e26e5ab03a..7e26e5ab03a 100644 --- a/tests/wpt/web-platform-tests/wai-aria/searchbox_required_true-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_required_true-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/searchbox_required_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_required_unspecified-manual.html index 13489ad13a0..13489ad13a0 100644 --- a/tests/wpt/web-platform-tests/wai-aria/searchbox_required_unspecified-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/searchbox_required_unspecified-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/separator_focusable_all_values_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/separator_focusable_all_values_unspecified-manual.html index fb8e852bb17..fb8e852bb17 100644 --- a/tests/wpt/web-platform-tests/wai-aria/separator_focusable_all_values_unspecified-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/separator_focusable_all_values_unspecified-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/separator_focusable_only_valuenow_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/separator_focusable_only_valuenow_unspecified-manual.html index 680c2a3605a..680c2a3605a 100644 --- a/tests/wpt/web-platform-tests/wai-aria/separator_focusable_only_valuenow_unspecified-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/separator_focusable_only_valuenow_unspecified-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/separator_focusable_valuetext-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/separator_focusable_valuetext-manual.html index 5992f15aeb0..5992f15aeb0 100644 --- a/tests/wpt/web-platform-tests/wai-aria/separator_focusable_valuetext-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/separator_focusable_valuetext-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/separator_orientation_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/separator_orientation_unspecified-manual.html index 3a3901b4244..3a3901b4244 100644 --- a/tests/wpt/web-platform-tests/wai-aria/separator_orientation_unspecified-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/separator_orientation_unspecified-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/separator_unfocusable_all_values_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/separator_unfocusable_all_values_unspecified-manual.html index 171370f422b..171370f422b 100644 --- a/tests/wpt/web-platform-tests/wai-aria/separator_unfocusable_all_values_unspecified-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/separator_unfocusable_all_values_unspecified-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/separator_unfocusable_valuetext-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/separator_unfocusable_valuetext-manual.html index db8ee6322dd..db8ee6322dd 100644 --- a/tests/wpt/web-platform-tests/wai-aria/separator_unfocusable_valuetext-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/separator_unfocusable_valuetext-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/slider_all_values_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/slider_all_values_unspecified-manual.html index 0dea62e620f..0dea62e620f 100644 --- a/tests/wpt/web-platform-tests/wai-aria/slider_all_values_unspecified-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/slider_all_values_unspecified-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/slider_only_valuenow_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/slider_only_valuenow_unspecified-manual.html index ffcbc783734..ffcbc783734 100644 --- a/tests/wpt/web-platform-tests/wai-aria/slider_only_valuenow_unspecified-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/slider_only_valuenow_unspecified-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/slider_orientation_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/slider_orientation_unspecified-manual.html index 295b0a61960..295b0a61960 100644 --- a/tests/wpt/web-platform-tests/wai-aria/slider_orientation_unspecified-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/slider_orientation_unspecified-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/slider_readonly_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/slider_readonly_false-manual.html index f5a70984d51..f5a70984d51 100644 --- a/tests/wpt/web-platform-tests/wai-aria/slider_readonly_false-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/slider_readonly_false-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/slider_readonly_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/slider_readonly_true-manual.html index 2588079d784..2588079d784 100644 --- a/tests/wpt/web-platform-tests/wai-aria/slider_readonly_true-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/slider_readonly_true-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/slider_readonly_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/slider_readonly_unspecified-manual.html index 271325a47d3..271325a47d3 100644 --- a/tests/wpt/web-platform-tests/wai-aria/slider_readonly_unspecified-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/slider_readonly_unspecified-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/spinbutton_all_values_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/spinbutton_all_values_unspecified-manual.html index 8da69af36d6..8da69af36d6 100644 --- a/tests/wpt/web-platform-tests/wai-aria/spinbutton_all_values_unspecified-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/spinbutton_all_values_unspecified-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/spinbutton_only_aria-valuenow_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/spinbutton_only_aria-valuenow_unspecified-manual.html index bbb94702fe3..bbb94702fe3 100644 --- a/tests/wpt/web-platform-tests/wai-aria/spinbutton_only_aria-valuenow_unspecified-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/spinbutton_only_aria-valuenow_unspecified-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/spinbutton_readonly_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/spinbutton_readonly_false-manual.html index 5e9429ca28a..5e9429ca28a 100644 --- a/tests/wpt/web-platform-tests/wai-aria/spinbutton_readonly_false-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/spinbutton_readonly_false-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/spinbutton_readonly_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/spinbutton_readonly_true-manual.html index a7a3abe6327..a7a3abe6327 100644 --- a/tests/wpt/web-platform-tests/wai-aria/spinbutton_readonly_true-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/spinbutton_readonly_true-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/spinbutton_readonly_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/spinbutton_readonly_unspecified-manual.html index 0976b0737c7..0976b0737c7 100644 --- a/tests/wpt/web-platform-tests/wai-aria/spinbutton_readonly_unspecified-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/spinbutton_readonly_unspecified-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/switch_checked_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/switch_checked_false-manual.html index ac61802bdfb..ac61802bdfb 100644 --- a/tests/wpt/web-platform-tests/wai-aria/switch_checked_false-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/switch_checked_false-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/switch_checked_mixed-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/switch_checked_mixed-manual.html index a674c7d7bcf..a674c7d7bcf 100644 --- a/tests/wpt/web-platform-tests/wai-aria/switch_checked_mixed-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/switch_checked_mixed-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/switch_checked_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/switch_checked_true-manual.html index e23e7235616..e23e7235616 100644 --- a/tests/wpt/web-platform-tests/wai-aria/switch_checked_true-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/switch_checked_true-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/switch_checked_undefined-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/switch_checked_undefined-manual.html index 4f5399e88ce..4f5399e88ce 100644 --- a/tests/wpt/web-platform-tests/wai-aria/switch_checked_undefined-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/switch_checked_undefined-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/switch_checked_value_changes-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/switch_checked_value_changes-manual.html index b58e52fefb0..b58e52fefb0 100644 --- a/tests/wpt/web-platform-tests/wai-aria/switch_checked_value_changes-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/switch_checked_value_changes-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/switch_readonly_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/switch_readonly_false-manual.html index e68b6bb0d27..e68b6bb0d27 100644 --- a/tests/wpt/web-platform-tests/wai-aria/switch_readonly_false-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/switch_readonly_false-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/switch_readonly_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/switch_readonly_true-manual.html index 605d2d0d9af..605d2d0d9af 100644 --- a/tests/wpt/web-platform-tests/wai-aria/switch_readonly_true-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/switch_readonly_true-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/switch_readonly_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/switch_readonly_unspecified-manual.html index 0fd582c0e9b..0fd582c0e9b 100644 --- a/tests/wpt/web-platform-tests/wai-aria/switch_readonly_unspecified-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/switch_readonly_unspecified-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/tab_posinset_and_setsize-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/tab_posinset_and_setsize-manual.html index f27f485ac97..f27f485ac97 100644 --- a/tests/wpt/web-platform-tests/wai-aria/tab_posinset_and_setsize-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/tab_posinset_and_setsize-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/table_colcount_-1-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/table_colcount_-1-manual.html index 2135f6ed8d0..2135f6ed8d0 100644 --- a/tests/wpt/web-platform-tests/wai-aria/table_colcount_-1-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/table_colcount_-1-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/table_colcount_8-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/table_colcount_8-manual.html index 1b8e0affdd5..1b8e0affdd5 100644 --- a/tests/wpt/web-platform-tests/wai-aria/table_colcount_8-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/table_colcount_8-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/table_rowcount_-1-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/table_rowcount_-1-manual.html index 5e7b5b8bf49..5e7b5b8bf49 100644 --- a/tests/wpt/web-platform-tests/wai-aria/table_rowcount_-1-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/table_rowcount_-1-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/table_rowcount_3-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/table_rowcount_3-manual.html index 5bfad69b240..5bfad69b240 100644 --- a/tests/wpt/web-platform-tests/wai-aria/table_rowcount_3-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/table_rowcount_3-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/tablist_orientation_horizontal-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/tablist_orientation_horizontal-manual.html index 104668cbb95..104668cbb95 100644 --- a/tests/wpt/web-platform-tests/wai-aria/tablist_orientation_horizontal-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/tablist_orientation_horizontal-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/tablist_orientation_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/tablist_orientation_unspecified-manual.html index 001c2ee77b3..001c2ee77b3 100644 --- a/tests/wpt/web-platform-tests/wai-aria/tablist_orientation_unspecified-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/tablist_orientation_unspecified-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/tablist_orientation_vertical-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/tablist_orientation_vertical-manual.html index f6fe16e8955..f6fe16e8955 100644 --- a/tests/wpt/web-platform-tests/wai-aria/tablist_orientation_vertical-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/tablist_orientation_vertical-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/term_role-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/term_role-manual.html index ac5030df950..ac5030df950 100644 --- a/tests/wpt/web-platform-tests/wai-aria/term_role-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/term_role-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/textbox_placeholder-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/textbox_placeholder-manual.html index fdf0635be67..fdf0635be67 100644 --- a/tests/wpt/web-platform-tests/wai-aria/textbox_placeholder-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/textbox_placeholder-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/toolbar_orientation_horizontal-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/toolbar_orientation_horizontal-manual.html index 1b8fda8dd60..1b8fda8dd60 100644 --- a/tests/wpt/web-platform-tests/wai-aria/toolbar_orientation_horizontal-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/toolbar_orientation_horizontal-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/toolbar_orientation_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/toolbar_orientation_unspecified-manual.html index 4607511874b..4607511874b 100644 --- a/tests/wpt/web-platform-tests/wai-aria/toolbar_orientation_unspecified-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/toolbar_orientation_unspecified-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/toolbar_orientation_vertical-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/toolbar_orientation_vertical-manual.html index 792952d323d..792952d323d 100644 --- a/tests/wpt/web-platform-tests/wai-aria/toolbar_orientation_vertical-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/toolbar_orientation_vertical-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/tree_orientation_horizontal-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/tree_orientation_horizontal-manual.html index 15813f5f039..15813f5f039 100644 --- a/tests/wpt/web-platform-tests/wai-aria/tree_orientation_horizontal-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/tree_orientation_horizontal-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/tree_orientation_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/tree_orientation_unspecified-manual.html index dfc1bdcc587..dfc1bdcc587 100644 --- a/tests/wpt/web-platform-tests/wai-aria/tree_orientation_unspecified-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/tree_orientation_unspecified-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/tree_orientation_vertical-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/tree_orientation_vertical-manual.html index b9afa33ff44..b9afa33ff44 100644 --- a/tests/wpt/web-platform-tests/wai-aria/tree_orientation_vertical-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/tree_orientation_vertical-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/treegrid_colcount_8-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/treegrid_colcount_8-manual.html index a3e9ea14963..a3e9ea14963 100644 --- a/tests/wpt/web-platform-tests/wai-aria/treegrid_colcount_8-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/treegrid_colcount_8-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/treegrid_orientation_horizontal-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/treegrid_orientation_horizontal-manual.html index 756153abf3b..756153abf3b 100644 --- a/tests/wpt/web-platform-tests/wai-aria/treegrid_orientation_horizontal-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/treegrid_orientation_horizontal-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/treegrid_orientation_unspecified-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/treegrid_orientation_unspecified-manual.html index d536e9afbed..d536e9afbed 100644 --- a/tests/wpt/web-platform-tests/wai-aria/treegrid_orientation_unspecified-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/treegrid_orientation_unspecified-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/treegrid_orientation_vertical-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/treegrid_orientation_vertical-manual.html index 62a19d09046..62a19d09046 100644 --- a/tests/wpt/web-platform-tests/wai-aria/treegrid_orientation_vertical-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/treegrid_orientation_vertical-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/treegrid_rowcount_3-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/treegrid_rowcount_3-manual.html index 9d9b8acf447..9d9b8acf447 100644 --- a/tests/wpt/web-platform-tests/wai-aria/treegrid_rowcount_3-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/treegrid_rowcount_3-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/treeitem_selected_false-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/treeitem_selected_false-manual.html index 684fda69b6d..684fda69b6d 100644 --- a/tests/wpt/web-platform-tests/wai-aria/treeitem_selected_false-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/treeitem_selected_false-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/treeitem_selected_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/treeitem_selected_true-manual.html index b951c54dec6..b951c54dec6 100644 --- a/tests/wpt/web-platform-tests/wai-aria/treeitem_selected_true-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/treeitem_selected_true-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/treeitem_selected_undefined-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/treeitem_selected_undefined-manual.html index dddfd3826f0..dddfd3826f0 100644 --- a/tests/wpt/web-platform-tests/wai-aria/treeitem_selected_undefined-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/treeitem_selected_undefined-manual.html diff --git a/tests/wpt/web-platform-tests/wai-aria/treeitem_selected_value_changes-manual.html b/tests/wpt/web-platform-tests/wai-aria/manual/treeitem_selected_value_changes-manual.html index 69734c82dda..69734c82dda 100644 --- a/tests/wpt/web-platform-tests/wai-aria/treeitem_selected_value_changes-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/manual/treeitem_selected_value_changes-manual.html diff --git a/tests/wpt/web-platform-tests/webauthn/getcredential-prf.https.html b/tests/wpt/web-platform-tests/webauthn/getcredential-prf.https.html index 61b52ac5958..40dfc5cad33 100644 --- a/tests/wpt/web-platform-tests/webauthn/getcredential-prf.https.html +++ b/tests/wpt/web-platform-tests/webauthn/getcredential-prf.https.html @@ -116,13 +116,21 @@ standardSetup(async function(authenticator) { byCred["Zm9v"] = { first: new Uint8Array([1,2,3,4]).buffer, }; - const assertion = await assert(id, { + return promise_rejects_dom(t, "SyntaxError", assert(id, { evalByCredential: byCred, - }); - assert_own_property(assertion.getClientExtensionResults(), 'prf'); - assert_not_own_property(assertion.getClientExtensionResults().prf, - 'results'); - }, "navigator.credentials.get() using wrong credential ID"); + })); + }, "navigator.credentials.get() with credential ID not in allowedCredentials"); + + promise_test(async t => { + const id = (await credential).rawId; + const byCred = {}; + byCred["Zm9v"] = { + first: new Uint8Array([1,2,3,4]), + }; + return promise_rejects_dom(t, "SyntaxError", assert(id, { + evalByCredential: byCred, + })); + }, "navigator.credentials.get() with Uint8Array credential ID not in allowedCredentials"); promise_test(async t => { const id = (await credential).rawId; diff --git a/tests/wpt/web-platform-tests/webdriver/tests/bidi/browsing_context/print/__init__.py b/tests/wpt/web-platform-tests/webdriver/tests/bidi/browsing_context/print/__init__.py new file mode 100644 index 00000000000..d34fef9869a --- /dev/null +++ b/tests/wpt/web-platform-tests/webdriver/tests/bidi/browsing_context/print/__init__.py @@ -0,0 +1,6 @@ +import pytest + + +def assert_pdf(data): + assert data.startswith(b"%PDF-"), "Decoded data starts with the PDF signature" + assert data.endswith(b"%%EOF\n"), "Decoded data ends with the EOF flag" diff --git a/tests/wpt/web-platform-tests/webdriver/tests/bidi/browsing_context/print/context.py b/tests/wpt/web-platform-tests/webdriver/tests/bidi/browsing_context/print/context.py new file mode 100644 index 00000000000..a73bfee9621 --- /dev/null +++ b/tests/wpt/web-platform-tests/webdriver/tests/bidi/browsing_context/print/context.py @@ -0,0 +1,26 @@ +from base64 import decodebytes + +import pytest + +from . import assert_pdf +from ... import recursive_compare + +pytestmark = pytest.mark.asyncio + + +async def test_context(bidi_session, top_context, inline, get_pdf_content): + text = "Test" + url = inline(text) + await bidi_session.browsing_context.navigate( + context=top_context["context"], url=url, wait="complete" + ) + + value = await bidi_session.browsing_context.print(context=top_context["context"]) + pdf = decodebytes(value.encode()) + + assert_pdf(pdf) + + pdf_content = await get_pdf_content(value) + recursive_compare( + {"type": "array", "value": [{"type": "string", "value": text}]}, pdf_content + ) diff --git a/tests/wpt/web-platform-tests/webdriver/tests/bidi/browsing_context/print/invalid.py b/tests/wpt/web-platform-tests/webdriver/tests/bidi/browsing_context/print/invalid.py new file mode 100644 index 00000000000..114aeb62dcc --- /dev/null +++ b/tests/wpt/web-platform-tests/webdriver/tests/bidi/browsing_context/print/invalid.py @@ -0,0 +1,197 @@ +import pytest +import webdriver.bidi.error as error + +pytestmark = pytest.mark.asyncio + + +@pytest.mark.parametrize("context", [None, False, 42, {}, []]) +async def test_params_context_invalid_type(bidi_session, context): + with pytest.raises(error.InvalidArgumentException): + await bidi_session.browsing_context.print(context=context) + + +async def test_params_context_invalid_value(bidi_session): + with pytest.raises(error.NoSuchFrameException): + await bidi_session.browsing_context.print(context="_invalid_") + + +async def test_params_context_closed(bidi_session): + new_tab = await bidi_session.browsing_context.create(type_hint="tab") + await bidi_session.browsing_context.close(context=new_tab["context"]) + + # Try to print the closed context + with pytest.raises(error.NoSuchFrameException): + await bidi_session.browsing_context.print(context=new_tab["context"]) + + +@pytest.mark.parametrize("background", ["foo", 42, {}, []]) +async def test_params_background_invalid_type(bidi_session, top_context, background): + with pytest.raises(error.InvalidArgumentException): + await bidi_session.browsing_context.print( + context=top_context["context"], background=background + ) + + +@pytest.mark.parametrize( + "margin", + [ + False, + "foo", + 42, + [], + {"top": False}, + {"top": "foo"}, + {"top": []}, + {"top": {}}, + {"bottom": False}, + {"bottom": "foo"}, + {"bottom": []}, + {"bottom": {}}, + {"left": False}, + {"left": "foo"}, + {"left": []}, + {"left": {}}, + {"right": False}, + {"right": "foo"}, + {"right": []}, + {"right": {}}, + ], +) +async def test_params_margin_invalid_type(bidi_session, top_context, margin): + with pytest.raises(error.InvalidArgumentException): + await bidi_session.browsing_context.print( + context=top_context["context"], margin=margin + ) + + +@pytest.mark.parametrize( + "margin", + [ + {"top": -0.1}, + {"bottom": -0.1}, + {"left": -0.1}, + {"right": -0.1}, + ], +) +async def test_params_margin_invalid_value(bidi_session, top_context, margin): + with pytest.raises(error.InvalidArgumentException): + await bidi_session.browsing_context.print( + context=top_context["context"], margin=margin + ) + + +@pytest.mark.parametrize("orientation", [False, 42, {}, []]) +async def test_params_orientation_invalid_type(bidi_session, top_context, orientation): + with pytest.raises(error.InvalidArgumentException): + await bidi_session.browsing_context.print( + context=top_context["context"], orientation=orientation + ) + + +async def test_params_orientation_invalid_value(bidi_session, top_context): + with pytest.raises(error.InvalidArgumentException): + await bidi_session.browsing_context.print( + context=top_context["context"], orientation="foo" + ) + + +@pytest.mark.parametrize( + "page", + [ + False, + "foo", + 42, + [], + {"height": False}, + {"height": "foo"}, + {"height": []}, + {"height": {}}, + {"width": False}, + {"width": "foo"}, + {"width": []}, + {"width": {}}, + ], +) +async def test_params_page_invalid_type(bidi_session, top_context, page): + with pytest.raises(error.InvalidArgumentException): + await bidi_session.browsing_context.print( + context=top_context["context"], page=page + ) + + +@pytest.mark.parametrize( + "page", + [ + {"height": -1}, + {"width": -1}, + ], +) +async def test_params_page_invalid_value(bidi_session, top_context, page): + with pytest.raises(error.InvalidArgumentException): + await bidi_session.browsing_context.print( + context=top_context["context"], page=page + ) + + +@pytest.mark.parametrize( + "page_ranges", + [ + False, + "foo", + 42, + {}, + [None], + [False], + [[]], + [{}], + ["1-2", {}], + ], +) +async def test_params_page_ranges_invalid_type(bidi_session, top_context, page_ranges): + with pytest.raises(error.InvalidArgumentException): + await bidi_session.browsing_context.print( + context=top_context["context"], page_ranges=page_ranges + ) + +@pytest.mark.parametrize( + "page_ranges", + [ + [4.2], + ["4.2"], + ["3-2"], + ["a-2"], + ["1:2"], + ["1-2-3"], + ], +) +async def test_params_page_ranges_invalid_value(bidi_session, top_context, page_ranges): + with pytest.raises(error.InvalidArgumentException): + await bidi_session.browsing_context.print( + context=top_context["context"], page_ranges=page_ranges + ) + + +@pytest.mark.parametrize("scale", [False, "foo", {}, []]) +async def test_params_scale_invalid_type(bidi_session, top_context, scale): + with pytest.raises(error.InvalidArgumentException): + await bidi_session.browsing_context.print( + context=top_context["context"], scale=scale + ) + + +@pytest.mark.parametrize("scale", [-1, 0.09, 2.01, 42]) +async def test_params_scale_invalid_value(bidi_session, top_context, scale): + with pytest.raises(error.InvalidArgumentException): + await bidi_session.browsing_context.print( + context=top_context["context"], scale=scale + ) + + +@pytest.mark.parametrize("shrink_to_fit", ["foo", 42, {}, []]) +async def test_params_shrink_to_fit_invalid_type( + bidi_session, top_context, shrink_to_fit +): + with pytest.raises(error.InvalidArgumentException): + await bidi_session.browsing_context.print( + context=top_context["context"], shrink_to_fit=shrink_to_fit + ) diff --git a/tests/wpt/web-platform-tests/webdriver/tests/bidi/browsing_context/print/page_ranges.py b/tests/wpt/web-platform-tests/webdriver/tests/bidi/browsing_context/print/page_ranges.py new file mode 100644 index 00000000000..9e466883b0a --- /dev/null +++ b/tests/wpt/web-platform-tests/webdriver/tests/bidi/browsing_context/print/page_ranges.py @@ -0,0 +1,140 @@ +# META: timeout=long +from base64 import decodebytes + +import pytest + +from . import assert_pdf +from ... import recursive_compare + +pytestmark = pytest.mark.asyncio + + +@pytest.mark.parametrize( + "ranges,expected", + [ + ( + ["2-4"], + [ + {"type": "string", "value": "Page 2"}, + {"type": "string", "value": "Page 3"}, + {"type": "string", "value": "Page 4"}, + ], + ), + ( + ["2-4", "2-3"], + [ + {"type": "string", "value": "Page 2"}, + {"type": "string", "value": "Page 3"}, + {"type": "string", "value": "Page 4"}, + ], + ), + ( + ["2-4", "3-5"], + [ + {"type": "string", "value": "Page 2"}, + {"type": "string", "value": "Page 3"}, + {"type": "string", "value": "Page 4"}, + {"type": "string", "value": "Page 5"}, + ], + ), + ( + ["9-"], + [ + {"type": "string", "value": "Page 9"}, + {"type": "string", "value": "Page 10"}, + ], + ), + ( + ["-2"], + [ + {"type": "string", "value": "Page 1"}, + {"type": "string", "value": "Page 2"}, + ], + ), + ( + [7], + [ + {"type": "string", "value": "Page 7"}, + ], + ), + ( + ["7"], + [ + {"type": "string", "value": "Page 7"}, + ], + ), + ( + ["-2", "9-", "7"], + [ + {"type": "string", "value": "Page 1"}, + {"type": "string", "value": "Page 2"}, + {"type": "string", "value": "Page 7"}, + {"type": "string", "value": "Page 9"}, + {"type": "string", "value": "Page 10"}, + ], + ), + ( + ["-5", "2-"], + [ + {"type": "string", "value": "Page 1"}, + {"type": "string", "value": "Page 2"}, + {"type": "string", "value": "Page 3"}, + {"type": "string", "value": "Page 4"}, + {"type": "string", "value": "Page 5"}, + {"type": "string", "value": "Page 6"}, + {"type": "string", "value": "Page 7"}, + {"type": "string", "value": "Page 8"}, + {"type": "string", "value": "Page 9"}, + {"type": "string", "value": "Page 10"}, + ], + ), + ( + [], + [ + {"type": "string", "value": "Page 1"}, + {"type": "string", "value": "Page 2"}, + {"type": "string", "value": "Page 3"}, + {"type": "string", "value": "Page 4"}, + {"type": "string", "value": "Page 5"}, + {"type": "string", "value": "Page 6"}, + {"type": "string", "value": "Page 7"}, + {"type": "string", "value": "Page 8"}, + {"type": "string", "value": "Page 9"}, + {"type": "string", "value": "Page 10"}, + ], + ), + ], +) +async def test_page_ranges_document( + bidi_session, inline, top_context, get_pdf_content, ranges, expected +): + url = inline( + """ +<style> +div {page-break-after: always} +</style> + +<div>Page 1</div> +<div>Page 2</div> +<div>Page 3</div> +<div>Page 4</div> +<div>Page 5</div> +<div>Page 6</div> +<div>Page 7</div> +<div>Page 8</div> +<div>Page 9</div> +<div>Page 10</div>""" + ) + await bidi_session.browsing_context.navigate( + context=top_context["context"], url=url, wait="complete" + ) + + value = await bidi_session.browsing_context.print( + context=top_context["context"], page_ranges=ranges + ) + pdf = decodebytes(value.encode()) + + assert_pdf(pdf) + + pdf_content = await get_pdf_content(value) + recursive_compare({"type": "array", "value": expected}, pdf_content) diff --git a/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/call_function/arguments.py b/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/call_function/arguments.py index 9fbe5fb8110..daf31fc869c 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/call_function/arguments.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/call_function/arguments.py @@ -1,44 +1,136 @@ import pytest +import webdriver.bidi.error as error from webdriver.bidi.modules.script import ContextTarget -from ... import recursive_compare +from ... import any_string, recursive_compare @pytest.mark.asyncio -async def test_arguments(bidi_session, top_context): +async def test_default_arguments(bidi_session, top_context): result = await bidi_session.script.call_function( - function_declaration="(...args)=>{return args}", - arguments=[{ - "type": "string", - "value": "ARGUMENT_STRING_VALUE" - }, { - "type": "number", - "value": 42}], + function_declaration="(...args) => args", await_promise=False, target=ContextTarget(top_context["context"])) recursive_compare({ "type": "array", - "value": [{ - "type": 'string', - "value": 'ARGUMENT_STRING_VALUE' - }, { - "type": 'number', - "value": 42}]}, - result) + "value": [] + }, result) @pytest.mark.asyncio -async def test_default_arguments(bidi_session, top_context): +@pytest.mark.parametrize( + "argument, expected", + [ + ({"type": "undefined"}, "undefined"), + ({"type": "null"}, "null"), + ({"type": "string", "value": "foobar"}, "'foobar'"), + ({"type": "string", "value": "2"}, "'2'"), + ({"type": "number", "value": "-0"}, "-0"), + ({"type": "number", "value": "Infinity"}, "Infinity"), + ({"type": "number", "value": "-Infinity"}, "-Infinity"), + ({"type": "number", "value": 3}, "3"), + ({"type": "number", "value": 1.4}, "1.4"), + ({"type": "boolean", "value": True}, "true"), + ({"type": "boolean", "value": False}, "false"), + ({"type": "bigint", "value": "42"}, "42n"), + ], +) +async def test_primitive_value(bidi_session, top_context, argument, expected): result = await bidi_session.script.call_function( - function_declaration="(...args)=>{return args}", + function_declaration=f"""(arg) => {{ + if (arg !== {expected}) {{ + throw new Error(`Argument should be {expected}, but was ` + arg); + }} + return arg; + }}""", + arguments=[argument], await_promise=False, - target=ContextTarget(top_context["context"])) + target=ContextTarget(top_context["context"]), + ) - recursive_compare({ - "type": "array", - "value": [] - }, result) + recursive_compare(argument, result) + + +@pytest.mark.asyncio +async def test_primitive_value_NaN(bidi_session, top_context): + nan_remote_value = {"type": "number", "value": "NaN"} + result = await bidi_session.script.call_function( + function_declaration="""(arg) => { + if (!isNaN(arg)) { + throw new Error("Argument should be 'NaN', but was " + arg); + } + return arg; + }""", + arguments=[nan_remote_value], + await_promise=False, + target=ContextTarget(top_context["context"]), + ) + + recursive_compare(nan_remote_value, result) + + +@pytest.mark.asyncio +@pytest.mark.parametrize( + "argument, expected_type", + [ + ({ + "type": "array", + "value": [ + {"type": "string", "value": "foobar"}, + ], + }, + "Array" + ), + ({"type": "date", "value": "2022-05-31T13:47:29.000Z"}, + "Date" + ), + ({ + "type": "map", + "value": [ + ["foobar", {"type": "string", "value": "foobar"}], + ], + }, + "Map" + ), + ({ + "type": "object", + "value": [ + ["foobar", {"type": "string", "value": "foobar"}], + ], + }, + "Object" + ), + ({"type": "regexp", "value": {"pattern": "foo", "flags": "g"}}, + "RegExp" + ), + ({ + "type": "set", + "value": [ + {"type": "string", "value": "foobar"}, + ], + }, + "Set" + ) + ], +) +async def test_local_value(bidi_session, top_context, argument, expected_type): + result = await bidi_session.script.call_function( + function_declaration=f"""(arg) => {{ + if (!(arg instanceof {expected_type})) {{ + const type = Object.prototype.toString.call(arg); + throw new Error( + "Argument type should be {expected_type}, but was " + type + ); + }} + return arg; + }}""", + arguments=[argument], + await_promise=False, + target=ContextTarget(top_context["context"]), + ) + + recursive_compare(argument, result) @pytest.mark.asyncio @@ -113,11 +205,6 @@ async def test_default_arguments(bidi_session, top_context): {"type": "boolean", "value": False}, ), ( - "document.createElement('div')", - "(node) => node.tagName", - {"type": "string", "value": "DIV"}, - ), - ( "window.foo = 3; window", "(window) => window.foo", {"type": "number", "value": 3}, @@ -134,7 +221,7 @@ async def test_default_arguments(bidi_session, top_context): ), ], ) -async def test_remote_value_argument( +async def test_remote_reference_argument( bidi_session, top_context, setup_expression, function_declaration, expected ): remote_value_result = await bidi_session.script.evaluate( @@ -159,116 +246,6 @@ async def test_remote_value_argument( @pytest.mark.asyncio @pytest.mark.parametrize( - "argument, expected", - [ - ({"type": "undefined"}, "undefined"), - ({"type": "null"}, "null"), - ({"type": "string", "value": "foobar"}, "'foobar'"), - ({"type": "string", "value": "2"}, "'2'"), - ({"type": "number", "value": "-0"}, "-0"), - ({"type": "number", "value": "Infinity"}, "Infinity"), - ({"type": "number", "value": "-Infinity"}, "-Infinity"), - ({"type": "number", "value": 3}, "3"), - ({"type": "number", "value": 1.4}, "1.4"), - ({"type": "boolean", "value": True}, "true"), - ({"type": "boolean", "value": False}, "false"), - ({"type": "bigint", "value": "42"}, "42n"), - ], -) -async def test_primitive_values(bidi_session, top_context, argument, expected): - result = await bidi_session.script.call_function( - function_declaration=f"""(arg) => {{ - if(arg!=={expected}) - throw Error("Argument should be {expected}, but was "+arg); - return arg; - }}""", - arguments=[argument], - await_promise=False, - target=ContextTarget(top_context["context"]), - ) - - recursive_compare(argument, result) - - -@pytest.mark.asyncio -async def test_nan(bidi_session, top_context): - nan_remote_value = {"type": "number", "value": "NaN"} - result = await bidi_session.script.call_function( - function_declaration=f"""(arg) => {{ - if(!isNaN(arg)) - throw Error("Argument should be 'NaN', but was "+arg); - return arg; - }}""", - arguments=[nan_remote_value], - await_promise=False, - target=ContextTarget(top_context["context"]), - ) - - recursive_compare(nan_remote_value, result) - - -@pytest.mark.asyncio -@pytest.mark.parametrize( - "argument, expected_type", - [ - ({ - "type": "array", - "value": [ - {"type": "string", "value": "foobar"}, - ], - }, - "Array" - ), - ({"type": "date", "value": "2022-05-31T13:47:29.000Z"}, - "Date" - ), - ({ - "type": "map", - "value": [ - ["foobar", {"type": "string", "value": "foobar"}], - ], - }, - "Map" - ), - ({ - "type": "object", - "value": [ - ["foobar", {"type": "string", "value": "foobar"}], - ], - }, - "Object" - ), - ({"type": "regexp", "value": {"pattern": "foo", "flags": "g"}}, - "RegExp" - ), - ({ - "type": "set", - "value": [ - {"type": "string", "value": "foobar"}, - ], - }, - "Set" - ) - ], -) -async def test_local_values(bidi_session, top_context, argument, expected_type): - result = await bidi_session.script.call_function( - function_declaration=f"""(arg) => {{ - if(! (arg instanceof {expected_type})) - throw Error("Argument type should be {expected_type}, but was "+ - Object.prototype.toString.call(arg)); - return arg; - }}""", - arguments=[argument], - await_promise=False, - target=ContextTarget(top_context["context"]), - ) - - recursive_compare(argument, result) - - -@pytest.mark.asyncio -@pytest.mark.parametrize( "value_fn, function_declaration", [ ( @@ -293,11 +270,11 @@ async def test_local_values(bidi_session, top_context, argument, expected_type): ), ], ) -async def test_remote_value_deserialization( +async def test_remote_reference_deserialization( bidi_session, top_context, call_function, evaluate, value_fn, function_declaration ): remote_value = await evaluate( - "window.SOME_OBJECT = {SOME_PROPERTY:'SOME_VALUE'}; window.SOME_OBJECT", + "window.SOME_OBJECT = { SOME_PROPERTY: 'SOME_VALUE' }; window.SOME_OBJECT", result_ownership="root", ) @@ -317,6 +294,107 @@ async def test_remote_value_deserialization( @pytest.mark.asyncio @pytest.mark.parametrize( + "setup_expression, expected_node_type", + [ + ("document.querySelector('img')", 1), + ("document.querySelector('input#button').attributes[0]", 2), + ("document.querySelector('#with-text-node').childNodes[0]", 3), + ("""document.createProcessingInstruction("xml-stylesheet", "href='foo.css'")""", 7), + ("document.querySelector('#with-comment').childNodes[0]", 8), + ("document", 9), + ("document.doctype", 10), + ("document.createDocumentFragment()", 11), + ("document.querySelector('#custom-element').shadowRoot", 11), + ], + ids=[ + "element", + "attribute", + "text node", + "processing instruction", + "comment", + "document", + "doctype", + "document fragment", + "shadow root", + ] +) +async def test_remote_reference_node_argument( + bidi_session, get_test_page, top_context, setup_expression, expected_node_type +): + await bidi_session.browsing_context.navigate( + context=top_context['context'], url=get_test_page(), wait="complete" + ) + + remote_reference = await bidi_session.script.evaluate( + expression=setup_expression, + await_promise=False, + target=ContextTarget(top_context["context"]), + ) + + result = await bidi_session.script.call_function( + function_declaration="(node) => node.nodeType", + arguments=[remote_reference], + await_promise=False, + target=ContextTarget(top_context["context"]), + ) + + assert result == {"type": "number", "value": expected_node_type} + + +@pytest.mark.asyncio +async def test_remote_reference_node_cdata(bidi_session, inline, top_context): + xml_page = inline("""<foo>CDATA section: <![CDATA[ < > & ]]>.</foo>""", doctype="xml") + + await bidi_session.browsing_context.navigate( + context=top_context['context'], url=xml_page, wait="complete" + ) + + remote_reference = await bidi_session.script.evaluate( + expression="document.querySelector('foo').childNodes[1]", + await_promise=False, + target=ContextTarget(top_context["context"]), + ) + + result = await bidi_session.script.call_function( + function_declaration="(node) => node.nodeType", + arguments=[remote_reference], + await_promise=False, + target=ContextTarget(top_context["context"]), + ) + + assert result == {"type": "number", "value": 4} + + +@pytest.mark.asyncio +async def test_remote_reference_sharedId_precedence_over_handle( + bidi_session, get_test_page, top_context +): + await bidi_session.browsing_context.navigate( + context=top_context['context'], url=get_test_page(), wait="complete" + ) + + remote_reference = await bidi_session.script.evaluate( + expression="document.querySelector('img')", + await_promise=False, + result_ownership="root", + target=ContextTarget(top_context["context"]), + ) + + assert "handle" in remote_reference + # Invalidate shared reference to trigger a "no such node" error + remote_reference["sharedId"] = "foo" + + with pytest.raises(error.NoSuchNodeException): + await bidi_session.script.call_function( + function_declaration="(node) => node.nodeType", + arguments=[remote_reference], + await_promise=False, + target=ContextTarget(top_context["context"]), + ) + + +@pytest.mark.asyncio +@pytest.mark.parametrize( "expression, function_declaration, expected", [ ( @@ -324,6 +402,7 @@ async def test_remote_value_deserialization( "(collection) => collection.item(0)", { "type": "node", + "sharedId": any_string, "value": { "attributes": {}, "childNodeCount": 0, @@ -339,6 +418,7 @@ async def test_remote_value_deserialization( "(nodeList) => nodeList.item(0)", { "type": "node", + "sharedId": any_string, "value": { "attributes": {}, "childNodeCount": 0, @@ -354,7 +434,7 @@ async def test_remote_value_deserialization( "nodelist" ] ) -async def test_remote_value_dom_collection( +async def test_remote_reference_dom_collection( bidi_session, inline, top_context, @@ -382,4 +462,4 @@ async def test_remote_value_dom_collection( arguments=[remote_value], ) - assert result == expected + recursive_compare(expected, result) diff --git a/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/call_function/invalid.py b/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/call_function/invalid.py index cf5a07f41b7..d73705c6724 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/call_function/invalid.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/call_function/invalid.py @@ -10,7 +10,7 @@ pytestmark = pytest.mark.asyncio async def test_params_target_invalid_type(bidi_session, target): with pytest.raises(error.InvalidArgumentException): await bidi_session.script.call_function( - function_declaration="1 + 2", + function_declaration="(arg) => arg", await_promise=False, target=target) @@ -19,7 +19,7 @@ async def test_params_target_invalid_type(bidi_session, target): async def test_params_context_invalid_type(bidi_session, context): with pytest.raises(error.InvalidArgumentException): await bidi_session.script.call_function( - function_declaration="1 + 2", + function_declaration="(arg) => arg", await_promise=False, target=ContextTarget(context)) @@ -28,7 +28,7 @@ async def test_params_context_invalid_type(bidi_session, context): async def test_params_sandbox_invalid_type(bidi_session, top_context, sandbox): with pytest.raises(error.InvalidArgumentException): await bidi_session.script.call_function( - function_declaration="1 + 2", + function_declaration="(arg) => arg", await_promise=False, target=ContextTarget(top_context["context"], sandbox)) @@ -37,7 +37,7 @@ async def test_params_sandbox_invalid_type(bidi_session, top_context, sandbox): async def test_params_context_unknown(bidi_session): with pytest.raises(error.NoSuchFrameException): await bidi_session.script.call_function( - function_declaration="1 + 2", + function_declaration="(arg) => arg", await_promise=False, target=ContextTarget("_UNKNOWN_")) @@ -46,7 +46,7 @@ async def test_params_context_unknown(bidi_session): async def test_params_realm_invalid_type(bidi_session, realm): with pytest.raises(error.InvalidArgumentException): await bidi_session.script.call_function( - function_declaration="1 + 2", + function_declaration="(arg) => arg", await_promise=False, target=RealmTarget(realm)) @@ -54,7 +54,7 @@ async def test_params_realm_invalid_type(bidi_session, realm): async def test_params_realm_unknown(bidi_session): with pytest.raises(error.NoSuchFrameException): await bidi_session.script.call_function( - function_declaration="1 + 2", + function_declaration="(arg) => arg", await_promise=False, target=RealmTarget("_UNKNOWN_")) @@ -74,7 +74,7 @@ async def test_params_this_invalid_type(bidi_session, top_context, this): with pytest.raises(error.InvalidArgumentException): await bidi_session.script.call_function( - function_declaration="1 + 2", + function_declaration="(arg) => arg", this=this, await_promise=False, target=ContextTarget(top_context["context"])) @@ -85,29 +85,61 @@ async def test_params_arguments_invalid_type(bidi_session, top_context, arguments): with pytest.raises(error.InvalidArgumentException): await bidi_session.script.call_function( - function_declaration="1 + 2", + function_declaration="(arg) => arg", arguments=arguments, await_promise=False, target=ContextTarget(top_context["context"])) @pytest.mark.parametrize("argument", [False, "SOME_STRING", 42, {}, []]) -async def test_params_single_argument_invalid_type(bidi_session, top_context, +async def test_params_arguments_entry_invalid_type(bidi_session, top_context, argument): with pytest.raises(error.InvalidArgumentException): await bidi_session.script.call_function( - function_declaration="1 + 2", + function_declaration="(arg) => arg", arguments=[argument], await_promise=False, target=ContextTarget(top_context["context"])) +@pytest.mark.parametrize("value", [None, False, 42, {}, []]) +async def test_params_arguments_handle_invalid_type( + bidi_session, top_context, value +): + serialized_value = { + "handle": value, + } + + with pytest.raises(error.InvalidArgumentException): + await bidi_session.script.call_function( + function_declaration="(arg) => arg", + arguments=[serialized_value], + await_promise=False, + target=ContextTarget(top_context["context"])) + + +@pytest.mark.parametrize("value", [None, False, 42, {}, []]) +async def test_params_arguments_sharedId_invalid_type( + bidi_session, top_context, value +): + serialized_value = { + "sharedId": value, + } + + with pytest.raises(error.InvalidArgumentException): + await bidi_session.script.call_function( + function_declaration="(arg) => arg", + arguments=[serialized_value], + await_promise=False, + target=ContextTarget(top_context["context"])) + + @pytest.mark.parametrize("await_promise", [None, "False", 0, 42, {}, []]) async def test_params_await_promise_invalid_type(bidi_session, top_context, await_promise): with pytest.raises(error.InvalidArgumentException): await bidi_session.script.call_function( - function_declaration="1 + 2", + function_declaration="(arg) => arg", await_promise=await_promise, target=ContextTarget(top_context["context"])) @@ -117,7 +149,7 @@ async def test_params_result_ownership_invalid_value(bidi_session, top_context, result_ownership): with pytest.raises(error.InvalidArgumentException): await bidi_session.script.call_function( - function_declaration="1 + 2", + function_declaration="(arg) => arg", await_promise=False, target=ContextTarget(top_context["context"]), result_ownership=result_ownership) diff --git a/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/call_function/result_node.py b/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/call_function/result_node.py index 08e47be5f71..e1575374fd5 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/call_function/result_node.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/call_function/result_node.py @@ -1,18 +1,7 @@ import pytest from webdriver.bidi.modules.script import ContextTarget - -page_data = """ - <div id="deep"><p><span></span></p><br/></div> - <div id="text-node"><p></p>Lorem</div> - <br/> - <svg id="foo"></svg> - <div id="comment"><!-- Comment --></div> - <script> - var svg = document.querySelector("svg"); - svg.setAttributeNS("http://www.w3.org/2000/svg", "svg:foo", "bar"); - </script> -""" +from ... import any_string, recursive_compare @pytest.mark.asyncio @@ -25,6 +14,7 @@ page_data = """ """, { "type": "node", + "sharedId": any_string, "value": { "attributes": {}, "childNodeCount": 0, @@ -41,9 +31,9 @@ page_data = """ """, { "type": "node", + "sharedId": any_string, "value": { "attributes": { - "id": "foo", "svg:foo": "bar", }, "childNodeCount": 0, @@ -56,24 +46,17 @@ page_data = """ ), ( # all children including non-element nodes """ - () => document.querySelector("div#text-node") + () => document.querySelector("#with-text-node") """, { "type": "node", + "sharedId": any_string, "value": { - "attributes": {"id": "text-node"}, - "childNodeCount": 2, + "attributes": {"id": "with-text-node"}, + "childNodeCount": 1, "children": [{ "type": "node", - "value": { - "attributes": {}, - "childNodeCount": 0, - "localName": "p", - "namespaceURI": "http://www.w3.org/1999/xhtml", - "nodeType": 1 - } - },{ - "type": "node", + "sharedId": any_string, "value": { "childNodeCount": 0, "nodeType": 3, @@ -88,15 +71,17 @@ page_data = """ ), ( # children limited due to max depth """ - () => document.querySelector("div#deep") + () => document.querySelector("#with-children") """, { "type": "node", + "sharedId": any_string, "value": { - "attributes": {"id": "deep"}, + "attributes": {"id": "with-children"}, "childNodeCount": 2, "children": [{ "type": "node", + "sharedId": any_string, "value": { "attributes": {}, "childNodeCount": 1, @@ -104,8 +89,9 @@ page_data = """ "namespaceURI": "http://www.w3.org/1999/xhtml", "nodeType": 1 } - },{ + }, { "type": "node", + "sharedId": any_string, "value": { "attributes": {}, "childNodeCount": 0, @@ -126,6 +112,7 @@ page_data = """ """, { "type": "node", + "sharedId": any_string, "value": { "attributes": {}, "childNodeCount": 0, @@ -145,10 +132,10 @@ page_data = """ ] ) async def test_element_node( - bidi_session, inline, top_context, function_declaration, expected + bidi_session, get_test_page, top_context, function_declaration, expected ): await bidi_session.browsing_context.navigate( - context=top_context['context'], url=inline(page_data), wait="complete" + context=top_context['context'], url=get_test_page(), wait="complete" ) result = await bidi_session.script.call_function( @@ -157,7 +144,7 @@ async def test_element_node( await_promise=False, ) - assert result == expected + recursive_compare(expected, result) @pytest.mark.asyncio @@ -166,25 +153,27 @@ async def test_element_node( [ ( """ - () => document.querySelector("svg").attributes[0] + () => document.querySelector("input#button").attributes[0] """, { "type": "node", + "sharedId": any_string, "value": { "childNodeCount": 0, "children": [], "localName": "id", "namespaceURI": None, "nodeType": 2, - "nodeValue": "foo", + "nodeValue": "button", }, }, - ),( + ), ( """ - () => document.querySelector("svg").attributes[1] + () => document.querySelector("svg").attributes[0] """, { "type": "node", + "sharedId": any_string, "value": { "childNodeCount": 0, "children": [], @@ -201,10 +190,10 @@ async def test_element_node( ] ) async def test_attribute_node( - bidi_session, inline, top_context, function_declaration, expected + bidi_session, get_test_page, top_context, function_declaration, expected ): await bidi_session.browsing_context.navigate( - context=top_context['context'], url=inline(page_data), wait="complete" + context=top_context['context'], url=get_test_page(), wait="complete" ) result = await bidi_session.script.call_function( @@ -213,7 +202,7 @@ async def test_attribute_node( await_promise=False, ) - assert result == expected + recursive_compare(expected, result) @pytest.mark.asyncio @@ -222,10 +211,11 @@ async def test_attribute_node( [ ( """ - () => document.querySelector("div#text-node").childNodes[1] + () => document.querySelector("#with-text-node").childNodes[0] """, { "type": "node", + "sharedId": any_string, "value": { "childNodeCount": 0, "children": [], @@ -238,9 +228,11 @@ async def test_attribute_node( "basic", ] ) -async def test_text_node(bidi_session, inline, top_context, function_declaration, expected): +async def test_text_node( + bidi_session, get_test_page, top_context, function_declaration, expected +): await bidi_session.browsing_context.navigate( - context=top_context['context'], url=inline(page_data), wait="complete" + context=top_context['context'], url=get_test_page(), wait="complete" ) result = await bidi_session.script.call_function( @@ -249,7 +241,7 @@ async def test_text_node(bidi_session, inline, top_context, function_declaration await_promise=False, ) - assert result == expected + recursive_compare(expected, result) @pytest.mark.asyncio @@ -262,6 +254,7 @@ async def test_text_node(bidi_session, inline, top_context, function_declaration """, { "type": "node", + "sharedId": any_string, "value": { "childNodeCount": 0, "children": [], @@ -287,7 +280,7 @@ async def test_cdata_node(bidi_session, inline, new_tab, function_declaration, e await_promise=False, ) - assert result == expected + recursive_compare(expected, result) @pytest.mark.asyncio @@ -300,6 +293,7 @@ async def test_cdata_node(bidi_session, inline, new_tab, function_declaration, e """, { "type": "node", + "sharedId": any_string, "value": { "childNodeCount": 0, "children": [], @@ -321,14 +315,13 @@ async def test_processing_instruction_node( context=new_tab['context'], url=xml_page, wait="complete" ) - result = await bidi_session.script.call_function( function_declaration=function_declaration, target=ContextTarget(new_tab["context"]), await_promise=False, ) - assert result == expected + recursive_compare(expected, result) @pytest.mark.asyncio @@ -337,10 +330,11 @@ async def test_processing_instruction_node( [ ( """ - () => document.querySelector("div#comment").childNodes[0] + () => document.querySelector("#with-comment").childNodes[0] """, { "type": "node", + "sharedId": any_string, "value": { "childNodeCount": 0, "children": [], @@ -354,10 +348,10 @@ async def test_processing_instruction_node( ] ) async def test_comment_node( - bidi_session, inline, top_context, function_declaration, expected + bidi_session, get_test_page, top_context, function_declaration, expected ): await bidi_session.browsing_context.navigate( - context=top_context['context'], url=inline(page_data), wait="complete" + context=top_context['context'], url=get_test_page(), wait="complete" ) result = await bidi_session.script.call_function( @@ -366,7 +360,7 @@ async def test_comment_node( await_promise=False, ) - assert result == expected + recursive_compare(expected, result) @pytest.mark.asyncio @@ -379,16 +373,19 @@ async def test_comment_node( """, { "type": "node", + "sharedId": any_string, "value": { "childNodeCount": 2, "children": [{ "type": "node", + "sharedId": any_string, "value": { "childNodeCount": 0, "nodeType": 10 } }, { "type": "node", + "sharedId": any_string, "value": { "attributes": {}, "childNodeCount": 2, @@ -406,10 +403,10 @@ async def test_comment_node( ] ) async def test_document_node( - bidi_session, inline, top_context, function_declaration, expected + bidi_session, get_test_page, top_context, function_declaration, expected ): await bidi_session.browsing_context.navigate( - context=top_context['context'], url=inline(page_data), wait="complete" + context=top_context['context'], url=get_test_page(), wait="complete" ) result = await bidi_session.script.call_function( @@ -418,7 +415,7 @@ async def test_document_node( await_promise=False, ) - assert result == expected + recursive_compare(expected, result) @pytest.mark.asyncio @@ -431,6 +428,7 @@ async def test_document_node( """, { "type": "node", + "sharedId": any_string, "value": { "childNodeCount": 0, "children": [], @@ -443,10 +441,10 @@ async def test_document_node( ] ) async def test_doctype_node( - bidi_session, inline, top_context, function_declaration, expected + bidi_session, get_test_page, top_context, function_declaration, expected ): await bidi_session.browsing_context.navigate( - context=top_context['context'], url=inline(page_data), wait="complete" + context=top_context['context'], url=get_test_page(), wait="complete" ) result = await bidi_session.script.call_function( @@ -455,7 +453,7 @@ async def test_doctype_node( await_promise=False, ) - assert result == expected + recursive_compare(expected, result) @pytest.mark.asyncio @@ -464,10 +462,35 @@ async def test_doctype_node( [ ( """ - () => new DocumentFragment() + () => document.querySelector("#custom-element").shadowRoot + """, + { + "type": "node", + "sharedId": any_string, + "value": { + "childNodeCount": 1, + "children": [{ + "type": "node", + "sharedId": any_string, + "value": { + "attributes": {"id": "in-shadow-dom"}, + "childNodeCount": 1, + "localName": "div", + "namespaceURI": "http://www.w3.org/1999/xhtml", + "nodeType": 1 + } + }], + "nodeType": 11 + } + } + ), + ( + """ + () => document.createDocumentFragment() """, { "type": "node", + "sharedId": any_string, "value": { "childNodeCount": 0, "children": [], @@ -476,14 +499,15 @@ async def test_doctype_node( } ), ], ids=[ - "basic", + "shadow root", + "not connected", ] ) async def test_document_fragment_node( - bidi_session, inline, top_context, function_declaration, expected + bidi_session, get_test_page, top_context, function_declaration, expected ): await bidi_session.browsing_context.navigate( - context=top_context['context'], url=inline(page_data), wait="complete" + context=top_context['context'], url=get_test_page(), wait="complete" ) result = await bidi_session.script.call_function( @@ -492,30 +516,31 @@ async def test_document_fragment_node( await_promise=False, ) - assert result == expected + recursive_compare(expected, result) @pytest.mark.asyncio -async def test_node_within_object(bidi_session, inline, top_context): +async def test_node_within_object(bidi_session, get_test_page, top_context): await bidi_session.browsing_context.navigate( - context=top_context['context'], url=inline(page_data), wait="complete" + context=top_context['context'], url=get_test_page(), wait="complete" ) result = await bidi_session.script.call_function( - function_declaration="""() => ({"elem": document.querySelector("span")})""", + function_declaration="""() => ({"elem": document.querySelector("img")})""", target=ContextTarget(top_context["context"]), await_promise=False, ) - assert result == { + expected = { "type": "object", "value": [ ["elem", { "type": "node", + "sharedId": any_string, "value": { "attributes": {}, "childNodeCount": 0, - "localName": "span", + "localName": "img", "namespaceURI": "http://www.w3.org/1999/xhtml", "nodeType": 1 } @@ -523,22 +548,25 @@ async def test_node_within_object(bidi_session, inline, top_context): ] } + recursive_compare(expected, result) + @pytest.mark.asyncio @pytest.mark.parametrize( "function_declaration, expected", [ ( - "() => document.getElementsByTagName('span')", + "() => document.getElementsByTagName('img')", { "type": "htmlcollection", "value": [ { "type": "node", + "sharedId": any_string, "value": { "attributes": {}, "childNodeCount": 0, - "localName": "span", + "localName": "img", "namespaceURI": "http://www.w3.org/1999/xhtml", "nodeType": 1 } @@ -547,16 +575,17 @@ async def test_node_within_object(bidi_session, inline, top_context): } ), ( - "() => document.querySelectorAll('span')", + "() => document.querySelectorAll('img')", { "type": "nodelist", "value": [ { "type": "node", + "sharedId": any_string, "value": { "attributes": {}, "childNodeCount": 0, - "localName": "span", + "localName": "img", "namespaceURI": "http://www.w3.org/1999/xhtml", "nodeType": 1 } @@ -571,13 +600,13 @@ async def test_node_within_object(bidi_session, inline, top_context): ) async def test_node_within_dom_collection( bidi_session, - inline, + get_test_page, top_context, function_declaration, expected ): await bidi_session.browsing_context.navigate( - context=top_context['context'], url=inline(page_data), wait="complete" + context=top_context['context'], url=get_test_page(), wait="complete" ) result = await bidi_session.script.call_function( @@ -586,4 +615,4 @@ async def test_node_within_dom_collection( await_promise=False, ) - assert result == expected + recursive_compare(expected, result) diff --git a/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/call_function/sandbox.py b/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/call_function/sandbox.py index e0a4914d8f6..382ede3c783 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/call_function/sandbox.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/call_function/sandbox.py @@ -128,6 +128,23 @@ async def test_sandbox_with_side_effects(bidi_session, new_tab): @pytest.mark.asyncio +async def test_sandbox_returns_same_node(bidi_session, new_tab): + node = await bidi_session.script.call_function( + function_declaration="() => document.querySelector('body')", + target=ContextTarget(new_tab["context"]), + await_promise=True, + ) + recursive_compare({"type": "node", "sharedId": any_string}, node) + + node_sandbox = await bidi_session.script.call_function( + function_declaration="() => document.querySelector('body')", + target=ContextTarget(new_tab["context"], sandbox="sandbox_1"), + await_promise=True, + ) + assert node_sandbox == node + + +@pytest.mark.asyncio async def test_arguments(bidi_session, new_tab): argument = { "type": "set", @@ -135,22 +152,40 @@ async def test_arguments(bidi_session, new_tab): {"type": "string", "value": "foobar"}, ], } + result = await bidi_session.script.call_function( - function_declaration=f"""(arg) => {{ + function_declaration="""(arg) => { if(! (arg instanceof Set)) throw Error("Argument type should be Set, but was "+ Object.prototype.toString.call(arg)); return arg; - }}""", + }""", arguments=[argument], await_promise=False, target=ContextTarget(new_tab["context"], "sandbox"), ) - recursive_compare(argument, result) @pytest.mark.asyncio +async def test_arguments_uses_same_node_in_sandbox(bidi_session, new_tab): + node = await bidi_session.script.call_function( + function_declaration="() => document.querySelector('body')", + target=ContextTarget(new_tab["context"]), + await_promise=True, + ) + recursive_compare({"type": "node", "sharedId": any_string}, node) + + result = await bidi_session.script.call_function( + function_declaration="""(node) => node.localName""", + arguments=[node], + await_promise=False, + target=ContextTarget(new_tab["context"], "sandbox"), + ) + assert result == {"type": "string", "value": "body"} + + +@pytest.mark.asyncio @pytest.mark.parametrize("await_promise", [True, False]) async def test_exception_details(bidi_session, new_tab, await_promise): function_declaration = "()=>{{ throw 1 }}" diff --git a/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/classic_interop/__init__.py b/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/classic_interop/__init__.py new file mode 100644 index 00000000000..e69de29bb2d --- /dev/null +++ b/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/classic_interop/__init__.py diff --git a/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/classic_interop/node_shared_id.py b/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/classic_interop/node_shared_id.py new file mode 100644 index 00000000000..410d029207c --- /dev/null +++ b/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/classic_interop/node_shared_id.py @@ -0,0 +1,72 @@ +import pytest + +from webdriver import Element, ShadowRoot +from webdriver.bidi.modules.script import ContextTarget + +pytestmark = pytest.mark.asyncio + + +@pytest.mark.parametrize( + "expression, expected_node_type", + [ + ("""return document.querySelector("div#with-children")""", 1), + ("""return document.querySelector("custom-element").shadowRoot""", 11), + ], + ids=["Element", "ShadowRoot"], +) +async def test_web_reference_created_in_classic( + bidi_session, + current_session, + get_test_page, + top_context, + expression, + expected_node_type +): + current_session.url = get_test_page() + + node = current_session.execute_script(expression) + shared_id = node.id + + # Use element reference from WebDriver classic in WebDriver BiDi + result = await bidi_session.script.call_function( + function_declaration="(node)=>{return node.nodeType}", + arguments=[{"sharedId": shared_id}], + await_promise=False, + target=ContextTarget(top_context["context"]), + ) + + assert result == {"type": "number", "value": expected_node_type} + + +@pytest.mark.parametrize( + "expression, expected", + [ + ("""document.querySelector("div#with-children")""", 1), + ("""document.querySelector("custom-element").shadowRoot""", 11), + ], + ids=["Element", "ShadowRoot"], +) +async def test_web_reference_created_in_bidi( + bidi_session, + current_session, + get_test_page, + top_context, + expression, + expected +): + current_session.url = get_test_page() + + result = await bidi_session.script.evaluate( + expression=expression, + target=ContextTarget(top_context["context"]), + await_promise=False, + ) + + nodeType = result["value"]["nodeType"] + assert nodeType == expected + + # Use web reference from WebDriver BiDi in WebDriver classic + types = {1: Element, 11: ShadowRoot} + node = types[nodeType](current_session, result["sharedId"]) + nodeType = current_session.execute_script("""return arguments[0].nodeType""", args=(node,)) + assert nodeType == expected diff --git a/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/evaluate/__init__.py b/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/evaluate/__init__.py index e69de29bb2d..8b137891791 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/evaluate/__init__.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/evaluate/__init__.py @@ -0,0 +1 @@ + diff --git a/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/evaluate/result_node.py b/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/evaluate/result_node.py index 0d0589a5f38..63915a8f4a4 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/evaluate/result_node.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/evaluate/result_node.py @@ -1,18 +1,7 @@ import pytest from webdriver.bidi.modules.script import ContextTarget - -page_data = """ - <div id="deep"><p><span></span></p><br/></div> - <div id="text-node"><p></p>Lorem</div> - <br/> - <svg id="foo"></svg> - <div id="comment"><!-- Comment --></div> - <script> - var svg = document.querySelector("svg"); - svg.setAttributeNS("http://www.w3.org/2000/svg", "svg:foo", "bar"); - </script> -""" +from ... import any_string, recursive_compare @pytest.mark.asyncio @@ -25,6 +14,7 @@ page_data = """ """, { "type": "node", + "sharedId": any_string, "value": { "attributes": {}, "childNodeCount": 0, @@ -41,9 +31,9 @@ page_data = """ """, { "type": "node", + "sharedId": any_string, "value": { "attributes": { - "id": "foo", "svg:foo": "bar", }, "childNodeCount": 0, @@ -56,24 +46,17 @@ page_data = """ ), ( # all children including non-element nodes """ - document.querySelector("div#text-node") + document.querySelector("#with-text-node") """, { "type": "node", + "sharedId": any_string, "value": { - "attributes": {"id": "text-node"}, - "childNodeCount": 2, + "attributes": {"id": "with-text-node"}, + "childNodeCount": 1, "children": [{ "type": "node", - "value": { - "attributes": {}, - "childNodeCount": 0, - "localName": "p", - "namespaceURI": "http://www.w3.org/1999/xhtml", - "nodeType": 1 - } - },{ - "type": "node", + "sharedId": any_string, "value": { "childNodeCount": 0, "nodeType": 3, @@ -88,15 +71,17 @@ page_data = """ ), ( # children limited due to max depth """ - document.querySelector("div#deep") + document.querySelector("#with-children") """, { "type": "node", + "sharedId": any_string, "value": { - "attributes": {"id": "deep"}, + "attributes": {"id": "with-children"}, "childNodeCount": 2, "children": [{ "type": "node", + "sharedId": any_string, "value": { "attributes": {}, "childNodeCount": 1, @@ -104,8 +89,9 @@ page_data = """ "namespaceURI": "http://www.w3.org/1999/xhtml", "nodeType": 1 } - },{ + }, { "type": "node", + "sharedId": any_string, "value": { "attributes": {}, "childNodeCount": 0, @@ -126,6 +112,7 @@ page_data = """ """, { "type": "node", + "sharedId": any_string, "value": { "attributes": {}, "childNodeCount": 0, @@ -144,9 +131,9 @@ page_data = """ "not_connected", ] ) -async def test_element_node(bidi_session, inline, top_context, expression, expected): +async def test_element_node(bidi_session, get_test_page, top_context, expression, expected): await bidi_session.browsing_context.navigate( - context=top_context['context'], url=inline(page_data), wait="complete" + context=top_context['context'], url=get_test_page(), wait="complete" ) result = await bidi_session.script.evaluate( @@ -155,7 +142,7 @@ async def test_element_node(bidi_session, inline, top_context, expression, expec await_promise=False, ) - assert result == expected + recursive_compare(expected, result) @pytest.mark.asyncio @@ -164,25 +151,27 @@ async def test_element_node(bidi_session, inline, top_context, expression, expec [ ( """ - document.querySelector("svg").attributes[0] + document.querySelector("input#button").attributes[0] """, { "type": "node", + "sharedId": any_string, "value": { "childNodeCount": 0, "children": [], "localName": "id", "namespaceURI": None, "nodeType": 2, - "nodeValue": "foo", + "nodeValue": "button", }, }, - ),( + ), ( """ - document.querySelector("svg").attributes[1] + document.querySelector("svg").attributes[0] """, { "type": "node", + "sharedId": any_string, "value": { "childNodeCount": 0, "children": [], @@ -195,12 +184,12 @@ async def test_element_node(bidi_session, inline, top_context, expression, expec ), ], ids=[ "basic", - "namespace", + "namespaceURI", ] ) -async def test_attribute_node(bidi_session, inline, top_context, expression, expected): +async def test_attribute_node(bidi_session, get_test_page, top_context, expression, expected): await bidi_session.browsing_context.navigate( - context=top_context['context'], url=inline(page_data), wait="complete" + context=top_context['context'], url=get_test_page(), wait="complete" ) result = await bidi_session.script.evaluate( @@ -209,7 +198,7 @@ async def test_attribute_node(bidi_session, inline, top_context, expression, exp await_promise=False, ) - assert result == expected + recursive_compare(expected, result) @pytest.mark.asyncio @@ -218,10 +207,11 @@ async def test_attribute_node(bidi_session, inline, top_context, expression, exp [ ( """ - document.querySelector("div#text-node").childNodes[1] + document.querySelector("#with-text-node").childNodes[0] """, { "type": "node", + "sharedId": any_string, "value": { "childNodeCount": 0, "children": [], @@ -234,9 +224,9 @@ async def test_attribute_node(bidi_session, inline, top_context, expression, exp "basic", ] ) -async def test_text_node(bidi_session, inline, top_context, expression, expected): +async def test_text_node(bidi_session, get_test_page, top_context, expression, expected): await bidi_session.browsing_context.navigate( - context=top_context['context'], url=inline(page_data), wait="complete" + context=top_context['context'], url=get_test_page(), wait="complete" ) result = await bidi_session.script.evaluate( @@ -245,7 +235,7 @@ async def test_text_node(bidi_session, inline, top_context, expression, expected await_promise=False, ) - assert result == expected + recursive_compare(expected, result) @pytest.mark.asyncio @@ -258,6 +248,7 @@ async def test_text_node(bidi_session, inline, top_context, expression, expected """, { "type": "node", + "sharedId": any_string, "value": { "childNodeCount": 0, "children": [], @@ -283,7 +274,7 @@ async def test_cdata_node(bidi_session, inline, new_tab, expression, expected): await_promise=False, ) - assert result == expected + recursive_compare(expected, result) @pytest.mark.asyncio @@ -296,6 +287,7 @@ async def test_cdata_node(bidi_session, inline, new_tab, expression, expected): """, { "type": "node", + "sharedId": any_string, "value": { "childNodeCount": 0, "children": [], @@ -317,14 +309,13 @@ async def test_processing_instruction_node( context=new_tab['context'], url=xml_page, wait="complete" ) - result = await bidi_session.script.evaluate( expression=expression, target=ContextTarget(new_tab["context"]), await_promise=False, ) - assert result == expected + recursive_compare(expected, result) @pytest.mark.asyncio @@ -333,10 +324,11 @@ async def test_processing_instruction_node( [ ( """ - document.querySelector("div#comment").childNodes[0] + document.querySelector("#with-comment").childNodes[0] """, { "type": "node", + "sharedId": any_string, "value": { "childNodeCount": 0, "children": [], @@ -349,9 +341,9 @@ async def test_processing_instruction_node( "basic", ] ) -async def test_comment_node(bidi_session, inline, top_context, expression, expected): +async def test_comment_node(bidi_session, get_test_page, top_context, expression, expected): await bidi_session.browsing_context.navigate( - context=top_context['context'], url=inline(page_data), wait="complete" + context=top_context['context'], url=get_test_page(), wait="complete" ) result = await bidi_session.script.evaluate( @@ -360,7 +352,7 @@ async def test_comment_node(bidi_session, inline, top_context, expression, expec await_promise=False, ) - assert result == expected + recursive_compare(expected, result) @pytest.mark.asyncio @@ -373,16 +365,19 @@ async def test_comment_node(bidi_session, inline, top_context, expression, expec """, { "type": "node", + "sharedId": any_string, "value": { "childNodeCount": 2, "children": [{ "type": "node", + "sharedId": any_string, "value": { "childNodeCount": 0, "nodeType": 10 } }, { "type": "node", + "sharedId": any_string, "value": { "attributes": {}, "childNodeCount": 2, @@ -399,9 +394,9 @@ async def test_comment_node(bidi_session, inline, top_context, expression, expec "basic", ] ) -async def test_document_node(bidi_session, inline, top_context, expression, expected): +async def test_document_node(bidi_session, get_test_page, top_context, expression, expected): await bidi_session.browsing_context.navigate( - context=top_context['context'], url=inline(page_data), wait="complete" + context=top_context['context'], url=get_test_page(), wait="complete" ) result = await bidi_session.script.evaluate( @@ -410,7 +405,7 @@ async def test_document_node(bidi_session, inline, top_context, expression, expe await_promise=False, ) - assert result == expected + recursive_compare(expected, result) @pytest.mark.asyncio @@ -423,6 +418,7 @@ async def test_document_node(bidi_session, inline, top_context, expression, expe """, { "type": "node", + "sharedId": any_string, "value": { "childNodeCount": 0, "children": [], @@ -434,9 +430,9 @@ async def test_document_node(bidi_session, inline, top_context, expression, expe "basic", ] ) -async def test_doctype_node(bidi_session, inline, top_context, expression, expected): +async def test_doctype_node(bidi_session, get_test_page, top_context, expression, expected): await bidi_session.browsing_context.navigate( - context=top_context['context'], url=inline(page_data), wait="complete" + context=top_context['context'], url=get_test_page(), wait="complete" ) result = await bidi_session.script.evaluate( @@ -445,7 +441,7 @@ async def test_doctype_node(bidi_session, inline, top_context, expression, expec await_promise=False, ) - assert result == expected + recursive_compare(expected, result) @pytest.mark.asyncio @@ -454,10 +450,35 @@ async def test_doctype_node(bidi_session, inline, top_context, expression, expec [ ( """ + document.querySelector("#custom-element").shadowRoot; + """, + { + "type": "node", + "sharedId": any_string, + "value": { + "childNodeCount": 1, + "children": [{ + "type": "node", + "sharedId": any_string, + "value": { + "attributes": {"id": "in-shadow-dom"}, + "childNodeCount": 1, + "localName": "div", + "namespaceURI": "http://www.w3.org/1999/xhtml", + "nodeType": 1 + } + }], + "nodeType": 11 + } + } + ), + ( + """ new DocumentFragment(); """, { "type": "node", + "sharedId": any_string, "value": { "childNodeCount": 0, "children": [], @@ -466,14 +487,15 @@ async def test_doctype_node(bidi_session, inline, top_context, expression, expec } ), ], ids=[ - "basic", + "shadowRoot", + "not connected" ] ) async def test_document_fragment_node( - bidi_session, inline, top_context, expression, expected + bidi_session, get_test_page, top_context, expression, expected ): await bidi_session.browsing_context.navigate( - context=top_context['context'], url=inline(page_data), wait="complete" + context=top_context['context'], url=get_test_page(), wait="complete" ) result = await bidi_session.script.evaluate( @@ -482,30 +504,31 @@ async def test_document_fragment_node( await_promise=False, ) - assert result == expected + recursive_compare(expected, result) @pytest.mark.asyncio -async def test_node_within_object(bidi_session, inline, top_context): +async def test_node_within_object(bidi_session, get_test_page, top_context): await bidi_session.browsing_context.navigate( - context=top_context['context'], url=inline(page_data), wait="complete" + context=top_context['context'], url=get_test_page(), wait="complete" ) result = await bidi_session.script.evaluate( - expression="""({"elem": document.querySelector("span")})""", + expression="""({"elem": document.querySelector("img")})""", target=ContextTarget(top_context["context"]), await_promise=False, ) - assert result == { + expected = { "type": "object", "value": [ ["elem", { "type": "node", + "sharedId": any_string, "value": { "attributes": {}, "childNodeCount": 0, - "localName": "span", + "localName": "img", "namespaceURI": "http://www.w3.org/1999/xhtml", "nodeType": 1 } @@ -513,22 +536,25 @@ async def test_node_within_object(bidi_session, inline, top_context): ] } + recursive_compare(expected, result) + @pytest.mark.asyncio @pytest.mark.parametrize( "expression, expected", [ ( - "document.getElementsByTagName('span')", + "document.getElementsByTagName('img')", { "type": "htmlcollection", "value": [ { "type": "node", + "sharedId": any_string, "value": { "attributes": {}, "childNodeCount": 0, - "localName": "span", + "localName": "img", "namespaceURI": "http://www.w3.org/1999/xhtml", "nodeType": 1 } @@ -537,16 +563,17 @@ async def test_node_within_object(bidi_session, inline, top_context): } ), ( - "document.querySelectorAll('span')", + "document.querySelectorAll('img')", { "type": "nodelist", "value": [ { "type": "node", + "sharedId": any_string, "value": { "attributes": {}, "childNodeCount": 0, - "localName": "span", + "localName": "img", "namespaceURI": "http://www.w3.org/1999/xhtml", "nodeType": 1 } @@ -561,13 +588,13 @@ async def test_node_within_object(bidi_session, inline, top_context): ) async def test_node_within_dom_collection( bidi_session, - inline, + get_test_page, top_context, expression, expected ): await bidi_session.browsing_context.navigate( - context=top_context['context'], url=inline(page_data), wait="complete" + context=top_context['context'], url=get_test_page(), wait="complete" ) result = await bidi_session.script.evaluate( @@ -576,4 +603,4 @@ async def test_node_within_dom_collection( await_promise=False, ) - assert result == expected + recursive_compare(expected, result) diff --git a/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/evaluate/sandbox.py b/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/evaluate/sandbox.py index ba4eb732d16..3a6771780d5 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/evaluate/sandbox.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/bidi/script/evaluate/sandbox.py @@ -128,6 +128,23 @@ async def test_sandbox_with_side_effects(bidi_session, new_tab): @pytest.mark.asyncio +async def test_sandbox_returns_same_node(bidi_session, new_tab): + node = await bidi_session.script.evaluate( + expression="document.querySelector('body')", + target=ContextTarget(new_tab["context"]), + await_promise=True, + ) + recursive_compare({"type": "node", "sharedId": any_string}, node) + + node_sandbox = await bidi_session.script.evaluate( + expression="document.querySelector('body')", + target=ContextTarget(new_tab["context"], sandbox="sandbox_1"), + await_promise=True, + ) + assert node_sandbox == node + + +@pytest.mark.asyncio @pytest.mark.parametrize("await_promise", [True, False]) async def test_exception_details(bidi_session, new_tab, await_promise): if await_promise: diff --git a/tests/wpt/web-platform-tests/webdriver/tests/element_clear/clear.py b/tests/wpt/web-platform-tests/webdriver/tests/element_clear/clear.py index fa96ed3a58a..9b0d7f2133f 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/element_clear/clear.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/element_clear/clear.py @@ -45,7 +45,7 @@ def test_null_response_value(session, inline): def test_no_top_browsing_context(session, closed_window): - element = Element("foo", session) + element = Element(session, "foo") response = element_clear(session, element) assert_error(response, "no such window") @@ -59,14 +59,14 @@ def test_no_top_browsing_context(session, closed_window): def test_no_browsing_context(session, closed_frame): - element = Element("foo", session) + element = Element(session, "foo") response = element_clear(session, element) assert_error(response, "no such window") def test_no_such_element_with_invalid_value(session): - element = Element("foo", session) + element = Element(session, "foo") response = element_clear(session, element) assert_error(response, "no such element") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/element_click/click.py b/tests/wpt/web-platform-tests/webdriver/tests/element_click/click.py index 79be957d1b2..3c3f7d70e6c 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/element_click/click.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/element_click/click.py @@ -21,7 +21,7 @@ def test_null_response_value(session, inline): def test_no_top_browsing_context(session, closed_window): - element = Element("foo", session) + element = Element(session, "foo") response = element_click(session, element) assert_error(response, "no such window") @@ -35,14 +35,14 @@ def test_no_top_browsing_context(session, closed_window): def test_no_browsing_context(session, closed_frame): - element = Element("foo", session) + element = Element(session, "foo") response = element_click(session, element) assert_error(response, "no such window") def test_no_such_element_with_invalid_value(session): - element = Element("foo", session) + element = Element(session, "foo") response = element_click(session, element) assert_error(response, "no such element") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/element_send_keys/send_keys.py b/tests/wpt/web-platform-tests/webdriver/tests/element_send_keys/send_keys.py index 854d2af42cc..281c7ad719d 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/element_send_keys/send_keys.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/element_send_keys/send_keys.py @@ -34,7 +34,7 @@ def test_null_response_value(session, inline): def test_no_top_browsing_context(session, closed_window): - element = Element("foo", session) + element = Element(session, "foo") response = element_send_keys(session, element, "foo") assert_error(response, "no such window") @@ -48,14 +48,14 @@ def test_no_top_browsing_context(session, closed_window): def test_no_browsing_context(session, closed_frame): - element = Element("foo", session) + element = Element(session, "foo") response = element_send_keys(session, element, "foo") assert_error(response, "no such window") def test_no_such_element_with_invalid_value(session): - element = Element("foo", session) + element = Element(session, "foo") response = element_send_keys(session, element, "foo") assert_error(response, "no such element") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/arguments.py b/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/arguments.py index 55fd9527aea..ead6e0c186e 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/arguments.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/arguments.py @@ -55,7 +55,7 @@ def test_object(session): def test_no_such_element_with_invalid_value(session): - element = Element("foo", session) + element = Element(session, "foo") result = execute_async_script(session, """ arguments[1](true); diff --git a/tests/wpt/web-platform-tests/webdriver/tests/execute_script/arguments.py b/tests/wpt/web-platform-tests/webdriver/tests/execute_script/arguments.py index 53c49aaa689..b8657ce0efa 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/execute_script/arguments.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/execute_script/arguments.py @@ -47,7 +47,7 @@ def test_object(session): def test_no_such_element_with_invalid_value(session): - element = Element("foo", session) + element = Element(session, "foo") result = execute_script(session, "return true;", args=[element]) assert_error(result, "no such element") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/get_computed_label/get.py b/tests/wpt/web-platform-tests/webdriver/tests/get_computed_label/get.py index 8124fee0c9d..0dc00a471a9 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/get_computed_label/get.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/get_computed_label/get.py @@ -19,7 +19,7 @@ def test_no_browsing_context(session, closed_frame): def test_no_such_element_with_invalid_value(session): - element = Element("foo", session) + element = Element(session, "foo") result = get_computed_label(session, element.id) assert_error(result, "no such element") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/get_computed_role/get.py b/tests/wpt/web-platform-tests/webdriver/tests/get_computed_role/get.py index dcfe753f0dc..8d15e8fb90d 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/get_computed_role/get.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/get_computed_role/get.py @@ -19,7 +19,7 @@ def test_no_browsing_context(session, closed_frame): def test_no_such_element_with_invalid_value(session): - element = Element("foo", session) + element = Element(session, "foo") result = get_computed_role(session, element.id) assert_error(result, "no such element") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/get_element_attribute/get.py b/tests/wpt/web-platform-tests/webdriver/tests/get_element_attribute/get.py index e23d7e4d5ab..375f25032c0 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/get_element_attribute/get.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/get_element_attribute/get.py @@ -30,7 +30,7 @@ def test_no_browsing_context(session, closed_frame): def test_no_such_element_with_invalid_value(session): - element = Element("foo", session) + element = Element(session, "foo") response = get_element_attribute(session, element.id, "id") assert_error(response, "no such element") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/get_element_css_value/get.py b/tests/wpt/web-platform-tests/webdriver/tests/get_element_css_value/get.py index f9797c2cff5..6f0a8a56395 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/get_element_css_value/get.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/get_element_css_value/get.py @@ -34,7 +34,7 @@ def test_no_browsing_context(session, closed_frame): def test_no_such_element_with_invalid_value(session): - element = Element("foo", session) + element = Element(session, "foo") response = get_element_css_value(session, element.id, "display") assert_error(response, "no such element") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/get_element_property/get.py b/tests/wpt/web-platform-tests/webdriver/tests/get_element_property/get.py index 072375804e8..84e4e896281 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/get_element_property/get.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/get_element_property/get.py @@ -31,7 +31,7 @@ def test_no_browsing_context(session, closed_frame): def test_no_such_element_with_invalid_value(session): - element = Element("foo", session) + element = Element(session, "foo") response = get_element_property(session, element.id, "id") assert_error(response, "no such element") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/get_element_rect/get.py b/tests/wpt/web-platform-tests/webdriver/tests/get_element_rect/get.py index 7f87b44e7e9..942f119f43c 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/get_element_rect/get.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/get_element_rect/get.py @@ -34,7 +34,7 @@ def test_no_browsing_context(session, closed_frame): def test_no_such_element_with_invalid_value(session): - element = Element("foo", session) + element = Element(session, "foo") response = get_element_rect(session, element.id) assert_error(response, "no such element") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/get_element_shadow_root/get.py b/tests/wpt/web-platform-tests/webdriver/tests/get_element_shadow_root/get.py index 61d0d008100..d9adde0b9e3 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/get_element_shadow_root/get.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/get_element_shadow_root/get.py @@ -30,7 +30,7 @@ def test_no_browsing_context(session, closed_frame): def test_no_such_element_with_invalid_value(session): - element = Element("foo", session) + element = Element(session, "foo") response = get_shadow_root(session, element.id) assert_error(response, "no such element") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/get_element_tag_name/get.py b/tests/wpt/web-platform-tests/webdriver/tests/get_element_tag_name/get.py index 1bf19309e45..3bb03d79886 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/get_element_tag_name/get.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/get_element_tag_name/get.py @@ -30,7 +30,7 @@ def test_no_browsing_context(session, closed_frame): def test_no_such_element_with_invalid_value(session): - element = Element("foo", session) + element = Element(session, "foo") response = get_element_tag_name(session, element.id) assert_error(response, "no such element") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/get_element_text/get.py b/tests/wpt/web-platform-tests/webdriver/tests/get_element_text/get.py index aa36c487c80..e8d559cf661 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/get_element_text/get.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/get_element_text/get.py @@ -30,7 +30,7 @@ def test_no_browsing_context(session, closed_frame): def test_no_such_element_with_invalid_value(session): - element = Element("foo", session) + element = Element(session, "foo") response = get_element_text(session, element.id) assert_error(response, "no such element") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/is_element_enabled/enabled.py b/tests/wpt/web-platform-tests/webdriver/tests/is_element_enabled/enabled.py index 34e5cce4197..fccff383a55 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/is_element_enabled/enabled.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/is_element_enabled/enabled.py @@ -33,7 +33,7 @@ def test_no_browsing_context(session, closed_frame): def test_no_such_element_with_invalid_value(session): - element = Element("foo", session) + element = Element(session, "foo") response = is_element_enabled(session, element.id) assert_error(response, "no such element") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/is_element_selected/selected.py b/tests/wpt/web-platform-tests/webdriver/tests/is_element_selected/selected.py index b119705e7dd..1fb5b9ce86b 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/is_element_selected/selected.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/is_element_selected/selected.py @@ -49,7 +49,7 @@ def test_no_browsing_context(session, closed_frame): def test_no_such_element_with_invalid_value(session): - element = Element("foo", session) + element = Element(session, "foo") response = is_element_selected(session, element.id) assert_error(response, "no such element") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/print/__init__.py b/tests/wpt/web-platform-tests/webdriver/tests/print/__init__.py index 788c0e1a317..e69de29bb2d 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/print/__init__.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/print/__init__.py @@ -1,21 +0,0 @@ -def load_pdf_document(session, inline, pdf_data): - """Load a PDF document in the browser using pdf.js""" - session.url = inline(""" -<!doctype html> -<script src="/_pdf_js/pdf.js"></script> -<canvas></canvas> -<script> -async function getText() { - pages = []; - let loadingTask = pdfjsLib.getDocument({data: atob("%s")}); - let pdf = await loadingTask.promise; - for (let pageNumber=1; pageNumber<=pdf.numPages; pageNumber++) { - let page = await pdf.getPage(pageNumber); - textContent = await page.getTextContent() - text = textContent.items.map(x => x.str).join(""); - pages.push(text); - } - return pages -} -</script> -""" % pdf_data) diff --git a/tests/wpt/web-platform-tests/webdriver/tests/print/printcmd.py b/tests/wpt/web-platform-tests/webdriver/tests/print/printcmd.py index 169e2249a99..415786675c5 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/print/printcmd.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/print/printcmd.py @@ -3,7 +3,6 @@ from base64 import decodebytes import pytest -from . import load_pdf_document from tests.support.asserts import assert_error, assert_success @@ -91,7 +90,7 @@ def test_large_html_document(session, inline): (["-5", "2-"], ["Page 1", "Page 2", "Page 3", "Page 4", "Page 5", "Page 6", "Page 7", "Page 8", "Page 9", "Page 10"]), ([], ["Page 1", "Page 2", "Page 3", "Page 4", "Page 5", "Page 6", "Page 7", "Page 8", "Page 9", "Page 10"]), ]) -def test_page_ranges_document(session, inline, ranges, expected): +def test_page_ranges_document(session, inline, load_pdf_document, ranges, expected): session.url = inline(""" <style> div {page-break-after: always} @@ -116,7 +115,7 @@ div {page-break-after: always} # TODO: Test that the output is reasonable assert_pdf(pdf) - load_pdf_document(session, inline, value) + load_pdf_document(value) pages = session.execute_async_script("""let callback = arguments[arguments.length - 1]; window.getText().then(pages => callback(pages));""") assert pages == expected diff --git a/tests/wpt/web-platform-tests/webdriver/tests/support/fixtures.py b/tests/wpt/web-platform-tests/webdriver/tests/support/fixtures.py index e63c0d01d26..7fff07bb407 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/support/fixtures.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/support/fixtures.py @@ -250,6 +250,118 @@ def iframe(inline): return iframe + +@pytest.fixture +def get_test_page(iframe, inline): + def get_test_page( + as_frame=False, + frame_doc=None, + shadow_doc=None, + nested_shadow_dom=False + ): + if frame_doc is None: + frame_doc = """<div id="in-frame"><input type="checkbox"/></div>""" + + if shadow_doc is None: + shadow_doc = """<div id="in-shadow-dom"><input type="checkbox"/></div>""" + + definition_inner_shadow_dom = "" + if nested_shadow_dom: + definition_inner_shadow_dom = f""" + customElements.define('inner-custom-element', + class extends HTMLElement {{ + constructor() {{ + super(); + this.attachShadow({{mode: "open"}}).innerHTML = ` + {shadow_doc} + `; + }} + }} + ); + """ + shadow_doc = """ + <style> + inner-custom-element { + display:block; width:20px; height:20px; + } + </style> + <div id="in-nested-shadow-dom"> + <inner-custom-element></inner-custom-element> + </div> + """ + + page_data = f""" + <style> + custom-element {{ + display:block; width:20px; height:20px; + }} + </style> + <div id="with-children"><p><span></span></p><br/></div> + <div id="with-text-node">Lorem</div> + <div id="with-comment"><!-- Comment --></div> + + <input id="button" type="button"/> + <input id="checkbox" type="checkbox"/> + <input id="file" type="file"/> + <input id="hidden" type="hidden"/> + <input id="text" type="text"/> + + {iframe(frame_doc)} + + <img /> + <svg></svg> + + <custom-element id="custom-element"></custom-element> + <script> + var svg = document.querySelector("svg"); + svg.setAttributeNS("http://www.w3.org/2000/svg", "svg:foo", "bar"); + + customElements.define("custom-element", + class extends HTMLElement {{ + constructor() {{ + super(); + this.attachShadow({{mode: "open"}}).innerHTML = `{shadow_doc}`; + }} + }} + ); + {definition_inner_shadow_dom} + </script>""" + + if as_frame: + return inline(iframe(page_data)) + else: + return inline(page_data) + + return get_test_page + + +@pytest.fixture +def test_page_with_pdf_js(inline): + """Prepare an url to load a PDF document in the browser using pdf.js""" + def test_page_with_pdf_js(encoded_pdf_data): + return inline(""" +<!doctype html> +<script src="/_pdf_js/pdf.js"></script> +<canvas></canvas> +<script> +async function getText() { + pages = []; + let loadingTask = pdfjsLib.getDocument({data: atob("%s")}); + let pdf = await loadingTask.promise; + for (let pageNumber=1; pageNumber<=pdf.numPages; pageNumber++) { + let page = await pdf.getPage(pageNumber); + textContent = await page.getTextContent() + text = textContent.items.map(x => x.str).join(""); + pages.push(text); + } + return pages +} +</script> +""" % encoded_pdf_data) + + return test_page_with_pdf_js + + @pytest.fixture async def top_context(bidi_session): contexts = await bidi_session.browsing_context.get_tree() diff --git a/tests/wpt/web-platform-tests/webdriver/tests/support/fixtures_bidi.py b/tests/wpt/web-platform-tests/webdriver/tests/support/fixtures_bidi.py index 6273b8f1575..6f1106373d9 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/support/fixtures_bidi.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/support/fixtures_bidi.py @@ -140,3 +140,33 @@ def add_and_remove_iframe(bidi_session, inline): return frame_id return closed_frame + + +@pytest.fixture +def load_pdf(bidi_session, test_page_with_pdf_js, top_context): + """Load a PDF document in the browser using pdf.js""" + async def load_pdf(encoded_pdf_data, context=top_context["context"]): + url = test_page_with_pdf_js(encoded_pdf_data) + + await bidi_session.browsing_context.navigate( + context=context, url=url, wait="complete" + ) + + return load_pdf + + +@pytest.fixture +def get_pdf_content(bidi_session, top_context, load_pdf): + """Load a PDF document in the browser using pdf.js and extract content from the document""" + async def get_pdf_content(encoded_pdf_data, context=top_context["context"]): + await load_pdf(encoded_pdf_data=encoded_pdf_data, context=context) + + result = await bidi_session.script.call_function( + function_declaration="""() => { return window.getText()}""", + target=ContextTarget(context), + await_promise=True, + ) + + return result + + return get_pdf_content diff --git a/tests/wpt/web-platform-tests/webdriver/tests/support/fixtures_http.py b/tests/wpt/web-platform-tests/webdriver/tests/support/fixtures_http.py index 748fe214a2b..65ea064c519 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/support/fixtures_http.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/support/fixtures_http.py @@ -178,89 +178,9 @@ def stale_element(current_session, get_test_page): @pytest.fixture -def get_test_page(iframe, inline): - def get_test_page( - as_frame=False, - frame_doc=None, - shadow_doc=None, - nested_shadow_dom=False - ): - if frame_doc is None: - frame_doc = """<div id="in-frame"><input type="checkbox"/></div>""" - - if shadow_doc is None: - shadow_doc = """ - <div id="in-shadow-dom"> - <input type="checkbox"/> - </div> - """ - - definition_inner_shadow_dom = "" - if nested_shadow_dom: - definition_inner_shadow_dom = f""" - customElements.define('inner-custom-element', - class extends HTMLElement {{ - constructor() {{ - super(); - this.attachShadow({{mode: "open"}}).innerHTML = ` - {shadow_doc} - `; - }} - }} - ); - """ - shadow_doc = """ - <style> - inner-custom-element { - display:block; width:20px; height:20px; - } - </style> - <div id="in-nested-shadow-dom"> - <inner-custom-element></inner-custom-element> - </div> - """ - - page_data = f""" - <style> - custom-element {{ - display:block; width:20px; height:20px; - }} - </style> - <div id="with-children"><p><span></span></p><br/></div> - <div id="with-text-node">Lorem</div> - <div id="with-comment"><!-- Comment --></div> - - <input id="button" type="button"/> - <input id="checkbox" type="checkbox"/> - <input id="file" type="file"/> - <input id="hidden" type="hidden"/> - <input id="text" type="text"/> - - {iframe(frame_doc)} - - <svg></svg> - - <custom-element id="custom-element"></custom-element> - <script> - var svg = document.querySelector("svg"); - svg.setAttributeNS("http://www.w3.org/2000/svg", "svg:foo", "bar"); - - customElements.define("custom-element", - class extends HTMLElement {{ - constructor() {{ - super(); - this.attachShadow({{mode: "open"}}).innerHTML = ` - {shadow_doc} - `; - }} - }} - ); - {definition_inner_shadow_dom} - </script>""" +def load_pdf_document(current_session, test_page_with_pdf_js): + """Load a PDF document in the browser using pdf.js""" + def load_pdf_document(encoded_pdf_data): + current_session.url = test_page_with_pdf_js(encoded_pdf_data) - if as_frame: - return inline(iframe(page_data)) - else: - return inline(page_data) - - return get_test_page + return load_pdf_document diff --git a/tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/screenshot.py b/tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/screenshot.py index deea9514ed4..ea4cc290db4 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/screenshot.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/screenshot.py @@ -33,7 +33,7 @@ def test_no_browsing_context(session, closed_frame, inline): def test_no_such_element_with_invalid_value(session): - element = Element("foo", session) + element = Element(session, "foo") response = take_element_screenshot(session, element.id) assert_error(response, "no such element") diff --git a/tests/wpt/web-platform-tests/webrtc-extensions/RTCRtpTransceiver-headerExtensionControl.html b/tests/wpt/web-platform-tests/webrtc-extensions/RTCRtpTransceiver-headerExtensionControl.html index 770aa49f052..b6dc7da5d40 100644 --- a/tests/wpt/web-platform-tests/webrtc-extensions/RTCRtpTransceiver-headerExtensionControl.html +++ b/tests/wpt/web-platform-tests/webrtc-extensions/RTCRtpTransceiver-headerExtensionControl.html @@ -57,10 +57,10 @@ test(function(t) { const transceiver = pc.addTransceiver('audio'); const capabilities = transceiver.getHeaderExtensionsToNegotiate(); capabilities[0].uri = "4711"; - assert_throws_dom("NotSupportedError", () => { + assert_throws_dom('InvalidModificationError', () => { transceiver.setHeaderExtensionsToNegotiate(capabilities); - }, 'transceiver should throw NotSupported when setting an unknown URI'); -}, `setHeaderExtensionsToNegotiate throws NotSupported on encountering unknown URI`); + }, 'transceiver should throw InvalidModificationError when setting an unknown URI'); +}, `setHeaderExtensionsToNegotiate throws InvalidModificationError on encountering unknown URI`); test(function(t) { const pc = new RTCPeerConnection(); @@ -72,7 +72,7 @@ test(function(t) { }); ["sendonly", "recvonly", "inactive", "stopped"].map(direction => { capability.direction = direction; - assert_throws_dom("InvalidModificationError", () => { + assert_throws_dom('InvalidModificationError', () => { transceiver.setHeaderExtensionsToNegotiate(capabilities); }, `transceiver should throw InvalidModificationError when setting a mandatory header extension\'s direction to ${direction}`); }); diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-getStats.https.html b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-getStats.https.html index 8062618dd61..96e763985c0 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-getStats.https.html +++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-getStats.https.html @@ -187,8 +187,8 @@ 8.5. The stats selection algorithm 3. If selector is an RTCRtpSender, gather stats for and add the following objects to result: - - All RTCOutboundRTPStreamStats objects corresponding to selector. - - All stats objects referenced directly or indirectly by the RTCOutboundRTPStreamStats + - All RTCOutboundRtpStreamStats objects corresponding to selector. + - All stats objects referenced directly or indirectly by the RTCOutboundRtpStreamStats objects added. */ promise_test(async t => { @@ -208,8 +208,8 @@ 8.5. The stats selection algorithm 4. If selector is an RTCRtpReceiver, gather stats for and add the following objects to result: - - All RTCInboundRTPStreamStats objects corresponding to selector. - - All stats objects referenced directly or indirectly by the RTCInboundRTPStreamStats + - All RTCInboundRtpStreamStats objects corresponding to selector. + - All stats objects referenced directly or indirectly by the RTCInboundRtpStreamStats added. */ promise_test(async t => { diff --git a/tests/wpt/web-platform-tests/webrtc/RTCRtpReceiver-getStats.https.html b/tests/wpt/web-platform-tests/webrtc/RTCRtpReceiver-getStats.https.html index 06d0f0b39bf..b8daf12fc27 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCRtpReceiver-getStats.https.html +++ b/tests/wpt/web-platform-tests/webrtc/RTCRtpReceiver-getStats.https.html @@ -40,8 +40,8 @@ 8.5. The stats selection algorithm 4. If selector is an RTCRtpReceiver, gather stats for and add the following objects to result: - - All RTCInboundRTPStreamStats objects corresponding to selector. - - All stats objects referenced directly or indirectly by the RTCInboundRTPStreamStats + - All RTCInboundRtpStreamStats objects corresponding to selector. + - All stats objects referenced directly or indirectly by the RTCInboundRtpStreamStats added. */ diff --git a/tests/wpt/web-platform-tests/webrtc/RTCRtpSender-getStats.https.html b/tests/wpt/web-platform-tests/webrtc/RTCRtpSender-getStats.https.html index 27ac3e952f1..62c01aafa6a 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCRtpSender-getStats.https.html +++ b/tests/wpt/web-platform-tests/webrtc/RTCRtpSender-getStats.https.html @@ -35,8 +35,8 @@ 8.5. The stats selection algorithm 3. If selector is an RTCRtpSender, gather stats for and add the following objects to result: - - All RTCOutboundRTPStreamStats objects corresponding to selector. - - All stats objects referenced directly or indirectly by the RTCOutboundRTPStreamStats + - All RTCOutboundRtpStreamStats objects corresponding to selector. + - All stats objects referenced directly or indirectly by the RTCOutboundRtpStreamStats objects added. */ diff --git a/tests/wpt/web-platform-tests/workers/Worker_script_mimetype.htm b/tests/wpt/web-platform-tests/workers/Worker_script_mimetype.htm index 4768fe70bcb..d2278d3717c 100644 --- a/tests/wpt/web-platform-tests/workers/Worker_script_mimetype.htm +++ b/tests/wpt/web-platform-tests/workers/Worker_script_mimetype.htm @@ -1,6 +1,7 @@ <!DOCTYPE html> <title>Worker constructor with wrong MIME type scripts</title> <meta charset="utf-8"> +<meta name="timeout" content="long"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> |