diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
commit | 26a029d407be480d791972afb5975cf62c9360a6 (patch) | |
tree | f435a8308119effd964b339f76abb83a57c29483 /testing/webdriver/src/httpapi.rs | |
parent | Initial commit. (diff) | |
download | firefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz firefox-26a029d407be480d791972afb5975cf62c9360a6.zip |
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | testing/webdriver/src/httpapi.rs | 451 |
1 files changed, 451 insertions, 0 deletions
diff --git a/testing/webdriver/src/httpapi.rs b/testing/webdriver/src/httpapi.rs new file mode 100644 index 0000000000..8a23992389 --- /dev/null +++ b/testing/webdriver/src/httpapi.rs @@ -0,0 +1,451 @@ +/* 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 http::Method; +use serde_json::Value; + +use crate::command::{VoidWebDriverExtensionCommand, WebDriverCommand, WebDriverExtensionCommand}; +use crate::error::WebDriverResult; +use crate::Parameters; + +pub fn standard_routes<U: WebDriverExtensionRoute>() -> Vec<(Method, &'static str, Route<U>)> { + vec![ + (Method::POST, "/session", Route::NewSession), + (Method::DELETE, "/session/{sessionId}", Route::DeleteSession), + (Method::POST, "/session/{sessionId}/url", Route::Get), + ( + Method::GET, + "/session/{sessionId}/url", + Route::GetCurrentUrl, + ), + (Method::POST, "/session/{sessionId}/back", Route::GoBack), + ( + Method::POST, + "/session/{sessionId}/forward", + Route::GoForward, + ), + (Method::POST, "/session/{sessionId}/refresh", Route::Refresh), + (Method::GET, "/session/{sessionId}/title", Route::GetTitle), + ( + Method::GET, + "/session/{sessionId}/source", + Route::GetPageSource, + ), + ( + Method::GET, + "/session/{sessionId}/window", + Route::GetWindowHandle, + ), + ( + Method::GET, + "/session/{sessionId}/window/handles", + Route::GetWindowHandles, + ), + ( + Method::POST, + "/session/{sessionId}/window/new", + Route::NewWindow, + ), + ( + Method::DELETE, + "/session/{sessionId}/window", + Route::CloseWindow, + ), + ( + Method::GET, + "/session/{sessionId}/window/size", + Route::GetWindowSize, + ), + ( + Method::POST, + "/session/{sessionId}/window/size", + Route::SetWindowSize, + ), + ( + Method::GET, + "/session/{sessionId}/window/position", + Route::GetWindowPosition, + ), + ( + Method::POST, + "/session/{sessionId}/window/position", + Route::SetWindowPosition, + ), + ( + Method::GET, + "/session/{sessionId}/window/rect", + Route::GetWindowRect, + ), + ( + Method::POST, + "/session/{sessionId}/window/rect", + Route::SetWindowRect, + ), + ( + Method::POST, + "/session/{sessionId}/window/minimize", + Route::MinimizeWindow, + ), + ( + Method::POST, + "/session/{sessionId}/window/maximize", + Route::MaximizeWindow, + ), + ( + Method::POST, + "/session/{sessionId}/window/fullscreen", + Route::FullscreenWindow, + ), + ( + Method::POST, + "/session/{sessionId}/window", + Route::SwitchToWindow, + ), + ( + Method::POST, + "/session/{sessionId}/frame", + Route::SwitchToFrame, + ), + ( + Method::POST, + "/session/{sessionId}/frame/parent", + Route::SwitchToParentFrame, + ), + ( + Method::POST, + "/session/{sessionId}/element", + Route::FindElement, + ), + ( + Method::POST, + "/session/{sessionId}/element/{elementId}/element", + Route::FindElementElement, + ), + ( + Method::POST, + "/session/{sessionId}/elements", + Route::FindElements, + ), + ( + Method::POST, + "/session/{sessionId}/element/{elementId}/elements", + Route::FindElementElements, + ), + ( + Method::POST, + "/session/{sessionId}/shadow/{shadowId}/element", + Route::FindShadowRootElement, + ), + ( + Method::POST, + "/session/{sessionId}/shadow/{shadowId}/elements", + Route::FindShadowRootElements, + ), + ( + Method::GET, + "/session/{sessionId}/element/active", + Route::GetActiveElement, + ), + ( + Method::GET, + "/session/{sessionId}/element/{elementId}/shadow", + Route::GetShadowRoot, + ), + ( + Method::GET, + "/session/{sessionId}/element/{elementId}/displayed", + Route::IsDisplayed, + ), + ( + Method::GET, + "/session/{sessionId}/element/{elementId}/selected", + Route::IsSelected, + ), + ( + Method::GET, + "/session/{sessionId}/element/{elementId}/attribute/{name}", + Route::GetElementAttribute, + ), + ( + Method::GET, + "/session/{sessionId}/element/{elementId}/property/{name}", + Route::GetElementProperty, + ), + ( + Method::GET, + "/session/{sessionId}/element/{elementId}/css/{propertyName}", + Route::GetCSSValue, + ), + ( + Method::GET, + "/session/{sessionId}/element/{elementId}/text", + Route::GetElementText, + ), + ( + Method::GET, + "/session/{sessionId}/element/{elementId}/computedlabel", + Route::GetComputedLabel, + ), + ( + Method::GET, + "/session/{sessionId}/element/{elementId}/computedrole", + Route::GetComputedRole, + ), + ( + Method::GET, + "/session/{sessionId}/element/{elementId}/name", + Route::GetElementTagName, + ), + ( + Method::GET, + "/session/{sessionId}/element/{elementId}/rect", + Route::GetElementRect, + ), + ( + Method::GET, + "/session/{sessionId}/element/{elementId}/enabled", + Route::IsEnabled, + ), + ( + Method::POST, + "/session/{sessionId}/execute/sync", + Route::ExecuteScript, + ), + ( + Method::POST, + "/session/{sessionId}/execute/async", + Route::ExecuteAsyncScript, + ), + ( + Method::GET, + "/session/{sessionId}/cookie", + Route::GetCookies, + ), + ( + Method::GET, + "/session/{sessionId}/cookie/{name}", + Route::GetNamedCookie, + ), + ( + Method::POST, + "/session/{sessionId}/cookie", + Route::AddCookie, + ), + ( + Method::DELETE, + "/session/{sessionId}/cookie", + Route::DeleteCookies, + ), + ( + Method::DELETE, + "/session/{sessionId}/cookie/{name}", + Route::DeleteCookie, + ), + ( + Method::GET, + "/session/{sessionId}/timeouts", + Route::GetTimeouts, + ), + ( + Method::POST, + "/session/{sessionId}/timeouts", + Route::SetTimeouts, + ), + ( + Method::POST, + "/session/{sessionId}/element/{elementId}/click", + Route::ElementClick, + ), + ( + Method::POST, + "/session/{sessionId}/element/{elementId}/clear", + Route::ElementClear, + ), + ( + Method::POST, + "/session/{sessionId}/element/{elementId}/value", + Route::ElementSendKeys, + ), + ( + Method::POST, + "/session/{sessionId}/alert/dismiss", + Route::DismissAlert, + ), + ( + Method::POST, + "/session/{sessionId}/alert/accept", + Route::AcceptAlert, + ), + ( + Method::GET, + "/session/{sessionId}/alert/text", + Route::GetAlertText, + ), + ( + Method::POST, + "/session/{sessionId}/alert/text", + Route::SendAlertText, + ), + ( + Method::GET, + "/session/{sessionId}/screenshot", + Route::TakeScreenshot, + ), + ( + Method::GET, + "/session/{sessionId}/element/{elementId}/screenshot", + Route::TakeElementScreenshot, + ), + ( + Method::POST, + "/session/{sessionId}/actions", + Route::PerformActions, + ), + ( + Method::DELETE, + "/session/{sessionId}/actions", + Route::ReleaseActions, + ), + (Method::POST, "/session/{sessionId}/print", Route::Print), + ( + Method::POST, + "/sessions/{sessionId}/webauthn/authenticator", + Route::WebAuthnAddVirtualAuthenticator, + ), + ( + Method::DELETE, + "/sessions/{sessionId}/webauthn/authenticator/{authenticatorId}", + Route::WebAuthnRemoveVirtualAuthenticator, + ), + ( + Method::POST, + "/sessions/{sessionId}/webauthn/authenticator/{authenticatorId}/credential", + Route::WebAuthnAddCredential, + ), + ( + Method::GET, + "/sessions/{sessionId}/webauthn/authenticator/{authenticatorId}/credentials", + Route::WebAuthnGetCredentials, + ), + ( + Method::DELETE, + "/sessions/{sessionId}/webauthn/authenticator/{authenticatorId}/credentials/{credentialId}", + Route::WebAuthnRemoveCredential, + ), + ( + Method::DELETE, + "/sessions/{sessionId}/webauthn/authenticator/{authenticatorId}/credentials", + Route::WebAuthnRemoveAllCredentials, + ), + ( + Method::POST, + "/sessions/{sessionId}/webauthn/authenticator/{authenticatorId}/uv", + Route::WebAuthnSetUserVerified, + ), + (Method::GET, "/status", Route::Status), + ] +} + +#[derive(Clone, Copy, Debug)] +pub enum Route<U: WebDriverExtensionRoute> { + NewSession, + DeleteSession, + Get, + GetCurrentUrl, + GoBack, + GoForward, + Refresh, + GetTitle, + GetPageSource, + GetWindowHandle, + GetWindowHandles, + NewWindow, + CloseWindow, + GetWindowSize, // deprecated + SetWindowSize, // deprecated + GetWindowPosition, // deprecated + SetWindowPosition, // deprecated + GetWindowRect, + SetWindowRect, + MinimizeWindow, + MaximizeWindow, + FullscreenWindow, + SwitchToWindow, + SwitchToFrame, + SwitchToParentFrame, + FindElement, + FindElements, + FindElementElement, + FindElementElements, + FindShadowRootElement, + FindShadowRootElements, + GetActiveElement, + GetShadowRoot, + IsDisplayed, + IsSelected, + GetElementAttribute, + GetElementProperty, + GetCSSValue, + GetElementText, + GetComputedLabel, + GetComputedRole, + GetElementTagName, + GetElementRect, + IsEnabled, + ExecuteScript, + ExecuteAsyncScript, + GetCookies, + GetNamedCookie, + AddCookie, + DeleteCookies, + DeleteCookie, + GetTimeouts, + SetTimeouts, + ElementClick, + ElementClear, + ElementSendKeys, + PerformActions, + ReleaseActions, + DismissAlert, + AcceptAlert, + GetAlertText, + SendAlertText, + TakeScreenshot, + TakeElementScreenshot, + Print, + Status, + Extension(U), + WebAuthnAddVirtualAuthenticator, + WebAuthnRemoveVirtualAuthenticator, + WebAuthnAddCredential, + WebAuthnGetCredentials, + WebAuthnRemoveCredential, + WebAuthnRemoveAllCredentials, + WebAuthnSetUserVerified, +} + +pub trait WebDriverExtensionRoute: Clone + Send + PartialEq { + type Command: WebDriverExtensionCommand + 'static; + + fn command( + &self, + _: &Parameters, + _: &Value, + ) -> WebDriverResult<WebDriverCommand<Self::Command>>; +} + +#[derive(Clone, Debug, PartialEq)] +pub struct VoidWebDriverExtensionRoute; + +impl WebDriverExtensionRoute for VoidWebDriverExtensionRoute { + type Command = VoidWebDriverExtensionCommand; + + fn command( + &self, + _: &Parameters, + _: &Value, + ) -> WebDriverResult<WebDriverCommand<VoidWebDriverExtensionCommand>> { + panic!("No extensions implemented"); + } +} |