aboutsummaryrefslogtreecommitdiffstats
path: root/components/shared/script/webdriver_msg.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/shared/script/webdriver_msg.rs')
-rw-r--r--components/shared/script/webdriver_msg.rs138
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,
+}