use serde::{Deserialize, Serialize}; #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] pub struct Hello { pub application_type: String, pub marionette_protocol: u16, } #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] #[allow(dead_code)] pub struct Timeouts { implicit: u32, page_load: u32, script: u32, } #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] #[allow(dead_code)] pub struct Capabilities { pub accept_insecure_certs: bool, pub browser_name: String, pub browser_version: String, #[serde(rename = "moz:accessibilityChecks")] pub accessibility_checks: bool, #[serde(rename = "moz:buildID")] pub build_id: String, #[serde(rename = "moz:headless")] pub headless: bool, #[serde(rename = "moz:processID")] pub process_id: u128, #[serde(rename = "moz:profile")] pub profile: String, #[serde(rename = "moz:shutdownTimeout")] pub shutdown_timeout: u32, #[serde(rename = "moz:useNonSpecCompliantPointerOrigin")] pub use_non_spec_compliant_pointer_origin: bool, #[serde(rename = "moz:webdriverClick")] pub webdriver_click: bool, pub page_load_strategy: String, pub platform_name: String, pub platform_version: String, // proxy: pub set_window_rect: bool, pub timeouts: Timeouts, pub unhandled_prompt_behavior: String, } #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] #[allow(dead_code)] pub struct NewSessionResponse { pub capabilities: Capabilities, pub session_id: String, } #[derive(Debug, Serialize)] #[serde(rename_all = "camelCase")] pub struct NewSessionParams { pub strict_file_interactability: bool, } #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] #[allow(dead_code)] pub struct GetTitleResponse { pub value: String, } #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] #[allow(dead_code)] pub struct GetCurrentUrlResponse { pub value: String, } #[derive(Debug, Serialize)] #[serde(rename_all = "camelCase")] #[allow(dead_code)] pub struct NavigateParams { pub url: String, } #[derive(Debug, Serialize)] #[serde(rename_all = "camelCase")] #[allow(dead_code)] pub struct CloseWindowParams { pub handle: String, } #[derive(Debug, Serialize)] #[serde(rename_all = "camelCase")] #[allow(dead_code)] pub struct SwitchToWindowParams { pub handle: String, pub focus: bool, } #[derive(Debug, Deserialize, Serialize)] #[serde(rename_all = "camelCase")] #[allow(dead_code)] pub struct WindowRect { pub x: Option, pub y: Option, pub height: Option, pub width: Option, } #[derive(Debug, Serialize)] #[serde(tag = "command", content = "params")] pub enum Command { #[serde(rename = "WebDriver:NewSession")] NewSession(NewSessionParams), #[serde(rename = "WebDriver:GetTitle")] GetTitle, #[serde(rename = "WebDriver:Navigate")] Navigate(NavigateParams), #[serde(rename = "WebDriver:GetCurrentURL")] GetCurrentUrl, #[serde(rename = "WebDriver:GetWindowHandles")] GetWindowHandles, #[serde(rename = "WebDriver:CloseWindow")] CloseWindow(CloseWindowParams), #[serde(rename = "WebDriver:NewWindow")] NewWindow, #[serde(rename = "WebDriver:SwitchToWindow")] SwitchToWindow(SwitchToWindowParams), #[serde(rename = "WebDriver:FullscreenWindow")] FullscreenWindow, #[serde(rename = "WebDriver:SetWindowRect")] SetWindowRect(WindowRect), }