diff --git a/components/script/webdriver_handlers.rs b/components/script/webdriver_handlers.rs index 8bb7c3a7725..4d9ca1e18ae 100644 --- a/components/script/webdriver_handlers.rs +++ b/components/script/webdriver_handlers.rs @@ -44,7 +44,7 @@ use crate::dom::bindings::codegen::Bindings::HTMLInputElementBinding::HTMLInputE use crate::dom::bindings::codegen::Bindings::HTMLOptionElementBinding::HTMLOptionElementMethods; use crate::dom::bindings::codegen::Bindings::HTMLSelectElementBinding::HTMLSelectElementMethods; use crate::dom::bindings::codegen::Bindings::HTMLTextAreaElementBinding::HTMLTextAreaElementMethods; -use crate::dom::bindings::codegen::Bindings::NodeBinding::{GetRootNodeOptions, NodeMethods}; +use crate::dom::bindings::codegen::Bindings::NodeBinding::NodeMethods; use crate::dom::bindings::codegen::Bindings::WindowBinding::WindowMethods; use crate::dom::bindings::codegen::Bindings::XMLSerializerBinding::XMLSerializerMethods; use crate::dom::bindings::codegen::Bindings::XPathResultBinding::{ @@ -1781,14 +1781,17 @@ fn get_option_parent(node: &Node) -> Option> { // > reverse order from element, or undefined if the root of the tree is reached. // > 3. If datalist parent is undefined, the element context is select parent. // > Otherwise, the element context is datalist parent. - let root_node = node.GetRootNode(&GetRootNodeOptions::empty()); - node.preceding_nodes(&root_node) - .find(|preceding| preceding.is::()) - .or_else(|| { - node.preceding_nodes(&root_node) - .find(|preceding| preceding.is::()) - }) - .map(|result_node| DomRoot::downcast::(result_node).unwrap()) + let mut candidate_select = None; + + for ancestor in node.ancestors() { + if ancestor.is::() { + return Some(DomRoot::downcast::(ancestor).unwrap()); + } else if candidate_select.is_none() && ancestor.is::() { + candidate_select = Some(ancestor); + } + } + + candidate_select.map(|ancestor| DomRoot::downcast::(ancestor).unwrap()) } /// diff --git a/tests/wpt/meta/webdriver/tests/classic/add_cookie/add.py.ini b/tests/wpt/meta/webdriver/tests/classic/add_cookie/add.py.ini index 5afd8c5dcf0..4da9164111b 100644 --- a/tests/wpt/meta/webdriver/tests/classic/add_cookie/add.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/add_cookie/add.py.ini @@ -1,6 +1,6 @@ [add.py] [test_no_browsing_context] - expected: ERROR + expected: FAIL [test_cookie_unsupported_scheme[about\]] expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/delete_cookie/delete.py.ini b/tests/wpt/meta/webdriver/tests/classic/delete_cookie/delete.py.ini index 1849b8821d6..1a53a7bbaf5 100644 --- a/tests/wpt/meta/webdriver/tests/classic/delete_cookie/delete.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/delete_cookie/delete.py.ini @@ -1,3 +1,3 @@ [delete.py] [test_no_browsing_context] - expected: ERROR + expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/element_click/click.py.ini b/tests/wpt/meta/webdriver/tests/classic/element_click/click.py.ini index 696e2e54bfb..ff06d41c9ab 100644 --- a/tests/wpt/meta/webdriver/tests/classic/element_click/click.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/element_click/click.py.ini @@ -1,3 +1,3 @@ [click.py] [test_no_browsing_context] - expected: ERROR + expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/element_send_keys/form_controls.py.ini b/tests/wpt/meta/webdriver/tests/classic/element_send_keys/form_controls.py.ini index 1b7ef4c26ca..18730e65b2d 100644 --- a/tests/wpt/meta/webdriver/tests/classic/element_send_keys/form_controls.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/element_send_keys/form_controls.py.ini @@ -8,9 +8,6 @@ [test_input_append] expected: FAIL - [test_textarea_append] - expected: FAIL - [test_input_insert_when_focused] expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/element_send_keys/interactability.py.ini b/tests/wpt/meta/webdriver/tests/classic/element_send_keys/interactability.py.ini index e66889a3e8a..4975e9d64a1 100644 --- a/tests/wpt/meta/webdriver/tests/classic/element_send_keys/interactability.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/element_send_keys/interactability.py.ini @@ -16,3 +16,6 @@ [test_transparent_element] expected: FAIL + + [test_obscured_element] + expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/find_element_from_shadow_root/find.py.ini b/tests/wpt/meta/webdriver/tests/classic/find_element_from_shadow_root/find.py.ini index 323f66dd597..5330ee265a2 100644 --- a/tests/wpt/meta/webdriver/tests/classic/find_element_from_shadow_root/find.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/find_element_from_shadow_root/find.py.ini @@ -1,3 +1,3 @@ [find.py] [test_no_browsing_context] - expected: ERROR + expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/find_elements_from_element/find.py.ini b/tests/wpt/meta/webdriver/tests/classic/find_elements_from_element/find.py.ini index 164fd21b94f..c8d1c11c7f3 100644 --- a/tests/wpt/meta/webdriver/tests/classic/find_elements_from_element/find.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/find_elements_from_element/find.py.ini @@ -1,6 +1,6 @@ [find.py] [test_no_browsing_context] - expected: ERROR + expected: FAIL [test_parent_htmldocument] expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/forward/forward.py.ini b/tests/wpt/meta/webdriver/tests/classic/forward/forward.py.ini index 13032a4e96e..3d3b4b913d4 100644 --- a/tests/wpt/meta/webdriver/tests/classic/forward/forward.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/forward/forward.py.ini @@ -10,6 +10,3 @@ [test_seen_nodes[https coop\]] expected: FAIL - - [test_removed_iframe] - expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/get_alert_text/get.py.ini b/tests/wpt/meta/webdriver/tests/classic/get_alert_text/get.py.ini index 1f0dfe37133..eb473ba2e37 100644 --- a/tests/wpt/meta/webdriver/tests/classic/get_alert_text/get.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/get_alert_text/get.py.ini @@ -1,3 +1,6 @@ [get.py] [test_get_confirm_text] expected: FAIL + + [test_get_prompt_text] + expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/get_computed_role/get.py.ini b/tests/wpt/meta/webdriver/tests/classic/get_computed_role/get.py.ini index 70ba62f7b9e..5baa624599c 100644 --- a/tests/wpt/meta/webdriver/tests/classic/get_computed_role/get.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/get_computed_role/get.py.ini @@ -1,6 +1,6 @@ [get.py] [test_no_browsing_context] - expected: ERROR + expected: FAIL [test_computed_roles[
foo
-article-article\]] expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/get_current_url/file.py.ini b/tests/wpt/meta/webdriver/tests/classic/get_current_url/file.py.ini new file mode 100644 index 00000000000..cbac11e57ee --- /dev/null +++ b/tests/wpt/meta/webdriver/tests/classic/get_current_url/file.py.ini @@ -0,0 +1,3 @@ +[file.py] + [test_get_current_url_file_protocol] + expected: ERROR diff --git a/tests/wpt/meta/webdriver/tests/classic/get_current_url/get.py.ini b/tests/wpt/meta/webdriver/tests/classic/get_current_url/get.py.ini deleted file mode 100644 index c6afffd5da8..00000000000 --- a/tests/wpt/meta/webdriver/tests/classic/get_current_url/get.py.ini +++ /dev/null @@ -1,3 +0,0 @@ -[get.py] - [test_no_browsing_context] - expected: ERROR diff --git a/tests/wpt/meta/webdriver/tests/classic/get_element_css_value/get.py.ini b/tests/wpt/meta/webdriver/tests/classic/get_element_css_value/get.py.ini index c6afffd5da8..bb9de0071f4 100644 --- a/tests/wpt/meta/webdriver/tests/classic/get_element_css_value/get.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/get_element_css_value/get.py.ini @@ -1,3 +1,3 @@ [get.py] [test_no_browsing_context] - expected: ERROR + expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/get_element_property/get.py.ini b/tests/wpt/meta/webdriver/tests/classic/get_element_property/get.py.ini index 6f08b2097a3..4844164d09c 100644 --- a/tests/wpt/meta/webdriver/tests/classic/get_element_property/get.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/get_element_property/get.py.ini @@ -1,6 +1,6 @@ [get.py] [test_no_browsing_context] - expected: ERROR + expected: FAIL [test_web_reference[shadowRoot-ShadowRoot\]] expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/get_element_rect/get.py.ini b/tests/wpt/meta/webdriver/tests/classic/get_element_rect/get.py.ini index c6afffd5da8..bb9de0071f4 100644 --- a/tests/wpt/meta/webdriver/tests/classic/get_element_rect/get.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/get_element_rect/get.py.ini @@ -1,3 +1,3 @@ [get.py] [test_no_browsing_context] - expected: ERROR + expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/get_element_shadow_root/get.py.ini b/tests/wpt/meta/webdriver/tests/classic/get_element_shadow_root/get.py.ini index c6afffd5da8..bb9de0071f4 100644 --- a/tests/wpt/meta/webdriver/tests/classic/get_element_shadow_root/get.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/get_element_shadow_root/get.py.ini @@ -1,3 +1,3 @@ [get.py] [test_no_browsing_context] - expected: ERROR + expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/get_element_tag_name/get.py.ini b/tests/wpt/meta/webdriver/tests/classic/get_element_tag_name/get.py.ini index 165c80fe318..de8a1db66d9 100644 --- a/tests/wpt/meta/webdriver/tests/classic/get_element_tag_name/get.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/get_element_tag_name/get.py.ini @@ -1,6 +1,6 @@ [get.py] [test_no_browsing_context] - expected: ERROR + expected: FAIL [test_get_element_tag_name] expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/get_element_text/get.py.ini b/tests/wpt/meta/webdriver/tests/classic/get_element_text/get.py.ini index 53ccb48105e..e17fd7f0114 100644 --- a/tests/wpt/meta/webdriver/tests/classic/get_element_text/get.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/get_element_text/get.py.ini @@ -1,6 +1,6 @@ [get.py] [test_no_browsing_context] - expected: ERROR + expected: FAIL [test_shadow_root_slot[custom outside\]] expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/get_named_cookie/get.py.ini b/tests/wpt/meta/webdriver/tests/classic/get_named_cookie/get.py.ini index 85c6f81cb74..93b889d3a59 100644 --- a/tests/wpt/meta/webdriver/tests/classic/get_named_cookie/get.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/get_named_cookie/get.py.ini @@ -1,6 +1,6 @@ [get.py] [test_no_browsing_context] - expected: ERROR + expected: FAIL [test_get_named_session_cookie] expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/get_page_source/source.py.ini b/tests/wpt/meta/webdriver/tests/classic/get_page_source/source.py.ini index 4390dd8d043..f1326acbc2f 100644 --- a/tests/wpt/meta/webdriver/tests/classic/get_page_source/source.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/get_page_source/source.py.ini @@ -1,3 +1,3 @@ [source.py] [test_no_browsing_context] - expected: ERROR + expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/get_window_handle/get.py.ini b/tests/wpt/meta/webdriver/tests/classic/get_window_handle/get.py.ini deleted file mode 100644 index c6afffd5da8..00000000000 --- a/tests/wpt/meta/webdriver/tests/classic/get_window_handle/get.py.ini +++ /dev/null @@ -1,3 +0,0 @@ -[get.py] - [test_no_browsing_context] - expected: ERROR diff --git a/tests/wpt/meta/webdriver/tests/classic/get_window_handles/get.py.ini b/tests/wpt/meta/webdriver/tests/classic/get_window_handles/get.py.ini deleted file mode 100644 index c6afffd5da8..00000000000 --- a/tests/wpt/meta/webdriver/tests/classic/get_window_handles/get.py.ini +++ /dev/null @@ -1,3 +0,0 @@ -[get.py] - [test_no_browsing_context] - expected: ERROR diff --git a/tests/wpt/meta/webdriver/tests/classic/get_window_rect/get.py.ini b/tests/wpt/meta/webdriver/tests/classic/get_window_rect/get.py.ini deleted file mode 100644 index c6afffd5da8..00000000000 --- a/tests/wpt/meta/webdriver/tests/classic/get_window_rect/get.py.ini +++ /dev/null @@ -1,3 +0,0 @@ -[get.py] - [test_no_browsing_context] - expected: ERROR diff --git a/tests/wpt/meta/webdriver/tests/classic/is_element_enabled/enabled.py.ini b/tests/wpt/meta/webdriver/tests/classic/is_element_enabled/enabled.py.ini index 0078d21a112..1fc6b68dc9f 100644 --- a/tests/wpt/meta/webdriver/tests/classic/is_element_enabled/enabled.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/is_element_enabled/enabled.py.ini @@ -1,6 +1,6 @@ [enabled.py] [test_no_browsing_context] - expected: ERROR + expected: FAIL [test_option_with_select[disabled\]] expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/maximize_window/maximize.py.ini b/tests/wpt/meta/webdriver/tests/classic/maximize_window/maximize.py.ini index 8ef4d5ddd84..a5b35e434c4 100644 --- a/tests/wpt/meta/webdriver/tests/classic/maximize_window/maximize.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/maximize_window/maximize.py.ini @@ -10,6 +10,3 @@ [test_maximize_twice_is_idempotent] expected: FAIL - - [test_no_browsing_context] - expected: ERROR diff --git a/tests/wpt/meta/webdriver/tests/classic/minimize_window/minimize.py.ini b/tests/wpt/meta/webdriver/tests/classic/minimize_window/minimize.py.ini index 734e2bfd550..75af78405d0 100644 --- a/tests/wpt/meta/webdriver/tests/classic/minimize_window/minimize.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/minimize_window/minimize.py.ini @@ -3,7 +3,7 @@ expected: FAIL [test_no_browsing_context] - expected: ERROR + expected: FAIL [test_response_payload] expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/new_window/new.py.ini b/tests/wpt/meta/webdriver/tests/classic/new_window/new.py.ini deleted file mode 100644 index ef93840a4e4..00000000000 --- a/tests/wpt/meta/webdriver/tests/classic/new_window/new.py.ini +++ /dev/null @@ -1,3 +0,0 @@ -[new.py] - [test_no_browsing_context] - expected: ERROR diff --git a/tests/wpt/meta/webdriver/tests/classic/perform_actions/key.py.ini b/tests/wpt/meta/webdriver/tests/classic/perform_actions/key.py.ini index 91615c12307..1f39266f2fd 100644 --- a/tests/wpt/meta/webdriver/tests/classic/perform_actions/key.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/perform_actions/key.py.ini @@ -1,6 +1,6 @@ [key.py] [test_no_browsing_context] - expected: ERROR + expected: FAIL [test_key_down_closes_browsing_context] expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/perform_actions/pointer_mouse.py.ini b/tests/wpt/meta/webdriver/tests/classic/perform_actions/pointer_mouse.py.ini index 084cfbf9d34..ef1b7b8b204 100644 --- a/tests/wpt/meta/webdriver/tests/classic/perform_actions/pointer_mouse.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/perform_actions/pointer_mouse.py.ini @@ -1,6 +1,6 @@ [pointer_mouse.py] [test_no_browsing_context] - expected: ERROR + expected: FAIL [test_pointer_down_closes_browsing_context] expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/perform_actions/pointer_touch.py.ini b/tests/wpt/meta/webdriver/tests/classic/perform_actions/pointer_touch.py.ini index 4521684637b..a3246c60f46 100644 --- a/tests/wpt/meta/webdriver/tests/classic/perform_actions/pointer_touch.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/perform_actions/pointer_touch.py.ini @@ -1,6 +1,6 @@ [pointer_touch.py] [test_no_browsing_context] - expected: ERROR + expected: FAIL [test_pointer_down_closes_browsing_context] expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/print/printcmd.py.ini b/tests/wpt/meta/webdriver/tests/classic/print/printcmd.py.ini index 1cd9492ee0f..5d21a234610 100644 --- a/tests/wpt/meta/webdriver/tests/classic/print/printcmd.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/print/printcmd.py.ini @@ -3,7 +3,7 @@ expected: FAIL [test_no_browsing_context] - expected: ERROR + expected: FAIL [test_html_document] expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/release_actions/release.py.ini b/tests/wpt/meta/webdriver/tests/classic/release_actions/release.py.ini index 5c3d3b9089b..f45f8c3203c 100644 --- a/tests/wpt/meta/webdriver/tests/classic/release_actions/release.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/release_actions/release.py.ini @@ -1,3 +1,3 @@ [release.py] [test_no_browsing_context] - expected: ERROR + expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/switch_to_frame/switch.py.ini b/tests/wpt/meta/webdriver/tests/classic/switch_to_frame/switch.py.ini index f80f80388ba..f27a7eb6701 100644 --- a/tests/wpt/meta/webdriver/tests/classic/switch_to_frame/switch.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/switch_to_frame/switch.py.ini @@ -1,12 +1,9 @@ [switch.py] [test_no_browsing_context[0\]] - expected: ERROR + expected: FAIL [test_no_browsing_context[id2\]] expected: FAIL [test_find_element_while_frame_is_still_loading] expected: FAIL - - [test_no_browsing_context[None\]] - expected: ERROR diff --git a/tests/wpt/meta/webdriver/tests/classic/switch_to_window/switch.py.ini b/tests/wpt/meta/webdriver/tests/classic/switch_to_window/switch.py.ini deleted file mode 100644 index d91e1889520..00000000000 --- a/tests/wpt/meta/webdriver/tests/classic/switch_to_window/switch.py.ini +++ /dev/null @@ -1,3 +0,0 @@ -[switch.py] - [test_no_browsing_context] - expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/take_element_screenshot/screenshot.py.ini b/tests/wpt/meta/webdriver/tests/classic/take_element_screenshot/screenshot.py.ini deleted file mode 100644 index 9b9c780e2c0..00000000000 --- a/tests/wpt/meta/webdriver/tests/classic/take_element_screenshot/screenshot.py.ini +++ /dev/null @@ -1,3 +0,0 @@ -[screenshot.py] - [test_no_browsing_context] - expected: ERROR diff --git a/tests/wpt/meta/webdriver/tests/classic/take_screenshot/screenshot.py.ini b/tests/wpt/meta/webdriver/tests/classic/take_screenshot/screenshot.py.ini deleted file mode 100644 index 9b9c780e2c0..00000000000 --- a/tests/wpt/meta/webdriver/tests/classic/take_screenshot/screenshot.py.ini +++ /dev/null @@ -1,3 +0,0 @@ -[screenshot.py] - [test_no_browsing_context] - expected: ERROR