use serde::{Serialize, Deserialize};
use serde_json::Value as JsonValue;
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct DOMNode {
pub nodeType: i64,
pub nodeName: String,
pub nodeValue: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub textValue: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub inputValue: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub inputChecked: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub optionSelected: Option<bool>,
pub backendNodeId: crate::dom::BackendNodeId,
#[serde(skip_serializing_if = "Option::is_none")]
pub childNodeIndexes: Option<Vec<i64>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub attributes: Option<Vec<NameValue>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub pseudoElementIndexes: Option<Vec<i64>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub layoutNodeIndex: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub documentURL: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub baseURL: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub contentLanguage: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub documentEncoding: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub publicId: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub systemId: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub frameId: Option<crate::page::FrameId>,
#[serde(skip_serializing_if = "Option::is_none")]
pub contentDocumentIndex: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub pseudoType: Option<crate::dom::PseudoType>,
#[serde(skip_serializing_if = "Option::is_none")]
pub shadowRootType: Option<crate::dom::ShadowRootType>,
#[serde(skip_serializing_if = "Option::is_none")]
pub isClickable: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub eventListeners: Option<Vec<crate::domdebugger::EventListener>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub currentSourceURL: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub originURL: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub scrollOffsetX: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub scrollOffsetY: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct InlineTextBox {
pub boundingBox: crate::dom::Rect,
pub startCharacterIndex: u64,
pub numCharacters: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct LayoutTreeNode {
pub domNodeIndex: u64,
pub boundingBox: crate::dom::Rect,
#[serde(skip_serializing_if = "Option::is_none")]
pub layoutText: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub inlineTextNodes: Option<Vec<InlineTextBox>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub styleIndex: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub paintOrder: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub isStackingContext: Option<bool>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct ComputedStyle {
pub properties: Vec<NameValue>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct NameValue {
pub name: String,
pub value: String,
}
pub type StringIndex = i64;
pub type ArrayOfStrings = Vec<StringIndex>;
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct RareStringData {
pub index: Vec<i64>,
pub value: Vec<StringIndex>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct RareBooleanData {
pub index: Vec<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct RareIntegerData {
pub index: Vec<i64>,
pub value: Vec<i64>,
}
pub type Rectangle = Vec<f64>;
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct DocumentSnapshot {
pub documentURL: StringIndex,
pub title: StringIndex,
pub baseURL: StringIndex,
pub contentLanguage: StringIndex,
pub encodingName: StringIndex,
pub publicId: StringIndex,
pub systemId: StringIndex,
pub frameId: StringIndex,
pub nodes: NodeTreeSnapshot,
pub layout: LayoutTreeSnapshot,
pub textBoxes: TextBoxSnapshot,
#[serde(skip_serializing_if = "Option::is_none")]
pub scrollOffsetX: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub scrollOffsetY: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub contentWidth: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub contentHeight: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct NodeTreeSnapshot {
#[serde(skip_serializing_if = "Option::is_none")]
pub parentIndex: Option<Vec<i64>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub nodeType: Option<Vec<i64>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub shadowRootType: Option<RareStringData>,
#[serde(skip_serializing_if = "Option::is_none")]
pub nodeName: Option<Vec<StringIndex>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub nodeValue: Option<Vec<StringIndex>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub backendNodeId: Option<Vec<crate::dom::BackendNodeId>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub attributes: Option<Vec<ArrayOfStrings>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub textValue: Option<RareStringData>,
#[serde(skip_serializing_if = "Option::is_none")]
pub inputValue: Option<RareStringData>,
#[serde(skip_serializing_if = "Option::is_none")]
pub inputChecked: Option<RareBooleanData>,
#[serde(skip_serializing_if = "Option::is_none")]
pub optionSelected: Option<RareBooleanData>,
#[serde(skip_serializing_if = "Option::is_none")]
pub contentDocumentIndex: Option<RareIntegerData>,
#[serde(skip_serializing_if = "Option::is_none")]
pub pseudoType: Option<RareStringData>,
#[serde(skip_serializing_if = "Option::is_none")]
pub pseudoIdentifier: Option<RareStringData>,
#[serde(skip_serializing_if = "Option::is_none")]
pub isClickable: Option<RareBooleanData>,
#[serde(skip_serializing_if = "Option::is_none")]
pub currentSourceURL: Option<RareStringData>,
#[serde(skip_serializing_if = "Option::is_none")]
pub originURL: Option<RareStringData>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct LayoutTreeSnapshot {
pub nodeIndex: Vec<i64>,
pub styles: Vec<ArrayOfStrings>,
pub bounds: Vec<Rectangle>,
pub text: Vec<StringIndex>,
pub stackingContexts: RareBooleanData,
#[serde(skip_serializing_if = "Option::is_none")]
pub paintOrders: Option<Vec<i64>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub offsetRects: Option<Vec<Rectangle>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub scrollRects: Option<Vec<Rectangle>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub clientRects: Option<Vec<Rectangle>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub blendedBackgroundColors: Option<Vec<StringIndex>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub textColorOpacities: Option<Vec<f64>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct TextBoxSnapshot {
pub layoutIndex: Vec<i64>,
pub bounds: Vec<Rectangle>,
pub start: Vec<i64>,
pub length: Vec<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct DisableParams {}
impl DisableParams { pub const METHOD: &'static str = "DOMSnapshot.disable"; }
impl crate::CdpCommand for DisableParams {
const METHOD: &'static str = "DOMSnapshot.disable";
type Response = crate::EmptyReturns;
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct EnableParams {}
impl EnableParams { pub const METHOD: &'static str = "DOMSnapshot.enable"; }
impl crate::CdpCommand for EnableParams {
const METHOD: &'static str = "DOMSnapshot.enable";
type Response = crate::EmptyReturns;
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct GetSnapshotParams {
pub computedStyleWhitelist: Vec<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub includeEventListeners: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub includePaintOrder: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub includeUserAgentShadowTree: Option<bool>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct GetSnapshotReturns {
pub domNodes: Vec<DOMNode>,
pub layoutTreeNodes: Vec<LayoutTreeNode>,
pub computedStyles: Vec<ComputedStyle>,
}
impl GetSnapshotParams { pub const METHOD: &'static str = "DOMSnapshot.getSnapshot"; }
impl crate::CdpCommand for GetSnapshotParams {
const METHOD: &'static str = "DOMSnapshot.getSnapshot";
type Response = GetSnapshotReturns;
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct CaptureSnapshotParams {
pub computedStyles: Vec<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub includePaintOrder: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub includeDOMRects: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub includeBlendedBackgroundColors: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub includeTextColorOpacities: Option<bool>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct CaptureSnapshotReturns {
pub documents: Vec<DocumentSnapshot>,
pub strings: Vec<String>,
}
impl CaptureSnapshotParams { pub const METHOD: &'static str = "DOMSnapshot.captureSnapshot"; }
impl crate::CdpCommand for CaptureSnapshotParams {
const METHOD: &'static str = "DOMSnapshot.captureSnapshot";
type Response = CaptureSnapshotReturns;
}