diff options
author | bors-servo <lbergstrom+bors@mozilla.com> | 2018-07-20 18:53:23 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-07-20 18:53:23 -0400 |
commit | 37a73d3bc09a8a3f12e4e2d42850419208000ba8 (patch) | |
tree | a2832214673949bd250bb297c8bba2a09020c1b3 /components/webdriver_server/lib.rs | |
parent | aa76909f55e126957dfc163db9512ffe344c348f (diff) | |
parent | 2b5bba6f12481acf315b6c55f3ac129dce373bd6 (diff) | |
download | servo-37a73d3bc09a8a3f12e4e2d42850419208000ba8.tar.gz servo-37a73d3bc09a8a3f12e4e2d42850419208000ba8.zip |
Auto merge of #21213 - servo:android-wpt, r=nox+jgraham
Add some support for WPT tests in an Android emulator through WebDriver
This succeeds on my machine:
`./mach test-wpt --product servodriver --binary etc/run_in_headless_android_emulator.py --binary-arg servo-x86 --binary-arg target/i686-linux-android/release/servo.apk /_mozilla/mozilla/DOMParser.html`
<!-- 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/21213)
<!-- Reviewable:end -->
Diffstat (limited to 'components/webdriver_server/lib.rs')
-rw-r--r-- | components/webdriver_server/lib.rs | 47 |
1 files changed, 24 insertions, 23 deletions
diff --git a/components/webdriver_server/lib.rs b/components/webdriver_server/lib.rs index 150a3001c71..47390248dd3 100644 --- a/components/webdriver_server/lib.rs +++ b/components/webdriver_server/lib.rs @@ -107,14 +107,14 @@ struct WebDriverSession { /// Time to wait for injected scripts to run before interrupting them. A [`None`] value /// specifies that the script should run indefinitely. - script_timeout: Option<u64>, + script_timeout: u64, /// Time to wait for a page to finish loading upon navigation. - load_timeout: Option<u64>, + load_timeout: u64, /// Time to wait for the element location strategy when retrieving elements, and when /// waiting for an element to become interactable. - implicit_wait_timeout: Option<u64>, + implicit_wait_timeout: u64, } impl WebDriverSession { @@ -127,9 +127,9 @@ impl WebDriverSession { browsing_context_id: browsing_context_id, top_level_browsing_context_id: top_level_browsing_context_id, - script_timeout: Some(30_000), - load_timeout: Some(300_000), - implicit_wait_timeout: Some(0), + script_timeout: 30_000, + load_timeout: 300_000, + implicit_wait_timeout: 0, } } } @@ -140,7 +140,7 @@ struct Handler { resize_timeout: u32, } -#[derive(Clone, Copy, PartialEq)] +#[derive(Clone, Copy, Debug, PartialEq)] enum ServoExtensionRoute { GetPrefs, SetPrefs, @@ -171,7 +171,7 @@ impl WebDriverExtensionRoute for ServoExtensionRoute { } } -#[derive(Clone, PartialEq)] +#[derive(Clone, Debug, PartialEq)] enum ServoExtensionCommand { GetPrefs(GetPrefsParameters), SetPrefs(SetPrefsParameters), @@ -188,7 +188,7 @@ impl WebDriverExtensionCommand for ServoExtensionCommand { } } -#[derive(Clone, PartialEq)] +#[derive(Clone, Debug, PartialEq)] struct GetPrefsParameters { prefs: Vec<String> } @@ -222,7 +222,7 @@ impl ToJson for GetPrefsParameters { } } -#[derive(Clone, PartialEq)] +#[derive(Clone, Debug, PartialEq)] struct SetPrefsParameters { prefs: Vec<(String, PrefValue)> } @@ -371,7 +371,7 @@ impl Handler { -> WebDriverResult<WebDriverResponse> { let timeout = self.session()?.load_timeout; thread::spawn(move || { - thread::sleep(Duration::from_millis(timeout.unwrap())); + thread::sleep(Duration::from_millis(timeout)); let _ = sender.send(LoadStatus::LoadTimeout); }); @@ -720,9 +720,15 @@ impl Handler { .as_mut() .ok_or(WebDriverError::new(ErrorStatus::SessionNotCreated, ""))?; - session.script_timeout = parameters.script; - session.load_timeout = parameters.page_load; - session.implicit_wait_timeout = parameters.implicit; + if let Some(timeout) = parameters.script { + session.script_timeout = timeout + } + if let Some(timeout) = parameters.page_load { + session.load_timeout = timeout + } + if let Some(timeout) = parameters.implicit { + session.implicit_wait_timeout = timeout + } Ok(WebDriverResponse::Void) } @@ -750,15 +756,10 @@ impl Handler { let func_body = ¶meters.script; let args_string = "window.webdriverCallback"; - let script = match self.session()?.script_timeout { - Some(timeout) => { - format!("setTimeout(webdriverTimeout, {}); (function(callback) {{ {} }})({})", - timeout, - func_body, - args_string) - } - None => format!("(function(callback) {{ {} }})({})", func_body, args_string), - }; + let script = format!("setTimeout(webdriverTimeout, {}); (function(callback) {{ {} }})({})", + self.session()?.script_timeout, + func_body, + args_string); let (sender, receiver) = ipc::channel().unwrap(); let command = WebDriverScriptCommand::ExecuteAsyncScript(script, sender); |