Update webdriver dependency.

This commit is contained in:
Josh Matthews 2017-11-20 15:34:57 -05:00
parent 8761f53391
commit babefa4cae
5 changed files with 50 additions and 25 deletions

18
Cargo.lock generated
View file

@ -521,6 +521,14 @@ dependencies = [
"time 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)",
] ]
[[package]]
name = "cookie"
version = "0.9.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"time 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]] [[package]]
name = "core-foundation" name = "core-foundation"
version = "0.4.4" version = "0.4.4"
@ -3596,16 +3604,17 @@ dependencies = [
[[package]] [[package]]
name = "webdriver" name = "webdriver"
version = "0.22.0" version = "0.32.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [ dependencies = [
"backtrace 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "backtrace 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
"cookie 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", "cookie 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)",
"hyper 0.10.13 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.10.13 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
"regex 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "regex 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
"rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)",
"time 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)",
"url 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
] ]
[[package]] [[package]]
@ -3628,7 +3637,7 @@ dependencies = [
"servo_url 0.0.1", "servo_url 0.0.1",
"url 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
"uuid 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "uuid 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
"webdriver 0.22.0 (registry+https://github.com/rust-lang/crates.io-index)", "webdriver 0.32.0 (registry+https://github.com/rust-lang/crates.io-index)",
] ]
[[package]] [[package]]
@ -3860,6 +3869,7 @@ dependencies = [
"checksum color_quant 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a475fc4af42d83d28adf72968d9bcfaf035a1a9381642d8e85d8a04957767b0d" "checksum color_quant 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a475fc4af42d83d28adf72968d9bcfaf035a1a9381642d8e85d8a04957767b0d"
"checksum compiletest_rs 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "617b23d0ed4f57b3bcff6b5fe0a78f0010f1efb636298317665a960b6dbc0533" "checksum compiletest_rs 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "617b23d0ed4f57b3bcff6b5fe0a78f0010f1efb636298317665a960b6dbc0533"
"checksum cookie 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "30b3493e12a550c2f96be785088d1da8d93189e7237c8a8d0d871bc9070334c3" "checksum cookie 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "30b3493e12a550c2f96be785088d1da8d93189e7237c8a8d0d871bc9070334c3"
"checksum cookie 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)" = "477eb650753e319be2ae77ec368a58c638f9f0c4d941c39bad95e950fb1d1d0d"
"checksum core-foundation 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5909502e547762013619f4c4e01cc7393c20fe2d52d7fa471c1210adb2320dc7" "checksum core-foundation 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5909502e547762013619f4c4e01cc7393c20fe2d52d7fa471c1210adb2320dc7"
"checksum core-foundation-sys 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "bc9fb3d6cb663e6fd7cf1c63f9b144ee2b1e4a78595a0451dd34bff85b9a3387" "checksum core-foundation-sys 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "bc9fb3d6cb663e6fd7cf1c63f9b144ee2b1e4a78595a0451dd34bff85b9a3387"
"checksum core-graphics 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2fd47addfc77b7e574d24e5434f95bb64a863769dfd4f1d451ca4ff5530ba01a" "checksum core-graphics 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2fd47addfc77b7e574d24e5434f95bb64a863769dfd4f1d451ca4ff5530ba01a"
@ -4099,7 +4109,7 @@ dependencies = [
"checksum vec_map 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cac5efe5cb0fa14ec2f84f83c701c562ee63f6dcc680861b21d65c682adfb05f" "checksum vec_map 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cac5efe5cb0fa14ec2f84f83c701c562ee63f6dcc680861b21d65c682adfb05f"
"checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" "checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d"
"checksum walkdir 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "bb08f9e670fab86099470b97cd2b252d6527f0b3cc1401acdb595ffc9dd288ff" "checksum walkdir 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "bb08f9e670fab86099470b97cd2b252d6527f0b3cc1401acdb595ffc9dd288ff"
"checksum webdriver 0.22.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d548aabf87411b1b4ba91fd07eacd8b238135c7131a452b8a9f6386209167e18" "checksum webdriver 0.32.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b982fb5fe268cc124931035ca0c4b65d39e6d9c9fed319186b7d17493bf98984"
"checksum webrender 0.53.2 (git+https://github.com/servo/webrender)" = "<none>" "checksum webrender 0.53.2 (git+https://github.com/servo/webrender)" = "<none>"
"checksum webrender_api 0.53.2 (git+https://github.com/servo/webrender)" = "<none>" "checksum webrender_api 0.53.2 (git+https://github.com/servo/webrender)" = "<none>"
"checksum which 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "4be6cfa54dab45266e98b5d7be2f8ce959ddd49abd141a05d52dce4b07f803bb" "checksum which 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "4be6cfa54dab45266e98b5d7be2f8ce959ddd49abd141a05d52dce4b07f803bb"

View file

@ -26,4 +26,4 @@ servo_config = {path = "../config"}
servo_url = {path = "../url"} servo_url = {path = "../url"}
url = "1.2" url = "1.2"
uuid = {version = "0.5", features = ["v4"]} uuid = {version = "0.5", features = ["v4"]}
webdriver = "0.22" webdriver = "0.32"

View file

@ -168,11 +168,11 @@ fn key_from_char(key_string: &char) -> Option<(Key, bool)> {
} }
} }
pub fn keycodes_to_keys(key_codes: &[char]) -> Result<Vec<(Key, KeyModifiers, KeyState)>, String> { pub fn keycodes_to_keys(key_codes: &str) -> Result<Vec<(Key, KeyModifiers, KeyState)>, String> {
let mut rv = vec![]; let mut rv = vec![];
for char_code in key_codes.iter() { for char_code in key_codes.chars() {
let (key, with_shift) = key_from_char(char_code).ok_or(format!("Unsupported character code {}", char_code))?; let (key, with_shift) = key_from_char(&char_code).ok_or(format!("Unsupported character code {}", char_code))?;
let modifiers = if with_shift { let modifiers = if with_shift {
KeyModifiers::SHIFT KeyModifiers::SHIFT
} else { } else {

View file

@ -52,13 +52,13 @@ use webdriver::command::{AddCookieParameters, GetParameters, JavascriptCommandPa
use webdriver::command::{LocatorParameters, Parameters}; use webdriver::command::{LocatorParameters, Parameters};
use webdriver::command::{SendKeysParameters, SwitchToFrameParameters, TimeoutsParameters}; use webdriver::command::{SendKeysParameters, SwitchToFrameParameters, TimeoutsParameters};
use webdriver::command::{WebDriverCommand, WebDriverExtensionCommand, WebDriverMessage}; use webdriver::command::{WebDriverCommand, WebDriverExtensionCommand, WebDriverMessage};
use webdriver::command::WindowSizeParameters; use webdriver::command::WindowRectParameters;
use webdriver::common::{Date, LocatorStrategy, Nullable, WebElement}; use webdriver::common::{Date, LocatorStrategy, Nullable, WebElement};
use webdriver::error::{ErrorStatus, WebDriverError, WebDriverResult}; use webdriver::error::{ErrorStatus, WebDriverError, WebDriverResult};
use webdriver::httpapi::WebDriverExtensionRoute; use webdriver::httpapi::WebDriverExtensionRoute;
use webdriver::response::{Cookie, CookieResponse}; use webdriver::response::{Cookie, CookieResponse, CookiesResponse};
use webdriver::response::{ElementRectResponse, NewSessionResponse, ValueResponse}; use webdriver::response::{ElementRectResponse, NewSessionResponse, ValueResponse};
use webdriver::response::{WebDriverResponse, WindowSizeResponse}; use webdriver::response::{WebDriverResponse, WindowRectResponse};
use webdriver::server::{self, Session, WebDriverHandler}; use webdriver::server::{self, Session, WebDriverHandler};
fn extension_routes() -> Vec<(Method, &'static str, ServoExtensionRoute)> { fn extension_routes() -> Vec<(Method, &'static str, ServoExtensionRoute)> {
@ -402,13 +402,23 @@ impl Handler {
let window_size = receiver.recv().unwrap(); let window_size = receiver.recv().unwrap();
let vp = window_size.initial_viewport; let vp = window_size.initial_viewport;
let window_size_response = WindowSizeResponse::new(vp.width as u64, vp.height as u64); let window_size_response = WindowRectResponse {
Ok(WebDriverResponse::WindowSize(window_size_response)) x: 0, y: 0, width: vp.width as i32, height: vp.height as i32
};
Ok(WebDriverResponse::WindowRect(window_size_response))
} }
fn handle_set_window_size(&self, params: &WindowSizeParameters) -> WebDriverResult<WebDriverResponse> { fn handle_set_window_size(&self, params: &WindowRectParameters) -> WebDriverResult<WebDriverResponse> {
let (sender, receiver) = ipc::channel().unwrap(); let (sender, receiver) = ipc::channel().unwrap();
let size = Size2D::new(params.width as u32, params.height as u32); let width = match params.width {
Nullable::Value(v) => v,
Nullable::Null => 0,
};
let height = match params.height {
Nullable::Value(v) => v,
Nullable::Null => 0,
};
let size = Size2D::new(width as u32, height as u32);
let top_level_browsing_context_id = self.session()?.top_level_browsing_context_id; let top_level_browsing_context_id = self.session()?.top_level_browsing_context_id;
let cmd_msg = WebDriverCommandMsg::SetWindowSize(top_level_browsing_context_id, size, sender.clone()); let cmd_msg = WebDriverCommandMsg::SetWindowSize(top_level_browsing_context_id, size, sender.clone());
@ -426,8 +436,10 @@ impl Handler {
let window_size = receiver.recv().unwrap(); let window_size = receiver.recv().unwrap();
let vp = window_size.initial_viewport; let vp = window_size.initial_viewport;
let window_size_response = WindowSizeResponse::new(vp.width as u64, vp.height as u64); let window_size_response = WindowRectResponse {
Ok(WebDriverResponse::WindowSize(window_size_response)) x: 0, y: 0, width: vp.width as i32, height: vp.height as i32
};
Ok(WebDriverResponse::WindowRect(window_size_response))
} }
fn handle_is_enabled(&self, element: &WebElement) -> WebDriverResult<WebDriverResponse> { fn handle_is_enabled(&self, element: &WebElement) -> WebDriverResult<WebDriverResponse> {
@ -588,8 +600,10 @@ impl Handler {
self.browsing_context_script_command(cmd)?; self.browsing_context_script_command(cmd)?;
match receiver.recv().unwrap() { match receiver.recv().unwrap() {
Ok(rect) => { Ok(rect) => {
let response = ElementRectResponse::new(rect.origin.x, rect.origin.y, let response = ElementRectResponse {
rect.size.width, rect.size.height); x: rect.origin.x, y: rect.origin.y,
width: rect.size.width, height: rect.size.height
};
Ok(WebDriverResponse::ElementRect(response)) Ok(WebDriverResponse::ElementRect(response))
}, },
Err(_) => Err(WebDriverError::new(ErrorStatus::StaleElementReference, Err(_) => Err(WebDriverError::new(ErrorStatus::StaleElementReference,
@ -657,7 +671,7 @@ impl Handler {
let response = cookies.into_iter().map(|cookie| { let response = cookies.into_iter().map(|cookie| {
cookie_msg_to_cookie(cookie.into_inner()) cookie_msg_to_cookie(cookie.into_inner())
}).collect::<Vec<Cookie>>(); }).collect::<Vec<Cookie>>();
Ok(WebDriverResponse::Cookie(CookieResponse::new(response))) Ok(WebDriverResponse::Cookies(CookiesResponse { value: response }))
} }
fn handle_get_cookie(&self, name: &str) -> WebDriverResult<WebDriverResponse> { fn handle_get_cookie(&self, name: &str) -> WebDriverResult<WebDriverResponse> {
@ -667,8 +681,8 @@ impl Handler {
let cookies = receiver.recv().unwrap(); let cookies = receiver.recv().unwrap();
let response = cookies.into_iter().map(|cookie| { let response = cookies.into_iter().map(|cookie| {
cookie_msg_to_cookie(cookie.into_inner()) cookie_msg_to_cookie(cookie.into_inner())
}).collect::<Vec<Cookie>>(); }).next().unwrap();
Ok(WebDriverResponse::Cookie(CookieResponse::new(response))) Ok(WebDriverResponse::Cookie(CookieResponse { value: response }))
} }
fn handle_add_cookie(&self, params: &AddCookieParameters) -> WebDriverResult<WebDriverResponse> { fn handle_add_cookie(&self, params: &AddCookieParameters) -> WebDriverResult<WebDriverResponse> {
@ -779,7 +793,7 @@ impl Handler {
receiver.recv().unwrap().or_else(|_| Err(WebDriverError::new( receiver.recv().unwrap().or_else(|_| Err(WebDriverError::new(
ErrorStatus::StaleElementReference, "Element not found or not focusable")))?; ErrorStatus::StaleElementReference, "Element not found or not focusable")))?;
let keys = keycodes_to_keys(&keys.value).or_else(|_| let keys = keycodes_to_keys(&keys.text).or_else(|_|
Err(WebDriverError::new(ErrorStatus::UnsupportedOperation, "Failed to convert keycodes")))?; Err(WebDriverError::new(ErrorStatus::UnsupportedOperation, "Failed to convert keycodes")))?;
// TODO: there's a race condition caused by the focus command and the // TODO: there's a race condition caused by the focus command and the
@ -880,8 +894,8 @@ impl WebDriverHandler<ServoExtensionRoute> for Handler {
WebDriverCommand::AddCookie(ref parameters) => self.handle_add_cookie(parameters), WebDriverCommand::AddCookie(ref parameters) => self.handle_add_cookie(parameters),
WebDriverCommand::Get(ref parameters) => self.handle_get(parameters), WebDriverCommand::Get(ref parameters) => self.handle_get(parameters),
WebDriverCommand::GetCurrentUrl => self.handle_current_url(), WebDriverCommand::GetCurrentUrl => self.handle_current_url(),
WebDriverCommand::GetWindowSize => self.handle_window_size(), WebDriverCommand::GetWindowRect => self.handle_window_size(),
WebDriverCommand::SetWindowSize(ref size) => self.handle_set_window_size(size), WebDriverCommand::SetWindowRect(ref size) => self.handle_set_window_size(size),
WebDriverCommand::IsEnabled(ref element) => self.handle_is_enabled(element), WebDriverCommand::IsEnabled(ref element) => self.handle_is_enabled(element),
WebDriverCommand::IsSelected(ref element) => self.handle_is_selected(element), WebDriverCommand::IsSelected(ref element) => self.handle_is_selected(element),
WebDriverCommand::GoBack => self.handle_go_back(), WebDriverCommand::GoBack => self.handle_go_back(),

View file

@ -35,6 +35,7 @@ num = []
# Ignored packages with duplicated versions # Ignored packages with duplicated versions
packages = [ packages = [
"bitflags", "bitflags",
"cookie",
"mime", "mime",
"semver", "semver",
"toml", "toml",