1use serde::{Serialize, Deserialize};
3use serde_json::Value as JsonValue;
4
5
6pub type BrowserContextID = String;
7
8
9pub type WindowID = i64;
10
11#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
14pub enum WindowState {
15 #[default]
16 Normal,
17 Minimized,
18 Maximized,
19 Fullscreen,
20}
21
22#[derive(Debug, Clone, Serialize, Deserialize, Default)]
25#[serde(rename_all = "camelCase")]
26pub struct Bounds {
27 #[serde(skip_serializing_if = "Option::is_none")]
30 pub left: Option<i64>,
31 #[serde(skip_serializing_if = "Option::is_none")]
34 pub top: Option<i64>,
35 #[serde(skip_serializing_if = "Option::is_none")]
38 pub width: Option<u64>,
39 #[serde(skip_serializing_if = "Option::is_none")]
42 pub height: Option<i64>,
43 #[serde(skip_serializing_if = "Option::is_none")]
46 pub windowState: Option<WindowState>,
47}
48
49
50#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
51pub enum PermissionType {
52 #[default]
53 Ar,
54 AudioCapture,
55 AutomaticFullscreen,
56 BackgroundFetch,
57 BackgroundSync,
58 CameraPanTiltZoom,
59 CapturedSurfaceControl,
60 ClipboardReadWrite,
61 ClipboardSanitizedWrite,
62 DisplayCapture,
63 DurableStorage,
64 Geolocation,
65 HandTracking,
66 IdleDetection,
67 KeyboardLock,
68 LocalFonts,
69 LocalNetwork,
70 LocalNetworkAccess,
71 LoopbackNetwork,
72 Midi,
73 MidiSysex,
74 Nfc,
75 Notifications,
76 PaymentHandler,
77 PeriodicBackgroundSync,
78 PointerLock,
79 ProtectedMediaIdentifier,
80 Sensors,
81 SmartCard,
82 SpeakerSelection,
83 StorageAccess,
84 TopLevelStorageAccess,
85 VideoCapture,
86 Vr,
87 WakeLockScreen,
88 WakeLockSystem,
89 WebAppInstallation,
90 WebPrinting,
91 WindowManagement,
92}
93
94
95#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
96pub enum PermissionSetting {
97 #[default]
98 Granted,
99 Denied,
100 Prompt,
101}
102
103#[derive(Debug, Clone, Serialize, Deserialize, Default)]
107#[serde(rename_all = "camelCase")]
108pub struct PermissionDescriptor {
109 pub name: String,
113 #[serde(skip_serializing_if = "Option::is_none")]
116 pub sysex: Option<bool>,
117 #[serde(skip_serializing_if = "Option::is_none")]
121 pub userVisibleOnly: Option<bool>,
122 #[serde(skip_serializing_if = "Option::is_none")]
125 pub allowWithoutSanitization: Option<bool>,
126 #[serde(skip_serializing_if = "Option::is_none")]
129 pub allowWithoutGesture: Option<bool>,
130 #[serde(skip_serializing_if = "Option::is_none")]
133 pub panTiltZoom: Option<bool>,
134}
135
136#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
139pub enum BrowserCommandId {
140 #[default]
141 OpenTabSearch,
142 CloseTabSearch,
143 OpenGlic,
144}
145
146#[derive(Debug, Clone, Serialize, Deserialize, Default)]
149#[serde(rename_all = "camelCase")]
150pub struct Bucket {
151 pub low: i64,
154 pub high: i64,
157 pub count: u64,
160}
161
162#[derive(Debug, Clone, Serialize, Deserialize, Default)]
165#[serde(rename_all = "camelCase")]
166pub struct Histogram {
167 pub name: String,
170 pub sum: i64,
173 pub count: u64,
176 pub buckets: Vec<Bucket>,
179}
180
181
182#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
183pub enum PrivacySandboxAPI {
184 #[default]
185 BiddingAndAuctionServices,
186 TrustedKeyValue,
187}
188
189#[derive(Debug, Clone, Serialize, Deserialize, Default)]
192#[serde(rename_all = "camelCase")]
193pub struct SetPermissionParams {
194 pub permission: PermissionDescriptor,
197 pub setting: PermissionSetting,
200 #[serde(skip_serializing_if = "Option::is_none")]
203 pub origin: Option<String>,
204 #[serde(skip_serializing_if = "Option::is_none")]
209 pub embeddedOrigin: Option<String>,
210 #[serde(skip_serializing_if = "Option::is_none")]
213 pub browserContextId: Option<BrowserContextID>,
214}
215
216impl SetPermissionParams { pub const METHOD: &'static str = "Browser.setPermission"; }
217
218impl crate::CdpCommand for SetPermissionParams {
219 const METHOD: &'static str = "Browser.setPermission";
220 type Response = crate::EmptyReturns;
221}
222
223#[derive(Debug, Clone, Serialize, Deserialize, Default)]
227#[serde(rename_all = "camelCase")]
228pub struct GrantPermissionsParams {
229
230 pub permissions: Vec<PermissionType>,
231 #[serde(skip_serializing_if = "Option::is_none")]
234 pub origin: Option<String>,
235 #[serde(skip_serializing_if = "Option::is_none")]
238 pub browserContextId: Option<BrowserContextID>,
239}
240
241impl GrantPermissionsParams { pub const METHOD: &'static str = "Browser.grantPermissions"; }
242
243impl crate::CdpCommand for GrantPermissionsParams {
244 const METHOD: &'static str = "Browser.grantPermissions";
245 type Response = crate::EmptyReturns;
246}
247
248#[derive(Debug, Clone, Serialize, Deserialize, Default)]
251#[serde(rename_all = "camelCase")]
252pub struct ResetPermissionsParams {
253 #[serde(skip_serializing_if = "Option::is_none")]
256 pub browserContextId: Option<BrowserContextID>,
257}
258
259impl ResetPermissionsParams { pub const METHOD: &'static str = "Browser.resetPermissions"; }
260
261impl crate::CdpCommand for ResetPermissionsParams {
262 const METHOD: &'static str = "Browser.resetPermissions";
263 type Response = crate::EmptyReturns;
264}
265
266#[derive(Debug, Clone, Serialize, Deserialize, Default)]
269#[serde(rename_all = "camelCase")]
270pub struct SetDownloadBehaviorParams {
271 pub behavior: String,
276 #[serde(skip_serializing_if = "Option::is_none")]
279 pub browserContextId: Option<BrowserContextID>,
280 #[serde(skip_serializing_if = "Option::is_none")]
284 pub downloadPath: Option<String>,
285 #[serde(skip_serializing_if = "Option::is_none")]
288 pub eventsEnabled: Option<bool>,
289}
290
291impl SetDownloadBehaviorParams { pub const METHOD: &'static str = "Browser.setDownloadBehavior"; }
292
293impl crate::CdpCommand for SetDownloadBehaviorParams {
294 const METHOD: &'static str = "Browser.setDownloadBehavior";
295 type Response = crate::EmptyReturns;
296}
297
298#[derive(Debug, Clone, Serialize, Deserialize, Default)]
301#[serde(rename_all = "camelCase")]
302pub struct CancelDownloadParams {
303 pub guid: String,
306 #[serde(skip_serializing_if = "Option::is_none")]
309 pub browserContextId: Option<BrowserContextID>,
310}
311
312impl CancelDownloadParams { pub const METHOD: &'static str = "Browser.cancelDownload"; }
313
314impl crate::CdpCommand for CancelDownloadParams {
315 const METHOD: &'static str = "Browser.cancelDownload";
316 type Response = crate::EmptyReturns;
317}
318
319#[derive(Debug, Clone, Serialize, Deserialize, Default)]
320pub struct CloseParams {}
321
322impl CloseParams { pub const METHOD: &'static str = "Browser.close"; }
323
324impl crate::CdpCommand for CloseParams {
325 const METHOD: &'static str = "Browser.close";
326 type Response = crate::EmptyReturns;
327}
328
329#[derive(Debug, Clone, Serialize, Deserialize, Default)]
330pub struct CrashParams {}
331
332impl CrashParams { pub const METHOD: &'static str = "Browser.crash"; }
333
334impl crate::CdpCommand for CrashParams {
335 const METHOD: &'static str = "Browser.crash";
336 type Response = crate::EmptyReturns;
337}
338
339#[derive(Debug, Clone, Serialize, Deserialize, Default)]
340pub struct CrashGpuProcessParams {}
341
342impl CrashGpuProcessParams { pub const METHOD: &'static str = "Browser.crashGpuProcess"; }
343
344impl crate::CdpCommand for CrashGpuProcessParams {
345 const METHOD: &'static str = "Browser.crashGpuProcess";
346 type Response = crate::EmptyReturns;
347}
348
349#[derive(Debug, Clone, Serialize, Deserialize, Default)]
352#[serde(rename_all = "camelCase")]
353pub struct GetVersionReturns {
354 pub protocolVersion: String,
357 pub product: String,
360 pub revision: String,
363 pub userAgent: String,
366 pub jsVersion: String,
369}
370
371#[derive(Debug, Clone, Serialize, Deserialize, Default)]
372pub struct GetVersionParams {}
373
374impl GetVersionParams { pub const METHOD: &'static str = "Browser.getVersion"; }
375
376impl crate::CdpCommand for GetVersionParams {
377 const METHOD: &'static str = "Browser.getVersion";
378 type Response = GetVersionReturns;
379}
380
381#[derive(Debug, Clone, Serialize, Deserialize, Default)]
385#[serde(rename_all = "camelCase")]
386pub struct GetBrowserCommandLineReturns {
387 pub arguments: Vec<String>,
390}
391
392#[derive(Debug, Clone, Serialize, Deserialize, Default)]
393pub struct GetBrowserCommandLineParams {}
394
395impl GetBrowserCommandLineParams { pub const METHOD: &'static str = "Browser.getBrowserCommandLine"; }
396
397impl crate::CdpCommand for GetBrowserCommandLineParams {
398 const METHOD: &'static str = "Browser.getBrowserCommandLine";
399 type Response = GetBrowserCommandLineReturns;
400}
401
402#[derive(Debug, Clone, Serialize, Deserialize, Default)]
405#[serde(rename_all = "camelCase")]
406pub struct GetHistogramsParams {
407 #[serde(skip_serializing_if = "Option::is_none")]
412 pub query: Option<String>,
413 #[serde(skip_serializing_if = "Option::is_none")]
416 pub delta: Option<bool>,
417}
418
419#[derive(Debug, Clone, Serialize, Deserialize, Default)]
422#[serde(rename_all = "camelCase")]
423pub struct GetHistogramsReturns {
424 pub histograms: Vec<Histogram>,
427}
428
429impl GetHistogramsParams { pub const METHOD: &'static str = "Browser.getHistograms"; }
430
431impl crate::CdpCommand for GetHistogramsParams {
432 const METHOD: &'static str = "Browser.getHistograms";
433 type Response = GetHistogramsReturns;
434}
435
436#[derive(Debug, Clone, Serialize, Deserialize, Default)]
439#[serde(rename_all = "camelCase")]
440pub struct GetHistogramParams {
441 pub name: String,
444 #[serde(skip_serializing_if = "Option::is_none")]
447 pub delta: Option<bool>,
448}
449
450#[derive(Debug, Clone, Serialize, Deserialize, Default)]
453#[serde(rename_all = "camelCase")]
454pub struct GetHistogramReturns {
455 pub histogram: Histogram,
458}
459
460impl GetHistogramParams { pub const METHOD: &'static str = "Browser.getHistogram"; }
461
462impl crate::CdpCommand for GetHistogramParams {
463 const METHOD: &'static str = "Browser.getHistogram";
464 type Response = GetHistogramReturns;
465}
466
467#[derive(Debug, Clone, Serialize, Deserialize, Default)]
470#[serde(rename_all = "camelCase")]
471pub struct GetWindowBoundsParams {
472 pub windowId: WindowID,
475}
476
477#[derive(Debug, Clone, Serialize, Deserialize, Default)]
480#[serde(rename_all = "camelCase")]
481pub struct GetWindowBoundsReturns {
482 pub bounds: Bounds,
486}
487
488impl GetWindowBoundsParams { pub const METHOD: &'static str = "Browser.getWindowBounds"; }
489
490impl crate::CdpCommand for GetWindowBoundsParams {
491 const METHOD: &'static str = "Browser.getWindowBounds";
492 type Response = GetWindowBoundsReturns;
493}
494
495#[derive(Debug, Clone, Serialize, Deserialize, Default)]
498#[serde(rename_all = "camelCase")]
499pub struct GetWindowForTargetParams {
500 #[serde(skip_serializing_if = "Option::is_none")]
503 pub targetId: Option<crate::target::TargetID>,
504}
505
506#[derive(Debug, Clone, Serialize, Deserialize, Default)]
509#[serde(rename_all = "camelCase")]
510pub struct GetWindowForTargetReturns {
511 pub windowId: WindowID,
514 pub bounds: Bounds,
518}
519
520impl GetWindowForTargetParams { pub const METHOD: &'static str = "Browser.getWindowForTarget"; }
521
522impl crate::CdpCommand for GetWindowForTargetParams {
523 const METHOD: &'static str = "Browser.getWindowForTarget";
524 type Response = GetWindowForTargetReturns;
525}
526
527#[derive(Debug, Clone, Serialize, Deserialize, Default)]
530#[serde(rename_all = "camelCase")]
531pub struct SetWindowBoundsParams {
532 pub windowId: WindowID,
535 pub bounds: Bounds,
539}
540
541impl SetWindowBoundsParams { pub const METHOD: &'static str = "Browser.setWindowBounds"; }
542
543impl crate::CdpCommand for SetWindowBoundsParams {
544 const METHOD: &'static str = "Browser.setWindowBounds";
545 type Response = crate::EmptyReturns;
546}
547
548#[derive(Debug, Clone, Serialize, Deserialize, Default)]
551#[serde(rename_all = "camelCase")]
552pub struct SetContentsSizeParams {
553 pub windowId: WindowID,
556 #[serde(skip_serializing_if = "Option::is_none")]
560 pub width: Option<u64>,
561 #[serde(skip_serializing_if = "Option::is_none")]
565 pub height: Option<i64>,
566}
567
568impl SetContentsSizeParams { pub const METHOD: &'static str = "Browser.setContentsSize"; }
569
570impl crate::CdpCommand for SetContentsSizeParams {
571 const METHOD: &'static str = "Browser.setContentsSize";
572 type Response = crate::EmptyReturns;
573}
574
575#[derive(Debug, Clone, Serialize, Deserialize, Default)]
578#[serde(rename_all = "camelCase")]
579pub struct SetDockTileParams {
580
581 #[serde(skip_serializing_if = "Option::is_none")]
582 pub badgeLabel: Option<String>,
583 #[serde(skip_serializing_if = "Option::is_none")]
586 pub image: Option<String>,
587}
588
589impl SetDockTileParams { pub const METHOD: &'static str = "Browser.setDockTile"; }
590
591impl crate::CdpCommand for SetDockTileParams {
592 const METHOD: &'static str = "Browser.setDockTile";
593 type Response = crate::EmptyReturns;
594}
595
596#[derive(Debug, Clone, Serialize, Deserialize, Default)]
599#[serde(rename_all = "camelCase")]
600pub struct ExecuteBrowserCommandParams {
601
602 pub commandId: BrowserCommandId,
603}
604
605impl ExecuteBrowserCommandParams { pub const METHOD: &'static str = "Browser.executeBrowserCommand"; }
606
607impl crate::CdpCommand for ExecuteBrowserCommandParams {
608 const METHOD: &'static str = "Browser.executeBrowserCommand";
609 type Response = crate::EmptyReturns;
610}
611
612#[derive(Debug, Clone, Serialize, Deserialize, Default)]
616#[serde(rename_all = "camelCase")]
617pub struct AddPrivacySandboxEnrollmentOverrideParams {
618
619 pub url: String,
620}
621
622impl AddPrivacySandboxEnrollmentOverrideParams { pub const METHOD: &'static str = "Browser.addPrivacySandboxEnrollmentOverride"; }
623
624impl crate::CdpCommand for AddPrivacySandboxEnrollmentOverrideParams {
625 const METHOD: &'static str = "Browser.addPrivacySandboxEnrollmentOverride";
626 type Response = crate::EmptyReturns;
627}
628
629#[derive(Debug, Clone, Serialize, Deserialize, Default)]
635#[serde(rename_all = "camelCase")]
636pub struct AddPrivacySandboxCoordinatorKeyConfigParams {
637
638 pub api: PrivacySandboxAPI,
639
640 pub coordinatorOrigin: String,
641
642 pub keyConfig: String,
643 #[serde(skip_serializing_if = "Option::is_none")]
647 pub browserContextId: Option<BrowserContextID>,
648}
649
650impl AddPrivacySandboxCoordinatorKeyConfigParams { pub const METHOD: &'static str = "Browser.addPrivacySandboxCoordinatorKeyConfig"; }
651
652impl crate::CdpCommand for AddPrivacySandboxCoordinatorKeyConfigParams {
653 const METHOD: &'static str = "Browser.addPrivacySandboxCoordinatorKeyConfig";
654 type Response = crate::EmptyReturns;
655}