viewpoint_cdp/protocol/dom/
mod.rs

1//! DOM domain types.
2//!
3//! The DOM domain exposes DOM read/write operations.
4
5use serde::{Deserialize, Serialize};
6
7/// Unique DOM node identifier.
8pub type NodeId = i32;
9
10/// Unique DOM node identifier used to reference a node that may not have been pushed to the front-end.
11pub type BackendNodeId = i32;
12
13/// Backend node with a friendly name.
14#[derive(Debug, Clone, Deserialize)]
15#[serde(rename_all = "camelCase")]
16pub struct BackendNode {
17    /// Node's nodeType.
18    pub node_type: i32,
19    /// Node's nodeName.
20    pub node_name: String,
21    /// Backend node id.
22    pub backend_node_id: BackendNodeId,
23}
24
25/// Parameters for DOM.setFileInputFiles.
26///
27/// Sets files for the given file input element.
28#[derive(Debug, Clone, Serialize)]
29#[serde(rename_all = "camelCase")]
30pub struct SetFileInputFilesParams {
31    /// Array of file paths to set.
32    pub files: Vec<String>,
33    /// Identifier of the node.
34    #[serde(skip_serializing_if = "Option::is_none")]
35    pub node_id: Option<NodeId>,
36    /// Identifier of the backend node.
37    #[serde(skip_serializing_if = "Option::is_none")]
38    pub backend_node_id: Option<BackendNodeId>,
39    /// JavaScript object id of the node wrapper.
40    #[serde(skip_serializing_if = "Option::is_none")]
41    pub object_id: Option<String>,
42}
43
44/// Parameters for DOM.getDocument.
45#[derive(Debug, Clone, Serialize, Default)]
46#[serde(rename_all = "camelCase")]
47pub struct GetDocumentParams {
48    /// The maximum depth at which children should be retrieved.
49    #[serde(skip_serializing_if = "Option::is_none")]
50    pub depth: Option<i32>,
51    /// Whether or not iframes and shadow roots should be traversed.
52    #[serde(skip_serializing_if = "Option::is_none")]
53    pub pierce: Option<bool>,
54}
55
56/// DOM Node.
57#[derive(Debug, Clone, Deserialize)]
58#[serde(rename_all = "camelCase")]
59pub struct Node {
60    /// Node identifier that is passed into the rest of the DOM messages.
61    pub node_id: NodeId,
62    /// Node's nodeType.
63    pub node_type: i32,
64    /// Node's nodeName.
65    pub node_name: String,
66    /// Node's local name.
67    pub local_name: String,
68    /// Node's nodeValue.
69    pub node_value: String,
70    /// Child count for Container nodes.
71    pub child_node_count: Option<i32>,
72    /// Child nodes of this node when requested.
73    pub children: Option<Vec<Node>>,
74    /// Attributes of the Element node in the form of flat array.
75    pub attributes: Option<Vec<String>>,
76    /// Document URL.
77    pub document_url: Option<String>,
78    /// Base URL.
79    pub base_url: Option<String>,
80    /// Content document for frame owner elements.
81    pub content_document: Option<Box<Node>>,
82    /// Shadow root list for given element host.
83    pub shadow_roots: Option<Vec<Node>>,
84    /// Frame ID for frame owner elements.
85    pub frame_id: Option<String>,
86}
87
88/// Result of DOM.getDocument.
89#[derive(Debug, Clone, Deserialize)]
90pub struct GetDocumentResult {
91    /// Resulting node.
92    pub root: Node,
93}
94
95/// Parameters for DOM.querySelector.
96#[derive(Debug, Clone, Serialize)]
97#[serde(rename_all = "camelCase")]
98pub struct QuerySelectorParams {
99    /// Id of the node to query upon.
100    pub node_id: NodeId,
101    /// Selector string.
102    pub selector: String,
103}
104
105/// Result of DOM.querySelector.
106#[derive(Debug, Clone, Deserialize)]
107#[serde(rename_all = "camelCase")]
108pub struct QuerySelectorResult {
109    /// Query selector result.
110    pub node_id: NodeId,
111}
112
113/// Parameters for DOM.resolveNode.
114#[derive(Debug, Clone, Serialize)]
115#[serde(rename_all = "camelCase")]
116pub struct ResolveNodeParams {
117    /// Id of the node to resolve.
118    #[serde(skip_serializing_if = "Option::is_none")]
119    pub node_id: Option<NodeId>,
120    /// Backend identifier of the node to resolve.
121    #[serde(skip_serializing_if = "Option::is_none")]
122    pub backend_node_id: Option<BackendNodeId>,
123    /// Symbolic group name that can be used to release multiple objects.
124    #[serde(skip_serializing_if = "Option::is_none")]
125    pub object_group: Option<String>,
126    /// Execution context in which to resolve the node.
127    #[serde(skip_serializing_if = "Option::is_none")]
128    pub execution_context_id: Option<i64>,
129}
130
131/// Result of DOM.resolveNode.
132#[derive(Debug, Clone, Deserialize)]
133pub struct ResolveNodeResult {
134    /// JavaScript object wrapper for given node.
135    pub object: crate::protocol::runtime::RemoteObject,
136}