browser_protocol/performancetimeline/
mod.rs1use serde::{Serialize, Deserialize};
4use serde_json::Value as JsonValue;
5
6#[derive(Debug, Clone, Serialize, Deserialize, Default)]
9#[serde(rename_all = "camelCase")]
10pub struct LargestContentfulPaint {
11
12 pub renderTime: crate::network::TimeSinceEpoch,
13
14 pub loadTime: crate::network::TimeSinceEpoch,
15 pub size: f64,
18 #[serde(skip_serializing_if = "Option::is_none")]
21 pub elementId: Option<String>,
22 #[serde(skip_serializing_if = "Option::is_none")]
25 pub url: Option<String>,
26
27 #[serde(skip_serializing_if = "Option::is_none")]
28 pub nodeId: Option<crate::dom::BackendNodeId>,
29}
30
31
32#[derive(Debug, Clone, Serialize, Deserialize, Default)]
33#[serde(rename_all = "camelCase")]
34pub struct LayoutShiftAttribution {
35
36 pub previousRect: crate::dom::Rect,
37
38 pub currentRect: crate::dom::Rect,
39
40 #[serde(skip_serializing_if = "Option::is_none")]
41 pub nodeId: Option<crate::dom::BackendNodeId>,
42}
43
44#[derive(Debug, Clone, Serialize, Deserialize, Default)]
47#[serde(rename_all = "camelCase")]
48pub struct LayoutShift {
49 pub value: f64,
52
53 pub hadRecentInput: bool,
54
55 pub lastInputTime: crate::network::TimeSinceEpoch,
56
57 pub sources: Vec<LayoutShiftAttribution>,
58}
59
60
61#[derive(Debug, Clone, Serialize, Deserialize, Default)]
62#[serde(rename_all = "camelCase")]
63pub struct TimelineEvent {
64 pub frameId: crate::page::FrameId,
67 #[serde(rename = "type")]
71 pub type_: String,
72 pub name: String,
75 pub time: crate::network::TimeSinceEpoch,
78 #[serde(skip_serializing_if = "Option::is_none")]
81 pub duration: Option<f64>,
82
83 #[serde(skip_serializing_if = "Option::is_none")]
84 pub lcpDetails: Option<LargestContentfulPaint>,
85
86 #[serde(skip_serializing_if = "Option::is_none")]
87 pub layoutShiftDetails: Option<LayoutShift>,
88}
89
90#[derive(Debug, Clone, Serialize, Deserialize, Default)]
94#[serde(rename_all = "camelCase")]
95pub struct EnableParams {
96 pub eventTypes: Vec<String>,
103}
104
105impl EnableParams { pub const METHOD: &'static str = "PerformanceTimeline.enable"; }
106
107impl crate::CdpCommand for EnableParams {
108 const METHOD: &'static str = "PerformanceTimeline.enable";
109 type Response = crate::EmptyReturns;
110}