mirror of
https://github.com/servo/servo.git
synced 2025-07-20 05:43:41 +01:00
webdriver: Add handle any user prompts
step for all commands (#38035)
- Add `handler any user prompt` step for all commands. - Enable webdriver tests which were blocked by `handle any user prompt` step. --------- Signed-off-by: batu_hoang <hoang.binh.trong@huawei.com>
This commit is contained in:
parent
18d1a62add
commit
345733a5c5
66 changed files with 859 additions and 472 deletions
|
@ -934,7 +934,11 @@ impl WindowMethods<crate::DomTypeHolder> for Window {
|
||||||
};
|
};
|
||||||
let msg = EmbedderMsg::ShowSimpleDialog(self.webview_id(), dialog);
|
let msg = EmbedderMsg::ShowSimpleDialog(self.webview_id(), dialog);
|
||||||
self.send_to_embedder(msg);
|
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
|
// https://html.spec.whatwg.org/multipage/#dom-confirm
|
||||||
|
@ -947,7 +951,14 @@ impl WindowMethods<crate::DomTypeHolder> for Window {
|
||||||
};
|
};
|
||||||
let msg = EmbedderMsg::ShowSimpleDialog(self.webview_id(), dialog);
|
let msg = EmbedderMsg::ShowSimpleDialog(self.webview_id(), dialog);
|
||||||
self.send_to_embedder(msg);
|
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
|
// https://html.spec.whatwg.org/multipage/#dom-prompt
|
||||||
|
@ -961,9 +972,13 @@ impl WindowMethods<crate::DomTypeHolder> for Window {
|
||||||
};
|
};
|
||||||
let msg = EmbedderMsg::ShowSimpleDialog(self.webview_id(), dialog);
|
let msg = EmbedderMsg::ShowSimpleDialog(self.webview_id(), dialog);
|
||||||
self.send_to_embedder(msg);
|
self.send_to_embedder(msg);
|
||||||
match receiver.recv().unwrap() {
|
match receiver.recv() {
|
||||||
PromptResponse::Ok(input) => Some(input.into()),
|
Ok(PromptResponse::Ok(input)) => Some(input.into()),
|
||||||
PromptResponse::Cancel => None,
|
Ok(PromptResponse::Cancel) => None,
|
||||||
|
Err(_) => {
|
||||||
|
warn!("Prompt dialog was cancelled or failed to show.");
|
||||||
|
None
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -28,10 +28,48 @@ use crate::{MouseButton, MouseButtonAction};
|
||||||
#[derive(Clone, Copy, Debug, Deserialize, PartialEq, Serialize)]
|
#[derive(Clone, Copy, Debug, Deserialize, PartialEq, Serialize)]
|
||||||
pub struct WebDriverMessageId(pub usize);
|
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<Self> {
|
||||||
|
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 {
|
pub enum WebDriverUserPromptAction {
|
||||||
Accept,
|
Accept,
|
||||||
Dismiss,
|
Dismiss,
|
||||||
|
Ignore,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl WebDriverUserPromptAction {
|
||||||
|
pub fn new_from_str(s: &str) -> Option<Self> {
|
||||||
|
match s {
|
||||||
|
"accept" => Some(WebDriverUserPromptAction::Accept),
|
||||||
|
"dismiss" => Some(WebDriverUserPromptAction::Dismiss),
|
||||||
|
"ignore" => Some(WebDriverUserPromptAction::Ignore),
|
||||||
|
_ => None,
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Messages to the constellation originating from the WebDriver server.
|
/// Messages to the constellation originating from the WebDriver server.
|
||||||
|
@ -121,10 +159,11 @@ pub enum WebDriverCommandMsg {
|
||||||
IsWebViewOpen(WebViewId, IpcSender<bool>),
|
IsWebViewOpen(WebViewId, IpcSender<bool>),
|
||||||
/// Check whether browsing context is open.
|
/// Check whether browsing context is open.
|
||||||
IsBrowsingContextOpen(BrowsingContextId, IpcSender<bool>),
|
IsBrowsingContextOpen(BrowsingContextId, IpcSender<bool>),
|
||||||
|
CurrentUserPrompt(WebViewId, IpcSender<Option<WebDriverUserPrompt>>),
|
||||||
HandleUserPrompt(
|
HandleUserPrompt(
|
||||||
WebViewId,
|
WebViewId,
|
||||||
WebDriverUserPromptAction,
|
WebDriverUserPromptAction,
|
||||||
IpcSender<Result<(), ()>>,
|
IpcSender<Result<Option<String>, ()>>,
|
||||||
),
|
),
|
||||||
GetAlertText(WebViewId, IpcSender<Result<String, ()>>),
|
GetAlertText(WebViewId, IpcSender<Result<String, ()>>),
|
||||||
AddLoadStatusSender(WebViewId, IpcSender<WebDriverLoadStatus>),
|
AddLoadStatusSender(WebViewId, IpcSender<WebDriverLoadStatus>),
|
||||||
|
|
|
@ -66,6 +66,9 @@ use webdriver::response::{
|
||||||
use webdriver::server::{self, Session, SessionTeardownKind, WebDriverHandler};
|
use webdriver::server::{self, Session, SessionTeardownKind, WebDriverHandler};
|
||||||
|
|
||||||
use crate::actions::{ActionItem, InputSourceState, PointerInputState};
|
use crate::actions::{ActionItem, InputSourceState, PointerInputState};
|
||||||
|
use crate::user_prompt::{
|
||||||
|
UserPromptHandler, default_unhandled_prompt_behavior, deserialize_unhandled_prompt_behaviour,
|
||||||
|
};
|
||||||
|
|
||||||
#[derive(Default)]
|
#[derive(Default)]
|
||||||
pub struct WebDriverMessageIdGenerator {
|
pub struct WebDriverMessageIdGenerator {
|
||||||
|
@ -186,7 +189,7 @@ pub struct WebDriverSession {
|
||||||
|
|
||||||
strict_file_interactability: bool,
|
strict_file_interactability: bool,
|
||||||
|
|
||||||
unhandled_prompt_behavior: String,
|
user_prompt_handler: UserPromptHandler,
|
||||||
|
|
||||||
/// <https://w3c.github.io/webdriver/#dfn-input-state-map>
|
/// <https://w3c.github.io/webdriver/#dfn-input-state-map>
|
||||||
input_state_table: RefCell<HashMap<String, InputSourceState>>,
|
input_state_table: RefCell<HashMap<String, InputSourceState>>,
|
||||||
|
@ -214,7 +217,7 @@ impl WebDriverSession {
|
||||||
|
|
||||||
page_loading_strategy: "normal".to_string(),
|
page_loading_strategy: "normal".to_string(),
|
||||||
strict_file_interactability: false,
|
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_state_table: RefCell::new(HashMap::new()),
|
||||||
input_cancel_list: RefCell::new(Vec::new()),
|
input_cancel_list: RefCell::new(Vec::new()),
|
||||||
|
@ -653,13 +656,14 @@ impl Handler {
|
||||||
|
|
||||||
match processed.get("unhandledPromptBehavior") {
|
match processed.get("unhandledPromptBehavior") {
|
||||||
Some(unhandled_prompt_behavior) => {
|
Some(unhandled_prompt_behavior) => {
|
||||||
session.unhandled_prompt_behavior =
|
session.user_prompt_handler = deserialize_unhandled_prompt_behaviour(
|
||||||
unhandled_prompt_behavior.to_string()
|
unhandled_prompt_behavior.clone(),
|
||||||
|
)?;
|
||||||
},
|
},
|
||||||
None => {
|
None => {
|
||||||
processed.insert(
|
processed.insert(
|
||||||
"unhandledPromptBehavior".to_string(),
|
"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 =
|
let cmd_msg =
|
||||||
WebDriverCommandMsg::LoadUrl(webview_id, url, self.load_status_sender.clone());
|
WebDriverCommandMsg::LoadUrl(webview_id, url, self.load_status_sender.clone());
|
||||||
self.send_message_to_embedder(cmd_msg)?;
|
self.send_message_to_embedder(cmd_msg)?;
|
||||||
|
@ -839,6 +846,9 @@ impl Handler {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn handle_current_url(&self) -> WebDriverResult<WebDriverResponse> {
|
fn handle_current_url(&self) -> WebDriverResult<WebDriverResponse> {
|
||||||
|
// Step 2. Handle any user prompt.
|
||||||
|
self.handle_any_user_prompts(self.session()?.webview_id)?;
|
||||||
|
|
||||||
let (sender, receiver) = ipc::channel().unwrap();
|
let (sender, receiver) = ipc::channel().unwrap();
|
||||||
self.top_level_script_command(
|
self.top_level_script_command(
|
||||||
WebDriverScriptCommand::GetUrl(sender),
|
WebDriverScriptCommand::GetUrl(sender),
|
||||||
|
@ -864,6 +874,10 @@ impl Handler {
|
||||||
if let VerifyBrowsingContextIsOpen::Yes = verify {
|
if let VerifyBrowsingContextIsOpen::Yes = verify {
|
||||||
self.verify_top_level_browsing_context_is_open(webview_id)?;
|
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))?;
|
self.send_message_to_embedder(WebDriverCommandMsg::GetWindowRect(webview_id, sender))?;
|
||||||
|
|
||||||
let window_rect = wait_for_script_response(receiver)?;
|
let window_rect = wait_for_script_response(receiver)?;
|
||||||
|
@ -893,6 +907,9 @@ impl Handler {
|
||||||
// return error with error code no such window.
|
// return error with error code no such window.
|
||||||
self.verify_top_level_browsing_context_is_open(webview_id)?;
|
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
|
// We don't current allow modifying the window x/y positions, so we can just
|
||||||
// return the current window rectangle if not changing dimension.
|
// return the current window rectangle if not changing dimension.
|
||||||
if params.width.is_none() && params.height.is_none() {
|
if params.width.is_none() && params.height.is_none() {
|
||||||
|
@ -975,6 +992,9 @@ impl Handler {
|
||||||
// return error with error code no such window.
|
// return error with error code no such window.
|
||||||
self.verify_top_level_browsing_context_is_open(webview_id)?;
|
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(
|
self.send_message_to_embedder(WebDriverCommandMsg::GoBack(
|
||||||
webview_id,
|
webview_id,
|
||||||
self.load_status_sender.clone(),
|
self.load_status_sender.clone(),
|
||||||
|
@ -988,6 +1008,9 @@ impl Handler {
|
||||||
// return error with error code no such window.
|
// return error with error code no such window.
|
||||||
self.verify_top_level_browsing_context_is_open(webview_id)?;
|
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(
|
self.send_message_to_embedder(WebDriverCommandMsg::GoForward(
|
||||||
webview_id,
|
webview_id,
|
||||||
self.load_status_sender.clone(),
|
self.load_status_sender.clone(),
|
||||||
|
@ -1001,6 +1024,9 @@ impl Handler {
|
||||||
// return error with error code no such window.
|
// return error with error code no such window.
|
||||||
self.verify_top_level_browsing_context_is_open(webview_id)?;
|
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());
|
let cmd_msg = WebDriverCommandMsg::Refresh(webview_id, self.load_status_sender.clone());
|
||||||
self.send_message_to_embedder(cmd_msg)?;
|
self.send_message_to_embedder(cmd_msg)?;
|
||||||
|
|
||||||
|
@ -1014,6 +1040,9 @@ impl Handler {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn handle_title(&self) -> WebDriverResult<WebDriverResponse> {
|
fn handle_title(&self) -> WebDriverResult<WebDriverResponse> {
|
||||||
|
// Step 2. Handle any user prompt.
|
||||||
|
self.handle_any_user_prompts(self.session()?.webview_id)?;
|
||||||
|
|
||||||
let (sender, receiver) = ipc::channel().unwrap();
|
let (sender, receiver) = ipc::channel().unwrap();
|
||||||
|
|
||||||
self.top_level_script_command(
|
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,
|
// Step 1. If session's current top-level browsing context is no longer open,
|
||||||
// return error with error code no such window.
|
// return error with error code no such window.
|
||||||
self.verify_top_level_browsing_context_is_open(webview_id)?;
|
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.
|
// Step 3. Close session's current top-level browsing context.
|
||||||
|
let session = self.session_mut().unwrap();
|
||||||
session.window_handles.remove(&webview_id);
|
session.window_handles.remove(&webview_id);
|
||||||
let cmd_msg = WebDriverCommandMsg::CloseWebView(session.webview_id);
|
let cmd_msg = WebDriverCommandMsg::CloseWebView(session.webview_id);
|
||||||
self.send_message_to_embedder(cmd_msg)?;
|
self.send_message_to_embedder(cmd_msg)?;
|
||||||
|
@ -1103,8 +1136,14 @@ impl Handler {
|
||||||
let (sender, receiver) = ipc::channel().unwrap();
|
let (sender, receiver) = ipc::channel().unwrap();
|
||||||
|
|
||||||
let session = self.session().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)?;
|
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());
|
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.
|
// Step 5. Create a new top-level browsing context by running the window open steps.
|
||||||
// This MUST be done without invoking the focusing steps.
|
// This MUST be done without invoking the focusing steps.
|
||||||
|
@ -1171,6 +1210,10 @@ impl Handler {
|
||||||
// Step 1.2. Return success with data null.
|
// Step 1.2. Return success with data null.
|
||||||
return Ok(WebDriverResponse::Void);
|
return Ok(WebDriverResponse::Void);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Step 3. Handle any user prompt.
|
||||||
|
self.handle_any_user_prompts(webview_id)?;
|
||||||
|
|
||||||
let (sender, receiver) = ipc::channel().unwrap();
|
let (sender, receiver) = ipc::channel().unwrap();
|
||||||
let cmd = WebDriverScriptCommand::GetParentFrameId(sender);
|
let cmd = WebDriverScriptCommand::GetParentFrameId(sender);
|
||||||
// TODO: Track Parent Browsing Context directly in the session, as expected by Spec.
|
// 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 (sender, receiver) = ipc::channel().unwrap();
|
||||||
let cmd = WebDriverScriptCommand::GetBrowsingContextId(frame_id, sender);
|
let cmd = WebDriverScriptCommand::GetBrowsingContextId(frame_id, sender);
|
||||||
self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?;
|
self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?;
|
||||||
|
self.handle_any_user_prompts(self.session()?.webview_id)?;
|
||||||
|
|
||||||
match wait_for_script_response(receiver)? {
|
match wait_for_script_response(receiver)? {
|
||||||
Ok(browsing_context_id) => {
|
Ok(browsing_context_id) => {
|
||||||
|
@ -1239,6 +1283,10 @@ impl Handler {
|
||||||
if parameters.value.is_empty() {
|
if parameters.value.is_empty() {
|
||||||
return Err(WebDriverError::new(ErrorStatus::InvalidArgument, ""));
|
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();
|
let (sender, receiver) = ipc::channel().unwrap();
|
||||||
match parameters.using {
|
match parameters.using {
|
||||||
LocatorStrategy::CSSSelector => {
|
LocatorStrategy::CSSSelector => {
|
||||||
|
@ -1304,6 +1352,10 @@ impl Handler {
|
||||||
if parameters.value.is_empty() {
|
if parameters.value.is_empty() {
|
||||||
return Err(WebDriverError::new(ErrorStatus::InvalidArgument, ""));
|
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();
|
let (sender, receiver) = ipc::channel().unwrap();
|
||||||
|
|
||||||
match parameters.using {
|
match parameters.using {
|
||||||
|
@ -1366,6 +1418,10 @@ impl Handler {
|
||||||
if parameters.value.is_empty() {
|
if parameters.value.is_empty() {
|
||||||
return Err(WebDriverError::new(ErrorStatus::InvalidArgument, ""));
|
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();
|
let (sender, receiver) = ipc::channel().unwrap();
|
||||||
|
|
||||||
match parameters.using {
|
match parameters.using {
|
||||||
|
@ -1432,6 +1488,7 @@ impl Handler {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn handle_get_shadow_root(&self, element: WebElement) -> WebDriverResult<WebDriverResponse> {
|
fn handle_get_shadow_root(&self, element: WebElement) -> WebDriverResult<WebDriverResponse> {
|
||||||
|
self.handle_any_user_prompts(self.session()?.webview_id)?;
|
||||||
let (sender, receiver) = ipc::channel().unwrap();
|
let (sender, receiver) = ipc::channel().unwrap();
|
||||||
let cmd = WebDriverScriptCommand::GetElementShadowRoot(element.to_string(), sender);
|
let cmd = WebDriverScriptCommand::GetElementShadowRoot(element.to_string(), sender);
|
||||||
self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?;
|
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
|
// https://w3c.github.io/webdriver/webdriver-spec.html#get-element-rect
|
||||||
fn handle_element_rect(&self, element: &WebElement) -> WebDriverResult<WebDriverResponse> {
|
fn handle_element_rect(&self, element: &WebElement) -> WebDriverResult<WebDriverResponse> {
|
||||||
|
self.handle_any_user_prompts(self.session()?.webview_id)?;
|
||||||
let (sender, receiver) = ipc::channel().unwrap();
|
let (sender, receiver) = ipc::channel().unwrap();
|
||||||
let cmd = WebDriverScriptCommand::GetElementRect(element.to_string(), sender);
|
let cmd = WebDriverScriptCommand::GetElementRect(element.to_string(), sender);
|
||||||
self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?;
|
self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?;
|
||||||
|
@ -1469,6 +1527,7 @@ impl Handler {
|
||||||
|
|
||||||
/// <https://w3c.github.io/webdriver/#dfn-get-element-text>
|
/// <https://w3c.github.io/webdriver/#dfn-get-element-text>
|
||||||
fn handle_element_text(&self, element: &WebElement) -> WebDriverResult<WebDriverResponse> {
|
fn handle_element_text(&self, element: &WebElement) -> WebDriverResult<WebDriverResponse> {
|
||||||
|
self.handle_any_user_prompts(self.session()?.webview_id)?;
|
||||||
let (sender, receiver) = ipc::channel().unwrap();
|
let (sender, receiver) = ipc::channel().unwrap();
|
||||||
let cmd = WebDriverScriptCommand::GetElementText(element.to_string(), sender);
|
let cmd = WebDriverScriptCommand::GetElementText(element.to_string(), sender);
|
||||||
self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?;
|
self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?;
|
||||||
|
@ -1482,6 +1541,7 @@ impl Handler {
|
||||||
|
|
||||||
///<https://w3c.github.io/webdriver/#get-active-element>
|
///<https://w3c.github.io/webdriver/#get-active-element>
|
||||||
fn handle_active_element(&self) -> WebDriverResult<WebDriverResponse> {
|
fn handle_active_element(&self) -> WebDriverResult<WebDriverResponse> {
|
||||||
|
self.handle_any_user_prompts(self.session()?.webview_id)?;
|
||||||
let (sender, receiver) = ipc::channel().unwrap();
|
let (sender, receiver) = ipc::channel().unwrap();
|
||||||
let cmd = WebDriverScriptCommand::GetActiveElement(sender);
|
let cmd = WebDriverScriptCommand::GetActiveElement(sender);
|
||||||
self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?;
|
self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?;
|
||||||
|
@ -1503,6 +1563,7 @@ impl Handler {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn handle_computed_role(&self, element: &WebElement) -> WebDriverResult<WebDriverResponse> {
|
fn handle_computed_role(&self, element: &WebElement) -> WebDriverResult<WebDriverResponse> {
|
||||||
|
self.handle_any_user_prompts(self.session()?.webview_id)?;
|
||||||
let (sender, receiver) = ipc::channel().unwrap();
|
let (sender, receiver) = ipc::channel().unwrap();
|
||||||
let cmd = WebDriverScriptCommand::GetComputedRole(element.to_string(), sender);
|
let cmd = WebDriverScriptCommand::GetComputedRole(element.to_string(), sender);
|
||||||
self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?;
|
self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?;
|
||||||
|
@ -1515,6 +1576,7 @@ impl Handler {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn handle_element_tag_name(&self, element: &WebElement) -> WebDriverResult<WebDriverResponse> {
|
fn handle_element_tag_name(&self, element: &WebElement) -> WebDriverResult<WebDriverResponse> {
|
||||||
|
self.handle_any_user_prompts(self.session()?.webview_id)?;
|
||||||
let (sender, receiver) = ipc::channel().unwrap();
|
let (sender, receiver) = ipc::channel().unwrap();
|
||||||
let cmd = WebDriverScriptCommand::GetElementTagName(element.to_string(), sender);
|
let cmd = WebDriverScriptCommand::GetElementTagName(element.to_string(), sender);
|
||||||
self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?;
|
self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?;
|
||||||
|
@ -1531,6 +1593,7 @@ impl Handler {
|
||||||
element: &WebElement,
|
element: &WebElement,
|
||||||
name: &str,
|
name: &str,
|
||||||
) -> WebDriverResult<WebDriverResponse> {
|
) -> WebDriverResult<WebDriverResponse> {
|
||||||
|
self.handle_any_user_prompts(self.session()?.webview_id)?;
|
||||||
let (sender, receiver) = ipc::channel().unwrap();
|
let (sender, receiver) = ipc::channel().unwrap();
|
||||||
let cmd = WebDriverScriptCommand::GetElementAttribute(
|
let cmd = WebDriverScriptCommand::GetElementAttribute(
|
||||||
element.to_string(),
|
element.to_string(),
|
||||||
|
@ -1551,6 +1614,7 @@ impl Handler {
|
||||||
element: &WebElement,
|
element: &WebElement,
|
||||||
name: &str,
|
name: &str,
|
||||||
) -> WebDriverResult<WebDriverResponse> {
|
) -> WebDriverResult<WebDriverResponse> {
|
||||||
|
self.handle_any_user_prompts(self.session()?.webview_id)?;
|
||||||
let (sender, receiver) = ipc::channel().unwrap();
|
let (sender, receiver) = ipc::channel().unwrap();
|
||||||
|
|
||||||
let cmd = WebDriverScriptCommand::GetElementProperty(
|
let cmd = WebDriverScriptCommand::GetElementProperty(
|
||||||
|
@ -1573,6 +1637,7 @@ impl Handler {
|
||||||
element: &WebElement,
|
element: &WebElement,
|
||||||
name: &str,
|
name: &str,
|
||||||
) -> WebDriverResult<WebDriverResponse> {
|
) -> WebDriverResult<WebDriverResponse> {
|
||||||
|
self.handle_any_user_prompts(self.session()?.webview_id)?;
|
||||||
let (sender, receiver) = ipc::channel().unwrap();
|
let (sender, receiver) = ipc::channel().unwrap();
|
||||||
let cmd =
|
let cmd =
|
||||||
WebDriverScriptCommand::GetElementCSS(element.to_string(), name.to_owned(), sender);
|
WebDriverScriptCommand::GetElementCSS(element.to_string(), name.to_owned(), sender);
|
||||||
|
@ -1586,6 +1651,7 @@ impl Handler {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn handle_get_cookies(&self) -> WebDriverResult<WebDriverResponse> {
|
fn handle_get_cookies(&self) -> WebDriverResult<WebDriverResponse> {
|
||||||
|
self.handle_any_user_prompts(self.session()?.webview_id)?;
|
||||||
let (sender, receiver) = ipc::channel().unwrap();
|
let (sender, receiver) = ipc::channel().unwrap();
|
||||||
let cmd = WebDriverScriptCommand::GetCookies(sender);
|
let cmd = WebDriverScriptCommand::GetCookies(sender);
|
||||||
self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?;
|
self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?;
|
||||||
|
@ -1601,6 +1667,7 @@ impl Handler {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn handle_get_cookie(&self, name: String) -> WebDriverResult<WebDriverResponse> {
|
fn handle_get_cookie(&self, name: String) -> WebDriverResult<WebDriverResponse> {
|
||||||
|
self.handle_any_user_prompts(self.session()?.webview_id)?;
|
||||||
let (sender, receiver) = ipc::channel().unwrap();
|
let (sender, receiver) = ipc::channel().unwrap();
|
||||||
let cmd = WebDriverScriptCommand::GetCookie(name, sender);
|
let cmd = WebDriverScriptCommand::GetCookie(name, sender);
|
||||||
self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?;
|
self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?;
|
||||||
|
@ -1622,6 +1689,7 @@ impl Handler {
|
||||||
&self,
|
&self,
|
||||||
params: &AddCookieParameters,
|
params: &AddCookieParameters,
|
||||||
) -> WebDriverResult<WebDriverResponse> {
|
) -> WebDriverResult<WebDriverResponse> {
|
||||||
|
self.handle_any_user_prompts(self.session()?.webview_id)?;
|
||||||
let (sender, receiver) = ipc::channel().unwrap();
|
let (sender, receiver) = ipc::channel().unwrap();
|
||||||
|
|
||||||
let cookie_builder = CookieBuilder::new(params.name.to_owned(), params.value.to_owned())
|
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<WebDriverResponse> {
|
fn handle_delete_cookie(&self, name: String) -> WebDriverResult<WebDriverResponse> {
|
||||||
|
self.handle_any_user_prompts(self.session()?.webview_id)?;
|
||||||
let (sender, receiver) = ipc::channel().unwrap();
|
let (sender, receiver) = ipc::channel().unwrap();
|
||||||
let cmd = WebDriverScriptCommand::DeleteCookie(name, sender);
|
let cmd = WebDriverScriptCommand::DeleteCookie(name, sender);
|
||||||
self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?;
|
self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?;
|
||||||
|
@ -1655,6 +1724,7 @@ impl Handler {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn handle_delete_cookies(&self) -> WebDriverResult<WebDriverResponse> {
|
fn handle_delete_cookies(&self) -> WebDriverResult<WebDriverResponse> {
|
||||||
|
self.handle_any_user_prompts(self.session()?.webview_id)?;
|
||||||
let (sender, receiver) = ipc::channel().unwrap();
|
let (sender, receiver) = ipc::channel().unwrap();
|
||||||
let cmd = WebDriverScriptCommand::DeleteCookies(sender);
|
let cmd = WebDriverScriptCommand::DeleteCookies(sender);
|
||||||
self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?;
|
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,
|
// Step 1. If session's current browsing context is no longer open,
|
||||||
// return error with error code no such window.
|
// return error with error code no such window.
|
||||||
self.verify_browsing_context_is_open(browsing_context)?;
|
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
|
// 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);
|
let actions_by_tick = self.extract_an_action_sequence(parameters);
|
||||||
|
|
||||||
|
@ -1741,7 +1815,8 @@ impl Handler {
|
||||||
// return error with error code no such window.
|
// return error with error code no such window.
|
||||||
self.verify_browsing_context_is_open(session.browsing_context_id)?;
|
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.
|
// Skip: Step 3. We don't support "browsing context input state map" yet.
|
||||||
|
|
||||||
|
@ -1774,6 +1849,8 @@ impl Handler {
|
||||||
&self,
|
&self,
|
||||||
parameters: &JavascriptCommandParameters,
|
parameters: &JavascriptCommandParameters,
|
||||||
) -> WebDriverResult<WebDriverResponse> {
|
) -> WebDriverResult<WebDriverResponse> {
|
||||||
|
self.handle_any_user_prompts(self.session()?.webview_id)?;
|
||||||
|
|
||||||
let func_body = ¶meters.script;
|
let func_body = ¶meters.script;
|
||||||
let args_string: Vec<_> = parameters
|
let args_string: Vec<_> = parameters
|
||||||
.args
|
.args
|
||||||
|
@ -1804,6 +1881,8 @@ impl Handler {
|
||||||
&self,
|
&self,
|
||||||
parameters: &JavascriptCommandParameters,
|
parameters: &JavascriptCommandParameters,
|
||||||
) -> WebDriverResult<WebDriverResponse> {
|
) -> WebDriverResult<WebDriverResponse> {
|
||||||
|
self.handle_any_user_prompts(self.session()?.webview_id)?;
|
||||||
|
|
||||||
let func_body = ¶meters.script;
|
let func_body = ¶meters.script;
|
||||||
let mut args_string: Vec<_> = parameters
|
let mut args_string: Vec<_> = parameters
|
||||||
.args
|
.args
|
||||||
|
@ -1883,7 +1962,9 @@ impl Handler {
|
||||||
element: &WebElement,
|
element: &WebElement,
|
||||||
keys: &SendKeysParameters,
|
keys: &SendKeysParameters,
|
||||||
) -> WebDriverResult<WebDriverResponse> {
|
) -> WebDriverResult<WebDriverResponse> {
|
||||||
// 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 (sender, receiver) = ipc::channel().unwrap();
|
||||||
let cmd = WebDriverScriptCommand::WillSendKeys(
|
let cmd = WebDriverScriptCommand::WillSendKeys(
|
||||||
element.to_string(),
|
element.to_string(),
|
||||||
|
@ -1914,6 +1995,14 @@ impl Handler {
|
||||||
|
|
||||||
/// <https://w3c.github.io/webdriver/#element-click>
|
/// <https://w3c.github.io/webdriver/#element-click>
|
||||||
fn handle_element_click(&mut self, element: &WebElement) -> WebDriverResult<WebDriverResponse> {
|
fn handle_element_click(&mut self, element: &WebElement) -> WebDriverResult<WebDriverResponse> {
|
||||||
|
// 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 (sender, receiver) = ipc::channel().unwrap();
|
||||||
let webview_id = self.session()?.webview_id;
|
let webview_id = self.session()?.webview_id;
|
||||||
let browsing_context_id = self.session()?.browsing_context_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,
|
// Step 1. If session's current top-level browsing context is no longer open,
|
||||||
// return error with error code no such window.
|
// return error with error code no such window.
|
||||||
self.verify_top_level_browsing_context_is_open(self.session()?.webview_id)?;
|
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 mut img = None;
|
||||||
|
|
||||||
let interval = 1000;
|
let interval = 1000;
|
||||||
|
|
|
@ -2,16 +2,180 @@
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
* 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/. */
|
* 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 ipc_channel::ipc;
|
||||||
|
use serde_json::{Map, Value};
|
||||||
use webdriver::error::{ErrorStatus, WebDriverError, WebDriverResult};
|
use webdriver::error::{ErrorStatus, WebDriverError, WebDriverResult};
|
||||||
use webdriver::response::{ValueResponse, WebDriverResponse};
|
use webdriver::response::{ValueResponse, WebDriverResponse};
|
||||||
|
|
||||||
use crate::{Handler, wait_for_script_response};
|
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",
|
||||||
|
];
|
||||||
|
|
||||||
|
/// <https://w3c.github.io/webdriver/#dfn-prompt-handler-configuration>
|
||||||
|
#[derive(Clone, Debug)]
|
||||||
|
pub(crate) struct PromptHandlerConfiguration {
|
||||||
|
handler: WebDriverUserPromptAction,
|
||||||
|
notify: bool,
|
||||||
|
}
|
||||||
|
|
||||||
|
pub(crate) type UserPromptHandler = HashMap<WebDriverUserPrompt, PromptHandlerConfiguration>;
|
||||||
|
|
||||||
|
/// <https://w3c.github.io/webdriver/#dfn-deserialize-as-an-unhandled-prompt-behavior>
|
||||||
|
pub(crate) fn deserialize_unhandled_prompt_behaviour(
|
||||||
|
value_param: Value,
|
||||||
|
) -> Result<UserPromptHandler, WebDriverError> {
|
||||||
|
// 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"
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <https://www.w3.org/TR/webdriver2/#dfn-get-the-prompt-handler>
|
||||||
|
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<BTreeMap<Cow<'static, str>, Value>> {
|
||||||
|
Some([(Cow::Borrowed(key), value)].into_iter().collect())
|
||||||
|
}
|
||||||
|
|
||||||
impl Handler {
|
impl Handler {
|
||||||
/// <https://w3c.github.io/webdriver/#dismiss-alert>
|
/// <https://w3c.github.io/webdriver/#dismiss-alert>
|
||||||
pub(crate) fn handle_dismiss_alert(&mut self) -> WebDriverResult<WebDriverResponse> {
|
pub(crate) fn handle_dismiss_alert(&self) -> WebDriverResult<WebDriverResponse> {
|
||||||
// Step 1. If session's current top-level browsing context is no longer open,
|
// Step 1. If session's current top-level browsing context is no longer open,
|
||||||
// return error with error code no such window.
|
// return error with error code no such window.
|
||||||
self.verify_top_level_browsing_context_is_open(self.session()?.webview_id)?;
|
self.verify_top_level_browsing_context_is_open(self.session()?.webview_id)?;
|
||||||
|
@ -31,12 +195,12 @@ impl Handler {
|
||||||
"No user prompt is currently active.",
|
"No user prompt is currently active.",
|
||||||
)),
|
)),
|
||||||
// Step 4. Return success with data null.
|
// Step 4. Return success with data null.
|
||||||
Ok(()) => Ok(WebDriverResponse::Void),
|
Ok(_) => Ok(WebDriverResponse::Void),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <https://w3c.github.io/webdriver/#accept-alert>
|
/// <https://w3c.github.io/webdriver/#accept-alert>
|
||||||
pub(crate) fn handle_accept_alert(&mut self) -> WebDriverResult<WebDriverResponse> {
|
pub(crate) fn handle_accept_alert(&self) -> WebDriverResult<WebDriverResponse> {
|
||||||
// Step 1. If session's current top-level browsing context is no longer open,
|
// Step 1. If session's current top-level browsing context is no longer open,
|
||||||
// return error with error code no such window.
|
// return error with error code no such window.
|
||||||
self.verify_top_level_browsing_context_is_open(self.session()?.webview_id)?;
|
self.verify_top_level_browsing_context_is_open(self.session()?.webview_id)?;
|
||||||
|
@ -56,11 +220,11 @@ impl Handler {
|
||||||
"No user prompt is currently active.",
|
"No user prompt is currently active.",
|
||||||
)),
|
)),
|
||||||
// Step 4. Return success with data null.
|
// 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<WebDriverResponse> {
|
pub(crate) fn handle_get_alert_text(&self) -> WebDriverResult<WebDriverResponse> {
|
||||||
// Step 1. If session's current top-level browsing context is no longer open,
|
// Step 1. If session's current top-level browsing context is no longer open,
|
||||||
// return error with error code no such window.
|
// return error with error code no such window.
|
||||||
self.verify_top_level_browsing_context_is_open(self.session()?.webview_id)?;
|
self.verify_top_level_browsing_context_is_open(self.session()?.webview_id)?;
|
||||||
|
@ -90,4 +254,49 @@ impl Handler {
|
||||||
))),
|
))),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <https://w3c.github.io/webdriver/#dfn-handle-any-user-prompts>
|
||||||
|
pub(crate) fn handle_any_user_prompts(
|
||||||
|
&self,
|
||||||
|
webview_id: WebViewId,
|
||||||
|
) -> WebDriverResult<WebDriverResponse> {
|
||||||
|
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)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -577,8 +577,17 @@ impl App {
|
||||||
webdriver_script_command,
|
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) => {
|
WebDriverCommandMsg::HandleUserPrompt(webview_id, action, response_sender) => {
|
||||||
let response = if running_state.webview_has_active_dialog(webview_id) {
|
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 {
|
match action {
|
||||||
WebDriverUserPromptAction::Accept => {
|
WebDriverUserPromptAction::Accept => {
|
||||||
running_state.accept_active_dialogs(webview_id)
|
running_state.accept_active_dialogs(webview_id)
|
||||||
|
@ -586,9 +595,14 @@ impl App {
|
||||||
WebDriverUserPromptAction::Dismiss => {
|
WebDriverUserPromptAction::Dismiss => {
|
||||||
running_state.dismiss_active_dialogs(webview_id)
|
running_state.dismiss_active_dialogs(webview_id)
|
||||||
},
|
},
|
||||||
|
WebDriverUserPromptAction::Ignore => {},
|
||||||
};
|
};
|
||||||
Ok(())
|
|
||||||
|
// Return success for AcceptAlert and DismissAlert commands.
|
||||||
|
Ok(alert_text)
|
||||||
} else {
|
} else {
|
||||||
|
// Return error for AcceptAlert and DismissAlert commands
|
||||||
|
// if there is no active dialog.
|
||||||
Err(())
|
Err(())
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -622,7 +636,8 @@ impl App {
|
||||||
running_state: &RunningAppState,
|
running_state: &RunningAppState,
|
||||||
) {
|
) {
|
||||||
match msg {
|
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.
|
// Give embedder a chance to interrupt the script command.
|
||||||
// Webdriver only handles 1 script command at a time, so we can
|
// Webdriver only handles 1 script command at a time, so we can
|
||||||
// safely set a new interrupt sender and remove the previous one here.
|
// safely set a new interrupt sender and remove the previous one here.
|
||||||
|
|
|
@ -21,7 +21,7 @@ use servo::{
|
||||||
AllowOrDenyRequest, AuthenticationRequest, FilterPattern, FormControl, GamepadHapticEffectType,
|
AllowOrDenyRequest, AuthenticationRequest, FilterPattern, FormControl, GamepadHapticEffectType,
|
||||||
KeyboardEvent, LoadStatus, PermissionRequest, Servo, ServoDelegate, ServoError, SimpleDialog,
|
KeyboardEvent, LoadStatus, PermissionRequest, Servo, ServoDelegate, ServoError, SimpleDialog,
|
||||||
TraversalId, WebDriverCommandMsg, WebDriverJSResult, WebDriverJSValue, WebDriverLoadStatus,
|
TraversalId, WebDriverCommandMsg, WebDriverJSResult, WebDriverJSValue, WebDriverLoadStatus,
|
||||||
WebView, WebViewBuilder, WebViewDelegate,
|
WebDriverUserPrompt, WebView, WebViewBuilder, WebViewDelegate,
|
||||||
};
|
};
|
||||||
use url::Url;
|
use url::Url;
|
||||||
|
|
||||||
|
@ -340,13 +340,23 @@ impl RunningAppState {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn webview_has_active_dialog(&self, webview_id: WebViewId) -> bool {
|
pub(crate) fn webview_has_active_dialog(&self, webview_id: WebViewId) -> bool {
|
||||||
let inner = self.inner();
|
self.inner()
|
||||||
inner
|
|
||||||
.dialogs
|
.dialogs
|
||||||
.get(&webview_id)
|
.get(&webview_id)
|
||||||
.is_some_and(|dialogs| !dialogs.is_empty())
|
.is_some_and(|dialogs| !dialogs.is_empty())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub(crate) fn get_current_active_dialog_webdriver_type(
|
||||||
|
&self,
|
||||||
|
webview_id: WebViewId,
|
||||||
|
) -> Option<WebDriverUserPrompt> {
|
||||||
|
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) {
|
pub(crate) fn accept_active_dialogs(&self, webview_id: WebViewId) {
|
||||||
if let Some(dialogs) = self.inner_mut().dialogs.get_mut(&webview_id) {
|
if let Some(dialogs) = self.inner_mut().dialogs.get_mut(&webview_id) {
|
||||||
dialogs.drain(..).for_each(|dialog| {
|
dialogs.drain(..).for_each(|dialog| {
|
||||||
|
|
|
@ -14,7 +14,7 @@ use servo::servo_geometry::DeviceIndependentPixel;
|
||||||
use servo::{
|
use servo::{
|
||||||
AlertResponse, AuthenticationRequest, ColorPicker, ConfirmResponse, FilterPattern,
|
AlertResponse, AuthenticationRequest, ColorPicker, ConfirmResponse, FilterPattern,
|
||||||
PermissionRequest, PromptResponse, RgbColor, SelectElement, SelectElementOption,
|
PermissionRequest, PromptResponse, RgbColor, SelectElement, SelectElementOption,
|
||||||
SelectElementOptionOrOptgroup, SimpleDialog,
|
SelectElementOptionOrOptgroup, SimpleDialog, WebDriverUserPrompt,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub enum Dialog {
|
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>) {
|
fn make_dialog_label(message: &str, ui: &mut egui::Ui, input_text: Option<&mut String>) {
|
||||||
|
|
|
@ -16,3 +16,6 @@
|
||||||
|
|
||||||
[test_accept_alert]
|
[test_accept_alert]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[test_unexpected_alert]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
[user_prompts.py]
|
[user_prompts.py]
|
||||||
disabled: https://github.com/servo/servo/issues/35734
|
|
||||||
[test_accept[capabilities0-alert-None\]]
|
[test_accept[capabilities0-alert-None\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -53,3 +52,30 @@
|
||||||
|
|
||||||
[test_default[prompt-None\]]
|
[test_default[prompt-None\]]
|
||||||
expected: FAIL
|
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
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
[user_prompts.py]
|
[user_prompts.py]
|
||||||
disabled: https://github.com/servo/servo/issues/35734
|
|
||||||
[test_accept[capabilities0-alert\]]
|
[test_accept[capabilities0-alert\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -59,15 +58,3 @@
|
||||||
|
|
||||||
[test_ignore[capabilities0-prompt\]]
|
[test_ignore[capabilities0-prompt\]]
|
||||||
expected: FAIL
|
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
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
[user_prompts.py]
|
[user_prompts.py]
|
||||||
disabled: https://github.com/servo/servo/issues/35734
|
|
||||||
[test_accept[capabilities0-alert\]]
|
[test_accept[capabilities0-alert\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -60,14 +59,11 @@
|
||||||
[test_ignore[capabilities0-prompt\]]
|
[test_ignore[capabilities0-prompt\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_default[alert-None\]]
|
[test_dismiss[alert\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_default[beforeunload-None\]]
|
[test_dismiss[confirm\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_default[confirm-False\]]
|
[test_dismiss[prompt\]]
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_default[prompt-None\]]
|
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
[user_prompts.py]
|
[user_prompts.py]
|
||||||
disabled: https://github.com/servo/servo/issues/35734
|
|
||||||
[test_accept[capabilities0-alert-None\]]
|
[test_accept[capabilities0-alert-None\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -44,12 +43,3 @@
|
||||||
|
|
||||||
[test_ignore[capabilities0-prompt\]]
|
[test_ignore[capabilities0-prompt\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_default[alert-None\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_default[confirm-False\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_default[prompt-None\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
[user_prompts.py]
|
[user_prompts.py]
|
||||||
disabled: https://github.com/servo/servo/issues/35734
|
|
||||||
[test_accept[capabilities0-alert-None\]]
|
[test_accept[capabilities0-alert-None\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -44,12 +43,3 @@
|
||||||
|
|
||||||
[test_ignore[capabilities0-prompt\]]
|
[test_ignore[capabilities0-prompt\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_default[alert-None\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_default[confirm-False\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_default[prompt-None\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
[delete.py]
|
[delete.py]
|
||||||
|
expected: ERROR
|
||||||
[test_null_response_value]
|
[test_null_response_value]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -16,3 +16,6 @@
|
||||||
|
|
||||||
[test_dismiss_alert]
|
[test_dismiss_alert]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[test_unexpected_alert]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
[user_prompts.py]
|
[user_prompts.py]
|
||||||
disabled: https://github.com/servo/servo/issues/35734
|
|
||||||
[test_accept[capabilities0-alert-None\]]
|
[test_accept[capabilities0-alert-None\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -53,3 +52,48 @@
|
||||||
|
|
||||||
[test_default[prompt-None\]]
|
[test_default[prompt-None\]]
|
||||||
expected: FAIL
|
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
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
[navigate.py]
|
[navigate.py]
|
||||||
|
expected: TIMEOUT
|
||||||
[test_numbers_link]
|
[test_numbers_link]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -17,21 +18,9 @@
|
||||||
[test_link_from_toplevel_context_with_target[_parent\]]
|
[test_link_from_toplevel_context_with_target[_parent\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_link_from_nested_context_with_target[\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_link_from_nested_context_with_target[_blank\]]
|
[test_link_from_nested_context_with_target[_blank\]]
|
||||||
expected: FAIL
|
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]
|
[test_link_cross_origin]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
[user_prompts.py]
|
[user_prompts.py]
|
||||||
disabled: https://github.com/servo/servo/issues/35734
|
|
||||||
[test_accept[capabilities0-alert-None\]]
|
[test_accept[capabilities0-alert-None\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -60,14 +59,20 @@
|
||||||
[test_ignore[capabilities0-prompt\]]
|
[test_ignore[capabilities0-prompt\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_default[alert-None\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_default[beforeunload-None\]]
|
[test_default[beforeunload-None\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_default[confirm-False\]]
|
[test_accept[beforeunload-None\]]
|
||||||
expected: FAIL
|
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
|
expected: FAIL
|
||||||
|
|
|
@ -1,6 +1,15 @@
|
||||||
[events.py]
|
[events.py]
|
||||||
[test_form_control_send_text[input\]]
|
[test_form_control_send_text[input\]]
|
||||||
expected: FAIL
|
expected: ERROR
|
||||||
|
|
||||||
[test_form_control_send_text[textarea\]]
|
[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
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
[user_prompts.py]
|
[user_prompts.py]
|
||||||
disabled: https://github.com/servo/servo/issues/35734
|
|
||||||
[test_accept[capabilities0-alert-None\]]
|
[test_accept[capabilities0-alert-None\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -44,12 +43,3 @@
|
||||||
|
|
||||||
[test_ignore[capabilities0-prompt\]]
|
[test_ignore[capabilities0-prompt\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_default[alert-None\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_default[confirm-False\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_default[prompt-None\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,22 +1,3 @@
|
||||||
[execute_async.py]
|
[execute_async.py]
|
||||||
expected: TIMEOUT
|
|
||||||
[test_no_browsing_context]
|
[test_no_browsing_context]
|
||||||
expected: FAIL
|
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
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
[user_prompts.py]
|
[user_prompts.py]
|
||||||
disabled: https://github.com/servo/servo/issues/35734
|
|
||||||
[test_accept[capabilities0-alert-None\]]
|
[test_accept[capabilities0-alert-None\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -60,14 +59,8 @@
|
||||||
[test_ignore[capabilities0-prompt\]]
|
[test_ignore[capabilities0-prompt\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_default[alert-None\]]
|
[test_accept_and_notify[alert-None\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_default[beforeunload-None\]]
|
[test_dismiss_and_notify[alert-None\]]
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_default[confirm-False\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_default[prompt-None\]]
|
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
[user_prompts.py]
|
[user_prompts.py]
|
||||||
disabled: https://github.com/servo/servo/issues/35734
|
|
||||||
[test_accept[capabilities0-alert-None\]]
|
[test_accept[capabilities0-alert-None\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -60,14 +59,8 @@
|
||||||
[test_ignore[capabilities0-prompt\]]
|
[test_ignore[capabilities0-prompt\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_default[alert-None\]]
|
[test_accept_and_notify[alert-None\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_default[beforeunload-None\]]
|
[test_dismiss_and_notify[alert-None\]]
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_default[confirm-False\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_default[prompt-None\]]
|
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
[user_prompts.py]
|
[user_prompts.py]
|
||||||
disabled: https://github.com/servo/servo/issues/35734
|
|
||||||
[test_accept[capabilities0-alert-None\]]
|
[test_accept[capabilities0-alert-None\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -44,12 +43,3 @@
|
||||||
|
|
||||||
[test_ignore[capabilities0-prompt\]]
|
[test_ignore[capabilities0-prompt\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_default[alert-None\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_default[confirm-False\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_default[prompt-None\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
[user_prompts.py]
|
[user_prompts.py]
|
||||||
disabled: https://github.com/servo/servo/issues/35734
|
|
||||||
[test_accept[capabilities0-alert-None\]]
|
[test_accept[capabilities0-alert-None\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -44,12 +43,3 @@
|
||||||
|
|
||||||
[test_ignore[capabilities0-prompt\]]
|
[test_ignore[capabilities0-prompt\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_default[alert-None\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_default[confirm-False\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_default[prompt-None\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
[user_prompts.py]
|
[user_prompts.py]
|
||||||
disabled: https://github.com/servo/servo/issues/35734
|
|
||||||
[test_accept[capabilities0-alert-None\]]
|
[test_accept[capabilities0-alert-None\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -44,12 +43,3 @@
|
||||||
|
|
||||||
[test_ignore[capabilities0-prompt\]]
|
[test_ignore[capabilities0-prompt\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_default[alert-None\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_default[confirm-False\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_default[prompt-None\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
[user_prompts.py]
|
[user_prompts.py]
|
||||||
disabled: https://github.com/servo/servo/issues/35734
|
|
||||||
[test_accept[capabilities0-alert-None\]]
|
[test_accept[capabilities0-alert-None\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -44,12 +43,3 @@
|
||||||
|
|
||||||
[test_ignore[capabilities0-prompt\]]
|
[test_ignore[capabilities0-prompt\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_default[alert-None\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_default[confirm-False\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_default[prompt-None\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
[user_prompts.py]
|
[user_prompts.py]
|
||||||
disabled: https://github.com/servo/servo/issues/35734
|
|
||||||
[test_accept[capabilities0-alert-None\]]
|
[test_accept[capabilities0-alert-None\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -44,12 +43,3 @@
|
||||||
|
|
||||||
[test_ignore[capabilities0-prompt\]]
|
[test_ignore[capabilities0-prompt\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_default[alert-None\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_default[confirm-False\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_default[prompt-None\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
[user_prompts.py]
|
[user_prompts.py]
|
||||||
disabled: https://github.com/servo/servo/issues/35734
|
|
||||||
[test_accept[capabilities0-alert-None\]]
|
[test_accept[capabilities0-alert-None\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -44,12 +43,3 @@
|
||||||
|
|
||||||
[test_ignore[capabilities0-prompt\]]
|
[test_ignore[capabilities0-prompt\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_default[alert-None\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_default[confirm-False\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_default[prompt-None\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
[user_prompts.py]
|
|
||||||
disabled: https://github.com/servo/servo/issues/35734
|
|
||||||
expected: TIMEOUT
|
|
|
@ -1,5 +1,4 @@
|
||||||
[user_prompts.py]
|
[user_prompts.py]
|
||||||
disabled: https://github.com/servo/servo/issues/35734
|
|
||||||
[test_accept[capabilities0-alert-None\]]
|
[test_accept[capabilities0-alert-None\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -53,3 +52,48 @@
|
||||||
|
|
||||||
[test_default[prompt-None\]]
|
[test_default[prompt-None\]]
|
||||||
expected: FAIL
|
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
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
[user_prompts.py]
|
[user_prompts.py]
|
||||||
disabled: https://github.com/servo/servo/issues/35734
|
|
||||||
[test_accept[capabilities0-alert-None\]]
|
[test_accept[capabilities0-alert-None\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -44,12 +43,3 @@
|
||||||
|
|
||||||
[test_ignore[capabilities0-prompt\]]
|
[test_ignore[capabilities0-prompt\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_default[alert-None\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_default[confirm-False\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_default[prompt-None\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,14 +1,4 @@
|
||||||
[get.py]
|
[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]
|
[test_get_alert_text]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,2 +1,54 @@
|
||||||
[user_prompts.py]
|
[user_prompts.py]
|
||||||
disabled: https://github.com/servo/servo/issues/35734
|
[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
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
[user_prompts.py]
|
|
||||||
disabled: https://github.com/servo/servo/issues/35734
|
|
|
@ -1,5 +1,4 @@
|
||||||
[user_prompts.py]
|
[user_prompts.py]
|
||||||
disabled: https://github.com/servo/servo/issues/35734
|
|
||||||
[test_accept[capabilities0-alert-None\]]
|
[test_accept[capabilities0-alert-None\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -44,12 +43,3 @@
|
||||||
|
|
||||||
[test_ignore[capabilities0-prompt\]]
|
[test_ignore[capabilities0-prompt\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_default[alert-None\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_default[confirm-False\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_default[prompt-None\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
[user_prompts.py]
|
[user_prompts.py]
|
||||||
disabled: https://github.com/servo/servo/issues/35734
|
|
||||||
[test_accept[capabilities0-alert-None\]]
|
[test_accept[capabilities0-alert-None\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -44,12 +43,3 @@
|
||||||
|
|
||||||
[test_ignore[capabilities0-prompt\]]
|
[test_ignore[capabilities0-prompt\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_default[alert-None\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_default[confirm-False\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_default[prompt-None\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
[user_prompts.py]
|
[user_prompts.py]
|
||||||
disabled: https://github.com/servo/servo/issues/35734
|
|
||||||
[test_accept[capabilities0-alert-None\]]
|
[test_accept[capabilities0-alert-None\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -44,12 +43,3 @@
|
||||||
|
|
||||||
[test_ignore[capabilities0-prompt\]]
|
[test_ignore[capabilities0-prompt\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_default[alert-None\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_default[confirm-False\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_default[prompt-None\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
[user_prompts.py]
|
[user_prompts.py]
|
||||||
disabled: https://github.com/servo/servo/issues/35734
|
|
||||||
[test_accept[capabilities0-alert-None\]]
|
[test_accept[capabilities0-alert-None\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -44,12 +43,3 @@
|
||||||
|
|
||||||
[test_ignore[capabilities0-prompt\]]
|
[test_ignore[capabilities0-prompt\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_default[alert-None\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_default[confirm-False\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_default[prompt-None\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
[user_prompts.py]
|
[user_prompts.py]
|
||||||
disabled: https://github.com/servo/servo/issues/35734
|
|
||||||
[test_accept[capabilities0-alert-None\]]
|
[test_accept[capabilities0-alert-None\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -44,12 +43,3 @@
|
||||||
|
|
||||||
[test_ignore[capabilities0-prompt\]]
|
[test_ignore[capabilities0-prompt\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_default[alert-None\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_default[confirm-False\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_default[prompt-None\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
[user_prompts.py]
|
[user_prompts.py]
|
||||||
disabled: https://github.com/servo/servo/issues/35734
|
|
||||||
[test_accept[capabilities0-alert-None\]]
|
[test_accept[capabilities0-alert-None\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -44,12 +43,3 @@
|
||||||
|
|
||||||
[test_ignore[capabilities0-prompt\]]
|
[test_ignore[capabilities0-prompt\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_default[alert-None\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_default[confirm-False\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_default[prompt-None\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
[user_prompts.py]
|
[user_prompts.py]
|
||||||
disabled: https://github.com/servo/servo/issues/35734
|
|
||||||
[test_accept[capabilities0-alert-None\]]
|
[test_accept[capabilities0-alert-None\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -45,11 +44,20 @@
|
||||||
[test_ignore[capabilities0-prompt\]]
|
[test_ignore[capabilities0-prompt\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_default[alert-None\]]
|
[test_accept[alert-None\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_default[confirm-False\]]
|
[test_accept[confirm-True\]]
|
||||||
expected: FAIL
|
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
|
expected: FAIL
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
[user_prompts.py]
|
[user_prompts.py]
|
||||||
disabled: https://github.com/servo/servo/issues/35734
|
|
||||||
[test_accept[capabilities0-alert-None\]]
|
[test_accept[capabilities0-alert-None\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -44,12 +43,3 @@
|
||||||
|
|
||||||
[test_ignore[capabilities0-prompt\]]
|
[test_ignore[capabilities0-prompt\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_default[alert-None\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_default[confirm-False\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_default[prompt-None\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
[user_prompts.py]
|
[user_prompts.py]
|
||||||
disabled: https://github.com/servo/servo/issues/35734
|
|
||||||
[test_accept[capabilities0-alert-None\]]
|
[test_accept[capabilities0-alert-None\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -44,12 +43,3 @@
|
||||||
|
|
||||||
[test_ignore[capabilities0-prompt\]]
|
[test_ignore[capabilities0-prompt\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_default[alert-None\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_default[confirm-False\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_default[prompt-None\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
[user_prompts.py]
|
[user_prompts.py]
|
||||||
disabled: https://github.com/servo/servo/issues/35734
|
expected: TIMEOUT
|
||||||
[test_accept[capabilities0-alert-None\]]
|
[test_accept[capabilities0-alert-None\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
[user_prompts.py]
|
[user_prompts.py]
|
||||||
disabled: https://github.com/servo/servo/issues/35734
|
|
||||||
[test_accept[capabilities0-alert-None\]]
|
[test_accept[capabilities0-alert-None\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -44,12 +43,3 @@
|
||||||
|
|
||||||
[test_ignore[capabilities0-prompt\]]
|
[test_ignore[capabilities0-prompt\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_default[alert-None\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_default[confirm-False\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_default[prompt-None\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
[user_prompts.py]
|
[user_prompts.py]
|
||||||
disabled: https://github.com/servo/servo/issues/35734
|
|
||||||
[test_accept[capabilities0-alert\]]
|
[test_accept[capabilities0-alert\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -44,12 +43,3 @@
|
||||||
|
|
||||||
[test_ignore[capabilities0-prompt\]]
|
[test_ignore[capabilities0-prompt\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_default[alert\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_default[confirm\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_default[prompt\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
[user_prompts.py]
|
[user_prompts.py]
|
||||||
disabled: https://github.com/servo/servo/issues/35734
|
|
||||||
[test_accept[capabilities0-alert\]]
|
[test_accept[capabilities0-alert\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -44,12 +43,3 @@
|
||||||
|
|
||||||
[test_ignore[capabilities0-prompt\]]
|
[test_ignore[capabilities0-prompt\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_default[alert\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_default[confirm\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_default[prompt\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
[user_prompts.py]
|
[user_prompts.py]
|
||||||
disabled: https://github.com/servo/servo/issues/35734
|
|
||||||
[test_accept[capabilities0-alert-None\]]
|
[test_accept[capabilities0-alert-None\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -44,12 +43,3 @@
|
||||||
|
|
||||||
[test_ignore[capabilities0-prompt\]]
|
[test_ignore[capabilities0-prompt\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_default[alert-None\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_default[confirm-False\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_default[prompt-None\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
[user_prompts.py]
|
[user_prompts.py]
|
||||||
disabled: https://github.com/servo/servo/issues/35734
|
expected: TIMEOUT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
[user_prompts.py]
|
[user_prompts.py]
|
||||||
disabled: https://github.com/servo/servo/issues/35734
|
expected: TIMEOUT
|
||||||
[test_accept[capabilities0-alert-None\]]
|
[test_accept[capabilities0-alert-None\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
[user_prompts.py]
|
[user_prompts.py]
|
||||||
disabled: https://github.com/servo/servo/issues/35734
|
|
||||||
[test_accept[capabilities0-alert-None\]]
|
[test_accept[capabilities0-alert-None\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -53,3 +52,48 @@
|
||||||
|
|
||||||
[test_default[prompt-None\]]
|
[test_default[prompt-None\]]
|
||||||
expected: FAIL
|
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
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
[user_prompts.py]
|
[user_prompts.py]
|
||||||
disabled: https://github.com/servo/servo/issues/35734
|
|
||||||
[test_accept[capabilities0-alert-None\]]
|
[test_accept[capabilities0-alert-None\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -53,3 +52,48 @@
|
||||||
|
|
||||||
[test_default[prompt-None\]]
|
[test_default[prompt-None\]]
|
||||||
expected: FAIL
|
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
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
[user_prompts.py]
|
[user_prompts.py]
|
||||||
disabled: https://github.com/servo/servo/issues/35734
|
|
||||||
[test_accept[capabilities0-alert\]]
|
[test_accept[capabilities0-alert\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -60,14 +59,8 @@
|
||||||
[test_ignore[capabilities0-prompt\]]
|
[test_ignore[capabilities0-prompt\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_default[alert-None\]]
|
[test_accept_and_notify[alert-None\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_default[beforeunload-None\]]
|
[test_dismiss_and_notify[alert-None\]]
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_default[confirm-False\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_default[prompt-None\]]
|
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
|
@ -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
|
|
|
@ -1,5 +1,4 @@
|
||||||
[user_prompts.py]
|
[user_prompts.py]
|
||||||
disabled: https://github.com/servo/servo/issues/35734
|
|
||||||
[test_accept[capabilities0-alert-None\]]
|
[test_accept[capabilities0-alert-None\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -44,12 +43,3 @@
|
||||||
|
|
||||||
[test_ignore[capabilities0-prompt\]]
|
[test_ignore[capabilities0-prompt\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_default[alert-None\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_default[confirm-False\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_default[prompt-None\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[pointer_contextmenu.py]
|
[pointer_contextmenu.py]
|
||||||
[test_control_click[\\ue009-ctrlKey\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_control_click[\\ue051-ctrlKey\]]
|
[test_control_click[\\ue051-ctrlKey\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[test_release_control_click]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
[user_prompts.py]
|
[user_prompts.py]
|
||||||
disabled: https://github.com/servo/servo/issues/35734
|
|
||||||
[test_accept[capabilities0-alert-None\]]
|
[test_accept[capabilities0-alert-None\]]
|
||||||
expected: ERROR
|
expected: ERROR
|
||||||
|
|
||||||
|
@ -44,15 +43,3 @@
|
||||||
|
|
||||||
[test_ignore[capabilities0-prompt\]]
|
[test_ignore[capabilities0-prompt\]]
|
||||||
expected: ERROR
|
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
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
[user_prompts.py]
|
[user_prompts.py]
|
||||||
disabled: https://github.com/servo/servo/issues/35734
|
|
||||||
[test_accept[capabilities0-alert-None\]]
|
[test_accept[capabilities0-alert-None\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -53,3 +52,48 @@
|
||||||
|
|
||||||
[test_default[prompt-None\]]
|
[test_default[prompt-None\]]
|
||||||
expected: FAIL
|
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
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
[user_prompts.py]
|
[user_prompts.py]
|
||||||
disabled: https://github.com/servo/servo/issues/35734
|
|
||||||
[test_accept[capabilities0-alert\]]
|
[test_accept[capabilities0-alert\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -60,14 +59,38 @@
|
||||||
[test_ignore[capabilities0-prompt\]]
|
[test_ignore[capabilities0-prompt\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_default[alert-None\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_default[beforeunload-None\]]
|
[test_default[beforeunload-None\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_default[confirm-False\]]
|
[test_accept[alert\]]
|
||||||
expected: FAIL
|
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
|
expected: FAIL
|
||||||
|
|
|
@ -1,3 +1,51 @@
|
||||||
[send.py]
|
[send.py]
|
||||||
disabled: https://github.com/servo/servo/issues/35734
|
[test_null_response_value]
|
||||||
expected: TIMEOUT
|
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
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
[user_prompts.py]
|
|
||||||
disabled: https://github.com/servo/servo/issues/35734
|
|
|
@ -5,27 +5,9 @@
|
||||||
[test_restore_from_maximized]
|
[test_restore_from_maximized]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_x_y_floats]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_set_to_available_size]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_set_smaller_than_minimum_browser_size]
|
[test_set_smaller_than_minimum_browser_size]
|
||||||
expected: FAIL
|
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\]]
|
[test_no_change[rect12\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -43,21 +25,3 @@
|
||||||
|
|
||||||
[test_no_change[rect19\]]
|
[test_no_change[rect19\]]
|
||||||
expected: FAIL
|
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
|
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
[user_prompts.py]
|
|
||||||
disabled: https://github.com/servo/servo/issues/35734
|
|
|
@ -1,5 +1,5 @@
|
||||||
[user_prompts.py]
|
[user_prompts.py]
|
||||||
disabled: https://github.com/servo/servo/issues/35734
|
expected: TIMEOUT
|
||||||
[test_accept[capabilities0-alert-None\]]
|
[test_accept[capabilities0-alert-None\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
[user_prompts.py]
|
[user_prompts.py]
|
||||||
disabled: https://github.com/servo/servo/issues/35734
|
|
||||||
[test_accept[capabilities0-alert-None\]]
|
[test_accept[capabilities0-alert-None\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -44,12 +43,3 @@
|
||||||
|
|
||||||
[test_ignore[capabilities0-prompt\]]
|
[test_ignore[capabilities0-prompt\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_default[alert-None\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_default[confirm-False\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_default[prompt-None\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue