diff --git a/components/script/dom/window.rs b/components/script/dom/window.rs index cdd7aa5df34..10eced15a57 100644 --- a/components/script/dom/window.rs +++ b/components/script/dom/window.rs @@ -934,7 +934,11 @@ impl WindowMethods for Window { }; let msg = EmbedderMsg::ShowSimpleDialog(self.webview_id(), dialog); self.send_to_embedder(msg); - let AlertResponse::Ok = receiver.recv().unwrap(); + receiver.recv().unwrap_or_else(|_| { + // If the receiver is closed, we assume the dialog was cancelled. + debug!("Alert dialog was cancelled or failed to show."); + AlertResponse::Ok + }); } // https://html.spec.whatwg.org/multipage/#dom-confirm @@ -947,7 +951,14 @@ impl WindowMethods for Window { }; let msg = EmbedderMsg::ShowSimpleDialog(self.webview_id(), dialog); self.send_to_embedder(msg); - receiver.recv().unwrap() == ConfirmResponse::Ok + match receiver.recv() { + Ok(ConfirmResponse::Ok) => true, + Ok(ConfirmResponse::Cancel) => false, + Err(_) => { + warn!("Confirm dialog was cancelled or failed to show."); + false + }, + } } // https://html.spec.whatwg.org/multipage/#dom-prompt @@ -961,9 +972,13 @@ impl WindowMethods for Window { }; let msg = EmbedderMsg::ShowSimpleDialog(self.webview_id(), dialog); self.send_to_embedder(msg); - match receiver.recv().unwrap() { - PromptResponse::Ok(input) => Some(input.into()), - PromptResponse::Cancel => None, + match receiver.recv() { + Ok(PromptResponse::Ok(input)) => Some(input.into()), + Ok(PromptResponse::Cancel) => None, + Err(_) => { + warn!("Prompt dialog was cancelled or failed to show."); + None + }, } } diff --git a/components/shared/embedder/webdriver.rs b/components/shared/embedder/webdriver.rs index bf23d360054..e333411a599 100644 --- a/components/shared/embedder/webdriver.rs +++ b/components/shared/embedder/webdriver.rs @@ -28,10 +28,48 @@ use crate::{MouseButton, MouseButtonAction}; #[derive(Clone, Copy, Debug, Deserialize, PartialEq, Serialize)] pub struct WebDriverMessageId(pub usize); -#[derive(Debug, Deserialize, Serialize)] +#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)] +pub enum WebDriverUserPrompt { + Alert, + BeforeUnload, + Confirm, + Default, + File, + Prompt, + FallbackDefault, +} + +impl WebDriverUserPrompt { + pub fn new_from_str(s: &str) -> Option { + match s { + "alert" => Some(WebDriverUserPrompt::Alert), + "beforeUnload" => Some(WebDriverUserPrompt::BeforeUnload), + "confirm" => Some(WebDriverUserPrompt::Confirm), + "default" => Some(WebDriverUserPrompt::Default), + "file" => Some(WebDriverUserPrompt::File), + "prompt" => Some(WebDriverUserPrompt::Prompt), + "fallbackDefault" => Some(WebDriverUserPrompt::FallbackDefault), + _ => None, + } + } +} + +#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)] pub enum WebDriverUserPromptAction { Accept, Dismiss, + Ignore, +} + +impl WebDriverUserPromptAction { + pub fn new_from_str(s: &str) -> Option { + match s { + "accept" => Some(WebDriverUserPromptAction::Accept), + "dismiss" => Some(WebDriverUserPromptAction::Dismiss), + "ignore" => Some(WebDriverUserPromptAction::Ignore), + _ => None, + } + } } /// Messages to the constellation originating from the WebDriver server. @@ -121,10 +159,11 @@ pub enum WebDriverCommandMsg { IsWebViewOpen(WebViewId, IpcSender), /// Check whether browsing context is open. IsBrowsingContextOpen(BrowsingContextId, IpcSender), + CurrentUserPrompt(WebViewId, IpcSender>), HandleUserPrompt( WebViewId, WebDriverUserPromptAction, - IpcSender>, + IpcSender, ()>>, ), GetAlertText(WebViewId, IpcSender>), AddLoadStatusSender(WebViewId, IpcSender), diff --git a/components/webdriver_server/lib.rs b/components/webdriver_server/lib.rs index 1cad3e84741..44ff70ae73c 100644 --- a/components/webdriver_server/lib.rs +++ b/components/webdriver_server/lib.rs @@ -66,6 +66,9 @@ use webdriver::response::{ use webdriver::server::{self, Session, SessionTeardownKind, WebDriverHandler}; use crate::actions::{ActionItem, InputSourceState, PointerInputState}; +use crate::user_prompt::{ + UserPromptHandler, default_unhandled_prompt_behavior, deserialize_unhandled_prompt_behaviour, +}; #[derive(Default)] pub struct WebDriverMessageIdGenerator { @@ -186,7 +189,7 @@ pub struct WebDriverSession { strict_file_interactability: bool, - unhandled_prompt_behavior: String, + user_prompt_handler: UserPromptHandler, /// input_state_table: RefCell>, @@ -214,7 +217,7 @@ impl WebDriverSession { page_loading_strategy: "normal".to_string(), strict_file_interactability: false, - unhandled_prompt_behavior: "dismiss and notify".to_string(), + user_prompt_handler: UserPromptHandler::new(), input_state_table: RefCell::new(HashMap::new()), input_cancel_list: RefCell::new(Vec::new()), @@ -653,13 +656,14 @@ impl Handler { match processed.get("unhandledPromptBehavior") { Some(unhandled_prompt_behavior) => { - session.unhandled_prompt_behavior = - unhandled_prompt_behavior.to_string() + session.user_prompt_handler = deserialize_unhandled_prompt_behaviour( + unhandled_prompt_behavior.clone(), + )?; }, None => { processed.insert( "unhandledPromptBehavior".to_string(), - json!(session.unhandled_prompt_behavior), + json!(default_unhandled_prompt_behavior()), ); }, } @@ -777,6 +781,9 @@ impl Handler { }, }; + // Step 4. Handle any user prompt. + self.handle_any_user_prompts(webview_id)?; + let cmd_msg = WebDriverCommandMsg::LoadUrl(webview_id, url, self.load_status_sender.clone()); self.send_message_to_embedder(cmd_msg)?; @@ -839,6 +846,9 @@ impl Handler { } fn handle_current_url(&self) -> WebDriverResult { + // Step 2. Handle any user prompt. + self.handle_any_user_prompts(self.session()?.webview_id)?; + let (sender, receiver) = ipc::channel().unwrap(); self.top_level_script_command( WebDriverScriptCommand::GetUrl(sender), @@ -864,6 +874,10 @@ impl Handler { if let VerifyBrowsingContextIsOpen::Yes = verify { self.verify_top_level_browsing_context_is_open(webview_id)?; } + + // Step 2. Handle any user prompt. + self.handle_any_user_prompts(webview_id)?; + self.send_message_to_embedder(WebDriverCommandMsg::GetWindowRect(webview_id, sender))?; let window_rect = wait_for_script_response(receiver)?; @@ -893,6 +907,9 @@ impl Handler { // return error with error code no such window. self.verify_top_level_browsing_context_is_open(webview_id)?; + // Step 13. Handle any user prompt. + self.handle_any_user_prompts(webview_id)?; + // We don't current allow modifying the window x/y positions, so we can just // return the current window rectangle if not changing dimension. if params.width.is_none() && params.height.is_none() { @@ -975,6 +992,9 @@ impl Handler { // return error with error code no such window. self.verify_top_level_browsing_context_is_open(webview_id)?; + // Step 2. Handle any user prompt. + self.handle_any_user_prompts(webview_id)?; + self.send_message_to_embedder(WebDriverCommandMsg::GoBack( webview_id, self.load_status_sender.clone(), @@ -988,6 +1008,9 @@ impl Handler { // return error with error code no such window. self.verify_top_level_browsing_context_is_open(webview_id)?; + // Step 2. Handle any user prompt. + self.handle_any_user_prompts(webview_id)?; + self.send_message_to_embedder(WebDriverCommandMsg::GoForward( webview_id, self.load_status_sender.clone(), @@ -1001,6 +1024,9 @@ impl Handler { // return error with error code no such window. self.verify_top_level_browsing_context_is_open(webview_id)?; + // Step 2. Handle any user prompt. + self.handle_any_user_prompts(webview_id)?; + let cmd_msg = WebDriverCommandMsg::Refresh(webview_id, self.load_status_sender.clone()); self.send_message_to_embedder(cmd_msg)?; @@ -1014,6 +1040,9 @@ impl Handler { } fn handle_title(&self) -> WebDriverResult { + // Step 2. Handle any user prompt. + self.handle_any_user_prompts(self.session()?.webview_id)?; + let (sender, receiver) = ipc::channel().unwrap(); self.top_level_script_command( @@ -1072,8 +1101,12 @@ impl Handler { // Step 1. If session's current top-level browsing context is no longer open, // return error with error code no such window. self.verify_top_level_browsing_context_is_open(webview_id)?; - let session = self.session_mut().unwrap(); + + // Step 2. Handle any user prompt. + self.handle_any_user_prompts(webview_id)?; + // Step 3. Close session's current top-level browsing context. + let session = self.session_mut().unwrap(); session.window_handles.remove(&webview_id); let cmd_msg = WebDriverCommandMsg::CloseWebView(session.webview_id); self.send_message_to_embedder(cmd_msg)?; @@ -1103,8 +1136,14 @@ impl Handler { let (sender, receiver) = ipc::channel().unwrap(); let session = self.session().unwrap(); + + // Step 2. If session's current top-level browsing context is no longer open, + // return error with error code no such window. self.verify_top_level_browsing_context_is_open(session.webview_id)?; + // Step 3. Handle any user prompt. + self.handle_any_user_prompts(session.webview_id)?; + let cmd_msg = WebDriverCommandMsg::NewWebView(sender, self.load_status_sender.clone()); // Step 5. Create a new top-level browsing context by running the window open steps. // This MUST be done without invoking the focusing steps. @@ -1171,6 +1210,10 @@ impl Handler { // Step 1.2. Return success with data null. return Ok(WebDriverResponse::Void); } + + // Step 3. Handle any user prompt. + self.handle_any_user_prompts(webview_id)?; + let (sender, receiver) = ipc::channel().unwrap(); let cmd = WebDriverScriptCommand::GetParentFrameId(sender); // TODO: Track Parent Browsing Context directly in the session, as expected by Spec. @@ -1220,6 +1263,7 @@ impl Handler { let (sender, receiver) = ipc::channel().unwrap(); let cmd = WebDriverScriptCommand::GetBrowsingContextId(frame_id, sender); self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?; + self.handle_any_user_prompts(self.session()?.webview_id)?; match wait_for_script_response(receiver)? { Ok(browsing_context_id) => { @@ -1239,6 +1283,10 @@ impl Handler { if parameters.value.is_empty() { return Err(WebDriverError::new(ErrorStatus::InvalidArgument, "")); } + + // Step 6. Handle any user prompt. + self.handle_any_user_prompts(self.session()?.webview_id)?; + let (sender, receiver) = ipc::channel().unwrap(); match parameters.using { LocatorStrategy::CSSSelector => { @@ -1304,6 +1352,10 @@ impl Handler { if parameters.value.is_empty() { return Err(WebDriverError::new(ErrorStatus::InvalidArgument, "")); } + + // Step 6. Handle any user prompt. + self.handle_any_user_prompts(self.session()?.webview_id)?; + let (sender, receiver) = ipc::channel().unwrap(); match parameters.using { @@ -1366,6 +1418,10 @@ impl Handler { if parameters.value.is_empty() { return Err(WebDriverError::new(ErrorStatus::InvalidArgument, "")); } + + // Step 6. Handle any user prompt. + self.handle_any_user_prompts(self.session()?.webview_id)?; + let (sender, receiver) = ipc::channel().unwrap(); match parameters.using { @@ -1432,6 +1488,7 @@ impl Handler { } fn handle_get_shadow_root(&self, element: WebElement) -> WebDriverResult { + self.handle_any_user_prompts(self.session()?.webview_id)?; let (sender, receiver) = ipc::channel().unwrap(); let cmd = WebDriverScriptCommand::GetElementShadowRoot(element.to_string(), sender); self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?; @@ -1450,6 +1507,7 @@ impl Handler { // https://w3c.github.io/webdriver/webdriver-spec.html#get-element-rect fn handle_element_rect(&self, element: &WebElement) -> WebDriverResult { + self.handle_any_user_prompts(self.session()?.webview_id)?; let (sender, receiver) = ipc::channel().unwrap(); let cmd = WebDriverScriptCommand::GetElementRect(element.to_string(), sender); self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?; @@ -1469,6 +1527,7 @@ impl Handler { /// fn handle_element_text(&self, element: &WebElement) -> WebDriverResult { + self.handle_any_user_prompts(self.session()?.webview_id)?; let (sender, receiver) = ipc::channel().unwrap(); let cmd = WebDriverScriptCommand::GetElementText(element.to_string(), sender); self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?; @@ -1482,6 +1541,7 @@ impl Handler { /// fn handle_active_element(&self) -> WebDriverResult { + self.handle_any_user_prompts(self.session()?.webview_id)?; let (sender, receiver) = ipc::channel().unwrap(); let cmd = WebDriverScriptCommand::GetActiveElement(sender); self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?; @@ -1503,6 +1563,7 @@ impl Handler { } fn handle_computed_role(&self, element: &WebElement) -> WebDriverResult { + self.handle_any_user_prompts(self.session()?.webview_id)?; let (sender, receiver) = ipc::channel().unwrap(); let cmd = WebDriverScriptCommand::GetComputedRole(element.to_string(), sender); self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?; @@ -1515,6 +1576,7 @@ impl Handler { } fn handle_element_tag_name(&self, element: &WebElement) -> WebDriverResult { + self.handle_any_user_prompts(self.session()?.webview_id)?; let (sender, receiver) = ipc::channel().unwrap(); let cmd = WebDriverScriptCommand::GetElementTagName(element.to_string(), sender); self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?; @@ -1531,6 +1593,7 @@ impl Handler { element: &WebElement, name: &str, ) -> WebDriverResult { + self.handle_any_user_prompts(self.session()?.webview_id)?; let (sender, receiver) = ipc::channel().unwrap(); let cmd = WebDriverScriptCommand::GetElementAttribute( element.to_string(), @@ -1551,6 +1614,7 @@ impl Handler { element: &WebElement, name: &str, ) -> WebDriverResult { + self.handle_any_user_prompts(self.session()?.webview_id)?; let (sender, receiver) = ipc::channel().unwrap(); let cmd = WebDriverScriptCommand::GetElementProperty( @@ -1573,6 +1637,7 @@ impl Handler { element: &WebElement, name: &str, ) -> WebDriverResult { + self.handle_any_user_prompts(self.session()?.webview_id)?; let (sender, receiver) = ipc::channel().unwrap(); let cmd = WebDriverScriptCommand::GetElementCSS(element.to_string(), name.to_owned(), sender); @@ -1586,6 +1651,7 @@ impl Handler { } fn handle_get_cookies(&self) -> WebDriverResult { + self.handle_any_user_prompts(self.session()?.webview_id)?; let (sender, receiver) = ipc::channel().unwrap(); let cmd = WebDriverScriptCommand::GetCookies(sender); self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?; @@ -1601,6 +1667,7 @@ impl Handler { } fn handle_get_cookie(&self, name: String) -> WebDriverResult { + self.handle_any_user_prompts(self.session()?.webview_id)?; let (sender, receiver) = ipc::channel().unwrap(); let cmd = WebDriverScriptCommand::GetCookie(name, sender); self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?; @@ -1622,6 +1689,7 @@ impl Handler { &self, params: &AddCookieParameters, ) -> WebDriverResult { + self.handle_any_user_prompts(self.session()?.webview_id)?; let (sender, receiver) = ipc::channel().unwrap(); let cookie_builder = CookieBuilder::new(params.name.to_owned(), params.value.to_owned()) @@ -1645,6 +1713,7 @@ impl Handler { } fn handle_delete_cookie(&self, name: String) -> WebDriverResult { + self.handle_any_user_prompts(self.session()?.webview_id)?; let (sender, receiver) = ipc::channel().unwrap(); let cmd = WebDriverScriptCommand::DeleteCookie(name, sender); self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?; @@ -1655,6 +1724,7 @@ impl Handler { } fn handle_delete_cookies(&self) -> WebDriverResult { + self.handle_any_user_prompts(self.session()?.webview_id)?; let (sender, receiver) = ipc::channel().unwrap(); let cmd = WebDriverScriptCommand::DeleteCookies(sender); self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?; @@ -1723,6 +1793,10 @@ impl Handler { // Step 1. If session's current browsing context is no longer open, // return error with error code no such window. self.verify_browsing_context_is_open(browsing_context)?; + + // Step 2. Handle any user prompt. + self.handle_any_user_prompts(self.session()?.webview_id)?; + // Step 5. Let actions by tick be the result of trying to extract an action sequence let actions_by_tick = self.extract_an_action_sequence(parameters); @@ -1741,7 +1815,8 @@ impl Handler { // return error with error code no such window. self.verify_browsing_context_is_open(session.browsing_context_id)?; - // TODO: Step 2. User prompts. No user prompt implemented yet. + // Step 2. User prompts. No user prompt implemented yet. + self.handle_any_user_prompts(self.session()?.webview_id)?; // Skip: Step 3. We don't support "browsing context input state map" yet. @@ -1774,6 +1849,8 @@ impl Handler { &self, parameters: &JavascriptCommandParameters, ) -> WebDriverResult { + self.handle_any_user_prompts(self.session()?.webview_id)?; + let func_body = ¶meters.script; let args_string: Vec<_> = parameters .args @@ -1804,6 +1881,8 @@ impl Handler { &self, parameters: &JavascriptCommandParameters, ) -> WebDriverResult { + self.handle_any_user_prompts(self.session()?.webview_id)?; + let func_body = ¶meters.script; let mut args_string: Vec<_> = parameters .args @@ -1883,7 +1962,9 @@ impl Handler { element: &WebElement, keys: &SendKeysParameters, ) -> WebDriverResult { - // Step 3-8 + // Step 4. Handle any user prompt. + self.handle_any_user_prompts(self.session()?.webview_id)?; + let (sender, receiver) = ipc::channel().unwrap(); let cmd = WebDriverScriptCommand::WillSendKeys( element.to_string(), @@ -1914,6 +1995,14 @@ impl Handler { /// fn handle_element_click(&mut self, element: &WebElement) -> WebDriverResult { + // Step 1. If session's current browsing context is no longer open, + // return error with error code no such window. + let browsing_context_id = self.session()?.browsing_context_id; + self.verify_browsing_context_is_open(browsing_context_id)?; + + // Step 2. Handle any user prompts. + self.handle_any_user_prompts(self.session()?.webview_id)?; + let (sender, receiver) = ipc::channel().unwrap(); let webview_id = self.session()?.webview_id; let browsing_context_id = self.session()?.browsing_context_id; @@ -2035,6 +2124,9 @@ impl Handler { // Step 1. If session's current top-level browsing context is no longer open, // return error with error code no such window. self.verify_top_level_browsing_context_is_open(self.session()?.webview_id)?; + + self.handle_any_user_prompts(self.session()?.webview_id)?; + let mut img = None; let interval = 1000; diff --git a/components/webdriver_server/user_prompt.rs b/components/webdriver_server/user_prompt.rs index 52f8fbafdd4..1e6f403bfdb 100644 --- a/components/webdriver_server/user_prompt.rs +++ b/components/webdriver_server/user_prompt.rs @@ -2,16 +2,180 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -use embedder_traits::{WebDriverCommandMsg, WebDriverUserPromptAction}; +use std::borrow::Cow; +use std::collections::{BTreeMap, HashMap}; + +use base::id::WebViewId; +use embedder_traits::{WebDriverCommandMsg, WebDriverUserPrompt, WebDriverUserPromptAction}; use ipc_channel::ipc; +use serde_json::{Map, Value}; use webdriver::error::{ErrorStatus, WebDriverError, WebDriverResult}; use webdriver::response::{ValueResponse, WebDriverResponse}; use crate::{Handler, wait_for_script_response}; +const KNOWN_PROMPT_HANDLERS: [&str; 5] = [ + "dismiss", + "accept", + "dismiss and notify", + "accept and notify", + "ignore", +]; + +const VALID_PROMPT_TYPES: [&str; 6] = [ + "alert", + "beforeUnload", + "confirm", + "default", + "file", + "prompt", +]; + +/// +#[derive(Clone, Debug)] +pub(crate) struct PromptHandlerConfiguration { + handler: WebDriverUserPromptAction, + notify: bool, +} + +pub(crate) type UserPromptHandler = HashMap; + +/// +pub(crate) fn deserialize_unhandled_prompt_behaviour( + value_param: Value, +) -> Result { + // Step 2-5. + let (value, is_string_value) = match value_param { + Value::Object(map) => (map, false), + Value::String(..) => { + let mut map = Map::new(); + map.insert("fallbackDefault".to_string(), value_param); + (map, true) + }, + _ => { + return Err(WebDriverError::new( + ErrorStatus::InvalidArgument, + "Expected an object or a string for unhandled prompt behavior.", + )); + }, + }; + + // Step 6. Let user prompt handler be a new empty map. + let mut user_prompt_handler = UserPromptHandler::new(); + + // Step 7. For each key-value pair in value: + for (prompt_type, handler) in value { + // Step 7.1. If `is_string_value` is false and prompt type is not one of + // the valid prompt types, return error with error code invalid argument. + if !is_string_value && !VALID_PROMPT_TYPES.contains(&prompt_type.as_str()) { + return Err(WebDriverError::new( + ErrorStatus::InvalidArgument, + format!("Invalid prompt type: {}", prompt_type), + )); + } + + // Step 7.2. If known prompt handlers does not contain an entry with + // handler key `handler` return error with error code invalid argument. + let handle_str = match handler { + Value::String(s) => s, + _ => { + return Err(WebDriverError::new( + ErrorStatus::InvalidArgument, + format!("Expected a string for handler, got: {:?}", handler), + )); + }, + }; + if !KNOWN_PROMPT_HANDLERS.contains(&handle_str.as_str()) { + return Err(WebDriverError::new( + ErrorStatus::InvalidArgument, + format!("Unknown prompt handler: {}", handle_str), + )); + } + + // Step 7.3 - 7.6. + let (handler, notify) = match handle_str.as_str() { + "accept and notify" => ( + WebDriverUserPromptAction::new_from_str("accept").unwrap(), + true, + ), + "dismiss and notify" => ( + WebDriverUserPromptAction::new_from_str("dismiss").unwrap(), + true, + ), + "ignore" => ( + WebDriverUserPromptAction::new_from_str("ignore").unwrap(), + false, + ), + "accept" => ( + WebDriverUserPromptAction::new_from_str("accept").unwrap(), + false, + ), + "dismiss" => ( + WebDriverUserPromptAction::new_from_str("dismiss").unwrap(), + false, + ), + _ => unreachable!(), + }; + + // Step 7.7 - 7.8. + user_prompt_handler.insert( + WebDriverUserPrompt::new_from_str(&prompt_type).unwrap(), + PromptHandlerConfiguration { handler, notify }, + ); + } + + Ok(user_prompt_handler) +} + +pub(crate) fn default_unhandled_prompt_behavior() -> &'static str { + "dismiss and notify" +} + +/// +fn get_user_prompt_handler( + user_prompt_handler: &UserPromptHandler, + prompt_type: WebDriverUserPrompt, +) -> PromptHandlerConfiguration { + // Step 2. If handlers contains type return handlers[type]. + if let Some(handler) = user_prompt_handler.get(&prompt_type) { + return (*handler).clone(); + } + + // Step 3. If handlers contains default return handlers[default]. + if let Some(handler) = user_prompt_handler.get(&WebDriverUserPrompt::Default) { + return (*handler).clone(); + } + + // Step 4. If prompt type is "beforeUnload" return a configuration with handler "accept" and notify false. + if prompt_type == WebDriverUserPrompt::BeforeUnload { + return PromptHandlerConfiguration { + handler: WebDriverUserPromptAction::Accept, + notify: false, + }; + } + + // Step 5. If handlers contains fallbackDefault return handlers[fallbackDefault]. + if let Some(handler) = user_prompt_handler.get(&WebDriverUserPrompt::FallbackDefault) { + return (*handler).clone(); + } + + // Step 6. Return a configuration with handler "dismiss" and notify true. + PromptHandlerConfiguration { + handler: WebDriverUserPromptAction::Dismiss, + notify: true, + } +} + +fn webdriver_response_single_data( + key: &'static str, + value: Value, +) -> Option, Value>> { + Some([(Cow::Borrowed(key), value)].into_iter().collect()) +} + impl Handler { /// - pub(crate) fn handle_dismiss_alert(&mut self) -> WebDriverResult { + pub(crate) fn handle_dismiss_alert(&self) -> WebDriverResult { // Step 1. If session's current top-level browsing context is no longer open, // return error with error code no such window. self.verify_top_level_browsing_context_is_open(self.session()?.webview_id)?; @@ -31,12 +195,12 @@ impl Handler { "No user prompt is currently active.", )), // Step 4. Return success with data null. - Ok(()) => Ok(WebDriverResponse::Void), + Ok(_) => Ok(WebDriverResponse::Void), } } /// - pub(crate) fn handle_accept_alert(&mut self) -> WebDriverResult { + pub(crate) fn handle_accept_alert(&self) -> WebDriverResult { // Step 1. If session's current top-level browsing context is no longer open, // return error with error code no such window. self.verify_top_level_browsing_context_is_open(self.session()?.webview_id)?; @@ -56,11 +220,11 @@ impl Handler { "No user prompt is currently active.", )), // Step 4. Return success with data null. - Ok(()) => Ok(WebDriverResponse::Void), + Ok(_) => Ok(WebDriverResponse::Void), } } - pub(crate) fn handle_get_alert_text(&mut self) -> WebDriverResult { + pub(crate) fn handle_get_alert_text(&self) -> WebDriverResult { // Step 1. If session's current top-level browsing context is no longer open, // return error with error code no such window. self.verify_top_level_browsing_context_is_open(self.session()?.webview_id)?; @@ -90,4 +254,49 @@ impl Handler { ))), } } + + /// + pub(crate) fn handle_any_user_prompts( + &self, + webview_id: WebViewId, + ) -> WebDriverResult { + let (sender, receiver) = ipc::channel().unwrap(); + + self.send_message_to_embedder(WebDriverCommandMsg::CurrentUserPrompt(webview_id, sender))?; + + match wait_for_script_response(receiver)? { + // Step 1. If the current user prompt is null, return success with data null. + None => Ok(WebDriverResponse::Void), + Some(prompt_type) => { + // Step 2 - 4. Get user prompt handler for the prompt type. + let handler = + get_user_prompt_handler(&self.session()?.user_prompt_handler, prompt_type); + + // Step 5. Perform the substeps based on handler's handler + let (sender, receiver) = ipc::channel().unwrap(); + self.send_message_to_embedder(WebDriverCommandMsg::HandleUserPrompt( + webview_id, + handler.handler.clone(), + sender, + ))?; + + if handler.notify || handler.handler == WebDriverUserPromptAction::Ignore { + // Step 6. If handler's notify is true, return annotated unexpected alert open error. + let alert_text = wait_for_script_response(receiver)? + .unwrap_or_default() + .unwrap_or_default(); + + Err(WebDriverError::new_with_data( + ErrorStatus::UnexpectedAlertOpen, + "Handle any user prompt: Unexpected alert open.", + webdriver_response_single_data("text", Value::String(alert_text)), + None, + )) + } else { + // Step 7. Return success with data null. + Ok(WebDriverResponse::Void) + } + }, + } + } } diff --git a/ports/servoshell/desktop/app.rs b/ports/servoshell/desktop/app.rs index 9b454c9d92f..d086b2c483b 100644 --- a/ports/servoshell/desktop/app.rs +++ b/ports/servoshell/desktop/app.rs @@ -577,8 +577,17 @@ impl App { webdriver_script_command, )); }, + WebDriverCommandMsg::CurrentUserPrompt(webview_id, response_sender) => { + let current_dialog = + running_state.get_current_active_dialog_webdriver_type(webview_id); + if let Err(error) = response_sender.send(current_dialog) { + warn!("Failed to send response of CurrentUserPrompt: {error}"); + }; + }, WebDriverCommandMsg::HandleUserPrompt(webview_id, action, response_sender) => { let response = if running_state.webview_has_active_dialog(webview_id) { + let alert_text = running_state.alert_text_of_newest_dialog(webview_id); + match action { WebDriverUserPromptAction::Accept => { running_state.accept_active_dialogs(webview_id) @@ -586,9 +595,14 @@ impl App { WebDriverUserPromptAction::Dismiss => { running_state.dismiss_active_dialogs(webview_id) }, + WebDriverUserPromptAction::Ignore => {}, }; - Ok(()) + + // Return success for AcceptAlert and DismissAlert commands. + Ok(alert_text) } else { + // Return error for AcceptAlert and DismissAlert commands + // if there is no active dialog. Err(()) }; @@ -622,7 +636,8 @@ impl App { running_state: &RunningAppState, ) { match msg { - WebDriverScriptCommand::ExecuteScript(_webview_id, response_sender) => { + WebDriverScriptCommand::ExecuteScript(_webview_id, response_sender) | + WebDriverScriptCommand::ExecuteAsyncScript(_webview_id, response_sender) => { // Give embedder a chance to interrupt the script command. // Webdriver only handles 1 script command at a time, so we can // safely set a new interrupt sender and remove the previous one here. diff --git a/ports/servoshell/desktop/app_state.rs b/ports/servoshell/desktop/app_state.rs index ad4b6ca164a..cabc02a9f5e 100644 --- a/ports/servoshell/desktop/app_state.rs +++ b/ports/servoshell/desktop/app_state.rs @@ -21,7 +21,7 @@ use servo::{ AllowOrDenyRequest, AuthenticationRequest, FilterPattern, FormControl, GamepadHapticEffectType, KeyboardEvent, LoadStatus, PermissionRequest, Servo, ServoDelegate, ServoError, SimpleDialog, TraversalId, WebDriverCommandMsg, WebDriverJSResult, WebDriverJSValue, WebDriverLoadStatus, - WebView, WebViewBuilder, WebViewDelegate, + WebDriverUserPrompt, WebView, WebViewBuilder, WebViewDelegate, }; use url::Url; @@ -340,13 +340,23 @@ impl RunningAppState { } pub(crate) fn webview_has_active_dialog(&self, webview_id: WebViewId) -> bool { - let inner = self.inner(); - inner + self.inner() .dialogs .get(&webview_id) .is_some_and(|dialogs| !dialogs.is_empty()) } + pub(crate) fn get_current_active_dialog_webdriver_type( + &self, + webview_id: WebViewId, + ) -> Option { + self.inner() + .dialogs + .get(&webview_id) + .and_then(|dialogs| dialogs.last()) + .map(|dialog| dialog.webdriver_diaglog_type()) + } + pub(crate) fn accept_active_dialogs(&self, webview_id: WebViewId) { if let Some(dialogs) = self.inner_mut().dialogs.get_mut(&webview_id) { dialogs.drain(..).for_each(|dialog| { diff --git a/ports/servoshell/desktop/dialog.rs b/ports/servoshell/desktop/dialog.rs index 46b24260adb..26977cb76cd 100644 --- a/ports/servoshell/desktop/dialog.rs +++ b/ports/servoshell/desktop/dialog.rs @@ -14,7 +14,7 @@ use servo::servo_geometry::DeviceIndependentPixel; use servo::{ AlertResponse, AuthenticationRequest, ColorPicker, ConfirmResponse, FilterPattern, PermissionRequest, PromptResponse, RgbColor, SelectElement, SelectElementOption, - SelectElementOptionOrOptgroup, SimpleDialog, + SelectElementOptionOrOptgroup, SimpleDialog, WebDriverUserPrompt, }; pub enum Dialog { @@ -582,6 +582,16 @@ impl Dialog { }, } } + + pub fn webdriver_diaglog_type(&self) -> WebDriverUserPrompt { + match self { + Dialog::File { .. } => WebDriverUserPrompt::File, + Dialog::SimpleDialog(SimpleDialog::Alert { .. }) => WebDriverUserPrompt::Alert, + Dialog::SimpleDialog(SimpleDialog::Confirm { .. }) => WebDriverUserPrompt::Confirm, + Dialog::SimpleDialog(SimpleDialog::Prompt { .. }) => WebDriverUserPrompt::Prompt, + _ => WebDriverUserPrompt::Default, + } + } } fn make_dialog_label(message: &str, ui: &mut egui::Ui, input_text: Option<&mut String>) { diff --git a/tests/wpt/meta/webdriver/tests/classic/accept_alert/accept.py.ini b/tests/wpt/meta/webdriver/tests/classic/accept_alert/accept.py.ini index 28746ac2aaa..22738ef6923 100644 --- a/tests/wpt/meta/webdriver/tests/classic/accept_alert/accept.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/accept_alert/accept.py.ini @@ -16,3 +16,6 @@ [test_accept_alert] expected: FAIL + + [test_unexpected_alert] + expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/add_cookie/user_prompts.py.ini b/tests/wpt/meta/webdriver/tests/classic/add_cookie/user_prompts.py.ini index 53b6399fdd2..422d3faa658 100644 --- a/tests/wpt/meta/webdriver/tests/classic/add_cookie/user_prompts.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/add_cookie/user_prompts.py.ini @@ -1,5 +1,4 @@ [user_prompts.py] - disabled: https://github.com/servo/servo/issues/35734 [test_accept[capabilities0-alert-None\]] expected: FAIL @@ -53,3 +52,30 @@ [test_default[prompt-None\]] expected: FAIL + + [test_accept_and_notify[alert-None\]] + expected: FAIL + + [test_accept_and_notify[confirm-True\]] + expected: FAIL + + [test_accept_and_notify[prompt-\]] + expected: FAIL + + [test_dismiss_and_notify[alert-None\]] + expected: FAIL + + [test_dismiss_and_notify[confirm-False\]] + expected: FAIL + + [test_dismiss_and_notify[prompt-None\]] + expected: FAIL + + [test_ignore[alert\]] + expected: FAIL + + [test_ignore[confirm\]] + expected: FAIL + + [test_ignore[prompt\]] + expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/back/user_prompts.py.ini b/tests/wpt/meta/webdriver/tests/classic/back/user_prompts.py.ini index fcf10a0526c..e7e7a00af8b 100644 --- a/tests/wpt/meta/webdriver/tests/classic/back/user_prompts.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/back/user_prompts.py.ini @@ -1,5 +1,4 @@ [user_prompts.py] - disabled: https://github.com/servo/servo/issues/35734 [test_accept[capabilities0-alert\]] expected: FAIL @@ -59,15 +58,3 @@ [test_ignore[capabilities0-prompt\]] expected: FAIL - - [test_default[alert-None\]] - expected: FAIL - - [test_default[beforeunload-None\]] - expected: FAIL - - [test_default[confirm-False\]] - expected: FAIL - - [test_default[prompt-None\]] - expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/close_window/user_prompts.py.ini b/tests/wpt/meta/webdriver/tests/classic/close_window/user_prompts.py.ini index fcf10a0526c..e5c4257dd7b 100644 --- a/tests/wpt/meta/webdriver/tests/classic/close_window/user_prompts.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/close_window/user_prompts.py.ini @@ -1,5 +1,4 @@ [user_prompts.py] - disabled: https://github.com/servo/servo/issues/35734 [test_accept[capabilities0-alert\]] expected: FAIL @@ -60,14 +59,11 @@ [test_ignore[capabilities0-prompt\]] expected: FAIL - [test_default[alert-None\]] + [test_dismiss[alert\]] expected: FAIL - [test_default[beforeunload-None\]] + [test_dismiss[confirm\]] expected: FAIL - [test_default[confirm-False\]] - expected: FAIL - - [test_default[prompt-None\]] + [test_dismiss[prompt\]] expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/delete_all_cookies/user_prompts.py.ini b/tests/wpt/meta/webdriver/tests/classic/delete_all_cookies/user_prompts.py.ini index 53b6399fdd2..438e3a5fffa 100644 --- a/tests/wpt/meta/webdriver/tests/classic/delete_all_cookies/user_prompts.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/delete_all_cookies/user_prompts.py.ini @@ -1,5 +1,4 @@ [user_prompts.py] - disabled: https://github.com/servo/servo/issues/35734 [test_accept[capabilities0-alert-None\]] expected: FAIL @@ -44,12 +43,3 @@ [test_ignore[capabilities0-prompt\]] expected: FAIL - - [test_default[alert-None\]] - expected: FAIL - - [test_default[confirm-False\]] - expected: FAIL - - [test_default[prompt-None\]] - expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/delete_cookie/user_prompts.py.ini b/tests/wpt/meta/webdriver/tests/classic/delete_cookie/user_prompts.py.ini index 53b6399fdd2..438e3a5fffa 100644 --- a/tests/wpt/meta/webdriver/tests/classic/delete_cookie/user_prompts.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/delete_cookie/user_prompts.py.ini @@ -1,5 +1,4 @@ [user_prompts.py] - disabled: https://github.com/servo/servo/issues/35734 [test_accept[capabilities0-alert-None\]] expected: FAIL @@ -44,12 +43,3 @@ [test_ignore[capabilities0-prompt\]] expected: FAIL - - [test_default[alert-None\]] - expected: FAIL - - [test_default[confirm-False\]] - expected: FAIL - - [test_default[prompt-None\]] - expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/delete_session/delete.py.ini b/tests/wpt/meta/webdriver/tests/classic/delete_session/delete.py.ini index 6e58d17ded0..ee03ab08fe3 100644 --- a/tests/wpt/meta/webdriver/tests/classic/delete_session/delete.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/delete_session/delete.py.ini @@ -1,4 +1,5 @@ [delete.py] + expected: ERROR [test_null_response_value] expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/dismiss_alert/dismiss.py.ini b/tests/wpt/meta/webdriver/tests/classic/dismiss_alert/dismiss.py.ini index e3f632a82a8..02725c718e2 100644 --- a/tests/wpt/meta/webdriver/tests/classic/dismiss_alert/dismiss.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/dismiss_alert/dismiss.py.ini @@ -16,3 +16,6 @@ [test_dismiss_alert] expected: FAIL + + [test_unexpected_alert] + expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/element_clear/user_prompts.py.ini b/tests/wpt/meta/webdriver/tests/classic/element_clear/user_prompts.py.ini index 53b6399fdd2..86e4c740e8c 100644 --- a/tests/wpt/meta/webdriver/tests/classic/element_clear/user_prompts.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/element_clear/user_prompts.py.ini @@ -1,5 +1,4 @@ [user_prompts.py] - disabled: https://github.com/servo/servo/issues/35734 [test_accept[capabilities0-alert-None\]] expected: FAIL @@ -53,3 +52,48 @@ [test_default[prompt-None\]] expected: FAIL + + [test_accept[alert-None\]] + expected: FAIL + + [test_accept[confirm-True\]] + expected: FAIL + + [test_accept[prompt-\]] + expected: FAIL + + [test_accept_and_notify[alert-None\]] + expected: FAIL + + [test_accept_and_notify[confirm-True\]] + expected: FAIL + + [test_accept_and_notify[prompt-\]] + expected: FAIL + + [test_dismiss[alert-None\]] + expected: FAIL + + [test_dismiss[confirm-False\]] + expected: FAIL + + [test_dismiss[prompt-None\]] + expected: FAIL + + [test_dismiss_and_notify[alert-None\]] + expected: FAIL + + [test_dismiss_and_notify[confirm-False\]] + expected: FAIL + + [test_dismiss_and_notify[prompt-None\]] + expected: FAIL + + [test_ignore[alert\]] + expected: FAIL + + [test_ignore[confirm\]] + expected: FAIL + + [test_ignore[prompt\]] + expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/element_click/navigate.py.ini b/tests/wpt/meta/webdriver/tests/classic/element_click/navigate.py.ini index 6000751c1f1..6b23413bebf 100644 --- a/tests/wpt/meta/webdriver/tests/classic/element_click/navigate.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/element_click/navigate.py.ini @@ -1,4 +1,5 @@ [navigate.py] + expected: TIMEOUT [test_numbers_link] expected: FAIL @@ -17,21 +18,9 @@ [test_link_from_toplevel_context_with_target[_parent\]] expected: FAIL - [test_link_from_nested_context_with_target[\]] - expected: FAIL - [test_link_from_nested_context_with_target[_blank\]] expected: FAIL - [test_link_from_nested_context_with_target[_parent\]] - expected: FAIL - - [test_link_from_nested_context_with_target[_self\]] - expected: FAIL - - [test_link_from_nested_context_with_target[_top\]] - expected: FAIL - [test_link_cross_origin] expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/element_click/user_prompts.py.ini b/tests/wpt/meta/webdriver/tests/classic/element_click/user_prompts.py.ini index a050673119e..5f995c7660f 100644 --- a/tests/wpt/meta/webdriver/tests/classic/element_click/user_prompts.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/element_click/user_prompts.py.ini @@ -1,5 +1,4 @@ [user_prompts.py] - disabled: https://github.com/servo/servo/issues/35734 [test_accept[capabilities0-alert-None\]] expected: FAIL @@ -60,14 +59,20 @@ [test_ignore[capabilities0-prompt\]] expected: FAIL - [test_default[alert-None\]] - expected: FAIL - [test_default[beforeunload-None\]] expected: FAIL - [test_default[confirm-False\]] + [test_accept[beforeunload-None\]] expected: FAIL - [test_default[prompt-None\]] + [test_accept_and_notify[beforeunload-None\]] + expected: FAIL + + [test_dismiss[beforeunload-None\]] + expected: FAIL + + [test_dismiss_and_notify[beforeunload-None\]] + expected: FAIL + + [test_ignore[beforeunload\]] expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/element_send_keys/events.py.ini b/tests/wpt/meta/webdriver/tests/classic/element_send_keys/events.py.ini index 5e4543ef0e9..d016ff8be35 100644 --- a/tests/wpt/meta/webdriver/tests/classic/element_send_keys/events.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/element_send_keys/events.py.ini @@ -1,6 +1,15 @@ [events.py] [test_form_control_send_text[input\]] - expected: FAIL + expected: ERROR [test_form_control_send_text[textarea\]] - expected: FAIL + expected: ERROR + + [test_file_upload] + expected: ERROR + + [test_not_blurred[input\]] + expected: ERROR + + [test_not_blurred[textarea\]] + expected: ERROR diff --git a/tests/wpt/meta/webdriver/tests/classic/element_send_keys/user_prompts.py.ini b/tests/wpt/meta/webdriver/tests/classic/element_send_keys/user_prompts.py.ini index 53b6399fdd2..438e3a5fffa 100644 --- a/tests/wpt/meta/webdriver/tests/classic/element_send_keys/user_prompts.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/element_send_keys/user_prompts.py.ini @@ -1,5 +1,4 @@ [user_prompts.py] - disabled: https://github.com/servo/servo/issues/35734 [test_accept[capabilities0-alert-None\]] expected: FAIL @@ -44,12 +43,3 @@ [test_ignore[capabilities0-prompt\]] expected: FAIL - - [test_default[alert-None\]] - expected: FAIL - - [test_default[confirm-False\]] - expected: FAIL - - [test_default[prompt-None\]] - expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/execute_async_script/execute_async.py.ini b/tests/wpt/meta/webdriver/tests/classic/execute_async_script/execute_async.py.ini index 26921d513c2..57c8a8a0e3f 100644 --- a/tests/wpt/meta/webdriver/tests/classic/execute_async_script/execute_async.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/execute_async_script/execute_async.py.ini @@ -1,22 +1,3 @@ [execute_async.py] - expected: TIMEOUT [test_no_browsing_context] expected: FAIL - - [test_abort_by_user_prompt[alert\]] - expected: FAIL - - [test_abort_by_user_prompt[confirm\]] - expected: FAIL - - [test_abort_by_user_prompt[prompt\]] - expected: FAIL - - [test_abort_by_user_prompt_twice[alert\]] - expected: FAIL - - [test_abort_by_user_prompt_twice[confirm\]] - expected: FAIL - - [test_abort_by_user_prompt_twice[prompt\]] - expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/execute_async_script/user_prompts.py.ini b/tests/wpt/meta/webdriver/tests/classic/execute_async_script/user_prompts.py.ini index a050673119e..da761385801 100644 --- a/tests/wpt/meta/webdriver/tests/classic/execute_async_script/user_prompts.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/execute_async_script/user_prompts.py.ini @@ -1,5 +1,4 @@ [user_prompts.py] - disabled: https://github.com/servo/servo/issues/35734 [test_accept[capabilities0-alert-None\]] expected: FAIL @@ -60,14 +59,8 @@ [test_ignore[capabilities0-prompt\]] expected: FAIL - [test_default[alert-None\]] + [test_accept_and_notify[alert-None\]] expected: FAIL - [test_default[beforeunload-None\]] - expected: FAIL - - [test_default[confirm-False\]] - expected: FAIL - - [test_default[prompt-None\]] + [test_dismiss_and_notify[alert-None\]] expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/execute_script/user_prompts.py.ini b/tests/wpt/meta/webdriver/tests/classic/execute_script/user_prompts.py.ini index a050673119e..da761385801 100644 --- a/tests/wpt/meta/webdriver/tests/classic/execute_script/user_prompts.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/execute_script/user_prompts.py.ini @@ -1,5 +1,4 @@ [user_prompts.py] - disabled: https://github.com/servo/servo/issues/35734 [test_accept[capabilities0-alert-None\]] expected: FAIL @@ -60,14 +59,8 @@ [test_ignore[capabilities0-prompt\]] expected: FAIL - [test_default[alert-None\]] + [test_accept_and_notify[alert-None\]] expected: FAIL - [test_default[beforeunload-None\]] - expected: FAIL - - [test_default[confirm-False\]] - expected: FAIL - - [test_default[prompt-None\]] + [test_dismiss_and_notify[alert-None\]] expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/find_element/user_prompts.py.ini b/tests/wpt/meta/webdriver/tests/classic/find_element/user_prompts.py.ini index 53b6399fdd2..438e3a5fffa 100644 --- a/tests/wpt/meta/webdriver/tests/classic/find_element/user_prompts.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/find_element/user_prompts.py.ini @@ -1,5 +1,4 @@ [user_prompts.py] - disabled: https://github.com/servo/servo/issues/35734 [test_accept[capabilities0-alert-None\]] expected: FAIL @@ -44,12 +43,3 @@ [test_ignore[capabilities0-prompt\]] expected: FAIL - - [test_default[alert-None\]] - expected: FAIL - - [test_default[confirm-False\]] - expected: FAIL - - [test_default[prompt-None\]] - expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/find_element_from_element/user_prompts.py.ini b/tests/wpt/meta/webdriver/tests/classic/find_element_from_element/user_prompts.py.ini index 53b6399fdd2..438e3a5fffa 100644 --- a/tests/wpt/meta/webdriver/tests/classic/find_element_from_element/user_prompts.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/find_element_from_element/user_prompts.py.ini @@ -1,5 +1,4 @@ [user_prompts.py] - disabled: https://github.com/servo/servo/issues/35734 [test_accept[capabilities0-alert-None\]] expected: FAIL @@ -44,12 +43,3 @@ [test_ignore[capabilities0-prompt\]] expected: FAIL - - [test_default[alert-None\]] - expected: FAIL - - [test_default[confirm-False\]] - expected: FAIL - - [test_default[prompt-None\]] - expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/find_element_from_shadow_root/user_prompts.py.ini b/tests/wpt/meta/webdriver/tests/classic/find_element_from_shadow_root/user_prompts.py.ini index 53b6399fdd2..438e3a5fffa 100644 --- a/tests/wpt/meta/webdriver/tests/classic/find_element_from_shadow_root/user_prompts.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/find_element_from_shadow_root/user_prompts.py.ini @@ -1,5 +1,4 @@ [user_prompts.py] - disabled: https://github.com/servo/servo/issues/35734 [test_accept[capabilities0-alert-None\]] expected: FAIL @@ -44,12 +43,3 @@ [test_ignore[capabilities0-prompt\]] expected: FAIL - - [test_default[alert-None\]] - expected: FAIL - - [test_default[confirm-False\]] - expected: FAIL - - [test_default[prompt-None\]] - expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/find_elements/user_prompts.py.ini b/tests/wpt/meta/webdriver/tests/classic/find_elements/user_prompts.py.ini index 53b6399fdd2..438e3a5fffa 100644 --- a/tests/wpt/meta/webdriver/tests/classic/find_elements/user_prompts.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/find_elements/user_prompts.py.ini @@ -1,5 +1,4 @@ [user_prompts.py] - disabled: https://github.com/servo/servo/issues/35734 [test_accept[capabilities0-alert-None\]] expected: FAIL @@ -44,12 +43,3 @@ [test_ignore[capabilities0-prompt\]] expected: FAIL - - [test_default[alert-None\]] - expected: FAIL - - [test_default[confirm-False\]] - expected: FAIL - - [test_default[prompt-None\]] - expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/find_elements_from_element/user_prompts.py.ini b/tests/wpt/meta/webdriver/tests/classic/find_elements_from_element/user_prompts.py.ini index 53b6399fdd2..438e3a5fffa 100644 --- a/tests/wpt/meta/webdriver/tests/classic/find_elements_from_element/user_prompts.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/find_elements_from_element/user_prompts.py.ini @@ -1,5 +1,4 @@ [user_prompts.py] - disabled: https://github.com/servo/servo/issues/35734 [test_accept[capabilities0-alert-None\]] expected: FAIL @@ -44,12 +43,3 @@ [test_ignore[capabilities0-prompt\]] expected: FAIL - - [test_default[alert-None\]] - expected: FAIL - - [test_default[confirm-False\]] - expected: FAIL - - [test_default[prompt-None\]] - expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/find_elements_from_shadow_root/user_prompts.py.ini b/tests/wpt/meta/webdriver/tests/classic/find_elements_from_shadow_root/user_prompts.py.ini index 53b6399fdd2..438e3a5fffa 100644 --- a/tests/wpt/meta/webdriver/tests/classic/find_elements_from_shadow_root/user_prompts.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/find_elements_from_shadow_root/user_prompts.py.ini @@ -1,5 +1,4 @@ [user_prompts.py] - disabled: https://github.com/servo/servo/issues/35734 [test_accept[capabilities0-alert-None\]] expected: FAIL @@ -44,12 +43,3 @@ [test_ignore[capabilities0-prompt\]] expected: FAIL - - [test_default[alert-None\]] - expected: FAIL - - [test_default[confirm-False\]] - expected: FAIL - - [test_default[prompt-None\]] - expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/forward/user_prompts.py.ini b/tests/wpt/meta/webdriver/tests/classic/forward/user_prompts.py.ini deleted file mode 100644 index 326fdd875ad..00000000000 --- a/tests/wpt/meta/webdriver/tests/classic/forward/user_prompts.py.ini +++ /dev/null @@ -1,3 +0,0 @@ -[user_prompts.py] - disabled: https://github.com/servo/servo/issues/35734 - expected: TIMEOUT diff --git a/tests/wpt/meta/webdriver/tests/classic/fullscreen_window/user_prompts.py.ini b/tests/wpt/meta/webdriver/tests/classic/fullscreen_window/user_prompts.py.ini index 53b6399fdd2..86e4c740e8c 100644 --- a/tests/wpt/meta/webdriver/tests/classic/fullscreen_window/user_prompts.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/fullscreen_window/user_prompts.py.ini @@ -1,5 +1,4 @@ [user_prompts.py] - disabled: https://github.com/servo/servo/issues/35734 [test_accept[capabilities0-alert-None\]] expected: FAIL @@ -53,3 +52,48 @@ [test_default[prompt-None\]] expected: FAIL + + [test_accept[alert-None\]] + expected: FAIL + + [test_accept[confirm-True\]] + expected: FAIL + + [test_accept[prompt-\]] + expected: FAIL + + [test_accept_and_notify[alert-None\]] + expected: FAIL + + [test_accept_and_notify[confirm-True\]] + expected: FAIL + + [test_accept_and_notify[prompt-\]] + expected: FAIL + + [test_dismiss[alert-None\]] + expected: FAIL + + [test_dismiss[confirm-False\]] + expected: FAIL + + [test_dismiss[prompt-None\]] + expected: FAIL + + [test_dismiss_and_notify[alert-None\]] + expected: FAIL + + [test_dismiss_and_notify[confirm-False\]] + expected: FAIL + + [test_dismiss_and_notify[prompt-None\]] + expected: FAIL + + [test_ignore[alert\]] + expected: FAIL + + [test_ignore[confirm\]] + expected: FAIL + + [test_ignore[prompt\]] + expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/get_active_element/user_prompts.py.ini b/tests/wpt/meta/webdriver/tests/classic/get_active_element/user_prompts.py.ini index 53b6399fdd2..438e3a5fffa 100644 --- a/tests/wpt/meta/webdriver/tests/classic/get_active_element/user_prompts.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/get_active_element/user_prompts.py.ini @@ -1,5 +1,4 @@ [user_prompts.py] - disabled: https://github.com/servo/servo/issues/35734 [test_accept[capabilities0-alert-None\]] expected: FAIL @@ -44,12 +43,3 @@ [test_ignore[capabilities0-prompt\]] expected: FAIL - - [test_default[alert-None\]] - expected: FAIL - - [test_default[confirm-False\]] - expected: FAIL - - [test_default[prompt-None\]] - 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 fa50e27c0d1..d348e41375b 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,14 +1,4 @@ [get.py] - disabled: https://github.com/servo/servo/issues/35734 - [test_no_top_browsing_context] - expected: FAIL - - [test_no_browsing_context] - expected: ERROR - - [test_no_user_prompt] - expected: FAIL - [test_get_alert_text] expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/get_computed_label/user_prompts.py.ini b/tests/wpt/meta/webdriver/tests/classic/get_computed_label/user_prompts.py.ini index 913351aaa55..a383edda800 100644 --- a/tests/wpt/meta/webdriver/tests/classic/get_computed_label/user_prompts.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/get_computed_label/user_prompts.py.ini @@ -1,2 +1,54 @@ [user_prompts.py] - disabled: https://github.com/servo/servo/issues/35734 \ No newline at end of file + [test_accept[alert-None\]] + expected: FAIL + + [test_accept[confirm-True\]] + expected: FAIL + + [test_accept[prompt-\]] + expected: FAIL + + [test_accept_and_notify[alert-None\]] + expected: FAIL + + [test_accept_and_notify[confirm-True\]] + expected: FAIL + + [test_accept_and_notify[prompt-\]] + expected: FAIL + + [test_dismiss[alert-None\]] + expected: FAIL + + [test_dismiss[confirm-False\]] + expected: FAIL + + [test_dismiss[prompt-None\]] + expected: FAIL + + [test_dismiss_and_notify[alert-None\]] + expected: FAIL + + [test_dismiss_and_notify[confirm-False\]] + expected: FAIL + + [test_dismiss_and_notify[prompt-None\]] + expected: FAIL + + [test_ignore[alert\]] + expected: FAIL + + [test_ignore[confirm\]] + expected: FAIL + + [test_ignore[prompt\]] + expected: FAIL + + [test_default[alert-None\]] + expected: FAIL + + [test_default[confirm-False\]] + expected: FAIL + + [test_default[prompt-None\]] + expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/get_computed_role/user_prompts.py.ini b/tests/wpt/meta/webdriver/tests/classic/get_computed_role/user_prompts.py.ini deleted file mode 100644 index b168410dab1..00000000000 --- a/tests/wpt/meta/webdriver/tests/classic/get_computed_role/user_prompts.py.ini +++ /dev/null @@ -1,2 +0,0 @@ -[user_prompts.py] - disabled: https://github.com/servo/servo/issues/35734 diff --git a/tests/wpt/meta/webdriver/tests/classic/get_current_url/user_prompts.py.ini b/tests/wpt/meta/webdriver/tests/classic/get_current_url/user_prompts.py.ini index 53b6399fdd2..438e3a5fffa 100644 --- a/tests/wpt/meta/webdriver/tests/classic/get_current_url/user_prompts.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/get_current_url/user_prompts.py.ini @@ -1,5 +1,4 @@ [user_prompts.py] - disabled: https://github.com/servo/servo/issues/35734 [test_accept[capabilities0-alert-None\]] expected: FAIL @@ -44,12 +43,3 @@ [test_ignore[capabilities0-prompt\]] expected: FAIL - - [test_default[alert-None\]] - expected: FAIL - - [test_default[confirm-False\]] - expected: FAIL - - [test_default[prompt-None\]] - expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/get_element_attribute/user_prompts.py.ini b/tests/wpt/meta/webdriver/tests/classic/get_element_attribute/user_prompts.py.ini index 53b6399fdd2..438e3a5fffa 100644 --- a/tests/wpt/meta/webdriver/tests/classic/get_element_attribute/user_prompts.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/get_element_attribute/user_prompts.py.ini @@ -1,5 +1,4 @@ [user_prompts.py] - disabled: https://github.com/servo/servo/issues/35734 [test_accept[capabilities0-alert-None\]] expected: FAIL @@ -44,12 +43,3 @@ [test_ignore[capabilities0-prompt\]] expected: FAIL - - [test_default[alert-None\]] - expected: FAIL - - [test_default[confirm-False\]] - expected: FAIL - - [test_default[prompt-None\]] - expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/get_element_css_value/user_prompts.py.ini b/tests/wpt/meta/webdriver/tests/classic/get_element_css_value/user_prompts.py.ini index 53b6399fdd2..438e3a5fffa 100644 --- a/tests/wpt/meta/webdriver/tests/classic/get_element_css_value/user_prompts.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/get_element_css_value/user_prompts.py.ini @@ -1,5 +1,4 @@ [user_prompts.py] - disabled: https://github.com/servo/servo/issues/35734 [test_accept[capabilities0-alert-None\]] expected: FAIL @@ -44,12 +43,3 @@ [test_ignore[capabilities0-prompt\]] expected: FAIL - - [test_default[alert-None\]] - expected: FAIL - - [test_default[confirm-False\]] - expected: FAIL - - [test_default[prompt-None\]] - expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/get_element_property/user_prompts.py.ini b/tests/wpt/meta/webdriver/tests/classic/get_element_property/user_prompts.py.ini index 53b6399fdd2..438e3a5fffa 100644 --- a/tests/wpt/meta/webdriver/tests/classic/get_element_property/user_prompts.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/get_element_property/user_prompts.py.ini @@ -1,5 +1,4 @@ [user_prompts.py] - disabled: https://github.com/servo/servo/issues/35734 [test_accept[capabilities0-alert-None\]] expected: FAIL @@ -44,12 +43,3 @@ [test_ignore[capabilities0-prompt\]] expected: FAIL - - [test_default[alert-None\]] - expected: FAIL - - [test_default[confirm-False\]] - expected: FAIL - - [test_default[prompt-None\]] - expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/get_element_rect/user_prompts.py.ini b/tests/wpt/meta/webdriver/tests/classic/get_element_rect/user_prompts.py.ini index 53b6399fdd2..438e3a5fffa 100644 --- a/tests/wpt/meta/webdriver/tests/classic/get_element_rect/user_prompts.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/get_element_rect/user_prompts.py.ini @@ -1,5 +1,4 @@ [user_prompts.py] - disabled: https://github.com/servo/servo/issues/35734 [test_accept[capabilities0-alert-None\]] expected: FAIL @@ -44,12 +43,3 @@ [test_ignore[capabilities0-prompt\]] expected: FAIL - - [test_default[alert-None\]] - expected: FAIL - - [test_default[confirm-False\]] - expected: FAIL - - [test_default[prompt-None\]] - expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/get_element_shadow_root/user_prompts.py.ini b/tests/wpt/meta/webdriver/tests/classic/get_element_shadow_root/user_prompts.py.ini index 53b6399fdd2..438e3a5fffa 100644 --- a/tests/wpt/meta/webdriver/tests/classic/get_element_shadow_root/user_prompts.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/get_element_shadow_root/user_prompts.py.ini @@ -1,5 +1,4 @@ [user_prompts.py] - disabled: https://github.com/servo/servo/issues/35734 [test_accept[capabilities0-alert-None\]] expected: FAIL @@ -44,12 +43,3 @@ [test_ignore[capabilities0-prompt\]] expected: FAIL - - [test_default[alert-None\]] - expected: FAIL - - [test_default[confirm-False\]] - expected: FAIL - - [test_default[prompt-None\]] - expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/get_element_tag_name/user_prompts.py.ini b/tests/wpt/meta/webdriver/tests/classic/get_element_tag_name/user_prompts.py.ini index 53b6399fdd2..64c78048a1e 100644 --- a/tests/wpt/meta/webdriver/tests/classic/get_element_tag_name/user_prompts.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/get_element_tag_name/user_prompts.py.ini @@ -1,5 +1,4 @@ [user_prompts.py] - disabled: https://github.com/servo/servo/issues/35734 [test_accept[capabilities0-alert-None\]] expected: FAIL @@ -45,11 +44,20 @@ [test_ignore[capabilities0-prompt\]] expected: FAIL - [test_default[alert-None\]] + [test_accept[alert-None\]] expected: FAIL - [test_default[confirm-False\]] + [test_accept[confirm-True\]] expected: FAIL - [test_default[prompt-None\]] + [test_accept[prompt-\]] + expected: FAIL + + [test_dismiss[alert-None\]] + expected: FAIL + + [test_dismiss[confirm-False\]] + expected: FAIL + + [test_dismiss[prompt-None\]] expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/get_element_text/user_prompts.py.ini b/tests/wpt/meta/webdriver/tests/classic/get_element_text/user_prompts.py.ini index 53b6399fdd2..438e3a5fffa 100644 --- a/tests/wpt/meta/webdriver/tests/classic/get_element_text/user_prompts.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/get_element_text/user_prompts.py.ini @@ -1,5 +1,4 @@ [user_prompts.py] - disabled: https://github.com/servo/servo/issues/35734 [test_accept[capabilities0-alert-None\]] expected: FAIL @@ -44,12 +43,3 @@ [test_ignore[capabilities0-prompt\]] expected: FAIL - - [test_default[alert-None\]] - expected: FAIL - - [test_default[confirm-False\]] - expected: FAIL - - [test_default[prompt-None\]] - expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/get_named_cookie/user_prompts.py.ini b/tests/wpt/meta/webdriver/tests/classic/get_named_cookie/user_prompts.py.ini index 53b6399fdd2..438e3a5fffa 100644 --- a/tests/wpt/meta/webdriver/tests/classic/get_named_cookie/user_prompts.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/get_named_cookie/user_prompts.py.ini @@ -1,5 +1,4 @@ [user_prompts.py] - disabled: https://github.com/servo/servo/issues/35734 [test_accept[capabilities0-alert-None\]] expected: FAIL @@ -44,12 +43,3 @@ [test_ignore[capabilities0-prompt\]] expected: FAIL - - [test_default[alert-None\]] - expected: FAIL - - [test_default[confirm-False\]] - expected: FAIL - - [test_default[prompt-None\]] - expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/get_page_source/user_prompts.py.ini b/tests/wpt/meta/webdriver/tests/classic/get_page_source/user_prompts.py.ini index 53b6399fdd2..c120377e7a6 100644 --- a/tests/wpt/meta/webdriver/tests/classic/get_page_source/user_prompts.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/get_page_source/user_prompts.py.ini @@ -1,5 +1,5 @@ [user_prompts.py] - disabled: https://github.com/servo/servo/issues/35734 + expected: TIMEOUT [test_accept[capabilities0-alert-None\]] expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/get_title/user_prompts.py.ini b/tests/wpt/meta/webdriver/tests/classic/get_title/user_prompts.py.ini index 53b6399fdd2..438e3a5fffa 100644 --- a/tests/wpt/meta/webdriver/tests/classic/get_title/user_prompts.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/get_title/user_prompts.py.ini @@ -1,5 +1,4 @@ [user_prompts.py] - disabled: https://github.com/servo/servo/issues/35734 [test_accept[capabilities0-alert-None\]] expected: FAIL @@ -44,12 +43,3 @@ [test_ignore[capabilities0-prompt\]] expected: FAIL - - [test_default[alert-None\]] - expected: FAIL - - [test_default[confirm-False\]] - expected: FAIL - - [test_default[prompt-None\]] - expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/get_window_handle/user_prompts.py.ini b/tests/wpt/meta/webdriver/tests/classic/get_window_handle/user_prompts.py.ini index 0bc849b2704..9098ee3d7a5 100644 --- a/tests/wpt/meta/webdriver/tests/classic/get_window_handle/user_prompts.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/get_window_handle/user_prompts.py.ini @@ -1,5 +1,4 @@ [user_prompts.py] - disabled: https://github.com/servo/servo/issues/35734 [test_accept[capabilities0-alert\]] expected: FAIL @@ -44,12 +43,3 @@ [test_ignore[capabilities0-prompt\]] expected: FAIL - - [test_default[alert\]] - expected: FAIL - - [test_default[confirm\]] - expected: FAIL - - [test_default[prompt\]] - expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/get_window_handles/user_prompts.py.ini b/tests/wpt/meta/webdriver/tests/classic/get_window_handles/user_prompts.py.ini index 0bc849b2704..9098ee3d7a5 100644 --- a/tests/wpt/meta/webdriver/tests/classic/get_window_handles/user_prompts.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/get_window_handles/user_prompts.py.ini @@ -1,5 +1,4 @@ [user_prompts.py] - disabled: https://github.com/servo/servo/issues/35734 [test_accept[capabilities0-alert\]] expected: FAIL @@ -44,12 +43,3 @@ [test_ignore[capabilities0-prompt\]] expected: FAIL - - [test_default[alert\]] - expected: FAIL - - [test_default[confirm\]] - expected: FAIL - - [test_default[prompt\]] - expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/get_window_rect/user_prompts.py.ini b/tests/wpt/meta/webdriver/tests/classic/get_window_rect/user_prompts.py.ini index 53b6399fdd2..438e3a5fffa 100644 --- a/tests/wpt/meta/webdriver/tests/classic/get_window_rect/user_prompts.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/get_window_rect/user_prompts.py.ini @@ -1,5 +1,4 @@ [user_prompts.py] - disabled: https://github.com/servo/servo/issues/35734 [test_accept[capabilities0-alert-None\]] expected: FAIL @@ -44,12 +43,3 @@ [test_ignore[capabilities0-prompt\]] expected: FAIL - - [test_default[alert-None\]] - expected: FAIL - - [test_default[confirm-False\]] - expected: FAIL - - [test_default[prompt-None\]] - expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/is_element_enabled/user_prompts.py.ini b/tests/wpt/meta/webdriver/tests/classic/is_element_enabled/user_prompts.py.ini index 913351aaa55..0b2f6ad9d2a 100644 --- a/tests/wpt/meta/webdriver/tests/classic/is_element_enabled/user_prompts.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/is_element_enabled/user_prompts.py.ini @@ -1,2 +1,2 @@ [user_prompts.py] - disabled: https://github.com/servo/servo/issues/35734 \ No newline at end of file + expected: TIMEOUT diff --git a/tests/wpt/meta/webdriver/tests/classic/is_element_selected/user_prompts.py.ini b/tests/wpt/meta/webdriver/tests/classic/is_element_selected/user_prompts.py.ini index 53b6399fdd2..c120377e7a6 100644 --- a/tests/wpt/meta/webdriver/tests/classic/is_element_selected/user_prompts.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/is_element_selected/user_prompts.py.ini @@ -1,5 +1,5 @@ [user_prompts.py] - disabled: https://github.com/servo/servo/issues/35734 + expected: TIMEOUT [test_accept[capabilities0-alert-None\]] expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/maximize_window/user_prompts.py.ini b/tests/wpt/meta/webdriver/tests/classic/maximize_window/user_prompts.py.ini index 53b6399fdd2..86e4c740e8c 100644 --- a/tests/wpt/meta/webdriver/tests/classic/maximize_window/user_prompts.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/maximize_window/user_prompts.py.ini @@ -1,5 +1,4 @@ [user_prompts.py] - disabled: https://github.com/servo/servo/issues/35734 [test_accept[capabilities0-alert-None\]] expected: FAIL @@ -53,3 +52,48 @@ [test_default[prompt-None\]] expected: FAIL + + [test_accept[alert-None\]] + expected: FAIL + + [test_accept[confirm-True\]] + expected: FAIL + + [test_accept[prompt-\]] + expected: FAIL + + [test_accept_and_notify[alert-None\]] + expected: FAIL + + [test_accept_and_notify[confirm-True\]] + expected: FAIL + + [test_accept_and_notify[prompt-\]] + expected: FAIL + + [test_dismiss[alert-None\]] + expected: FAIL + + [test_dismiss[confirm-False\]] + expected: FAIL + + [test_dismiss[prompt-None\]] + expected: FAIL + + [test_dismiss_and_notify[alert-None\]] + expected: FAIL + + [test_dismiss_and_notify[confirm-False\]] + expected: FAIL + + [test_dismiss_and_notify[prompt-None\]] + expected: FAIL + + [test_ignore[alert\]] + expected: FAIL + + [test_ignore[confirm\]] + expected: FAIL + + [test_ignore[prompt\]] + expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/minimize_window/user_prompts.py.ini b/tests/wpt/meta/webdriver/tests/classic/minimize_window/user_prompts.py.ini index 53b6399fdd2..86e4c740e8c 100644 --- a/tests/wpt/meta/webdriver/tests/classic/minimize_window/user_prompts.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/minimize_window/user_prompts.py.ini @@ -1,5 +1,4 @@ [user_prompts.py] - disabled: https://github.com/servo/servo/issues/35734 [test_accept[capabilities0-alert-None\]] expected: FAIL @@ -53,3 +52,48 @@ [test_default[prompt-None\]] expected: FAIL + + [test_accept[alert-None\]] + expected: FAIL + + [test_accept[confirm-True\]] + expected: FAIL + + [test_accept[prompt-\]] + expected: FAIL + + [test_accept_and_notify[alert-None\]] + expected: FAIL + + [test_accept_and_notify[confirm-True\]] + expected: FAIL + + [test_accept_and_notify[prompt-\]] + expected: FAIL + + [test_dismiss[alert-None\]] + expected: FAIL + + [test_dismiss[confirm-False\]] + expected: FAIL + + [test_dismiss[prompt-None\]] + expected: FAIL + + [test_dismiss_and_notify[alert-None\]] + expected: FAIL + + [test_dismiss_and_notify[confirm-False\]] + expected: FAIL + + [test_dismiss_and_notify[prompt-None\]] + expected: FAIL + + [test_ignore[alert\]] + expected: FAIL + + [test_ignore[confirm\]] + expected: FAIL + + [test_ignore[prompt\]] + expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/navigate_to/user_prompts.py.ini b/tests/wpt/meta/webdriver/tests/classic/navigate_to/user_prompts.py.ini index fcf10a0526c..69704334bfc 100644 --- a/tests/wpt/meta/webdriver/tests/classic/navigate_to/user_prompts.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/navigate_to/user_prompts.py.ini @@ -1,5 +1,4 @@ [user_prompts.py] - disabled: https://github.com/servo/servo/issues/35734 [test_accept[capabilities0-alert\]] expected: FAIL @@ -60,14 +59,8 @@ [test_ignore[capabilities0-prompt\]] expected: FAIL - [test_default[alert-None\]] + [test_accept_and_notify[alert-None\]] expected: FAIL - [test_default[beforeunload-None\]] - expected: FAIL - - [test_default[confirm-False\]] - expected: FAIL - - [test_default[prompt-None\]] + [test_dismiss_and_notify[alert-None\]] expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/new_session/unhandled_prompt_behavior.py.ini b/tests/wpt/meta/webdriver/tests/classic/new_session/unhandled_prompt_behavior.py.ini deleted file mode 100644 index 7ea404e4f6a..00000000000 --- a/tests/wpt/meta/webdriver/tests/classic/new_session/unhandled_prompt_behavior.py.ini +++ /dev/null @@ -1,25 +0,0 @@ -[unhandled_prompt_behavior.py] - expected: TIMEOUT - [test_unhandled_prompt_behavior_as_object_default[handler0-expected_capability0-True-True\]] - expected: FAIL - - [test_unhandled_prompt_behavior_as_object_default[handler1-expected_capability1-True-False\]] - expected: FAIL - - [test_unhandled_prompt_behavior_as_object_default[handler2-expected_capability2-False-True\]] - expected: FAIL - - [test_beforeunload_prompts_always_automatically_accepted[accept\]] - expected: FAIL - - [test_beforeunload_prompts_always_automatically_accepted[accept and notify\]] - expected: FAIL - - [test_beforeunload_prompts_always_automatically_accepted[dismiss\]] - expected: FAIL - - [test_beforeunload_prompts_always_automatically_accepted[dismiss and notify\]] - expected: FAIL - - [test_beforeunload_prompts_always_automatically_accepted[ignore\]] - expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/new_window/user_prompts.py.ini b/tests/wpt/meta/webdriver/tests/classic/new_window/user_prompts.py.ini index 53b6399fdd2..438e3a5fffa 100644 --- a/tests/wpt/meta/webdriver/tests/classic/new_window/user_prompts.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/new_window/user_prompts.py.ini @@ -1,5 +1,4 @@ [user_prompts.py] - disabled: https://github.com/servo/servo/issues/35734 [test_accept[capabilities0-alert-None\]] expected: FAIL @@ -44,12 +43,3 @@ [test_ignore[capabilities0-prompt\]] expected: FAIL - - [test_default[alert-None\]] - expected: FAIL - - [test_default[confirm-False\]] - expected: FAIL - - [test_default[prompt-None\]] - expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/perform_actions/pointer_contextmenu.py.ini b/tests/wpt/meta/webdriver/tests/classic/perform_actions/pointer_contextmenu.py.ini index b64bac15ff9..4d822f710d4 100644 --- a/tests/wpt/meta/webdriver/tests/classic/perform_actions/pointer_contextmenu.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/perform_actions/pointer_contextmenu.py.ini @@ -1,6 +1,6 @@ [pointer_contextmenu.py] - [test_control_click[\\ue009-ctrlKey\]] - expected: FAIL - [test_control_click[\\ue051-ctrlKey\]] expected: FAIL + + [test_release_control_click] + expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/perform_actions/user_prompts.py.ini b/tests/wpt/meta/webdriver/tests/classic/perform_actions/user_prompts.py.ini index ca5401f5012..8d8b5385924 100644 --- a/tests/wpt/meta/webdriver/tests/classic/perform_actions/user_prompts.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/perform_actions/user_prompts.py.ini @@ -1,5 +1,4 @@ [user_prompts.py] - disabled: https://github.com/servo/servo/issues/35734 [test_accept[capabilities0-alert-None\]] expected: ERROR @@ -44,15 +43,3 @@ [test_ignore[capabilities0-prompt\]] expected: ERROR - - [test_default[alert-None\]] - expected: ERROR - - [test_default[confirm-False\]] - expected: ERROR - - [test_default[prompt-None\]] - expected: ERROR - - [test_dismissed_beforeunload] - expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/print/user_prompts.py.ini b/tests/wpt/meta/webdriver/tests/classic/print/user_prompts.py.ini index 53b6399fdd2..86e4c740e8c 100644 --- a/tests/wpt/meta/webdriver/tests/classic/print/user_prompts.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/print/user_prompts.py.ini @@ -1,5 +1,4 @@ [user_prompts.py] - disabled: https://github.com/servo/servo/issues/35734 [test_accept[capabilities0-alert-None\]] expected: FAIL @@ -53,3 +52,48 @@ [test_default[prompt-None\]] expected: FAIL + + [test_accept[alert-None\]] + expected: FAIL + + [test_accept[confirm-True\]] + expected: FAIL + + [test_accept[prompt-\]] + expected: FAIL + + [test_accept_and_notify[alert-None\]] + expected: FAIL + + [test_accept_and_notify[confirm-True\]] + expected: FAIL + + [test_accept_and_notify[prompt-\]] + expected: FAIL + + [test_dismiss[alert-None\]] + expected: FAIL + + [test_dismiss[confirm-False\]] + expected: FAIL + + [test_dismiss[prompt-None\]] + expected: FAIL + + [test_dismiss_and_notify[alert-None\]] + expected: FAIL + + [test_dismiss_and_notify[confirm-False\]] + expected: FAIL + + [test_dismiss_and_notify[prompt-None\]] + expected: FAIL + + [test_ignore[alert\]] + expected: FAIL + + [test_ignore[confirm\]] + expected: FAIL + + [test_ignore[prompt\]] + expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/refresh/user_prompts.py.ini b/tests/wpt/meta/webdriver/tests/classic/refresh/user_prompts.py.ini index fcf10a0526c..4f4cce7fc66 100644 --- a/tests/wpt/meta/webdriver/tests/classic/refresh/user_prompts.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/refresh/user_prompts.py.ini @@ -1,5 +1,4 @@ [user_prompts.py] - disabled: https://github.com/servo/servo/issues/35734 [test_accept[capabilities0-alert\]] expected: FAIL @@ -60,14 +59,38 @@ [test_ignore[capabilities0-prompt\]] expected: FAIL - [test_default[alert-None\]] - expected: FAIL - [test_default[beforeunload-None\]] expected: FAIL - [test_default[confirm-False\]] + [test_accept[alert\]] expected: FAIL - [test_default[prompt-None\]] + [test_accept[beforeunload\]] + expected: FAIL + + [test_accept[confirm\]] + expected: FAIL + + [test_accept[prompt\]] + expected: FAIL + + [test_accept_and_notify[beforeunload-None\]] + expected: FAIL + + [test_dismiss[alert\]] + expected: FAIL + + [test_dismiss[beforeunload\]] + expected: FAIL + + [test_dismiss[confirm\]] + expected: FAIL + + [test_dismiss[prompt\]] + expected: FAIL + + [test_dismiss_and_notify[beforeunload-None\]] + expected: FAIL + + [test_ignore[beforeunload\]] expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/send_alert_text/send.py.ini b/tests/wpt/meta/webdriver/tests/classic/send_alert_text/send.py.ini index fc3fe5245a3..f68ef62a2b2 100644 --- a/tests/wpt/meta/webdriver/tests/classic/send_alert_text/send.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/send_alert_text/send.py.ini @@ -1,3 +1,51 @@ [send.py] - disabled: https://github.com/servo/servo/issues/35734 - expected: TIMEOUT + [test_null_response_value] + expected: ERROR + + [test_invalid_input[None\]] + expected: ERROR + + [test_invalid_input[text1\]] + expected: ERROR + + [test_invalid_input[text2\]] + expected: ERROR + + [test_invalid_input[42\]] + expected: ERROR + + [test_no_top_browsing_context] + expected: FAIL + + [test_no_browsing_context] + expected: FAIL + + [test_no_user_prompt] + expected: FAIL + + [test_alert_element_not_interactable[alert\]] + expected: FAIL + + [test_alert_element_not_interactable[confirm\]] + expected: FAIL + + [test_chained_alert_element_not_interactable[alert\]] + expected: FAIL + + [test_chained_alert_element_not_interactable[confirm\]] + expected: FAIL + + [test_send_alert_text[\]] + expected: ERROR + + [test_send_alert_text[Federer\]] + expected: ERROR + + [test_send_alert_text[ Fed erer \]] + expected: FAIL + + [test_send_alert_text[Fed\\terer\]] + expected: ERROR + + [test_unexpected_alert] + expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/set_timeouts/user_prompts.py.ini b/tests/wpt/meta/webdriver/tests/classic/set_timeouts/user_prompts.py.ini deleted file mode 100644 index 913351aaa55..00000000000 --- a/tests/wpt/meta/webdriver/tests/classic/set_timeouts/user_prompts.py.ini +++ /dev/null @@ -1,2 +0,0 @@ -[user_prompts.py] - disabled: https://github.com/servo/servo/issues/35734 \ No newline at end of file diff --git a/tests/wpt/meta/webdriver/tests/classic/set_window_rect/set.py.ini b/tests/wpt/meta/webdriver/tests/classic/set_window_rect/set.py.ini index ea6dcba4426..e701c58381b 100644 --- a/tests/wpt/meta/webdriver/tests/classic/set_window_rect/set.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/set_window_rect/set.py.ini @@ -5,27 +5,9 @@ [test_restore_from_maximized] expected: FAIL - [test_x_y_floats] - expected: FAIL - - [test_set_to_available_size] - expected: FAIL - [test_set_smaller_than_minimum_browser_size] expected: FAIL - [test_x_y] - expected: FAIL - - [test_x_as_current] - expected: FAIL - - [test_y_as_current] - expected: FAIL - - [test_negative_x_y] - expected: FAIL - [test_no_change[rect12\]] expected: FAIL @@ -43,21 +25,3 @@ [test_no_change[rect19\]] expected: FAIL - - [test_partial_input[rect2\]] - expected: FAIL - - [test_partial_input[rect3\]] - expected: FAIL - - [test_partial_input[rect4\]] - expected: FAIL - - [test_partial_input[rect5\]] - expected: FAIL - - [test_partial_input[rect6\]] - expected: FAIL - - [test_partial_input[rect7\]] - expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/set_window_rect/user_prompts.py.ini b/tests/wpt/meta/webdriver/tests/classic/set_window_rect/user_prompts.py.ini deleted file mode 100644 index 913351aaa55..00000000000 --- a/tests/wpt/meta/webdriver/tests/classic/set_window_rect/user_prompts.py.ini +++ /dev/null @@ -1,2 +0,0 @@ -[user_prompts.py] - disabled: https://github.com/servo/servo/issues/35734 \ No newline at end of file diff --git a/tests/wpt/meta/webdriver/tests/classic/take_element_screenshot/user_prompts.py.ini b/tests/wpt/meta/webdriver/tests/classic/take_element_screenshot/user_prompts.py.ini index 53b6399fdd2..c120377e7a6 100644 --- a/tests/wpt/meta/webdriver/tests/classic/take_element_screenshot/user_prompts.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/take_element_screenshot/user_prompts.py.ini @@ -1,5 +1,5 @@ [user_prompts.py] - disabled: https://github.com/servo/servo/issues/35734 + expected: TIMEOUT [test_accept[capabilities0-alert-None\]] expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/take_screenshot/user_prompts.py.ini b/tests/wpt/meta/webdriver/tests/classic/take_screenshot/user_prompts.py.ini index 53b6399fdd2..438e3a5fffa 100644 --- a/tests/wpt/meta/webdriver/tests/classic/take_screenshot/user_prompts.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/take_screenshot/user_prompts.py.ini @@ -1,5 +1,4 @@ [user_prompts.py] - disabled: https://github.com/servo/servo/issues/35734 [test_accept[capabilities0-alert-None\]] expected: FAIL @@ -44,12 +43,3 @@ [test_ignore[capabilities0-prompt\]] expected: FAIL - - [test_default[alert-None\]] - expected: FAIL - - [test_default[confirm-False\]] - expected: FAIL - - [test_default[prompt-None\]] - expected: FAIL