use serde::{Serialize, Deserialize};
use serde_json::Value as JsonValue;
pub type BrowserContextID = String;
pub type WindowID = i64;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
pub enum WindowState {
#[default]
Normal,
Minimized,
Maximized,
Fullscreen,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct Bounds {
#[serde(skip_serializing_if = "Option::is_none")]
pub left: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub top: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub width: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub height: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub windowState: Option<WindowState>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
pub enum PermissionType {
#[default]
Ar,
AudioCapture,
AutomaticFullscreen,
BackgroundFetch,
BackgroundSync,
CameraPanTiltZoom,
CapturedSurfaceControl,
ClipboardReadWrite,
ClipboardSanitizedWrite,
DisplayCapture,
DurableStorage,
Geolocation,
HandTracking,
IdleDetection,
KeyboardLock,
LocalFonts,
LocalNetwork,
LocalNetworkAccess,
LoopbackNetwork,
Midi,
MidiSysex,
Nfc,
Notifications,
PaymentHandler,
PeriodicBackgroundSync,
PointerLock,
ProtectedMediaIdentifier,
Sensors,
SmartCard,
SpeakerSelection,
StorageAccess,
TopLevelStorageAccess,
VideoCapture,
Vr,
WakeLockScreen,
WakeLockSystem,
WebAppInstallation,
WebPrinting,
WindowManagement,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
pub enum PermissionSetting {
#[default]
Granted,
Denied,
Prompt,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct PermissionDescriptor {
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub sysex: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub userVisibleOnly: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub allowWithoutSanitization: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub allowWithoutGesture: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub panTiltZoom: Option<bool>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
pub enum BrowserCommandId {
#[default]
OpenTabSearch,
CloseTabSearch,
OpenGlic,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct Bucket {
pub low: i64,
pub high: i64,
pub count: u64,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct Histogram {
pub name: String,
pub sum: i64,
pub count: u64,
pub buckets: Vec<Bucket>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
pub enum PrivacySandboxAPI {
#[default]
BiddingAndAuctionServices,
TrustedKeyValue,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct SetPermissionParams {
pub permission: PermissionDescriptor,
pub setting: PermissionSetting,
#[serde(skip_serializing_if = "Option::is_none")]
pub origin: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub embeddedOrigin: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub browserContextId: Option<BrowserContextID>,
}
impl SetPermissionParams { pub const METHOD: &'static str = "Browser.setPermission"; }
impl crate::CdpCommand for SetPermissionParams {
const METHOD: &'static str = "Browser.setPermission";
type Response = crate::EmptyReturns;
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct GrantPermissionsParams {
pub permissions: Vec<PermissionType>,
#[serde(skip_serializing_if = "Option::is_none")]
pub origin: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub browserContextId: Option<BrowserContextID>,
}
impl GrantPermissionsParams { pub const METHOD: &'static str = "Browser.grantPermissions"; }
impl crate::CdpCommand for GrantPermissionsParams {
const METHOD: &'static str = "Browser.grantPermissions";
type Response = crate::EmptyReturns;
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct ResetPermissionsParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub browserContextId: Option<BrowserContextID>,
}
impl ResetPermissionsParams { pub const METHOD: &'static str = "Browser.resetPermissions"; }
impl crate::CdpCommand for ResetPermissionsParams {
const METHOD: &'static str = "Browser.resetPermissions";
type Response = crate::EmptyReturns;
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct SetDownloadBehaviorParams {
pub behavior: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub browserContextId: Option<BrowserContextID>,
#[serde(skip_serializing_if = "Option::is_none")]
pub downloadPath: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub eventsEnabled: Option<bool>,
}
impl SetDownloadBehaviorParams { pub const METHOD: &'static str = "Browser.setDownloadBehavior"; }
impl crate::CdpCommand for SetDownloadBehaviorParams {
const METHOD: &'static str = "Browser.setDownloadBehavior";
type Response = crate::EmptyReturns;
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct CancelDownloadParams {
pub guid: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub browserContextId: Option<BrowserContextID>,
}
impl CancelDownloadParams { pub const METHOD: &'static str = "Browser.cancelDownload"; }
impl crate::CdpCommand for CancelDownloadParams {
const METHOD: &'static str = "Browser.cancelDownload";
type Response = crate::EmptyReturns;
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct CloseParams {}
impl CloseParams { pub const METHOD: &'static str = "Browser.close"; }
impl crate::CdpCommand for CloseParams {
const METHOD: &'static str = "Browser.close";
type Response = crate::EmptyReturns;
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct CrashParams {}
impl CrashParams { pub const METHOD: &'static str = "Browser.crash"; }
impl crate::CdpCommand for CrashParams {
const METHOD: &'static str = "Browser.crash";
type Response = crate::EmptyReturns;
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct CrashGpuProcessParams {}
impl CrashGpuProcessParams { pub const METHOD: &'static str = "Browser.crashGpuProcess"; }
impl crate::CdpCommand for CrashGpuProcessParams {
const METHOD: &'static str = "Browser.crashGpuProcess";
type Response = crate::EmptyReturns;
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct GetVersionReturns {
pub protocolVersion: String,
pub product: String,
pub revision: String,
pub userAgent: String,
pub jsVersion: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetVersionParams {}
impl GetVersionParams { pub const METHOD: &'static str = "Browser.getVersion"; }
impl crate::CdpCommand for GetVersionParams {
const METHOD: &'static str = "Browser.getVersion";
type Response = GetVersionReturns;
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct GetBrowserCommandLineReturns {
pub arguments: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetBrowserCommandLineParams {}
impl GetBrowserCommandLineParams { pub const METHOD: &'static str = "Browser.getBrowserCommandLine"; }
impl crate::CdpCommand for GetBrowserCommandLineParams {
const METHOD: &'static str = "Browser.getBrowserCommandLine";
type Response = GetBrowserCommandLineReturns;
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct GetHistogramsParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub query: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub delta: Option<bool>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct GetHistogramsReturns {
pub histograms: Vec<Histogram>,
}
impl GetHistogramsParams { pub const METHOD: &'static str = "Browser.getHistograms"; }
impl crate::CdpCommand for GetHistogramsParams {
const METHOD: &'static str = "Browser.getHistograms";
type Response = GetHistogramsReturns;
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct GetHistogramParams {
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub delta: Option<bool>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct GetHistogramReturns {
pub histogram: Histogram,
}
impl GetHistogramParams { pub const METHOD: &'static str = "Browser.getHistogram"; }
impl crate::CdpCommand for GetHistogramParams {
const METHOD: &'static str = "Browser.getHistogram";
type Response = GetHistogramReturns;
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct GetWindowBoundsParams {
pub windowId: WindowID,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct GetWindowBoundsReturns {
pub bounds: Bounds,
}
impl GetWindowBoundsParams { pub const METHOD: &'static str = "Browser.getWindowBounds"; }
impl crate::CdpCommand for GetWindowBoundsParams {
const METHOD: &'static str = "Browser.getWindowBounds";
type Response = GetWindowBoundsReturns;
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct GetWindowForTargetParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub targetId: Option<crate::target::TargetID>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct GetWindowForTargetReturns {
pub windowId: WindowID,
pub bounds: Bounds,
}
impl GetWindowForTargetParams { pub const METHOD: &'static str = "Browser.getWindowForTarget"; }
impl crate::CdpCommand for GetWindowForTargetParams {
const METHOD: &'static str = "Browser.getWindowForTarget";
type Response = GetWindowForTargetReturns;
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct SetWindowBoundsParams {
pub windowId: WindowID,
pub bounds: Bounds,
}
impl SetWindowBoundsParams { pub const METHOD: &'static str = "Browser.setWindowBounds"; }
impl crate::CdpCommand for SetWindowBoundsParams {
const METHOD: &'static str = "Browser.setWindowBounds";
type Response = crate::EmptyReturns;
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct SetContentsSizeParams {
pub windowId: WindowID,
#[serde(skip_serializing_if = "Option::is_none")]
pub width: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub height: Option<i64>,
}
impl SetContentsSizeParams { pub const METHOD: &'static str = "Browser.setContentsSize"; }
impl crate::CdpCommand for SetContentsSizeParams {
const METHOD: &'static str = "Browser.setContentsSize";
type Response = crate::EmptyReturns;
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct SetDockTileParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub badgeLabel: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub image: Option<String>,
}
impl SetDockTileParams { pub const METHOD: &'static str = "Browser.setDockTile"; }
impl crate::CdpCommand for SetDockTileParams {
const METHOD: &'static str = "Browser.setDockTile";
type Response = crate::EmptyReturns;
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct ExecuteBrowserCommandParams {
pub commandId: BrowserCommandId,
}
impl ExecuteBrowserCommandParams { pub const METHOD: &'static str = "Browser.executeBrowserCommand"; }
impl crate::CdpCommand for ExecuteBrowserCommandParams {
const METHOD: &'static str = "Browser.executeBrowserCommand";
type Response = crate::EmptyReturns;
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct AddPrivacySandboxEnrollmentOverrideParams {
pub url: String,
}
impl AddPrivacySandboxEnrollmentOverrideParams { pub const METHOD: &'static str = "Browser.addPrivacySandboxEnrollmentOverride"; }
impl crate::CdpCommand for AddPrivacySandboxEnrollmentOverrideParams {
const METHOD: &'static str = "Browser.addPrivacySandboxEnrollmentOverride";
type Response = crate::EmptyReturns;
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct AddPrivacySandboxCoordinatorKeyConfigParams {
pub api: PrivacySandboxAPI,
pub coordinatorOrigin: String,
pub keyConfig: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub browserContextId: Option<BrowserContextID>,
}
impl AddPrivacySandboxCoordinatorKeyConfigParams { pub const METHOD: &'static str = "Browser.addPrivacySandboxCoordinatorKeyConfig"; }
impl crate::CdpCommand for AddPrivacySandboxCoordinatorKeyConfigParams {
const METHOD: &'static str = "Browser.addPrivacySandboxCoordinatorKeyConfig";
type Response = crate::EmptyReturns;
}