aboutsummaryrefslogtreecommitdiffstats
path: root/components/webdriver_server/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/webdriver_server/lib.rs')
-rw-r--r--components/webdriver_server/lib.rs12
1 files changed, 12 insertions, 0 deletions
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),