diff options
Diffstat (limited to 'components/shared/script/webdriver_msg.rs')
-rw-r--r-- | components/shared/script/webdriver_msg.rs | 138 |
1 files changed, 138 insertions, 0 deletions
diff --git a/components/shared/script/webdriver_msg.rs b/components/shared/script/webdriver_msg.rs new file mode 100644 index 00000000000..d72d93b61cb --- /dev/null +++ b/components/shared/script/webdriver_msg.rs @@ -0,0 +1,138 @@ +/* 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 https://mozilla.org/MPL/2.0/. */ + +#![allow(missing_docs)] + +use std::collections::HashMap; + +use cookie::Cookie; +use euclid::default::Rect; +use hyper_serde::Serde; +use ipc_channel::ipc::IpcSender; +use msg::constellation_msg::BrowsingContextId; +use serde::{Deserialize, Serialize}; +use servo_url::ServoUrl; +use webdriver::common::{WebElement, WebFrame, WebWindow}; +use webdriver::error::ErrorStatus; + +#[derive(Debug, Deserialize, Serialize)] +pub enum WebDriverScriptCommand { + AddCookie( + #[serde( + deserialize_with = "::hyper_serde::deserialize", + serialize_with = "::hyper_serde::serialize" + )] + Cookie<'static>, + IpcSender<Result<(), WebDriverCookieError>>, + ), + DeleteCookies(IpcSender<Result<(), ErrorStatus>>), + ExecuteScript(String, IpcSender<WebDriverJSResult>), + ExecuteAsyncScript(String, IpcSender<WebDriverJSResult>), + FindElementCSS(String, IpcSender<Result<Option<String>, ErrorStatus>>), + FindElementLinkText(String, bool, IpcSender<Result<Option<String>, ErrorStatus>>), + FindElementTagName(String, IpcSender<Result<Option<String>, ErrorStatus>>), + FindElementsCSS(String, IpcSender<Result<Vec<String>, ErrorStatus>>), + FindElementsLinkText(String, bool, IpcSender<Result<Vec<String>, ErrorStatus>>), + FindElementsTagName(String, IpcSender<Result<Vec<String>, ErrorStatus>>), + FindElementElementCSS( + String, + String, + IpcSender<Result<Option<String>, ErrorStatus>>, + ), + FindElementElementLinkText( + String, + String, + bool, + IpcSender<Result<Option<String>, ErrorStatus>>, + ), + FindElementElementTagName( + String, + String, + IpcSender<Result<Option<String>, ErrorStatus>>, + ), + FindElementElementsCSS(String, String, IpcSender<Result<Vec<String>, ErrorStatus>>), + FindElementElementsLinkText( + String, + String, + bool, + IpcSender<Result<Vec<String>, ErrorStatus>>, + ), + FindElementElementsTagName(String, String, IpcSender<Result<Vec<String>, ErrorStatus>>), + FocusElement(String, IpcSender<Result<(), ErrorStatus>>), + ElementClick(String, IpcSender<Result<Option<String>, ErrorStatus>>), + GetActiveElement(IpcSender<Option<String>>), + GetCookie(String, IpcSender<Vec<Serde<Cookie<'static>>>>), + GetCookies(IpcSender<Vec<Serde<Cookie<'static>>>>), + GetElementAttribute( + String, + String, + IpcSender<Result<Option<String>, ErrorStatus>>, + ), + GetElementProperty( + String, + String, + IpcSender<Result<WebDriverJSValue, ErrorStatus>>, + ), + GetElementCSS(String, String, IpcSender<Result<String, ErrorStatus>>), + GetElementRect(String, IpcSender<Result<Rect<f64>, ErrorStatus>>), + GetElementTagName(String, IpcSender<Result<String, ErrorStatus>>), + GetElementText(String, IpcSender<Result<String, ErrorStatus>>), + GetElementInViewCenterPoint(String, IpcSender<Result<Option<(i64, i64)>, ErrorStatus>>), + GetBoundingClientRect(String, IpcSender<Result<Rect<f32>, ErrorStatus>>), + GetBrowsingContextId( + WebDriverFrameId, + IpcSender<Result<BrowsingContextId, ErrorStatus>>, + ), + GetUrl(IpcSender<ServoUrl>), + GetPageSource(IpcSender<Result<String, ErrorStatus>>), + IsEnabled(String, IpcSender<Result<bool, ErrorStatus>>), + IsSelected(String, IpcSender<Result<bool, ErrorStatus>>), + GetTitle(IpcSender<String>), +} + +#[derive(Debug, Deserialize, Serialize)] +pub enum WebDriverCookieError { + InvalidDomain, + UnableToSetCookie, +} + +#[derive(Clone, Debug, Deserialize, Serialize)] +pub enum WebDriverJSValue { + Undefined, + Null, + Boolean(bool), + Number(f64), + String(String), + Element(WebElement), + Frame(WebFrame), + Window(WebWindow), + ArrayLike(Vec<WebDriverJSValue>), + Object(HashMap<String, WebDriverJSValue>), +} + +#[derive(Debug, Deserialize, Serialize)] +pub enum WebDriverJSError { + /// Occurs when handler received an event message for a layout channel that is not + /// associated with the current script thread + BrowsingContextNotFound, + JSError, + StaleElementReference, + Timeout, + UnknownType, +} + +pub type WebDriverJSResult = Result<WebDriverJSValue, WebDriverJSError>; + +#[derive(Debug, Deserialize, Serialize)] +pub enum WebDriverFrameId { + Short(u16), + Element(String), + Parent, +} + +#[derive(Debug, Deserialize, Serialize)] +pub enum LoadStatus { + LoadComplete, + LoadTimeout, +} |