diff options
Diffstat (limited to 'components/script_traits/webdriver_msg.rs')
-rw-r--r-- | components/script_traits/webdriver_msg.rs | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/components/script_traits/webdriver_msg.rs b/components/script_traits/webdriver_msg.rs new file mode 100644 index 00000000000..0694c97f29d --- /dev/null +++ b/components/script_traits/webdriver_msg.rs @@ -0,0 +1,84 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#![allow(missing_docs)] + +use cookie_rs::Cookie; +use euclid::rect::Rect; +use ipc_channel::ipc::IpcSender; +use msg::constellation_msg::PipelineId; +use rustc_serialize::json::{Json, ToJson}; +use url::Url; + +#[derive(Deserialize, Serialize)] +pub enum WebDriverScriptCommand { + AddCookie(Cookie, IpcSender<Result<(), WebDriverCookieError>>), + ExecuteScript(String, IpcSender<WebDriverJSResult>), + ExecuteAsyncScript(String, IpcSender<WebDriverJSResult>), + FindElementCSS(String, IpcSender<Result<Option<String>, ()>>), + FindElementsCSS(String, IpcSender<Result<Vec<String>, ()>>), + FocusElement(String, IpcSender<Result<(), ()>>), + GetActiveElement(IpcSender<Option<String>>), + GetCookie(String, IpcSender<Vec<Cookie>>), + GetCookies(IpcSender<Vec<Cookie>>), + GetElementAttribute(String, String, IpcSender<Result<Option<String>, ()>>), + GetElementCSS(String, String, IpcSender<Result<String, ()>>), + GetElementRect(String, IpcSender<Result<Rect<f64>, ()>>), + GetElementTagName(String, IpcSender<Result<String, ()>>), + GetElementText(String, IpcSender<Result<String, ()>>), + GetFrameId(WebDriverFrameId, IpcSender<Result<Option<PipelineId>, ()>>), + GetUrl(IpcSender<Url>), + IsEnabled(String, IpcSender<Result<bool, ()>>), + IsSelected(String, IpcSender<Result<bool, ()>>), + GetTitle(IpcSender<String>) +} + +#[derive(Deserialize, Serialize)] +pub enum WebDriverCookieError { + InvalidDomain, + UnableToSetCookie +} + +#[derive(Deserialize, Serialize)] +pub enum WebDriverJSValue { + Undefined, + Null, + Boolean(bool), + Number(f64), + String(String), + // TODO: Object and WebElement +} + +#[derive(Deserialize, Serialize)] +pub enum WebDriverJSError { + Timeout, + UnknownType +} + +pub type WebDriverJSResult = Result<WebDriverJSValue, WebDriverJSError>; + +#[derive(Deserialize, Serialize)] +pub enum WebDriverFrameId { + Short(u16), + Element(String), + Parent +} + +impl ToJson for WebDriverJSValue { + fn to_json(&self) -> Json { + match *self { + WebDriverJSValue::Undefined => Json::Null, + WebDriverJSValue::Null => Json::Null, + WebDriverJSValue::Boolean(ref x) => x.to_json(), + WebDriverJSValue::Number(ref x) => x.to_json(), + WebDriverJSValue::String(ref x) => x.to_json() + } + } +} + +#[derive(Deserialize, Serialize)] +pub enum LoadStatus { + LoadComplete, + LoadTimeout +} |