1use serde::{Serialize, Deserialize};
2use serde_json::Value as JsonValue;
3
4
5#[derive(Debug, Clone, Serialize, Deserialize, Default)]
6#[serde(rename_all = "camelCase")]
7pub struct TouchPoint {
8 pub x: f64,
11 pub y: f64,
15 #[serde(skip_serializing_if = "Option::is_none")]
18 pub radiusX: Option<f64>,
19 #[serde(skip_serializing_if = "Option::is_none")]
22 pub radiusY: Option<f64>,
23 #[serde(skip_serializing_if = "Option::is_none")]
26 pub rotationAngle: Option<f64>,
27 #[serde(skip_serializing_if = "Option::is_none")]
30 pub force: Option<f64>,
31 #[serde(skip_serializing_if = "Option::is_none")]
34 pub tangentialPressure: Option<f64>,
35 #[serde(skip_serializing_if = "Option::is_none")]
38 pub tiltX: Option<f64>,
39 #[serde(skip_serializing_if = "Option::is_none")]
42 pub tiltY: Option<f64>,
43 #[serde(skip_serializing_if = "Option::is_none")]
46 pub twist: Option<i64>,
47 #[serde(skip_serializing_if = "Option::is_none")]
50 pub id: Option<f64>,
51}
52
53
54#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
55pub enum GestureSourceType {
56 #[default]
57 Default,
58 Touch,
59 Mouse,
60}
61
62
63#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
64pub enum MouseButton {
65 #[default]
66 None,
67 Left,
68 Middle,
69 Right,
70 Back,
71 Forward,
72}
73
74pub type TimeSinceEpoch = f64;
77
78
79#[derive(Debug, Clone, Serialize, Deserialize, Default)]
80#[serde(rename_all = "camelCase")]
81pub struct DragDataItem {
82 pub mimeType: String,
85 pub data: String,
89 #[serde(skip_serializing_if = "Option::is_none")]
92 pub title: Option<String>,
93 #[serde(skip_serializing_if = "Option::is_none")]
97 pub baseURL: Option<String>,
98}
99
100
101#[derive(Debug, Clone, Serialize, Deserialize, Default)]
102#[serde(rename_all = "camelCase")]
103pub struct DragData {
104
105 pub items: Vec<DragDataItem>,
106 #[serde(skip_serializing_if = "Option::is_none")]
109 pub files: Option<Vec<String>>,
110 pub dragOperationsMask: i64,
113}
114
115#[derive(Debug, Clone, Serialize, Deserialize, Default)]
118#[serde(rename_all = "camelCase")]
119pub struct DispatchDragEventParams {
120 #[serde(rename = "type")]
123 pub type_: String,
124 pub x: f64,
127 pub y: f64,
131
132 pub data: DragData,
133 #[serde(skip_serializing_if = "Option::is_none")]
137 pub modifiers: Option<i64>,
138}
139
140impl DispatchDragEventParams { pub const METHOD: &'static str = "Input.dispatchDragEvent"; }
141
142impl crate::CdpCommand for DispatchDragEventParams {
143 const METHOD: &'static str = "Input.dispatchDragEvent";
144 type Response = crate::EmptyReturns;
145}
146
147#[derive(Debug, Clone, Serialize, Deserialize, Default)]
150#[serde(rename_all = "camelCase")]
151pub struct DispatchKeyEventParams {
152 #[serde(rename = "type")]
155 pub type_: String,
156 #[serde(skip_serializing_if = "Option::is_none")]
160 pub modifiers: Option<i64>,
161 #[serde(skip_serializing_if = "Option::is_none")]
164 pub timestamp: Option<TimeSinceEpoch>,
165 #[serde(skip_serializing_if = "Option::is_none")]
169 pub text: Option<String>,
170 #[serde(skip_serializing_if = "Option::is_none")]
174 pub unmodifiedText: Option<String>,
175 #[serde(skip_serializing_if = "Option::is_none")]
178 pub keyIdentifier: Option<String>,
179 #[serde(skip_serializing_if = "Option::is_none")]
182 pub code: Option<String>,
183 #[serde(skip_serializing_if = "Option::is_none")]
187 pub key: Option<String>,
188 #[serde(skip_serializing_if = "Option::is_none")]
191 pub windowsVirtualKeyCode: Option<i64>,
192 #[serde(skip_serializing_if = "Option::is_none")]
195 pub nativeVirtualKeyCode: Option<i64>,
196 #[serde(skip_serializing_if = "Option::is_none")]
199 pub autoRepeat: Option<bool>,
200 #[serde(skip_serializing_if = "Option::is_none")]
203 pub isKeypad: Option<bool>,
204 #[serde(skip_serializing_if = "Option::is_none")]
207 pub isSystemKey: Option<bool>,
208 #[serde(skip_serializing_if = "Option::is_none")]
212 pub location: Option<i64>,
213 #[serde(skip_serializing_if = "Option::is_none")]
218 pub commands: Option<Vec<String>>,
219}
220
221impl DispatchKeyEventParams { pub const METHOD: &'static str = "Input.dispatchKeyEvent"; }
222
223impl crate::CdpCommand for DispatchKeyEventParams {
224 const METHOD: &'static str = "Input.dispatchKeyEvent";
225 type Response = crate::EmptyReturns;
226}
227
228#[derive(Debug, Clone, Serialize, Deserialize, Default)]
232#[serde(rename_all = "camelCase")]
233pub struct InsertTextParams {
234 pub text: String,
237}
238
239impl InsertTextParams { pub const METHOD: &'static str = "Input.insertText"; }
240
241impl crate::CdpCommand for InsertTextParams {
242 const METHOD: &'static str = "Input.insertText";
243 type Response = crate::EmptyReturns;
244}
245
246#[derive(Debug, Clone, Serialize, Deserialize, Default)]
251#[serde(rename_all = "camelCase")]
252pub struct ImeSetCompositionParams {
253 pub text: String,
256 pub selectionStart: i64,
259 pub selectionEnd: i64,
262 #[serde(skip_serializing_if = "Option::is_none")]
265 pub replacementStart: Option<i64>,
266 #[serde(skip_serializing_if = "Option::is_none")]
269 pub replacementEnd: Option<i64>,
270}
271
272impl ImeSetCompositionParams { pub const METHOD: &'static str = "Input.imeSetComposition"; }
273
274impl crate::CdpCommand for ImeSetCompositionParams {
275 const METHOD: &'static str = "Input.imeSetComposition";
276 type Response = crate::EmptyReturns;
277}
278
279#[derive(Debug, Clone, Serialize, Deserialize, Default)]
282#[serde(rename_all = "camelCase")]
283pub struct DispatchMouseEventParams {
284 #[serde(rename = "type")]
287 pub type_: String,
288 pub x: f64,
291 pub y: f64,
295 #[serde(skip_serializing_if = "Option::is_none")]
299 pub modifiers: Option<i64>,
300 #[serde(skip_serializing_if = "Option::is_none")]
303 pub timestamp: Option<TimeSinceEpoch>,
304 #[serde(skip_serializing_if = "Option::is_none")]
307 pub button: Option<MouseButton>,
308 #[serde(skip_serializing_if = "Option::is_none")]
312 pub buttons: Option<i64>,
313 #[serde(skip_serializing_if = "Option::is_none")]
316 pub clickCount: Option<u64>,
317 #[serde(skip_serializing_if = "Option::is_none")]
320 pub force: Option<f64>,
321 #[serde(skip_serializing_if = "Option::is_none")]
324 pub tangentialPressure: Option<f64>,
325 #[serde(skip_serializing_if = "Option::is_none")]
328 pub tiltX: Option<f64>,
329 #[serde(skip_serializing_if = "Option::is_none")]
332 pub tiltY: Option<f64>,
333 #[serde(skip_serializing_if = "Option::is_none")]
336 pub twist: Option<i64>,
337 #[serde(skip_serializing_if = "Option::is_none")]
340 pub deltaX: Option<f64>,
341 #[serde(skip_serializing_if = "Option::is_none")]
344 pub deltaY: Option<f64>,
345 #[serde(skip_serializing_if = "Option::is_none")]
348 pub pointerType: Option<String>,
349}
350
351impl DispatchMouseEventParams { pub const METHOD: &'static str = "Input.dispatchMouseEvent"; }
352
353impl crate::CdpCommand for DispatchMouseEventParams {
354 const METHOD: &'static str = "Input.dispatchMouseEvent";
355 type Response = crate::EmptyReturns;
356}
357
358#[derive(Debug, Clone, Serialize, Deserialize, Default)]
361#[serde(rename_all = "camelCase")]
362pub struct DispatchTouchEventParams {
363 #[serde(rename = "type")]
367 pub type_: String,
368 pub touchPoints: Vec<TouchPoint>,
373 #[serde(skip_serializing_if = "Option::is_none")]
377 pub modifiers: Option<i64>,
378 #[serde(skip_serializing_if = "Option::is_none")]
381 pub timestamp: Option<TimeSinceEpoch>,
382}
383
384impl DispatchTouchEventParams { pub const METHOD: &'static str = "Input.dispatchTouchEvent"; }
385
386impl crate::CdpCommand for DispatchTouchEventParams {
387 const METHOD: &'static str = "Input.dispatchTouchEvent";
388 type Response = crate::EmptyReturns;
389}
390
391#[derive(Debug, Clone, Serialize, Deserialize, Default)]
392pub struct CancelDraggingParams {}
393
394impl CancelDraggingParams { pub const METHOD: &'static str = "Input.cancelDragging"; }
395
396impl crate::CdpCommand for CancelDraggingParams {
397 const METHOD: &'static str = "Input.cancelDragging";
398 type Response = crate::EmptyReturns;
399}
400
401#[derive(Debug, Clone, Serialize, Deserialize, Default)]
404#[serde(rename_all = "camelCase")]
405pub struct EmulateTouchFromMouseEventParams {
406 #[serde(rename = "type")]
409 pub type_: String,
410 pub x: i32,
413 pub y: i32,
416 pub button: MouseButton,
419 #[serde(skip_serializing_if = "Option::is_none")]
422 pub timestamp: Option<TimeSinceEpoch>,
423 #[serde(skip_serializing_if = "Option::is_none")]
426 pub deltaX: Option<f64>,
427 #[serde(skip_serializing_if = "Option::is_none")]
430 pub deltaY: Option<f64>,
431 #[serde(skip_serializing_if = "Option::is_none")]
435 pub modifiers: Option<i64>,
436 #[serde(skip_serializing_if = "Option::is_none")]
439 pub clickCount: Option<u64>,
440}
441
442impl EmulateTouchFromMouseEventParams { pub const METHOD: &'static str = "Input.emulateTouchFromMouseEvent"; }
443
444impl crate::CdpCommand for EmulateTouchFromMouseEventParams {
445 const METHOD: &'static str = "Input.emulateTouchFromMouseEvent";
446 type Response = crate::EmptyReturns;
447}
448
449#[derive(Debug, Clone, Serialize, Deserialize, Default)]
452#[serde(rename_all = "camelCase")]
453pub struct SetIgnoreInputEventsParams {
454 pub ignore: bool,
457}
458
459impl SetIgnoreInputEventsParams { pub const METHOD: &'static str = "Input.setIgnoreInputEvents"; }
460
461impl crate::CdpCommand for SetIgnoreInputEventsParams {
462 const METHOD: &'static str = "Input.setIgnoreInputEvents";
463 type Response = crate::EmptyReturns;
464}
465
466#[derive(Debug, Clone, Serialize, Deserialize, Default)]
470#[serde(rename_all = "camelCase")]
471pub struct SetInterceptDragsParams {
472
473 pub enabled: bool,
474}
475
476impl SetInterceptDragsParams { pub const METHOD: &'static str = "Input.setInterceptDrags"; }
477
478impl crate::CdpCommand for SetInterceptDragsParams {
479 const METHOD: &'static str = "Input.setInterceptDrags";
480 type Response = crate::EmptyReturns;
481}
482
483#[derive(Debug, Clone, Serialize, Deserialize, Default)]
486#[serde(rename_all = "camelCase")]
487pub struct SynthesizePinchGestureParams {
488 pub x: f64,
491 pub y: f64,
494 pub scaleFactor: f64,
497 #[serde(skip_serializing_if = "Option::is_none")]
500 pub relativeSpeed: Option<i64>,
501 #[serde(skip_serializing_if = "Option::is_none")]
505 pub gestureSourceType: Option<GestureSourceType>,
506}
507
508impl SynthesizePinchGestureParams { pub const METHOD: &'static str = "Input.synthesizePinchGesture"; }
509
510impl crate::CdpCommand for SynthesizePinchGestureParams {
511 const METHOD: &'static str = "Input.synthesizePinchGesture";
512 type Response = crate::EmptyReturns;
513}
514
515#[derive(Debug, Clone, Serialize, Deserialize, Default)]
518#[serde(rename_all = "camelCase")]
519pub struct SynthesizeScrollGestureParams {
520 pub x: f64,
523 pub y: f64,
526 #[serde(skip_serializing_if = "Option::is_none")]
529 pub xDistance: Option<f64>,
530 #[serde(skip_serializing_if = "Option::is_none")]
533 pub yDistance: Option<f64>,
534 #[serde(skip_serializing_if = "Option::is_none")]
538 pub xOverscroll: Option<f64>,
539 #[serde(skip_serializing_if = "Option::is_none")]
543 pub yOverscroll: Option<f64>,
544 #[serde(skip_serializing_if = "Option::is_none")]
547 pub preventFling: Option<bool>,
548 #[serde(skip_serializing_if = "Option::is_none")]
551 pub speed: Option<i64>,
552 #[serde(skip_serializing_if = "Option::is_none")]
556 pub gestureSourceType: Option<GestureSourceType>,
557 #[serde(skip_serializing_if = "Option::is_none")]
560 pub repeatCount: Option<u64>,
561 #[serde(skip_serializing_if = "Option::is_none")]
564 pub repeatDelayMs: Option<i64>,
565 #[serde(skip_serializing_if = "Option::is_none")]
568 pub interactionMarkerName: Option<String>,
569}
570
571impl SynthesizeScrollGestureParams { pub const METHOD: &'static str = "Input.synthesizeScrollGesture"; }
572
573impl crate::CdpCommand for SynthesizeScrollGestureParams {
574 const METHOD: &'static str = "Input.synthesizeScrollGesture";
575 type Response = crate::EmptyReturns;
576}
577
578#[derive(Debug, Clone, Serialize, Deserialize, Default)]
581#[serde(rename_all = "camelCase")]
582pub struct SynthesizeTapGestureParams {
583 pub x: f64,
586 pub y: f64,
589 #[serde(skip_serializing_if = "Option::is_none")]
592 pub duration: Option<i64>,
593 #[serde(skip_serializing_if = "Option::is_none")]
596 pub tapCount: Option<u64>,
597 #[serde(skip_serializing_if = "Option::is_none")]
601 pub gestureSourceType: Option<GestureSourceType>,
602}
603
604impl SynthesizeTapGestureParams { pub const METHOD: &'static str = "Input.synthesizeTapGesture"; }
605
606impl crate::CdpCommand for SynthesizeTapGestureParams {
607 const METHOD: &'static str = "Input.synthesizeTapGesture";
608 type Response = crate::EmptyReturns;
609}