use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct CaptureSnapshotParams {
pub computed_styles: Vec<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub include_dom_rects: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub include_blended_background_colors: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub include_text_color_opacities: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub include_paint_order: Option<bool>,
}
impl CaptureSnapshotParams {
pub fn new() -> Self {
Self {
computed_styles: vec![
"display".to_string(),
"visibility".to_string(),
"opacity".to_string(),
],
include_dom_rects: Some(true),
..Default::default()
}
}
pub fn with_styles(styles: Vec<String>) -> Self {
Self {
computed_styles: styles,
..Default::default()
}
}
#[must_use]
pub fn include_dom_rects(mut self, include: bool) -> Self {
self.include_dom_rects = Some(include);
self
}
#[must_use]
pub fn include_blended_background_colors(mut self, include: bool) -> Self {
self.include_blended_background_colors = Some(include);
self
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct CaptureSnapshotResult {
pub documents: Vec<DocumentSnapshot>,
pub strings: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct DocumentSnapshot {
pub document_url: i32,
pub title: i32,
pub base_url: i32,
pub content_language: i32,
pub encoding_name: i32,
pub public_id: i32,
pub system_id: i32,
pub frame_id: i32,
pub nodes: NodeTreeSnapshot,
pub layout: LayoutTreeSnapshot,
pub text_boxes: TextBoxSnapshot,
#[serde(default)]
pub scroll_offset_x: Option<f64>,
#[serde(default)]
pub scroll_offset_y: Option<f64>,
#[serde(default)]
pub content_width: Option<f64>,
#[serde(default)]
pub content_height: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct NodeTreeSnapshot {
#[serde(default)]
pub parent_index: Option<Vec<i32>>,
#[serde(default)]
pub node_type: Option<Vec<i32>>,
#[serde(default)]
pub shadow_root_type: Option<RareStringData>,
#[serde(default)]
pub node_name: Option<Vec<i32>>,
#[serde(default)]
pub node_value: Option<Vec<i32>>,
#[serde(default)]
pub backend_node_id: Option<Vec<i32>>,
#[serde(default)]
pub attributes: Option<Vec<ArrayOfStrings>>,
#[serde(default)]
pub text_value: Option<RareStringData>,
#[serde(default)]
pub input_value: Option<RareStringData>,
#[serde(default)]
pub input_checked: Option<RareBooleanData>,
#[serde(default)]
pub option_selected: Option<RareBooleanData>,
#[serde(default)]
pub content_document_index: Option<RareIntegerData>,
#[serde(default)]
pub pseudo_type: Option<RareStringData>,
#[serde(default)]
pub pseudo_identifier: Option<RareStringData>,
#[serde(default)]
pub is_clickable: Option<RareBooleanData>,
#[serde(default)]
pub current_source_url: Option<RareStringData>,
#[serde(default)]
pub origin_url: Option<RareStringData>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct LayoutTreeSnapshot {
pub node_index: Vec<i32>,
pub styles: Vec<ArrayOfStrings>,
pub bounds: Vec<Rectangle>,
pub text: Vec<i32>,
#[serde(default)]
pub stacking_contexts: Option<RareBooleanData>,
#[serde(default)]
pub paint_orders: Option<Vec<i32>>,
#[serde(default)]
pub offset_rects: Option<Vec<Rectangle>>,
#[serde(default)]
pub scroll_rects: Option<Vec<Rectangle>>,
#[serde(default)]
pub client_rects: Option<Vec<Rectangle>>,
#[serde(default)]
pub blended_background_colors: Option<Vec<i32>>,
#[serde(default)]
pub text_color_opacities: Option<Vec<f64>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TextBoxSnapshot {
pub layout_index: Vec<i32>,
pub bounds: Vec<Rectangle>,
pub start: Vec<i32>,
pub length: Vec<i32>,
}
pub type Rectangle = Vec<f64>;
pub type ArrayOfStrings = Vec<i32>;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct RareStringData {
pub index: Vec<i32>,
pub value: Vec<i32>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct RareBooleanData {
pub index: Vec<i32>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct RareIntegerData {
pub index: Vec<i32>,
pub value: Vec<i32>,
}
#[derive(Debug, Clone, Serialize, Default)]
pub struct DisableParams {}
#[derive(Debug, Clone, Serialize, Default)]
pub struct EnableParams {}