cdp_protocol/
dom_snapshot.rs

1// Auto-generated from Chrome at version 143.0.7499.110 domain: DOMSnapshot
2use super::dom;
3use super::dom_debugger;
4use super::page;
5#[allow(unused_imports)]
6use super::types::*;
7#[allow(unused_imports)]
8use serde::{Deserialize, Serialize};
9#[allow(unused_imports)]
10use serde_json::Value as Json;
11pub type StringIndex = JsUInt;
12pub type ArrayOfStrings = Vec<StringIndex>;
13pub type Rectangle = Vec<JsFloat>;
14#[derive(Deserialize, Serialize, Debug, Clone, PartialEq)]
15pub struct DomNode {
16    #[serde(default)]
17    #[serde(rename = "nodeType")]
18    pub node_type: JsUInt,
19    #[serde(default)]
20    #[serde(rename = "nodeName")]
21    pub node_name: String,
22    #[serde(default)]
23    #[serde(rename = "nodeValue")]
24    pub node_value: String,
25    #[serde(skip_serializing_if = "Option::is_none")]
26    #[serde(default)]
27    #[serde(rename = "textValue")]
28    pub text_value: Option<String>,
29    #[serde(skip_serializing_if = "Option::is_none")]
30    #[serde(default)]
31    #[serde(rename = "inputValue")]
32    pub input_value: Option<String>,
33    #[serde(skip_serializing_if = "Option::is_none")]
34    #[serde(default)]
35    #[serde(rename = "inputChecked")]
36    pub input_checked: Option<bool>,
37    #[serde(skip_serializing_if = "Option::is_none")]
38    #[serde(default)]
39    #[serde(rename = "optionSelected")]
40    pub option_selected: Option<bool>,
41    #[serde(rename = "backendNodeId")]
42    pub backend_node_id: dom::BackendNodeId,
43    #[serde(skip_serializing_if = "Option::is_none")]
44    #[serde(default)]
45    #[serde(rename = "childNodeIndexes")]
46    pub child_node_indexes: Option<Vec<JsUInt>>,
47    #[serde(skip_serializing_if = "Option::is_none")]
48    #[serde(rename = "attributes")]
49    pub attributes: Option<Vec<NameValue>>,
50    #[serde(skip_serializing_if = "Option::is_none")]
51    #[serde(default)]
52    #[serde(rename = "pseudoElementIndexes")]
53    pub pseudo_element_indexes: Option<Vec<JsUInt>>,
54    #[serde(skip_serializing_if = "Option::is_none")]
55    #[serde(default)]
56    #[serde(rename = "layoutNodeIndex")]
57    pub layout_node_index: Option<JsUInt>,
58    #[serde(skip_serializing_if = "Option::is_none")]
59    #[serde(default)]
60    #[serde(rename = "documentURL")]
61    pub document_url: Option<String>,
62    #[serde(skip_serializing_if = "Option::is_none")]
63    #[serde(default)]
64    #[serde(rename = "baseURL")]
65    pub base_url: Option<String>,
66    #[serde(skip_serializing_if = "Option::is_none")]
67    #[serde(default)]
68    #[serde(rename = "contentLanguage")]
69    pub content_language: Option<String>,
70    #[serde(skip_serializing_if = "Option::is_none")]
71    #[serde(default)]
72    #[serde(rename = "documentEncoding")]
73    pub document_encoding: Option<String>,
74    #[serde(skip_serializing_if = "Option::is_none")]
75    #[serde(default)]
76    #[serde(rename = "publicId")]
77    pub public_id: Option<String>,
78    #[serde(skip_serializing_if = "Option::is_none")]
79    #[serde(default)]
80    #[serde(rename = "systemId")]
81    pub system_id: Option<String>,
82    #[serde(skip_serializing_if = "Option::is_none")]
83    #[serde(rename = "frameId")]
84    pub frame_id: Option<page::FrameId>,
85    #[serde(skip_serializing_if = "Option::is_none")]
86    #[serde(default)]
87    #[serde(rename = "contentDocumentIndex")]
88    pub content_document_index: Option<JsUInt>,
89    #[serde(skip_serializing_if = "Option::is_none")]
90    #[serde(rename = "pseudoType")]
91    pub pseudo_type: Option<dom::PseudoType>,
92    #[serde(skip_serializing_if = "Option::is_none")]
93    #[serde(rename = "shadowRootType")]
94    pub shadow_root_type: Option<dom::ShadowRootType>,
95    #[serde(skip_serializing_if = "Option::is_none")]
96    #[serde(default)]
97    #[serde(rename = "isClickable")]
98    pub is_clickable: Option<bool>,
99    #[serde(skip_serializing_if = "Option::is_none")]
100    #[serde(rename = "eventListeners")]
101    pub event_listeners: Option<Vec<dom_debugger::EventListener>>,
102    #[serde(skip_serializing_if = "Option::is_none")]
103    #[serde(default)]
104    #[serde(rename = "currentSourceURL")]
105    pub current_source_url: Option<String>,
106    #[serde(skip_serializing_if = "Option::is_none")]
107    #[serde(default)]
108    #[serde(rename = "originURL")]
109    pub origin_url: Option<String>,
110    #[serde(skip_serializing_if = "Option::is_none")]
111    #[serde(default)]
112    #[serde(rename = "scrollOffsetX")]
113    pub scroll_offset_x: Option<JsFloat>,
114    #[serde(skip_serializing_if = "Option::is_none")]
115    #[serde(default)]
116    #[serde(rename = "scrollOffsetY")]
117    pub scroll_offset_y: Option<JsFloat>,
118}
119#[derive(Deserialize, Serialize, Debug, Clone, PartialEq)]
120pub struct InlineTextBox {
121    #[serde(rename = "boundingBox")]
122    pub bounding_box: dom::Rect,
123    #[serde(default)]
124    #[serde(rename = "startCharacterIndex")]
125    pub start_character_index: JsUInt,
126    #[serde(default)]
127    #[serde(rename = "numCharacters")]
128    pub num_characters: JsUInt,
129}
130#[derive(Deserialize, Serialize, Debug, Clone, PartialEq)]
131pub struct LayoutTreeNode {
132    #[serde(default)]
133    #[serde(rename = "domNodeIndex")]
134    pub dom_node_index: JsUInt,
135    #[serde(rename = "boundingBox")]
136    pub bounding_box: dom::Rect,
137    #[serde(skip_serializing_if = "Option::is_none")]
138    #[serde(default)]
139    #[serde(rename = "layoutText")]
140    pub layout_text: Option<String>,
141    #[serde(skip_serializing_if = "Option::is_none")]
142    #[serde(rename = "inlineTextNodes")]
143    pub inline_text_nodes: Option<Vec<InlineTextBox>>,
144    #[serde(skip_serializing_if = "Option::is_none")]
145    #[serde(default)]
146    #[serde(rename = "styleIndex")]
147    pub style_index: Option<JsUInt>,
148    #[serde(skip_serializing_if = "Option::is_none")]
149    #[serde(default)]
150    #[serde(rename = "paintOrder")]
151    pub paint_order: Option<JsUInt>,
152    #[serde(skip_serializing_if = "Option::is_none")]
153    #[serde(default)]
154    #[serde(rename = "isStackingContext")]
155    pub is_stacking_context: Option<bool>,
156}
157#[derive(Deserialize, Serialize, Debug, Clone, PartialEq)]
158pub struct ComputedStyle {
159    #[serde(rename = "properties")]
160    pub properties: Vec<NameValue>,
161}
162#[derive(Deserialize, Serialize, Debug, Clone, PartialEq)]
163pub struct NameValue {
164    #[serde(default)]
165    #[serde(rename = "name")]
166    pub name: String,
167    #[serde(default)]
168    #[serde(rename = "value")]
169    pub value: String,
170}
171#[derive(Deserialize, Serialize, Debug, Clone, PartialEq)]
172pub struct RareStringData {
173    #[serde(default)]
174    #[serde(rename = "index")]
175    pub index: Vec<JsUInt>,
176    #[serde(rename = "value")]
177    pub value: Vec<StringIndex>,
178}
179#[derive(Deserialize, Serialize, Debug, Clone, PartialEq)]
180pub struct RareBooleanData {
181    #[serde(default)]
182    #[serde(rename = "index")]
183    pub index: Vec<JsUInt>,
184}
185#[derive(Deserialize, Serialize, Debug, Clone, PartialEq)]
186pub struct RareIntegerData {
187    #[serde(default)]
188    #[serde(rename = "index")]
189    pub index: Vec<JsUInt>,
190    #[serde(default)]
191    #[serde(rename = "value")]
192    pub value: Vec<JsUInt>,
193}
194#[derive(Deserialize, Serialize, Debug, Clone, PartialEq)]
195pub struct DocumentSnapshot {
196    #[serde(rename = "documentURL")]
197    pub document_url: StringIndex,
198    #[serde(rename = "title")]
199    pub title: StringIndex,
200    #[serde(rename = "baseURL")]
201    pub base_url: StringIndex,
202    #[serde(rename = "contentLanguage")]
203    pub content_language: StringIndex,
204    #[serde(rename = "encodingName")]
205    pub encoding_name: StringIndex,
206    #[serde(rename = "publicId")]
207    pub public_id: StringIndex,
208    #[serde(rename = "systemId")]
209    pub system_id: StringIndex,
210    #[serde(rename = "frameId")]
211    pub frame_id: StringIndex,
212    #[serde(rename = "nodes")]
213    pub nodes: NodeTreeSnapshot,
214    #[serde(rename = "layout")]
215    pub layout: LayoutTreeSnapshot,
216    #[serde(rename = "textBoxes")]
217    pub text_boxes: TextBoxSnapshot,
218    #[serde(skip_serializing_if = "Option::is_none")]
219    #[serde(default)]
220    #[serde(rename = "scrollOffsetX")]
221    pub scroll_offset_x: Option<JsFloat>,
222    #[serde(skip_serializing_if = "Option::is_none")]
223    #[serde(default)]
224    #[serde(rename = "scrollOffsetY")]
225    pub scroll_offset_y: Option<JsFloat>,
226    #[serde(skip_serializing_if = "Option::is_none")]
227    #[serde(default)]
228    #[serde(rename = "contentWidth")]
229    pub content_width: Option<JsFloat>,
230    #[serde(skip_serializing_if = "Option::is_none")]
231    #[serde(default)]
232    #[serde(rename = "contentHeight")]
233    pub content_height: Option<JsFloat>,
234}
235#[derive(Deserialize, Serialize, Debug, Clone, PartialEq)]
236pub struct NodeTreeSnapshot {
237    #[serde(skip_serializing_if = "Option::is_none")]
238    #[serde(default)]
239    #[serde(rename = "parentIndex")]
240    pub parent_index: Option<Vec<JsUInt>>,
241    #[serde(skip_serializing_if = "Option::is_none")]
242    #[serde(default)]
243    #[serde(rename = "nodeType")]
244    pub node_type: Option<Vec<JsUInt>>,
245    #[serde(skip_serializing_if = "Option::is_none")]
246    #[serde(rename = "shadowRootType")]
247    pub shadow_root_type: Option<RareStringData>,
248    #[serde(skip_serializing_if = "Option::is_none")]
249    #[serde(rename = "nodeName")]
250    pub node_name: Option<Vec<StringIndex>>,
251    #[serde(skip_serializing_if = "Option::is_none")]
252    #[serde(rename = "nodeValue")]
253    pub node_value: Option<Vec<StringIndex>>,
254    #[serde(skip_serializing_if = "Option::is_none")]
255    #[serde(rename = "backendNodeId")]
256    pub backend_node_id: Option<Vec<dom::BackendNodeId>>,
257    #[serde(skip_serializing_if = "Option::is_none")]
258    #[serde(rename = "attributes")]
259    pub attributes: Option<Vec<ArrayOfStrings>>,
260    #[serde(skip_serializing_if = "Option::is_none")]
261    #[serde(rename = "textValue")]
262    pub text_value: Option<RareStringData>,
263    #[serde(skip_serializing_if = "Option::is_none")]
264    #[serde(rename = "inputValue")]
265    pub input_value: Option<RareStringData>,
266    #[serde(skip_serializing_if = "Option::is_none")]
267    #[serde(rename = "inputChecked")]
268    pub input_checked: Option<RareBooleanData>,
269    #[serde(skip_serializing_if = "Option::is_none")]
270    #[serde(rename = "optionSelected")]
271    pub option_selected: Option<RareBooleanData>,
272    #[serde(skip_serializing_if = "Option::is_none")]
273    #[serde(rename = "contentDocumentIndex")]
274    pub content_document_index: Option<RareIntegerData>,
275    #[serde(skip_serializing_if = "Option::is_none")]
276    #[serde(rename = "pseudoType")]
277    pub pseudo_type: Option<RareStringData>,
278    #[serde(skip_serializing_if = "Option::is_none")]
279    #[serde(rename = "pseudoIdentifier")]
280    pub pseudo_identifier: Option<RareStringData>,
281    #[serde(skip_serializing_if = "Option::is_none")]
282    #[serde(rename = "isClickable")]
283    pub is_clickable: Option<RareBooleanData>,
284    #[serde(skip_serializing_if = "Option::is_none")]
285    #[serde(rename = "currentSourceURL")]
286    pub current_source_url: Option<RareStringData>,
287    #[serde(skip_serializing_if = "Option::is_none")]
288    #[serde(rename = "originURL")]
289    pub origin_url: Option<RareStringData>,
290}
291#[derive(Deserialize, Serialize, Debug, Clone, PartialEq)]
292pub struct LayoutTreeSnapshot {
293    #[serde(default)]
294    #[serde(rename = "nodeIndex")]
295    pub node_index: Vec<JsUInt>,
296    #[serde(rename = "styles")]
297    pub styles: Vec<ArrayOfStrings>,
298    #[serde(rename = "bounds")]
299    pub bounds: Vec<Rectangle>,
300    #[serde(rename = "text")]
301    pub text: Vec<StringIndex>,
302    #[serde(rename = "stackingContexts")]
303    pub stacking_contexts: RareBooleanData,
304    #[serde(skip_serializing_if = "Option::is_none")]
305    #[serde(default)]
306    #[serde(rename = "paintOrders")]
307    pub paint_orders: Option<Vec<JsUInt>>,
308    #[serde(skip_serializing_if = "Option::is_none")]
309    #[serde(rename = "offsetRects")]
310    pub offset_rects: Option<Vec<Rectangle>>,
311    #[serde(skip_serializing_if = "Option::is_none")]
312    #[serde(rename = "scrollRects")]
313    pub scroll_rects: Option<Vec<Rectangle>>,
314    #[serde(skip_serializing_if = "Option::is_none")]
315    #[serde(rename = "clientRects")]
316    pub client_rects: Option<Vec<Rectangle>>,
317    #[serde(skip_serializing_if = "Option::is_none")]
318    #[serde(rename = "blendedBackgroundColors")]
319    pub blended_background_colors: Option<Vec<StringIndex>>,
320    #[serde(skip_serializing_if = "Option::is_none")]
321    #[serde(default)]
322    #[serde(rename = "textColorOpacities")]
323    pub text_color_opacities: Option<Vec<JsFloat>>,
324}
325#[derive(Deserialize, Serialize, Debug, Clone, PartialEq)]
326pub struct TextBoxSnapshot {
327    #[serde(default)]
328    #[serde(rename = "layoutIndex")]
329    pub layout_index: Vec<JsUInt>,
330    #[serde(rename = "bounds")]
331    pub bounds: Vec<Rectangle>,
332    #[serde(default)]
333    #[serde(rename = "start")]
334    pub start: Vec<JsUInt>,
335    #[serde(default)]
336    #[serde(rename = "length")]
337    pub length: Vec<JsUInt>,
338}
339#[derive(Deserialize, Serialize, Debug, Clone, PartialEq)]
340#[serde(rename_all = "camelCase")]
341pub struct Disable(pub Option<serde_json::Value>);
342#[derive(Deserialize, Serialize, Debug, Clone, PartialEq)]
343#[serde(rename_all = "camelCase")]
344pub struct Enable(pub Option<serde_json::Value>);
345#[derive(Deserialize, Serialize, Debug, Clone, PartialEq)]
346pub struct GetSnapshot {
347    #[serde(default)]
348    #[serde(rename = "computedStyleWhitelist")]
349    pub computed_style_whitelist: Vec<String>,
350    #[serde(skip_serializing_if = "Option::is_none")]
351    #[serde(default)]
352    #[serde(rename = "includeEventListeners")]
353    pub include_event_listeners: Option<bool>,
354    #[serde(skip_serializing_if = "Option::is_none")]
355    #[serde(default)]
356    #[serde(rename = "includePaintOrder")]
357    pub include_paint_order: Option<bool>,
358    #[serde(skip_serializing_if = "Option::is_none")]
359    #[serde(default)]
360    #[serde(rename = "includeUserAgentShadowTree")]
361    pub include_user_agent_shadow_tree: Option<bool>,
362}
363#[derive(Deserialize, Serialize, Debug, Clone, PartialEq)]
364pub struct CaptureSnapshot {
365    #[serde(default)]
366    #[serde(rename = "computedStyles")]
367    pub computed_styles: Vec<String>,
368    #[serde(skip_serializing_if = "Option::is_none")]
369    #[serde(default)]
370    #[serde(rename = "includePaintOrder")]
371    pub include_paint_order: Option<bool>,
372    #[serde(skip_serializing_if = "Option::is_none")]
373    #[serde(default)]
374    #[serde(rename = "includeDOMRects")]
375    pub include_dom_rects: Option<bool>,
376    #[serde(skip_serializing_if = "Option::is_none")]
377    #[serde(default)]
378    #[serde(rename = "includeBlendedBackgroundColors")]
379    pub include_blended_background_colors: Option<bool>,
380    #[serde(skip_serializing_if = "Option::is_none")]
381    #[serde(default)]
382    #[serde(rename = "includeTextColorOpacities")]
383    pub include_text_color_opacities: Option<bool>,
384}
385#[derive(Deserialize, Serialize, Debug, Clone, PartialEq)]
386#[serde(rename_all = "camelCase")]
387pub struct DisableReturnObject {}
388#[derive(Deserialize, Serialize, Debug, Clone, PartialEq)]
389#[serde(rename_all = "camelCase")]
390pub struct EnableReturnObject {}
391#[derive(Deserialize, Serialize, Debug, Clone, PartialEq)]
392pub struct GetSnapshotReturnObject {
393    #[serde(rename = "domNodes")]
394    pub dom_nodes: Vec<DomNode>,
395    #[serde(rename = "layoutTreeNodes")]
396    pub layout_tree_nodes: Vec<LayoutTreeNode>,
397    #[serde(rename = "computedStyles")]
398    pub computed_styles: Vec<ComputedStyle>,
399}
400#[derive(Deserialize, Serialize, Debug, Clone, PartialEq)]
401pub struct CaptureSnapshotReturnObject {
402    #[serde(rename = "documents")]
403    pub documents: Vec<DocumentSnapshot>,
404    #[serde(rename = "strings")]
405    pub strings: Vec<String>,
406}
407impl Method for Disable {
408    const NAME: &'static str = "DOMSnapshot.disable";
409    type ReturnObject = DisableReturnObject;
410}
411impl Method for Enable {
412    const NAME: &'static str = "DOMSnapshot.enable";
413    type ReturnObject = EnableReturnObject;
414}
415impl Method for GetSnapshot {
416    const NAME: &'static str = "DOMSnapshot.getSnapshot";
417    type ReturnObject = GetSnapshotReturnObject;
418}
419impl Method for CaptureSnapshot {
420    const NAME: &'static str = "DOMSnapshot.captureSnapshot";
421    type ReturnObject = CaptureSnapshotReturnObject;
422}
423pub mod events {
424    #[allow(unused_imports)]
425    use super::super::types::*;
426    #[allow(unused_imports)]
427    use serde::{Deserialize, Serialize};
428}