aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/script/script_task.rs2
-rw-r--r--components/script/webdriver_handlers.rs5
-rw-r--r--components/servo/Cargo.lock2
-rw-r--r--components/webdriver_server/lib.rs12
-rw-r--r--components/webdriver_traits/lib.rs1
-rw-r--r--ports/cef/Cargo.lock2
-rw-r--r--ports/gonk/Cargo.lock2
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)",