1use serde::{Serialize, Deserialize};
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
216#[derive(Debug, Clone, Serialize, Deserialize, Default)]
220#[serde(rename_all = "camelCase")]
221pub struct GrantPermissionsParams {
222
223 pub permissions: Vec<PermissionType>,
224 #[serde(skip_serializing_if = "Option::is_none")]
227 pub origin: Option<String>,
228 #[serde(skip_serializing_if = "Option::is_none")]
231 pub browserContextId: Option<BrowserContextID>,
232}
233
234#[derive(Debug, Clone, Serialize, Deserialize, Default)]
237#[serde(rename_all = "camelCase")]
238pub struct ResetPermissionsParams {
239 #[serde(skip_serializing_if = "Option::is_none")]
242 pub browserContextId: Option<BrowserContextID>,
243}
244
245#[derive(Debug, Clone, Serialize, Deserialize, Default)]
248#[serde(rename_all = "camelCase")]
249pub struct SetDownloadBehaviorParams {
250 pub behavior: String,
255 #[serde(skip_serializing_if = "Option::is_none")]
258 pub browserContextId: Option<BrowserContextID>,
259 #[serde(skip_serializing_if = "Option::is_none")]
263 pub downloadPath: Option<String>,
264 #[serde(skip_serializing_if = "Option::is_none")]
267 pub eventsEnabled: Option<bool>,
268}
269
270#[derive(Debug, Clone, Serialize, Deserialize, Default)]
273#[serde(rename_all = "camelCase")]
274pub struct CancelDownloadParams {
275 pub guid: String,
278 #[serde(skip_serializing_if = "Option::is_none")]
281 pub browserContextId: Option<BrowserContextID>,
282}
283
284#[derive(Debug, Clone, Serialize, Deserialize, Default)]
287#[serde(rename_all = "camelCase")]
288pub struct GetVersionReturns {
289 pub protocolVersion: String,
292 pub product: String,
295 pub revision: String,
298 pub userAgent: String,
301 pub jsVersion: String,
304}
305
306#[derive(Debug, Clone, Serialize, Deserialize, Default)]
310#[serde(rename_all = "camelCase")]
311pub struct GetBrowserCommandLineReturns {
312 pub arguments: Vec<String>,
315}
316
317#[derive(Debug, Clone, Serialize, Deserialize, Default)]
320#[serde(rename_all = "camelCase")]
321pub struct GetHistogramsParams {
322 #[serde(skip_serializing_if = "Option::is_none")]
327 pub query: Option<String>,
328 #[serde(skip_serializing_if = "Option::is_none")]
331 pub delta: Option<bool>,
332}
333
334#[derive(Debug, Clone, Serialize, Deserialize, Default)]
337#[serde(rename_all = "camelCase")]
338pub struct GetHistogramsReturns {
339 pub histograms: Vec<Histogram>,
342}
343
344#[derive(Debug, Clone, Serialize, Deserialize, Default)]
347#[serde(rename_all = "camelCase")]
348pub struct GetHistogramParams {
349 pub name: String,
352 #[serde(skip_serializing_if = "Option::is_none")]
355 pub delta: Option<bool>,
356}
357
358#[derive(Debug, Clone, Serialize, Deserialize, Default)]
361#[serde(rename_all = "camelCase")]
362pub struct GetHistogramReturns {
363 pub histogram: Histogram,
366}
367
368#[derive(Debug, Clone, Serialize, Deserialize, Default)]
371#[serde(rename_all = "camelCase")]
372pub struct GetWindowBoundsParams {
373 pub windowId: WindowID,
376}
377
378#[derive(Debug, Clone, Serialize, Deserialize, Default)]
381#[serde(rename_all = "camelCase")]
382pub struct GetWindowBoundsReturns {
383 pub bounds: Bounds,
387}
388
389#[derive(Debug, Clone, Serialize, Deserialize, Default)]
392#[serde(rename_all = "camelCase")]
393pub struct GetWindowForTargetParams {
394 #[serde(skip_serializing_if = "Option::is_none")]
397 pub targetId: Option<crate::target::TargetID>,
398}
399
400#[derive(Debug, Clone, Serialize, Deserialize, Default)]
403#[serde(rename_all = "camelCase")]
404pub struct GetWindowForTargetReturns {
405 pub windowId: WindowID,
408 pub bounds: Bounds,
412}
413
414#[derive(Debug, Clone, Serialize, Deserialize, Default)]
417#[serde(rename_all = "camelCase")]
418pub struct SetWindowBoundsParams {
419 pub windowId: WindowID,
422 pub bounds: Bounds,
426}
427
428#[derive(Debug, Clone, Serialize, Deserialize, Default)]
431#[serde(rename_all = "camelCase")]
432pub struct SetContentsSizeParams {
433 pub windowId: WindowID,
436 #[serde(skip_serializing_if = "Option::is_none")]
440 pub width: Option<u64>,
441 #[serde(skip_serializing_if = "Option::is_none")]
445 pub height: Option<i64>,
446}
447
448#[derive(Debug, Clone, Serialize, Deserialize, Default)]
451#[serde(rename_all = "camelCase")]
452pub struct SetDockTileParams {
453
454 #[serde(skip_serializing_if = "Option::is_none")]
455 pub badgeLabel: Option<String>,
456 #[serde(skip_serializing_if = "Option::is_none")]
459 pub image: Option<String>,
460}
461
462#[derive(Debug, Clone, Serialize, Deserialize, Default)]
465#[serde(rename_all = "camelCase")]
466pub struct ExecuteBrowserCommandParams {
467
468 pub commandId: BrowserCommandId,
469}
470
471#[derive(Debug, Clone, Serialize, Deserialize, Default)]
475#[serde(rename_all = "camelCase")]
476pub struct AddPrivacySandboxEnrollmentOverrideParams {
477
478 pub url: String,
479}
480
481#[derive(Debug, Clone, Serialize, Deserialize, Default)]
487#[serde(rename_all = "camelCase")]
488pub struct AddPrivacySandboxCoordinatorKeyConfigParams {
489
490 pub api: PrivacySandboxAPI,
491
492 pub coordinatorOrigin: String,
493
494 pub keyConfig: String,
495 #[serde(skip_serializing_if = "Option::is_none")]
499 pub browserContextId: Option<BrowserContextID>,
500}