Removed duplicate webdriver_traits file and added webdriver handler for GetWindowSize, IsSelected and IsEnabled

This commit is contained in:
David Raifaizen 2015-11-29 15:48:23 -05:00
parent 6ab205a97e
commit 8d451076e1
5 changed files with 116 additions and 54 deletions

View file

@ -7,6 +7,8 @@ use dom::bindings::codegen::Bindings::DocumentBinding::DocumentMethods;
use dom::bindings::codegen::Bindings::ElementBinding::ElementMethods;
use dom::bindings::codegen::Bindings::HTMLElementBinding::HTMLElementMethods;
use dom::bindings::codegen::Bindings::HTMLIFrameElementBinding::HTMLIFrameElementMethods;
use dom::bindings::codegen::Bindings::HTMLInputElementBinding::HTMLInputElementMethods;
use dom::bindings::codegen::Bindings::HTMLOptionElementBinding::HTMLOptionElementMethods;
use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods;
use dom::bindings::codegen::Bindings::NodeListBinding::NodeListMethods;
use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods;
@ -16,13 +18,15 @@ use dom::bindings::js::Root;
use dom::element::Element;
use dom::htmlelement::HTMLElement;
use dom::htmliframeelement::HTMLIFrameElement;
use dom::htmlinputelement::HTMLInputElement;
use dom::htmloptionelement::HTMLOptionElement;
use dom::node::Node;
use dom::window::ScriptHelpers;
use ipc_channel::ipc::IpcSender;
use js::jsapi::JSContext;
use js::jsapi::{HandleValue, RootedValue};
use js::jsval::UndefinedValue;
use msg::constellation_msg::PipelineId;
use msg::constellation_msg::{PipelineId, WindowSizeData};
use msg::webdriver_msg::{WebDriverFrameId, WebDriverJSError, WebDriverJSResult, WebDriverJSValue};
use page::Page;
use script_task::get_page;
@ -242,3 +246,49 @@ pub fn handle_get_url(page: &Rc<Page>,
let url = document.url();
reply.send((*url).clone()).unwrap();
}
pub fn handle_get_window_size(page: &Rc<Page>,
_pipeline: PipelineId,
reply: IpcSender<Option<WindowSizeData>>) {
let window = page.window();
let size = window.window_size();
reply.send(size).unwrap();
}
pub fn handle_is_enabled(page: &Rc<Page>,
pipeline: PipelineId,
element_id: String,
reply: IpcSender<Result<bool, ()>>) {
reply.send(match find_node_by_unique_id(page, pipeline, element_id) {
Some(ref node) => {
match node.downcast::<Element>() {
Some(elem) => Ok(elem.get_enabled_state()),
None => Err(())
}
},
None => Err(())
}).unwrap();
}
pub fn handle_is_selected(page: &Rc<Page>,
pipeline: PipelineId,
element_id: String,
reply: IpcSender<Result<bool, ()>>) {
reply.send(match find_node_by_unique_id(page, pipeline, element_id) {
Some(ref node) => {
if let Some(input_element) = node.downcast::<HTMLInputElement>() {
Ok(input_element.Checked())
}
else if let Some(option_element) = node.downcast::<HTMLOptionElement>() {
Ok(option_element.Selected())
}
else if let Some(_) = node.downcast::<HTMLElement>() {
Ok(false) // regular elements are not selectable
}
else {
Err(())
}
},
None => Err(())
}).unwrap();
}