aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbors-servo <metajack+bors@gmail.com>2015-05-11 12:33:26 -0500
committerbors-servo <metajack+bors@gmail.com>2015-05-11 12:33:26 -0500
commit263b69cf7fd99bfc13eecc840f27cdcf1e8178cc (patch)
treed7e015630061bc79ee9a2adad94ee34d523f35e3
parentca3149e52110f13ba663d67723f408ab682c7d7c (diff)
parent6e639de664fc17624a69624e49952d68fcd0937d (diff)
downloadservo-263b69cf7fd99bfc13eecc840f27cdcf1e8178cc.tar.gz
servo-263b69cf7fd99bfc13eecc840f27cdcf1e8178cc.zip
Auto merge of #6008 - jgraham:webdriver_get_active_element, r=jdm
<!-- Reviewable:start --> [<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/6008) <!-- Reviewable:end -->
-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)",