diff options
-rw-r--r-- | components/script/script_task.rs | 2 | ||||
-rw-r--r-- | components/script/webdriver_handlers.rs | 5 | ||||
-rw-r--r-- | components/servo/Cargo.lock | 2 | ||||
-rw-r--r-- | components/webdriver_server/lib.rs | 12 | ||||
-rw-r--r-- | components/webdriver_traits/lib.rs | 1 | ||||
-rw-r--r-- | ports/cef/Cargo.lock | 2 | ||||
-rw-r--r-- | ports/gonk/Cargo.lock | 2 |
7 files changed, 23 insertions, 3 deletions
diff --git a/components/script/script_task.rs b/components/script/script_task.rs index 70291d64a48..10568e308c6 100644 --- a/components/script/script_task.rs +++ b/components/script/script_task.rs @@ -795,6 +795,8 @@ impl ScriptTask { webdriver_handlers::handle_find_element_css(&page, pipeline_id, selector, reply), WebDriverScriptCommand::FindElementsCSS(selector, reply) => webdriver_handlers::handle_find_elements_css(&page, pipeline_id, selector, reply), + WebDriverScriptCommand::GetActiveElement(reply) => + webdriver_handlers::handle_get_active_element(&page, pipeline_id, reply), WebDriverScriptCommand::GetElementTagName(node_id, reply) => webdriver_handlers::handle_get_name(&page, pipeline_id, node_id, reply), WebDriverScriptCommand::GetElementText(node_id, reply) => diff --git a/components/script/webdriver_handlers.rs b/components/script/webdriver_handlers.rs index da783880989..55525455e10 100644 --- a/components/script/webdriver_handlers.rs +++ b/components/script/webdriver_handlers.rs @@ -85,6 +85,11 @@ pub fn handle_find_elements_css(page: &Rc<Page>, _pipeline: PipelineId, selector }).unwrap(); } +pub fn handle_get_active_element(page: &Rc<Page>, _pipeline: PipelineId, reply: Sender<Option<String>>) { + reply.send(page.document().root().r().GetActiveElement().map( + |elem| NodeCast::from_ref(elem.root().r()).get_unique_id())).unwrap(); +} + pub fn handle_get_title(page: &Rc<Page>, _pipeline: PipelineId, reply: Sender<String>) { reply.send(page.document().root().r().Title()).unwrap(); } diff --git a/components/servo/Cargo.lock b/components/servo/Cargo.lock index 0e2190b6d31..c32b732cce5 100644 --- a/components/servo/Cargo.lock +++ b/components/servo/Cargo.lock @@ -1253,7 +1253,7 @@ dependencies = [ [[package]] name = "webdriver" version = "0.1.0" -source = "git+https://github.com/jgraham/webdriver-rust.git#c2038b4195ee8cd982079cc48d6a9d039f59f1fb" +source = "git+https://github.com/jgraham/webdriver-rust.git#4065017191f1054b62f8c17c2b07c412111e0022" dependencies = [ "hyper 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/components/webdriver_server/lib.rs b/components/webdriver_server/lib.rs index 33032215784..f1711aff839 100644 --- a/components/webdriver_server/lib.rs +++ b/components/webdriver_server/lib.rs @@ -213,6 +213,17 @@ impl Handler { } } + fn handle_get_active_element(&self) -> WebDriverResult<WebDriverResponse> { + let pipeline_id = self.get_root_pipeline(); + + let (sender, reciever) = channel(); + let ConstellationChan(ref const_chan) = self.constellation_chan; + let cmd = WebDriverScriptCommand::GetActiveElement(sender); + const_chan.send(ConstellationMsg::WebDriverCommand(pipeline_id, cmd)).unwrap(); + let value = reciever.recv().unwrap().map(|x| WebElement::new(x).to_json()); + Ok(WebDriverResponse::Generic(ValueResponse::new(value.to_json()))) + } + fn handle_get_element_tag_name(&self, element: &WebElement) -> WebDriverResult<WebDriverResponse> { let pipeline_id = self.get_root_pipeline(); @@ -306,6 +317,7 @@ impl WebDriverHandler for Handler { WebDriverCommand::GetWindowHandles => self.handle_get_window_handles(), WebDriverCommand::FindElement(ref parameters) => self.handle_find_element(parameters), WebDriverCommand::FindElements(ref parameters) => self.handle_find_elements(parameters), + WebDriverCommand::GetActiveElement => self.handle_get_active_element(), WebDriverCommand::GetElementText(ref element) => self.handle_get_element_text(element), WebDriverCommand::GetElementTagName(ref element) => self.handle_get_element_tag_name(element), WebDriverCommand::ExecuteScript(ref x) => self.handle_execute_script(x), diff --git a/components/webdriver_traits/lib.rs b/components/webdriver_traits/lib.rs index ff2ff18e52f..ecc0b647501 100644 --- a/components/webdriver_traits/lib.rs +++ b/components/webdriver_traits/lib.rs @@ -14,6 +14,7 @@ pub enum WebDriverScriptCommand { EvaluateJS(String, Sender<Result<EvaluateJSReply, ()>>), FindElementCSS(String, Sender<Result<Option<String>, ()>>), FindElementsCSS(String, Sender<Result<Vec<String>, ()>>), + GetActiveElement(Sender<Option<String>>), GetElementTagName(String, Sender<Result<String, ()>>), GetElementText(String, Sender<Result<String, ()>>), GetTitle(Sender<String>) diff --git a/ports/cef/Cargo.lock b/ports/cef/Cargo.lock index e6ed7ee68ce..85d5bba141d 100644 --- a/ports/cef/Cargo.lock +++ b/ports/cef/Cargo.lock @@ -1238,7 +1238,7 @@ dependencies = [ [[package]] name = "webdriver" version = "0.1.0" -source = "git+https://github.com/jgraham/webdriver-rust.git#c2038b4195ee8cd982079cc48d6a9d039f59f1fb" +source = "git+https://github.com/jgraham/webdriver-rust.git#4065017191f1054b62f8c17c2b07c412111e0022" dependencies = [ "hyper 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/ports/gonk/Cargo.lock b/ports/gonk/Cargo.lock index 7132d323a23..801ec61ba2c 100644 --- a/ports/gonk/Cargo.lock +++ b/ports/gonk/Cargo.lock @@ -1100,7 +1100,7 @@ dependencies = [ [[package]] name = "webdriver" version = "0.1.0" -source = "git+https://github.com/jgraham/webdriver-rust.git#c2038b4195ee8cd982079cc48d6a9d039f59f1fb" +source = "git+https://github.com/jgraham/webdriver-rust.git#4065017191f1054b62f8c17c2b07c412111e0022" dependencies = [ "hyper 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", |