aboutsummaryrefslogtreecommitdiffstats
path: root/components/webdriver_server/lib.rs
diff options
context:
space:
mode:
authorbors-servo <lbergstrom+bors@mozilla.com>2019-06-24 18:37:36 -0400
committerGitHub <noreply@github.com>2019-06-24 18:37:36 -0400
commitb1ecda32aa40398fb83fea435460d9594e9e5136 (patch)
tree0256942973af4f4b80be35de2c63651eb15ccac8 /components/webdriver_server/lib.rs
parent7490dd6f0deafc8192126a88a8a6f75c100e5d71 (diff)
parent15bd852b5280f844f09ad95620f78bccfe08ba5f (diff)
downloadservo-b1ecda32aa40398fb83fea435460d9594e9e5136.tar.gz
servo-b1ecda32aa40398fb83fea435460d9594e9e5136.zip
Auto merge of #23580 - georgeroman:implement_switch_to_window_and_dismiss_alert_wd_commands, r=jdm
Implement SwitchToWindow and DismissAlert WebDriver commands <!-- Please describe your changes on the following line: --> --- <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: --> - [X] `./mach build -d` does not report any errors - [X] `./mach test-tidy` does not report any errors <!-- Either: --> - [X] There are tests for these changes <!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.--> <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. --> <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/23580) <!-- Reviewable:end -->
Diffstat (limited to 'components/webdriver_server/lib.rs')
-rw-r--r--components/webdriver_server/lib.rs28
1 files changed, 28 insertions, 0 deletions
diff --git a/components/webdriver_server/lib.rs b/components/webdriver_server/lib.rs
index 368bfb1e0ae..de9e285037f 100644
--- a/components/webdriver_server/lib.rs
+++ b/components/webdriver_server/lib.rs
@@ -44,6 +44,7 @@ use std::thread;
use std::time::Duration;
use uuid::Uuid;
use webdriver::capabilities::{Capabilities, CapabilitiesMatching};
+use webdriver::command::SwitchToWindowParameters;
use webdriver::command::{
AddCookieParameters, GetParameters, JavascriptCommandParameters, LocatorParameters,
};
@@ -852,6 +853,23 @@ impl Handler {
self.switch_to_frame(WebDriverFrameId::Parent)
}
+ // https://w3c.github.io/webdriver/#switch-to-window
+ fn handle_switch_to_window(
+ &mut self,
+ parameters: &SwitchToWindowParameters,
+ ) -> WebDriverResult<WebDriverResponse> {
+ // For now we assume there is only one window which has the current
+ // session's id as window id
+ if parameters.handle == self.session.as_ref().unwrap().id.to_string() {
+ Ok(WebDriverResponse::Void)
+ } else {
+ Err(WebDriverError::new(
+ ErrorStatus::NoSuchWindow,
+ "No such window",
+ ))
+ }
+ }
+
fn switch_to_frame(
&mut self,
frame_id: WebDriverFrameId,
@@ -1162,6 +1180,12 @@ impl Handler {
}
}
+ // https://w3c.github.io/webdriver/#dismiss-alert
+ fn handle_dismiss_alert(&mut self) -> WebDriverResult<WebDriverResponse> {
+ // Since user prompts are not yet implement this will always succeed
+ Ok(WebDriverResponse::Void)
+ }
+
fn handle_get_timeouts(&mut self) -> WebDriverResult<WebDriverResponse> {
let session = self
.session
@@ -1464,6 +1488,9 @@ impl WebDriverHandler<ServoExtensionRoute> for Handler {
self.handle_switch_to_frame(parameters)
},
WebDriverCommand::SwitchToParentFrame => self.handle_switch_to_parent_frame(),
+ WebDriverCommand::SwitchToWindow(ref parameters) => {
+ self.handle_switch_to_window(parameters)
+ },
WebDriverCommand::FindElement(ref parameters) => self.handle_find_element(parameters),
WebDriverCommand::FindElements(ref parameters) => self.handle_find_elements(parameters),
WebDriverCommand::FindElementElement(ref element, ref parameters) => {
@@ -1492,6 +1519,7 @@ impl WebDriverHandler<ServoExtensionRoute> for Handler {
WebDriverCommand::ElementSendKeys(ref element, ref keys) => {
self.handle_element_send_keys(element, keys)
},
+ WebDriverCommand::DismissAlert => self.handle_dismiss_alert(),
WebDriverCommand::DeleteCookies => self.handle_delete_cookies(),
WebDriverCommand::GetTimeouts => self.handle_get_timeouts(),
WebDriverCommand::SetTimeouts(ref x) => self.handle_set_timeouts(x),