mirror of
https://github.com/servo/servo.git
synced 2025-08-04 13:10:20 +01:00
WebDriver Chore: use enum instead of compile time constant for browsing_context_script_command
(#37940)
This reduces unnecessary generated code and binary size. See https://github.com/servo/servo/pull/37712#discussion_r2171957828 Testing: No Behaviour change --------- Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
This commit is contained in:
parent
e64bc6d282
commit
68ec88465e
2 changed files with 66 additions and 56 deletions
|
@ -20,7 +20,7 @@ use webdriver::actions::{
|
||||||
use webdriver::command::ActionsParameters;
|
use webdriver::command::ActionsParameters;
|
||||||
use webdriver::error::{ErrorStatus, WebDriverError};
|
use webdriver::error::{ErrorStatus, WebDriverError};
|
||||||
|
|
||||||
use crate::{Handler, WebElement, wait_for_script_response};
|
use crate::{Handler, VerifyBrowsingContextIsOpen, WebElement, wait_for_script_response};
|
||||||
|
|
||||||
// Interval between wheelScroll and pointerMove increments in ms, based on common vsync
|
// Interval between wheelScroll and pointerMove increments in ms, based on common vsync
|
||||||
static POINTERMOVE_INTERVAL: u64 = 17;
|
static POINTERMOVE_INTERVAL: u64 = 17;
|
||||||
|
@ -738,8 +738,9 @@ impl Handler {
|
||||||
web_element: &WebElement,
|
web_element: &WebElement,
|
||||||
) -> Result<(i64, i64), ErrorStatus> {
|
) -> Result<(i64, i64), ErrorStatus> {
|
||||||
let (sender, receiver) = ipc::channel().unwrap();
|
let (sender, receiver) = ipc::channel().unwrap();
|
||||||
self.browsing_context_script_command::<false>(
|
self.browsing_context_script_command(
|
||||||
WebDriverScriptCommand::GetElementInViewCenterPoint(web_element.to_string(), sender),
|
WebDriverScriptCommand::GetElementInViewCenterPoint(web_element.to_string(), sender),
|
||||||
|
VerifyBrowsingContextIsOpen::No,
|
||||||
)
|
)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
let response = match wait_for_script_response(receiver) {
|
let response = match wait_for_script_response(receiver) {
|
||||||
|
|
|
@ -715,13 +715,15 @@ impl Handler {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Send command to Script Thread with session's current browsing context.
|
/// Send command to Script Thread with session's current browsing context.
|
||||||
/// If CHECK_OPEN is true, it would verify the existence of browsing context before sending.
|
/// If `verify` is [`VerifyBrowsingContextIsOpen::Yes`],
|
||||||
fn browsing_context_script_command<const CHECK_OPEN: bool>(
|
/// it would verify the existence of browsing context before sending.
|
||||||
|
fn browsing_context_script_command(
|
||||||
&self,
|
&self,
|
||||||
cmd_msg: WebDriverScriptCommand,
|
cmd_msg: WebDriverScriptCommand,
|
||||||
|
verify: VerifyBrowsingContextIsOpen,
|
||||||
) -> WebDriverResult<()> {
|
) -> WebDriverResult<()> {
|
||||||
let browsing_context_id = self.session()?.browsing_context_id;
|
let browsing_context_id = self.session()?.browsing_context_id;
|
||||||
if CHECK_OPEN {
|
if let VerifyBrowsingContextIsOpen::Yes = verify {
|
||||||
self.verify_browsing_context_is_open(browsing_context_id)?;
|
self.verify_browsing_context_is_open(browsing_context_id)?;
|
||||||
}
|
}
|
||||||
let msg = EmbedderToConstellationMessage::WebDriverCommand(
|
let msg = EmbedderToConstellationMessage::WebDriverCommand(
|
||||||
|
@ -732,14 +734,15 @@ impl Handler {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Send command to Script Thread with session's current top-level browsing context.
|
/// Send command to Script Thread with session's current top-level browsing context.
|
||||||
/// If CHECK_OPEN is true, it would verify the existence of top-level
|
/// If `verify` is [`VerifyBrowsingContextIsOpen::Yes`],
|
||||||
/// browsing context before sending.
|
/// it would verify the existence of top-level browsing context before sending.
|
||||||
fn top_level_script_command<const CHECK_OPEN: bool>(
|
fn top_level_script_command(
|
||||||
&self,
|
&self,
|
||||||
cmd_msg: WebDriverScriptCommand,
|
cmd_msg: WebDriverScriptCommand,
|
||||||
|
verify: VerifyBrowsingContextIsOpen,
|
||||||
) -> WebDriverResult<()> {
|
) -> WebDriverResult<()> {
|
||||||
let webview_id = self.session()?.webview_id;
|
let webview_id = self.session()?.webview_id;
|
||||||
if CHECK_OPEN {
|
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)?;
|
||||||
}
|
}
|
||||||
let browsing_context_id = BrowsingContextId::from(webview_id);
|
let browsing_context_id = BrowsingContextId::from(webview_id);
|
||||||
|
@ -790,7 +793,10 @@ impl Handler {
|
||||||
|
|
||||||
fn handle_current_url(&self) -> WebDriverResult<WebDriverResponse> {
|
fn handle_current_url(&self) -> WebDriverResult<WebDriverResponse> {
|
||||||
let (sender, receiver) = ipc::channel().unwrap();
|
let (sender, receiver) = ipc::channel().unwrap();
|
||||||
self.top_level_script_command::<true>(WebDriverScriptCommand::GetUrl(sender))?;
|
self.top_level_script_command(
|
||||||
|
WebDriverScriptCommand::GetUrl(sender),
|
||||||
|
VerifyBrowsingContextIsOpen::Yes,
|
||||||
|
)?;
|
||||||
|
|
||||||
let url = wait_for_script_response(receiver)?;
|
let url = wait_for_script_response(receiver)?;
|
||||||
|
|
||||||
|
@ -887,10 +893,10 @@ impl Handler {
|
||||||
fn handle_is_enabled(&self, element: &WebElement) -> WebDriverResult<WebDriverResponse> {
|
fn handle_is_enabled(&self, element: &WebElement) -> WebDriverResult<WebDriverResponse> {
|
||||||
let (sender, receiver) = ipc::channel().unwrap();
|
let (sender, receiver) = ipc::channel().unwrap();
|
||||||
|
|
||||||
self.browsing_context_script_command::<true>(WebDriverScriptCommand::IsEnabled(
|
self.browsing_context_script_command(
|
||||||
element.to_string(),
|
WebDriverScriptCommand::IsEnabled(element.to_string(), sender),
|
||||||
sender,
|
VerifyBrowsingContextIsOpen::Yes,
|
||||||
))?;
|
)?;
|
||||||
|
|
||||||
match wait_for_script_response(receiver)? {
|
match wait_for_script_response(receiver)? {
|
||||||
Ok(is_enabled) => Ok(WebDriverResponse::Generic(ValueResponse(
|
Ok(is_enabled) => Ok(WebDriverResponse::Generic(ValueResponse(
|
||||||
|
@ -903,10 +909,10 @@ impl Handler {
|
||||||
fn handle_is_selected(&self, element: &WebElement) -> WebDriverResult<WebDriverResponse> {
|
fn handle_is_selected(&self, element: &WebElement) -> WebDriverResult<WebDriverResponse> {
|
||||||
let (sender, receiver) = ipc::channel().unwrap();
|
let (sender, receiver) = ipc::channel().unwrap();
|
||||||
|
|
||||||
self.browsing_context_script_command::<true>(WebDriverScriptCommand::IsSelected(
|
self.browsing_context_script_command(
|
||||||
element.to_string(),
|
WebDriverScriptCommand::IsSelected(element.to_string(), sender),
|
||||||
sender,
|
VerifyBrowsingContextIsOpen::Yes,
|
||||||
))?;
|
)?;
|
||||||
|
|
||||||
match wait_for_script_response(receiver)? {
|
match wait_for_script_response(receiver)? {
|
||||||
Ok(is_selected) => Ok(WebDriverResponse::Generic(ValueResponse(
|
Ok(is_selected) => Ok(WebDriverResponse::Generic(ValueResponse(
|
||||||
|
@ -951,7 +957,10 @@ impl Handler {
|
||||||
fn handle_title(&self) -> WebDriverResult<WebDriverResponse> {
|
fn handle_title(&self) -> WebDriverResult<WebDriverResponse> {
|
||||||
let (sender, receiver) = ipc::channel().unwrap();
|
let (sender, receiver) = ipc::channel().unwrap();
|
||||||
|
|
||||||
self.top_level_script_command::<true>(WebDriverScriptCommand::GetTitle(sender))?;
|
self.top_level_script_command(
|
||||||
|
WebDriverScriptCommand::GetTitle(sender),
|
||||||
|
VerifyBrowsingContextIsOpen::Yes,
|
||||||
|
)?;
|
||||||
|
|
||||||
let value = wait_for_script_response(receiver)?;
|
let value = wait_for_script_response(receiver)?;
|
||||||
Ok(WebDriverResponse::Generic(ValueResponse(
|
Ok(WebDriverResponse::Generic(ValueResponse(
|
||||||
|
@ -1106,7 +1115,7 @@ impl Handler {
|
||||||
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.
|
||||||
self.browsing_context_script_command::<true>(cmd)?;
|
self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?;
|
||||||
match wait_for_script_response(receiver)? {
|
match wait_for_script_response(receiver)? {
|
||||||
Ok(browsing_context_id) => {
|
Ok(browsing_context_id) => {
|
||||||
self.session_mut()?.browsing_context_id = browsing_context_id;
|
self.session_mut()?.browsing_context_id = browsing_context_id;
|
||||||
|
@ -1151,7 +1160,7 @@ impl Handler {
|
||||||
) -> WebDriverResult<WebDriverResponse> {
|
) -> WebDriverResult<WebDriverResponse> {
|
||||||
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::<true>(cmd)?;
|
self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?;
|
||||||
|
|
||||||
match wait_for_script_response(receiver)? {
|
match wait_for_script_response(receiver)? {
|
||||||
Ok(browsing_context_id) => {
|
Ok(browsing_context_id) => {
|
||||||
|
@ -1178,7 +1187,7 @@ impl Handler {
|
||||||
parameters.value.clone(),
|
parameters.value.clone(),
|
||||||
sender,
|
sender,
|
||||||
);
|
);
|
||||||
self.browsing_context_script_command::<true>(cmd)?;
|
self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?;
|
||||||
},
|
},
|
||||||
LocatorStrategy::LinkText | LocatorStrategy::PartialLinkText => {
|
LocatorStrategy::LinkText | LocatorStrategy::PartialLinkText => {
|
||||||
let cmd = WebDriverScriptCommand::FindElementsLinkText(
|
let cmd = WebDriverScriptCommand::FindElementsLinkText(
|
||||||
|
@ -1186,19 +1195,19 @@ impl Handler {
|
||||||
parameters.using == LocatorStrategy::PartialLinkText,
|
parameters.using == LocatorStrategy::PartialLinkText,
|
||||||
sender,
|
sender,
|
||||||
);
|
);
|
||||||
self.browsing_context_script_command::<true>(cmd)?;
|
self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?;
|
||||||
},
|
},
|
||||||
LocatorStrategy::TagName => {
|
LocatorStrategy::TagName => {
|
||||||
let cmd =
|
let cmd =
|
||||||
WebDriverScriptCommand::FindElementsTagName(parameters.value.clone(), sender);
|
WebDriverScriptCommand::FindElementsTagName(parameters.value.clone(), sender);
|
||||||
self.browsing_context_script_command::<true>(cmd)?;
|
self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?;
|
||||||
},
|
},
|
||||||
LocatorStrategy::XPath => {
|
LocatorStrategy::XPath => {
|
||||||
let cmd = WebDriverScriptCommand::FindElementsXpathSelector(
|
let cmd = WebDriverScriptCommand::FindElementsXpathSelector(
|
||||||
parameters.value.clone(),
|
parameters.value.clone(),
|
||||||
sender,
|
sender,
|
||||||
);
|
);
|
||||||
self.browsing_context_script_command::<true>(cmd)?;
|
self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?;
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1245,7 +1254,7 @@ impl Handler {
|
||||||
element.to_string(),
|
element.to_string(),
|
||||||
sender,
|
sender,
|
||||||
);
|
);
|
||||||
self.browsing_context_script_command::<true>(cmd)?;
|
self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?;
|
||||||
},
|
},
|
||||||
LocatorStrategy::LinkText | LocatorStrategy::PartialLinkText => {
|
LocatorStrategy::LinkText | LocatorStrategy::PartialLinkText => {
|
||||||
let cmd = WebDriverScriptCommand::FindElementElementsLinkText(
|
let cmd = WebDriverScriptCommand::FindElementElementsLinkText(
|
||||||
|
@ -1254,7 +1263,7 @@ impl Handler {
|
||||||
parameters.using == LocatorStrategy::PartialLinkText,
|
parameters.using == LocatorStrategy::PartialLinkText,
|
||||||
sender,
|
sender,
|
||||||
);
|
);
|
||||||
self.browsing_context_script_command::<true>(cmd)?;
|
self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?;
|
||||||
},
|
},
|
||||||
LocatorStrategy::TagName => {
|
LocatorStrategy::TagName => {
|
||||||
let cmd = WebDriverScriptCommand::FindElementElementsTagName(
|
let cmd = WebDriverScriptCommand::FindElementElementsTagName(
|
||||||
|
@ -1262,7 +1271,7 @@ impl Handler {
|
||||||
element.to_string(),
|
element.to_string(),
|
||||||
sender,
|
sender,
|
||||||
);
|
);
|
||||||
self.browsing_context_script_command::<true>(cmd)?;
|
self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?;
|
||||||
},
|
},
|
||||||
LocatorStrategy::XPath => {
|
LocatorStrategy::XPath => {
|
||||||
let cmd = WebDriverScriptCommand::FindElementElementsXPathSelector(
|
let cmd = WebDriverScriptCommand::FindElementElementsXPathSelector(
|
||||||
|
@ -1270,7 +1279,7 @@ impl Handler {
|
||||||
element.to_string(),
|
element.to_string(),
|
||||||
sender,
|
sender,
|
||||||
);
|
);
|
||||||
self.browsing_context_script_command::<true>(cmd)?;
|
self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?;
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1307,7 +1316,7 @@ impl Handler {
|
||||||
shadow_root.to_string(),
|
shadow_root.to_string(),
|
||||||
sender,
|
sender,
|
||||||
);
|
);
|
||||||
self.browsing_context_script_command::<true>(cmd)?;
|
self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?;
|
||||||
},
|
},
|
||||||
LocatorStrategy::LinkText | LocatorStrategy::PartialLinkText => {
|
LocatorStrategy::LinkText | LocatorStrategy::PartialLinkText => {
|
||||||
let cmd = WebDriverScriptCommand::FindShadowElementsLinkText(
|
let cmd = WebDriverScriptCommand::FindShadowElementsLinkText(
|
||||||
|
@ -1316,7 +1325,7 @@ impl Handler {
|
||||||
parameters.using == LocatorStrategy::PartialLinkText,
|
parameters.using == LocatorStrategy::PartialLinkText,
|
||||||
sender,
|
sender,
|
||||||
);
|
);
|
||||||
self.browsing_context_script_command::<true>(cmd)?;
|
self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?;
|
||||||
},
|
},
|
||||||
LocatorStrategy::TagName => {
|
LocatorStrategy::TagName => {
|
||||||
let cmd = WebDriverScriptCommand::FindShadowElementsTagName(
|
let cmd = WebDriverScriptCommand::FindShadowElementsTagName(
|
||||||
|
@ -1324,7 +1333,7 @@ impl Handler {
|
||||||
shadow_root.to_string(),
|
shadow_root.to_string(),
|
||||||
sender,
|
sender,
|
||||||
);
|
);
|
||||||
self.browsing_context_script_command::<true>(cmd)?;
|
self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?;
|
||||||
},
|
},
|
||||||
LocatorStrategy::XPath => {
|
LocatorStrategy::XPath => {
|
||||||
let cmd = WebDriverScriptCommand::FindShadowElementsXPathSelector(
|
let cmd = WebDriverScriptCommand::FindShadowElementsXPathSelector(
|
||||||
|
@ -1332,7 +1341,7 @@ impl Handler {
|
||||||
shadow_root.to_string(),
|
shadow_root.to_string(),
|
||||||
sender,
|
sender,
|
||||||
);
|
);
|
||||||
self.browsing_context_script_command::<true>(cmd)?;
|
self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?;
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1366,7 +1375,7 @@ impl Handler {
|
||||||
fn handle_get_shadow_root(&self, element: WebElement) -> WebDriverResult<WebDriverResponse> {
|
fn handle_get_shadow_root(&self, element: WebElement) -> WebDriverResult<WebDriverResponse> {
|
||||||
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::<true>(cmd)?;
|
self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?;
|
||||||
match wait_for_script_response(receiver)? {
|
match wait_for_script_response(receiver)? {
|
||||||
Ok(value) => {
|
Ok(value) => {
|
||||||
let Some(value) = value else {
|
let Some(value) = value else {
|
||||||
|
@ -1384,7 +1393,7 @@ impl Handler {
|
||||||
fn handle_element_rect(&self, element: &WebElement) -> WebDriverResult<WebDriverResponse> {
|
fn handle_element_rect(&self, element: &WebElement) -> WebDriverResult<WebDriverResponse> {
|
||||||
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::<true>(cmd)?;
|
self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?;
|
||||||
match wait_for_script_response(receiver)? {
|
match wait_for_script_response(receiver)? {
|
||||||
Ok(rect) => {
|
Ok(rect) => {
|
||||||
let response = ElementRectResponse {
|
let response = ElementRectResponse {
|
||||||
|
@ -1403,7 +1412,7 @@ impl Handler {
|
||||||
fn handle_element_text(&self, element: &WebElement) -> WebDriverResult<WebDriverResponse> {
|
fn handle_element_text(&self, element: &WebElement) -> WebDriverResult<WebDriverResponse> {
|
||||||
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::<true>(cmd)?;
|
self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?;
|
||||||
match wait_for_script_response(receiver)? {
|
match wait_for_script_response(receiver)? {
|
||||||
Ok(value) => Ok(WebDriverResponse::Generic(ValueResponse(
|
Ok(value) => Ok(WebDriverResponse::Generic(ValueResponse(
|
||||||
serde_json::to_value(value)?,
|
serde_json::to_value(value)?,
|
||||||
|
@ -1416,7 +1425,7 @@ impl Handler {
|
||||||
fn handle_active_element(&self) -> WebDriverResult<WebDriverResponse> {
|
fn handle_active_element(&self) -> WebDriverResult<WebDriverResponse> {
|
||||||
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::<true>(cmd)?;
|
self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?;
|
||||||
let value = wait_for_script_response(receiver)?
|
let value = wait_for_script_response(receiver)?
|
||||||
.map(|x| serde_json::to_value(WebElement(x)).unwrap());
|
.map(|x| serde_json::to_value(WebElement(x)).unwrap());
|
||||||
// Step 4. If active element is a non-null element, return success
|
// Step 4. If active element is a non-null element, return success
|
||||||
|
@ -1437,7 +1446,7 @@ impl Handler {
|
||||||
fn handle_computed_role(&self, element: &WebElement) -> WebDriverResult<WebDriverResponse> {
|
fn handle_computed_role(&self, element: &WebElement) -> WebDriverResult<WebDriverResponse> {
|
||||||
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::<true>(cmd)?;
|
self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?;
|
||||||
match wait_for_script_response(receiver)? {
|
match wait_for_script_response(receiver)? {
|
||||||
Ok(value) => Ok(WebDriverResponse::Generic(ValueResponse(
|
Ok(value) => Ok(WebDriverResponse::Generic(ValueResponse(
|
||||||
serde_json::to_value(value)?,
|
serde_json::to_value(value)?,
|
||||||
|
@ -1449,7 +1458,7 @@ impl Handler {
|
||||||
fn handle_element_tag_name(&self, element: &WebElement) -> WebDriverResult<WebDriverResponse> {
|
fn handle_element_tag_name(&self, element: &WebElement) -> WebDriverResult<WebDriverResponse> {
|
||||||
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::<true>(cmd)?;
|
self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?;
|
||||||
match wait_for_script_response(receiver)? {
|
match wait_for_script_response(receiver)? {
|
||||||
Ok(value) => Ok(WebDriverResponse::Generic(ValueResponse(
|
Ok(value) => Ok(WebDriverResponse::Generic(ValueResponse(
|
||||||
serde_json::to_value(value)?,
|
serde_json::to_value(value)?,
|
||||||
|
@ -1469,7 +1478,7 @@ impl Handler {
|
||||||
name.to_owned(),
|
name.to_owned(),
|
||||||
sender,
|
sender,
|
||||||
);
|
);
|
||||||
self.browsing_context_script_command::<true>(cmd)?;
|
self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?;
|
||||||
match wait_for_script_response(receiver)? {
|
match wait_for_script_response(receiver)? {
|
||||||
Ok(value) => Ok(WebDriverResponse::Generic(ValueResponse(
|
Ok(value) => Ok(WebDriverResponse::Generic(ValueResponse(
|
||||||
serde_json::to_value(value)?,
|
serde_json::to_value(value)?,
|
||||||
|
@ -1490,7 +1499,7 @@ impl Handler {
|
||||||
name.to_owned(),
|
name.to_owned(),
|
||||||
sender,
|
sender,
|
||||||
);
|
);
|
||||||
self.browsing_context_script_command::<true>(cmd)?;
|
self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?;
|
||||||
|
|
||||||
match wait_for_script_response(receiver)? {
|
match wait_for_script_response(receiver)? {
|
||||||
Ok(value) => Ok(WebDriverResponse::Generic(ValueResponse(
|
Ok(value) => Ok(WebDriverResponse::Generic(ValueResponse(
|
||||||
|
@ -1508,7 +1517,7 @@ impl Handler {
|
||||||
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);
|
||||||
self.browsing_context_script_command::<true>(cmd)?;
|
self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?;
|
||||||
match wait_for_script_response(receiver)? {
|
match wait_for_script_response(receiver)? {
|
||||||
Ok(value) => Ok(WebDriverResponse::Generic(ValueResponse(
|
Ok(value) => Ok(WebDriverResponse::Generic(ValueResponse(
|
||||||
serde_json::to_value(value)?,
|
serde_json::to_value(value)?,
|
||||||
|
@ -1520,7 +1529,7 @@ impl Handler {
|
||||||
fn handle_get_cookies(&self) -> WebDriverResult<WebDriverResponse> {
|
fn handle_get_cookies(&self) -> WebDriverResult<WebDriverResponse> {
|
||||||
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::<true>(cmd)?;
|
self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?;
|
||||||
let cookies = match wait_for_script_response(receiver)? {
|
let cookies = match wait_for_script_response(receiver)? {
|
||||||
Ok(cookies) => cookies,
|
Ok(cookies) => cookies,
|
||||||
Err(error) => return Err(WebDriverError::new(error, "")),
|
Err(error) => return Err(WebDriverError::new(error, "")),
|
||||||
|
@ -1535,7 +1544,7 @@ impl Handler {
|
||||||
fn handle_get_cookie(&self, name: String) -> WebDriverResult<WebDriverResponse> {
|
fn handle_get_cookie(&self, name: String) -> WebDriverResult<WebDriverResponse> {
|
||||||
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::<true>(cmd)?;
|
self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?;
|
||||||
let cookies = match wait_for_script_response(receiver)? {
|
let cookies = match wait_for_script_response(receiver)? {
|
||||||
Ok(cookies) => cookies,
|
Ok(cookies) => cookies,
|
||||||
Err(error) => return Err(WebDriverError::new(error, "")),
|
Err(error) => return Err(WebDriverError::new(error, "")),
|
||||||
|
@ -1569,7 +1578,7 @@ impl Handler {
|
||||||
};
|
};
|
||||||
|
|
||||||
let cmd = WebDriverScriptCommand::AddCookie(cookie_builder.build(), sender);
|
let cmd = WebDriverScriptCommand::AddCookie(cookie_builder.build(), sender);
|
||||||
self.browsing_context_script_command::<true>(cmd)?;
|
self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?;
|
||||||
match wait_for_script_response(receiver)? {
|
match wait_for_script_response(receiver)? {
|
||||||
Ok(_) => Ok(WebDriverResponse::Void),
|
Ok(_) => Ok(WebDriverResponse::Void),
|
||||||
Err(error) => Err(WebDriverError::new(error, "")),
|
Err(error) => Err(WebDriverError::new(error, "")),
|
||||||
|
@ -1579,7 +1588,7 @@ impl Handler {
|
||||||
fn handle_delete_cookie(&self, name: String) -> WebDriverResult<WebDriverResponse> {
|
fn handle_delete_cookie(&self, name: String) -> WebDriverResult<WebDriverResponse> {
|
||||||
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::<true>(cmd)?;
|
self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?;
|
||||||
match wait_for_script_response(receiver)? {
|
match wait_for_script_response(receiver)? {
|
||||||
Ok(_) => Ok(WebDriverResponse::Void),
|
Ok(_) => Ok(WebDriverResponse::Void),
|
||||||
Err(error) => Err(WebDriverError::new(error, "")),
|
Err(error) => Err(WebDriverError::new(error, "")),
|
||||||
|
@ -1589,7 +1598,7 @@ impl Handler {
|
||||||
fn handle_delete_cookies(&self) -> WebDriverResult<WebDriverResponse> {
|
fn handle_delete_cookies(&self) -> WebDriverResult<WebDriverResponse> {
|
||||||
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::<true>(cmd)?;
|
self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?;
|
||||||
match wait_for_script_response(receiver)? {
|
match wait_for_script_response(receiver)? {
|
||||||
Ok(_) => Ok(WebDriverResponse::Void),
|
Ok(_) => Ok(WebDriverResponse::Void),
|
||||||
Err(error) => Err(WebDriverError::new(error, "")),
|
Err(error) => Err(WebDriverError::new(error, "")),
|
||||||
|
@ -1646,7 +1655,7 @@ impl Handler {
|
||||||
let (sender, receiver) = ipc::channel().unwrap();
|
let (sender, receiver) = ipc::channel().unwrap();
|
||||||
|
|
||||||
let cmd = WebDriverScriptCommand::GetPageSource(sender);
|
let cmd = WebDriverScriptCommand::GetPageSource(sender);
|
||||||
self.browsing_context_script_command::<true>(cmd)?;
|
self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?;
|
||||||
|
|
||||||
match wait_for_script_response(receiver)? {
|
match wait_for_script_response(receiver)? {
|
||||||
Ok(source) => Ok(WebDriverResponse::Generic(ValueResponse(
|
Ok(source) => Ok(WebDriverResponse::Generic(ValueResponse(
|
||||||
|
@ -1735,8 +1744,8 @@ impl Handler {
|
||||||
debug!("{}", script);
|
debug!("{}", script);
|
||||||
|
|
||||||
let (sender, receiver) = ipc::channel().unwrap();
|
let (sender, receiver) = ipc::channel().unwrap();
|
||||||
let command = WebDriverScriptCommand::ExecuteScript(script, sender);
|
let cmd = WebDriverScriptCommand::ExecuteScript(script, sender);
|
||||||
self.browsing_context_script_command::<true>(command)?;
|
self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?;
|
||||||
let result = wait_for_script_response(receiver)?;
|
let result = wait_for_script_response(receiver)?;
|
||||||
self.postprocess_js_result(result)
|
self.postprocess_js_result(result)
|
||||||
}
|
}
|
||||||
|
@ -1779,8 +1788,8 @@ impl Handler {
|
||||||
debug!("{}", script);
|
debug!("{}", script);
|
||||||
|
|
||||||
let (sender, receiver) = ipc::channel().unwrap();
|
let (sender, receiver) = ipc::channel().unwrap();
|
||||||
let command = WebDriverScriptCommand::ExecuteAsyncScript(script, sender);
|
let cmd = WebDriverScriptCommand::ExecuteAsyncScript(script, sender);
|
||||||
self.browsing_context_script_command::<true>(command)?;
|
self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?;
|
||||||
let result = wait_for_script_response(receiver)?;
|
let result = wait_for_script_response(receiver)?;
|
||||||
self.postprocess_js_result(result)
|
self.postprocess_js_result(result)
|
||||||
}
|
}
|
||||||
|
@ -1862,8 +1871,8 @@ impl Handler {
|
||||||
let (sender, receiver) = ipc::channel().unwrap();
|
let (sender, receiver) = ipc::channel().unwrap();
|
||||||
|
|
||||||
// Steps 1 - 7
|
// Steps 1 - 7
|
||||||
let command = WebDriverScriptCommand::ElementClick(element.to_string(), sender);
|
let cmd = WebDriverScriptCommand::ElementClick(element.to_string(), sender);
|
||||||
self.browsing_context_script_command::<true>(command)?;
|
self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?;
|
||||||
|
|
||||||
match wait_for_script_response(receiver)? {
|
match wait_for_script_response(receiver)? {
|
||||||
Ok(element_id) => match element_id {
|
Ok(element_id) => match element_id {
|
||||||
|
@ -2015,8 +2024,8 @@ impl Handler {
|
||||||
) -> WebDriverResult<WebDriverResponse> {
|
) -> WebDriverResult<WebDriverResponse> {
|
||||||
let (sender, receiver) = ipc::channel().unwrap();
|
let (sender, receiver) = ipc::channel().unwrap();
|
||||||
|
|
||||||
let command = WebDriverScriptCommand::GetBoundingClientRect(element.to_string(), sender);
|
let cmd = WebDriverScriptCommand::GetBoundingClientRect(element.to_string(), sender);
|
||||||
self.browsing_context_script_command::<true>(command)?;
|
self.browsing_context_script_command(cmd, VerifyBrowsingContextIsOpen::Yes)?;
|
||||||
|
|
||||||
match wait_for_script_response(receiver)? {
|
match wait_for_script_response(receiver)? {
|
||||||
Ok(rect) => {
|
Ok(rect) => {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue