aboutsummaryrefslogtreecommitdiffstats
path: root/components/msg/webdriver_msg.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/msg/webdriver_msg.rs')
-rw-r--r--components/msg/webdriver_msg.rs56
1 files changed, 56 insertions, 0 deletions
diff --git a/components/msg/webdriver_msg.rs b/components/msg/webdriver_msg.rs
new file mode 100644
index 00000000000..7921bb0a156
--- /dev/null
+++ b/components/msg/webdriver_msg.rs
@@ -0,0 +1,56 @@
+/* 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/. */
+
+use rustc_serialize::json::{Json, ToJson};
+use constellation_msg::{PipelineId, SubpageId};
+
+use std::sync::mpsc::Sender;
+
+pub enum WebDriverScriptCommand {
+ ExecuteScript(String, Sender<WebDriverJSResult>),
+ ExecuteAsyncScript(String, Sender<WebDriverJSResult>),
+ FindElementCSS(String, Sender<Result<Option<String>, ()>>),
+ FindElementsCSS(String, Sender<Result<Vec<String>, ()>>),
+ GetActiveElement(Sender<Option<String>>),
+ GetElementTagName(String, Sender<Result<String, ()>>),
+ GetElementText(String, Sender<Result<String, ()>>),
+ GetFrameId(WebDriverFrameId, Sender<Result<Option<(PipelineId, SubpageId)>, ()>>),
+ GetTitle(Sender<String>)
+}
+
+pub enum WebDriverJSValue {
+ Undefined,
+ Null,
+ Boolean(bool),
+ Number(f64),
+ String(String),
+ // TODO: Object and WebElement
+}
+
+pub enum WebDriverJSError {
+ Timeout,
+ UnknownType
+}
+
+pub type WebDriverJSResult = Result<WebDriverJSValue, WebDriverJSError>;
+
+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()
+ }
+ }
+}
+
+pub struct LoadComplete;