#![allow(clippy::all, missing_docs, unused_imports)]
use serde::{Deserialize, Serialize};
use super::*;
use crate::playwright::connection::{
Binary, Channel, ChannelType, ObjectRef, ProtocolError, ProtocolEvent, Ref,
};
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct PageFrameDetachedEventParams {
#[serde(rename = "frame")]
pub frame: Ref<Frame>,
}
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct PageLocatorHandlerTriggeredEventParams {
#[serde(rename = "uid")]
pub uid: i64,
}
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct PageRouteEventParams {
#[serde(rename = "route")]
pub route: Ref<Route>,
}
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct PageScreencastFrameEventParams {
#[serde(rename = "frameId")]
pub frame_id: i64,
#[serde(rename = "data")]
pub data: Binary,
#[serde(rename = "timestamp")]
pub timestamp: f64,
#[serde(rename = "viewportWidth")]
pub viewport_width: i64,
#[serde(rename = "viewportHeight")]
pub viewport_height: i64,
}
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct PageWebSocketRouteEventParams {
#[serde(rename = "webSocketRoute")]
pub web_socket_route: Ref<WebSocketRoute>,
}
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct PageWebSocketEventParams {
#[serde(rename = "webSocket")]
pub web_socket: Ref<WebSocket>,
}
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct PageWorkerEventParams {
#[serde(rename = "worker")]
pub worker: Ref<Worker>,
}
#[derive(Debug, Clone, PartialEq)]
pub enum PageEvent {
BindingCall(PageBindingCallEventParams),
Close,
Crash,
Download(PageDownloadEventParams),
ViewportSizeChanged(PageViewportSizeChangedEventParams),
FileChooser(PageFileChooserEventParams),
FrameAttached(PageFrameAttachedEventParams),
FrameDetached(PageFrameDetachedEventParams),
LocatorHandlerTriggered(PageLocatorHandlerTriggeredEventParams),
Route(PageRouteEventParams),
ScreencastFrame(PageScreencastFrameEventParams),
WebSocketRoute(PageWebSocketRouteEventParams),
WebSocket(PageWebSocketEventParams),
Worker(PageWorkerEventParams),
Unknown {
method: String,
params: serde_json::Value,
},
}
impl ProtocolEvent for PageEvent {
fn parse(method: &str, params: serde_json::Value) -> Result<Self, serde_json::Error> {
match method {
"bindingCall" => Ok(Self::BindingCall(serde_json::from_value(params)?)),
"close" => Ok(Self::Close),
"crash" => Ok(Self::Crash),
"download" => Ok(Self::Download(serde_json::from_value(params)?)),
"viewportSizeChanged" => Ok(Self::ViewportSizeChanged(serde_json::from_value(params)?)),
"fileChooser" => Ok(Self::FileChooser(serde_json::from_value(params)?)),
"frameAttached" => Ok(Self::FrameAttached(serde_json::from_value(params)?)),
"frameDetached" => Ok(Self::FrameDetached(serde_json::from_value(params)?)),
"locatorHandlerTriggered" => Ok(Self::LocatorHandlerTriggered(serde_json::from_value(params)?)),
"route" => Ok(Self::Route(serde_json::from_value(params)?)),
"screencastFrame" => Ok(Self::ScreencastFrame(serde_json::from_value(params)?)),
"webSocketRoute" => Ok(Self::WebSocketRoute(serde_json::from_value(params)?)),
"webSocket" => Ok(Self::WebSocket(serde_json::from_value(params)?)),
"worker" => Ok(Self::Worker(serde_json::from_value(params)?)),
_ => Ok(Self::Unknown { method: method.to_string(), params }),
}
}
}
#[derive(Debug, Clone)]
pub struct Page {
channel: Channel,
}
impl ChannelType for Page {
const INTERFACE: &'static str = "Page";
type Initializer = PageInitializer;
type Event = PageEvent;
fn accepts(interface: &str) -> bool {
matches!(interface, "Page")
}
fn from_channel(channel: Channel) -> Self {
Self { channel }
}
fn channel(&self) -> &Channel {
&self.channel
}
}
impl Page {
pub async fn add_init_script(&self, params: PageAddInitScriptParams) -> Result<PageAddInitScriptResult, ProtocolError> {
self.channel.send("addInitScript", ¶ms).await
}
pub async fn close(&self, params: PageCloseParams) -> Result<(), ProtocolError> {
self.channel.send_no_result("close", ¶ms).await
}
pub async fn run_before_unload(&self) -> Result<(), ProtocolError> {
self.channel.send_no_result("runBeforeUnload", &serde_json::json!({})).await
}
pub async fn clear_console_messages(&self) -> Result<(), ProtocolError> {
self.channel.send_no_result("clearConsoleMessages", &serde_json::json!({})).await
}
pub async fn console_messages(&self, params: PageConsoleMessagesParams) -> Result<PageConsoleMessagesResult, ProtocolError> {
self.channel.send("consoleMessages", ¶ms).await
}
pub async fn emulate_media(&self, params: PageEmulateMediaParams) -> Result<(), ProtocolError> {
self.channel.send_no_result("emulateMedia", ¶ms).await
}
pub async fn expose_binding(&self, params: PageExposeBindingParams) -> Result<PageExposeBindingResult, ProtocolError> {
self.channel.send("exposeBinding", ¶ms).await
}
pub async fn go_back(&self, params: PageGoBackParams) -> Result<PageGoBackResult, ProtocolError> {
self.channel.send("goBack", ¶ms).await
}
pub async fn go_forward(&self, params: PageGoForwardParams) -> Result<PageGoForwardResult, ProtocolError> {
self.channel.send("goForward", ¶ms).await
}
pub async fn request_gc(&self) -> Result<(), ProtocolError> {
self.channel.send_no_result("requestGC", &serde_json::json!({})).await
}
pub async fn register_locator_handler(&self, params: PageRegisterLocatorHandlerParams) -> Result<PageRegisterLocatorHandlerResult, ProtocolError> {
self.channel.send("registerLocatorHandler", ¶ms).await
}
pub async fn resolve_locator_handler_no_reply(&self, params: PageResolveLocatorHandlerNoReplyParams) -> Result<(), ProtocolError> {
self.channel.send_no_result("resolveLocatorHandlerNoReply", ¶ms).await
}
pub async fn unregister_locator_handler(&self, params: PageUnregisterLocatorHandlerParams) -> Result<(), ProtocolError> {
self.channel.send_no_result("unregisterLocatorHandler", ¶ms).await
}
pub async fn reload(&self, params: PageReloadParams) -> Result<PageReloadResult, ProtocolError> {
self.channel.send("reload", ¶ms).await
}
pub async fn expect_screenshot(&self, params: PageExpectScreenshotParams) -> Result<PageExpectScreenshotResult, ProtocolError> {
self.channel.send("expectScreenshot", ¶ms).await
}
pub async fn screenshot(&self, params: PageScreenshotParams) -> Result<PageScreenshotResult, ProtocolError> {
self.channel.send("screenshot", ¶ms).await
}
pub async fn set_extra_http_headers(&self, params: PageSetExtraHTTPHeadersParams) -> Result<(), ProtocolError> {
self.channel.send_no_result("setExtraHTTPHeaders", ¶ms).await
}
pub async fn set_network_interception_patterns(&self, params: PageSetNetworkInterceptionPatternsParams) -> Result<(), ProtocolError> {
self.channel.send_no_result("setNetworkInterceptionPatterns", ¶ms).await
}
pub async fn set_web_socket_interception_patterns(&self, params: PageSetWebSocketInterceptionPatternsParams) -> Result<(), ProtocolError> {
self.channel.send_no_result("setWebSocketInterceptionPatterns", ¶ms).await
}
pub async fn set_viewport_size(&self, params: PageSetViewportSizeParams) -> Result<(), ProtocolError> {
self.channel.send_no_result("setViewportSize", ¶ms).await
}
pub async fn keyboard_down(&self, params: PageKeyboardDownParams) -> Result<(), ProtocolError> {
self.channel.send_no_result("keyboardDown", ¶ms).await
}
pub async fn keyboard_up(&self, params: PageKeyboardUpParams) -> Result<(), ProtocolError> {
self.channel.send_no_result("keyboardUp", ¶ms).await
}
pub async fn keyboard_insert_text(&self, params: PageKeyboardInsertTextParams) -> Result<(), ProtocolError> {
self.channel.send_no_result("keyboardInsertText", ¶ms).await
}
pub async fn keyboard_type(&self, params: PageKeyboardTypeParams) -> Result<(), ProtocolError> {
self.channel.send_no_result("keyboardType", ¶ms).await
}
pub async fn keyboard_press(&self, params: PageKeyboardPressParams) -> Result<(), ProtocolError> {
self.channel.send_no_result("keyboardPress", ¶ms).await
}
pub async fn mouse_move(&self, params: PageMouseMoveParams) -> Result<(), ProtocolError> {
self.channel.send_no_result("mouseMove", ¶ms).await
}
pub async fn mouse_down(&self, params: PageMouseDownParams) -> Result<(), ProtocolError> {
self.channel.send_no_result("mouseDown", ¶ms).await
}
pub async fn mouse_up(&self, params: PageMouseUpParams) -> Result<(), ProtocolError> {
self.channel.send_no_result("mouseUp", ¶ms).await
}
pub async fn mouse_click(&self, params: PageMouseClickParams) -> Result<(), ProtocolError> {
self.channel.send_no_result("mouseClick", ¶ms).await
}
pub async fn mouse_wheel(&self, params: PageMouseWheelParams) -> Result<(), ProtocolError> {
self.channel.send_no_result("mouseWheel", ¶ms).await
}
pub async fn touchscreen_tap(&self, params: PageTouchscreenTapParams) -> Result<(), ProtocolError> {
self.channel.send_no_result("touchscreenTap", ¶ms).await
}
pub async fn clear_page_errors(&self) -> Result<(), ProtocolError> {
self.channel.send_no_result("clearPageErrors", &serde_json::json!({})).await
}
pub async fn page_errors(&self, params: PagePageErrorsParams) -> Result<PagePageErrorsResult, ProtocolError> {
self.channel.send("pageErrors", ¶ms).await
}
pub async fn pdf(&self, params: PagePdfParams) -> Result<PagePdfResult, ProtocolError> {
self.channel.send("pdf", ¶ms).await
}
pub async fn requests(&self) -> Result<PageRequestsResult, ProtocolError> {
self.channel.send("requests", &serde_json::json!({})).await
}
pub async fn start_js_coverage(&self, params: PageStartJSCoverageParams) -> Result<(), ProtocolError> {
self.channel.send_no_result("startJSCoverage", ¶ms).await
}
pub async fn stop_js_coverage(&self) -> Result<PageStopJSCoverageResult, ProtocolError> {
self.channel.send("stopJSCoverage", &serde_json::json!({})).await
}
pub async fn start_css_coverage(&self, params: PageStartCSSCoverageParams) -> Result<(), ProtocolError> {
self.channel.send_no_result("startCSSCoverage", ¶ms).await
}
pub async fn stop_css_coverage(&self) -> Result<PageStopCSSCoverageResult, ProtocolError> {
self.channel.send("stopCSSCoverage", &serde_json::json!({})).await
}
pub async fn bring_to_front(&self) -> Result<(), ProtocolError> {
self.channel.send_no_result("bringToFront", &serde_json::json!({})).await
}
pub async fn pick_locator(&self) -> Result<PagePickLocatorResult, ProtocolError> {
self.channel.send("pickLocator", &serde_json::json!({})).await
}
pub async fn cancel_pick_locator(&self) -> Result<(), ProtocolError> {
self.channel.send_no_result("cancelPickLocator", &serde_json::json!({})).await
}
pub async fn hide_highlight(&self) -> Result<(), ProtocolError> {
self.channel.send_no_result("hideHighlight", &serde_json::json!({})).await
}
pub async fn screencast_show_overlay(&self, params: PageScreencastShowOverlayParams) -> Result<PageScreencastShowOverlayResult, ProtocolError> {
self.channel.send("screencastShowOverlay", ¶ms).await
}
pub async fn screencast_remove_overlay(&self, params: PageScreencastRemoveOverlayParams) -> Result<(), ProtocolError> {
self.channel.send_no_result("screencastRemoveOverlay", ¶ms).await
}
pub async fn screencast_chapter(&self, params: PageScreencastChapterParams) -> Result<(), ProtocolError> {
self.channel.send_no_result("screencastChapter", ¶ms).await
}
pub async fn screencast_set_overlay_visible(&self, params: PageScreencastSetOverlayVisibleParams) -> Result<(), ProtocolError> {
self.channel.send_no_result("screencastSetOverlayVisible", ¶ms).await
}
pub async fn screencast_show_actions(&self, params: PageScreencastShowActionsParams) -> Result<(), ProtocolError> {
self.channel.send_no_result("screencastShowActions", ¶ms).await
}
pub async fn screencast_hide_actions(&self) -> Result<(), ProtocolError> {
self.channel.send_no_result("screencastHideActions", &serde_json::json!({})).await
}
pub async fn screencast_start(&self, params: PageScreencastStartParams) -> Result<PageScreencastStartResult, ProtocolError> {
self.channel.send("screencastStart", ¶ms).await
}
pub async fn screencast_frame_ack(&self, params: PageScreencastFrameAckParams) -> Result<(), ProtocolError> {
self.channel.send_no_result("screencastFrameAck", ¶ms).await
}
pub async fn screencast_stop(&self) -> Result<(), ProtocolError> {
self.channel.send_no_result("screencastStop", &serde_json::json!({})).await
}
pub async fn update_subscription(&self, params: PageUpdateSubscriptionParams) -> Result<(), ProtocolError> {
self.channel.send_no_result("updateSubscription", ¶ms).await
}
pub async fn set_dock_tile(&self, params: PageSetDockTileParams) -> Result<(), ProtocolError> {
self.channel.send_no_result("setDockTile", ¶ms).await
}
pub async fn web_storage_items(&self, params: PageWebStorageItemsParams) -> Result<PageWebStorageItemsResult, ProtocolError> {
self.channel.send("webStorageItems", ¶ms).await
}
pub async fn web_storage_get_item(&self, params: PageWebStorageGetItemParams) -> Result<PageWebStorageGetItemResult, ProtocolError> {
self.channel.send("webStorageGetItem", ¶ms).await
}
pub async fn web_storage_set_item(&self, params: PageWebStorageSetItemParams) -> Result<(), ProtocolError> {
self.channel.send_no_result("webStorageSetItem", ¶ms).await
}
pub async fn web_storage_remove_item(&self, params: PageWebStorageRemoveItemParams) -> Result<(), ProtocolError> {
self.channel.send_no_result("webStorageRemoveItem", ¶ms).await
}
pub async fn web_storage_clear(&self, params: PageWebStorageClearParams) -> Result<(), ProtocolError> {
self.channel.send_no_result("webStorageClear", ¶ms).await
}
}