use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Frame {
pub id: String,
pub parent_id: Option<String>,
pub loader_id: String,
pub name: Option<String>,
pub url: String,
pub security_origin: Option<String>,
pub mime_type: Option<String>,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct NavigateParams {
pub url: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub referrer: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub transition_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub frame_id: Option<String>,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct NavigateResult {
pub frame_id: String,
pub loader_id: Option<String>,
pub error_text: Option<String>,
}
#[derive(Debug, Clone, Serialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct ReloadParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub ignore_cache: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub script_to_evaluate_on_load: Option<String>,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct GetFrameTreeResult {
pub frame_tree: FrameTree,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct FrameTree {
pub frame: Frame,
pub child_frames: Option<Vec<FrameTree>>,
}
#[derive(Debug, Clone, Deserialize)]
pub struct LoadEventFiredEvent {
pub timestamp: f64,
}
#[derive(Debug, Clone, Deserialize)]
pub struct DomContentEventFiredEvent {
pub timestamp: f64,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct FrameNavigatedEvent {
pub frame: Frame,
#[serde(rename = "type")]
pub navigation_type: Option<String>,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct FrameStartedLoadingEvent {
pub frame_id: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct FrameStoppedLoadingEvent {
pub frame_id: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct LifecycleEvent {
pub frame_id: String,
pub loader_id: String,
pub name: String,
pub timestamp: f64,
}
#[derive(Debug, Clone, Serialize)]
pub struct SetLifecycleEventsEnabledParams {
pub enabled: bool,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Default)]
#[serde(rename_all = "lowercase")]
pub enum ScreenshotFormat {
#[default]
Png,
Jpeg,
Webp,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct Viewport {
pub x: f64,
pub y: f64,
pub width: f64,
pub height: f64,
pub scale: f64,
}
#[derive(Debug, Clone, Serialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct CaptureScreenshotParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub format: Option<ScreenshotFormat>,
#[serde(skip_serializing_if = "Option::is_none")]
pub quality: Option<u8>,
#[serde(skip_serializing_if = "Option::is_none")]
pub clip: Option<Viewport>,
#[serde(skip_serializing_if = "Option::is_none")]
pub from_surface: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub capture_beyond_viewport: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub optimize_for_speed: Option<bool>,
}
#[derive(Debug, Clone, Deserialize)]
pub struct CaptureScreenshotResult {
pub data: String,
}
#[derive(Debug, Clone, Serialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct PrintToPdfParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub landscape: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub display_header_footer: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub print_background: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub scale: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub paper_width: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub paper_height: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub margin_top: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub margin_bottom: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub margin_left: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub margin_right: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub page_ranges: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub header_template: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub footer_template: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub prefer_css_page_size: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub transfer_mode: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub generate_tagged_pdf: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub generate_document_outline: Option<bool>,
}
#[derive(Debug, Clone, Deserialize)]
pub struct PrintToPdfResult {
pub data: String,
pub stream: Option<String>,
}
#[derive(Debug, Clone, Deserialize)]
pub struct NavigationHistoryResult {}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct GetNavigationHistoryResult {
pub current_index: i32,
pub entries: Vec<NavigationEntry>,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct NavigationEntry {
pub id: i32,
pub url: String,
#[serde(default)]
pub user_typed_url: String,
pub title: String,
#[serde(default)]
pub transition_type: String,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct NavigateToHistoryEntryParams {
pub entry_id: i32,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct AddScriptToEvaluateOnNewDocumentParams {
pub source: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub world_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub include_command_line_api: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub run_immediately: Option<bool>,
}
#[derive(Debug, Clone, Deserialize)]
pub struct AddScriptToEvaluateOnNewDocumentResult {
pub identifier: String,
}
#[derive(Debug, Clone, Serialize)]
pub struct RemoveScriptToEvaluateOnNewDocumentParams {
pub identifier: String,
}
#[derive(Debug, Clone, Serialize, Default)]
pub struct BringToFrontParams {}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct SetDocumentContentParams {
pub frame_id: String,
pub html: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct WindowOpenEvent {
pub url: String,
pub window_name: String,
pub window_features: Vec<String>,
pub user_gesture: bool,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct FrameAttachedEvent {
pub frame_id: String,
pub parent_frame_id: String,
pub stack: Option<serde_json::Value>,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct FrameDetachedEvent {
pub frame_id: String,
pub reason: Option<FrameDetachedReason>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Deserialize)]
#[serde(rename_all = "camelCase")]
pub enum FrameDetachedReason {
Remove,
Swap,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct NavigatedWithinDocumentEvent {
pub frame_id: String,
pub url: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct FileChooserOpenedEvent {
pub frame_id: String,
pub mode: FileChooserMode,
pub backend_node_id: Option<i32>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Deserialize)]
#[serde(rename_all = "camelCase")]
pub enum FileChooserMode {
SelectSingle,
SelectMultiple,
}
#[derive(Debug, Clone, Serialize)]
pub struct SetInterceptFileChooserDialogParams {
pub enabled: bool,
}