viewpoint_cdp/protocol/page/
events.rs

1//! Page domain event types.
2
3use serde::Deserialize;
4
5use super::types::{FileChooserMode, Frame, FrameDetachedReason};
6
7/// Event: Page.loadEventFired
8#[derive(Debug, Clone, Deserialize)]
9pub struct LoadEventFiredEvent {
10    /// Monotonic time.
11    pub timestamp: f64,
12}
13
14/// Event: Page.domContentEventFired
15#[derive(Debug, Clone, Deserialize)]
16pub struct DomContentEventFiredEvent {
17    /// Monotonic time.
18    pub timestamp: f64,
19}
20
21/// Event: Page.frameNavigated
22#[derive(Debug, Clone, Deserialize)]
23#[serde(rename_all = "camelCase")]
24pub struct FrameNavigatedEvent {
25    /// Frame object.
26    pub frame: Frame,
27    /// Navigation type.
28    #[serde(rename = "type")]
29    pub navigation_type: Option<String>,
30}
31
32/// Event: Page.frameStartedLoading
33#[derive(Debug, Clone, Deserialize)]
34#[serde(rename_all = "camelCase")]
35pub struct FrameStartedLoadingEvent {
36    /// Frame ID.
37    pub frame_id: String,
38}
39
40/// Event: Page.frameStoppedLoading
41#[derive(Debug, Clone, Deserialize)]
42#[serde(rename_all = "camelCase")]
43pub struct FrameStoppedLoadingEvent {
44    /// Frame ID.
45    pub frame_id: String,
46}
47
48/// Event: Page.lifecycleEvent
49#[derive(Debug, Clone, Deserialize)]
50#[serde(rename_all = "camelCase")]
51pub struct LifecycleEvent {
52    /// Frame ID.
53    pub frame_id: String,
54    /// Loader identifier.
55    pub loader_id: String,
56    /// Lifecycle event name.
57    pub name: String,
58    /// Timestamp.
59    pub timestamp: f64,
60}
61
62/// Event: Page.windowOpen
63#[derive(Debug, Clone, Deserialize)]
64#[serde(rename_all = "camelCase")]
65pub struct WindowOpenEvent {
66    /// The URL for the new window.
67    pub url: String,
68    /// Window name.
69    pub window_name: String,
70    /// An array of enabled window features.
71    pub window_features: Vec<String>,
72    /// Whether or not it was triggered by user gesture.
73    pub user_gesture: bool,
74}
75
76/// Event: Page.frameAttached
77///
78/// Fired when a frame has been attached to its parent.
79#[derive(Debug, Clone, Deserialize)]
80#[serde(rename_all = "camelCase")]
81pub struct FrameAttachedEvent {
82    /// Id of the frame that has been attached.
83    pub frame_id: String,
84    /// Parent frame identifier.
85    pub parent_frame_id: String,
86    /// JavaScript stack trace of when frame was attached, only set if frame initiated from script.
87    pub stack: Option<serde_json::Value>,
88}
89
90/// Event: Page.frameDetached
91///
92/// Fired when a frame has been detached from its parent.
93#[derive(Debug, Clone, Deserialize)]
94#[serde(rename_all = "camelCase")]
95pub struct FrameDetachedEvent {
96    /// Id of the frame that has been detached.
97    pub frame_id: String,
98    /// Reason for the frame being detached.
99    pub reason: Option<FrameDetachedReason>,
100}
101
102/// Event: Page.navigatedWithinDocument
103///
104/// Fired when a frame navigation happened within the same document.
105#[derive(Debug, Clone, Deserialize)]
106#[serde(rename_all = "camelCase")]
107pub struct NavigatedWithinDocumentEvent {
108    /// Id of the frame.
109    pub frame_id: String,
110    /// Frame's new url.
111    pub url: String,
112}
113
114/// Event: Page.fileChooserOpened
115///
116/// Emitted only when `page.setInterceptFileChooserDialog` is enabled.
117#[derive(Debug, Clone, Deserialize)]
118#[serde(rename_all = "camelCase")]
119pub struct FileChooserOpenedEvent {
120    /// Id of the frame containing input node.
121    pub frame_id: String,
122    /// Input mode.
123    pub mode: FileChooserMode,
124    /// Input node id. Only present for file choosers opened via an input element
125    /// with webkitdirectory attribute (directory picker).
126    pub backend_node_id: Option<i32>,
127}