mirror of
https://github.com/servo/servo.git
synced 2025-07-24 07:40:27 +01:00
Auto merge of #23745 - georgeroman:implement_get_element_property_wd_command, r=jdm
Implement GetElementProperty wd command <!-- Please describe your changes on the following line: --> --- <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: --> - [X] `./mach build -d` does not report any errors - [X] `./mach test-tidy` does not report any errors <!-- Either: --> - [X] There are tests for these changes <!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.--> <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. --> <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/23745) <!-- Reviewable:end -->
This commit is contained in:
commit
7ffe65e672
8 changed files with 119 additions and 23 deletions
|
@ -211,6 +211,7 @@ impl WebDriverExtensionCommand for ServoExtensionCommand {
|
|||
}
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
struct SendableWebDriverJSValue(pub WebDriverJSValue);
|
||||
|
||||
impl Serialize for SendableWebDriverJSValue {
|
||||
|
@ -1163,6 +1164,28 @@ impl Handler {
|
|||
}
|
||||
}
|
||||
|
||||
fn handle_element_property(
|
||||
&self,
|
||||
element: &WebElement,
|
||||
name: &str,
|
||||
) -> WebDriverResult<WebDriverResponse> {
|
||||
let (sender, receiver) = ipc::channel().unwrap();
|
||||
|
||||
let cmd =
|
||||
WebDriverScriptCommand::GetElementProperty(element.id.clone(), name.to_owned(), sender);
|
||||
self.browsing_context_script_command(cmd)?;
|
||||
|
||||
match receiver.recv().unwrap() {
|
||||
Ok(value) => Ok(WebDriverResponse::Generic(ValueResponse(
|
||||
serde_json::to_value(SendableWebDriverJSValue(value))?,
|
||||
))),
|
||||
Err(_) => Err(WebDriverError::new(
|
||||
ErrorStatus::StaleElementReference,
|
||||
"Unable to find element in document",
|
||||
)),
|
||||
}
|
||||
}
|
||||
|
||||
fn handle_element_css(
|
||||
&self,
|
||||
element: &WebElement,
|
||||
|
@ -1586,6 +1609,9 @@ impl WebDriverHandler<ServoExtensionRoute> for Handler {
|
|||
WebDriverCommand::GetElementAttribute(ref element, ref name) => {
|
||||
self.handle_element_attribute(element, name)
|
||||
},
|
||||
WebDriverCommand::GetElementProperty(ref element, ref name) => {
|
||||
self.handle_element_property(element, name)
|
||||
},
|
||||
WebDriverCommand::GetCSSValue(ref element, ref name) => {
|
||||
self.handle_element_css(element, name)
|
||||
},
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue