diff options
author | bors-servo <lbergstrom+bors@mozilla.com> | 2015-11-21 11:09:50 +0530 |
---|---|---|
committer | bors-servo <lbergstrom+bors@mozilla.com> | 2015-11-21 11:09:50 +0530 |
commit | 585d2d5c8c4e59be20ab9660dab75fc55438e247 (patch) | |
tree | 87ad7d13d6b4a2979ac8b24e38536f502758ed8f /components/webdriver_server/lib.rs | |
parent | 18ee6bc30a90855beb7574a5e7627b436e12c193 (diff) | |
parent | f7258e4fccf9b7f8efc4b3a33203cacfe47d647a (diff) | |
download | servo-585d2d5c8c4e59be20ab9660dab75fc55438e247.tar.gz servo-585d2d5c8c4e59be20ab9660dab75fc55438e247.zip |
Auto merge of #8621 - jgraham:webdriver_css, r=jdm
Add support for getting an element's computed style through WebDriver.
<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/8621)
<!-- Reviewable:end -->
Diffstat (limited to 'components/webdriver_server/lib.rs')
-rw-r--r-- | components/webdriver_server/lib.rs | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/components/webdriver_server/lib.rs b/components/webdriver_server/lib.rs index 2abdb562114..9bad724d164 100644 --- a/components/webdriver_server/lib.rs +++ b/components/webdriver_server/lib.rs @@ -539,6 +539,20 @@ impl Handler { } } + fn handle_element_css(&self, element: &WebElement, name: &String) -> WebDriverResult<WebDriverResponse> { + let pipeline_id = try!(self.frame_pipeline()); + + let (sender, receiver) = ipc::channel().unwrap(); + let cmd = WebDriverScriptCommand::GetElementCSS(element.id.clone(), name.clone(), sender); + let cmd_msg = WebDriverCommandMsg::ScriptCommand(pipeline_id, cmd); + self.constellation_chan.send(ConstellationMsg::WebDriverCommand(cmd_msg)).unwrap(); + match receiver.recv().unwrap() { + Ok(value) => Ok(WebDriverResponse::Generic(ValueResponse::new(value.to_json()))), + Err(_) => Err(WebDriverError::new(ErrorStatus::StaleElementReference, + "Unable to find element in document")) + } + } + fn handle_set_timeouts(&mut self, parameters: &TimeoutsParameters) -> WebDriverResult<WebDriverResponse> { //TODO: this conversion is crazy, spec should limit these to u32 and check upstream let value = parameters.ms as u32; @@ -731,6 +745,8 @@ impl WebDriverHandler<ServoExtensionRoute> for Handler { WebDriverCommand::GetElementTagName(ref element) => self.handle_element_tag_name(element), WebDriverCommand::GetElementAttribute(ref element, ref name) => self.handle_element_attribute(element, name), + WebDriverCommand::GetCSSValue(ref element, ref name) => + self.handle_element_css(element, name), WebDriverCommand::ExecuteScript(ref x) => self.handle_execute_script(x), WebDriverCommand::ExecuteAsyncScript(ref x) => self.handle_execute_async_script(x), WebDriverCommand::ElementSendKeys(ref element, ref keys) => |