Skip to main content

browser_commander/playwright/protocol/
android_device.rs

1// @generated by scripts/generate-playwright-protocol.mjs from
2// rust/protocol/playwright/*.yml. Do not edit by hand.
3
4#![allow(clippy::all, missing_docs, unused_imports)]
5
6use serde::{Deserialize, Serialize};
7
8use super::*;
9use crate::playwright::connection::{
10    Binary, Channel, ChannelType, ObjectRef, ProtocolError, ProtocolEvent, Ref,
11};
12
13/// Initializer the driver sends when it creates a `AndroidDevice`.
14#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
15pub struct AndroidDeviceInitializer {
16    #[serde(rename = "model")]
17    pub model: String,
18    #[serde(rename = "serial")]
19    pub serial: String,
20}
21
22#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash, Serialize, Deserialize)]
23pub enum AndroidDeviceWaitParamsState {
24    #[default]
25    #[serde(rename = "gone")]
26    Gone,
27}
28
29/// Parameters of `AndroidDevice.wait` (Wait).
30#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
31pub struct AndroidDeviceWaitParams {
32    #[serde(rename = "androidSelector")]
33    pub android_selector: AndroidSelector,
34    #[serde(rename = "state", default, skip_serializing_if = "Option::is_none")]
35    pub state: Option<AndroidDeviceWaitParamsState>,
36}
37
38/// Parameters of `AndroidDevice.fill` (Fill "{text}").
39#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
40pub struct AndroidDeviceFillParams {
41    #[serde(rename = "androidSelector")]
42    pub android_selector: AndroidSelector,
43    #[serde(rename = "text")]
44    pub text: String,
45}
46
47/// Parameters of `AndroidDevice.tap` (Tap).
48#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
49pub struct AndroidDeviceTapParams {
50    #[serde(rename = "androidSelector")]
51    pub android_selector: AndroidSelector,
52    #[serde(rename = "duration", default, skip_serializing_if = "Option::is_none")]
53    pub duration: Option<f64>,
54}
55
56/// Parameters of `AndroidDevice.drag` (Drag).
57#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
58pub struct AndroidDeviceDragParams {
59    #[serde(rename = "androidSelector")]
60    pub android_selector: AndroidSelector,
61    #[serde(rename = "dest")]
62    pub dest: Point,
63    #[serde(rename = "speed", default, skip_serializing_if = "Option::is_none")]
64    pub speed: Option<f64>,
65}
66
67#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash, Serialize, Deserialize)]
68pub enum AndroidDeviceFlingParamsDirection {
69    #[default]
70    #[serde(rename = "up")]
71    Up,
72    #[serde(rename = "down")]
73    Down,
74    #[serde(rename = "left")]
75    Left,
76    #[serde(rename = "right")]
77    Right,
78}
79
80/// Parameters of `AndroidDevice.fling` (Fling).
81#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
82pub struct AndroidDeviceFlingParams {
83    #[serde(rename = "androidSelector")]
84    pub android_selector: AndroidSelector,
85    #[serde(rename = "direction")]
86    pub direction: AndroidDeviceFlingParamsDirection,
87    #[serde(rename = "speed", default, skip_serializing_if = "Option::is_none")]
88    pub speed: Option<f64>,
89}
90
91/// Parameters of `AndroidDevice.longTap` (Long tap).
92#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
93pub struct AndroidDeviceLongTapParams {
94    #[serde(rename = "androidSelector")]
95    pub android_selector: AndroidSelector,
96}
97
98/// Parameters of `AndroidDevice.pinchClose` (Pinch close).
99#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
100pub struct AndroidDevicePinchCloseParams {
101    #[serde(rename = "androidSelector")]
102    pub android_selector: AndroidSelector,
103    #[serde(rename = "percent")]
104    pub percent: f64,
105    #[serde(rename = "speed", default, skip_serializing_if = "Option::is_none")]
106    pub speed: Option<f64>,
107}
108
109/// Parameters of `AndroidDevice.pinchOpen` (Pinch open).
110#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
111pub struct AndroidDevicePinchOpenParams {
112    #[serde(rename = "androidSelector")]
113    pub android_selector: AndroidSelector,
114    #[serde(rename = "percent")]
115    pub percent: f64,
116    #[serde(rename = "speed", default, skip_serializing_if = "Option::is_none")]
117    pub speed: Option<f64>,
118}
119
120#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash, Serialize, Deserialize)]
121pub enum AndroidDeviceScrollParamsDirection {
122    #[default]
123    #[serde(rename = "up")]
124    Up,
125    #[serde(rename = "down")]
126    Down,
127    #[serde(rename = "left")]
128    Left,
129    #[serde(rename = "right")]
130    Right,
131}
132
133/// Parameters of `AndroidDevice.scroll` (Scroll).
134#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
135pub struct AndroidDeviceScrollParams {
136    #[serde(rename = "androidSelector")]
137    pub android_selector: AndroidSelector,
138    #[serde(rename = "direction")]
139    pub direction: AndroidDeviceScrollParamsDirection,
140    #[serde(rename = "percent")]
141    pub percent: f64,
142    #[serde(rename = "speed", default, skip_serializing_if = "Option::is_none")]
143    pub speed: Option<f64>,
144}
145
146#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash, Serialize, Deserialize)]
147pub enum AndroidDeviceSwipeParamsDirection {
148    #[default]
149    #[serde(rename = "up")]
150    Up,
151    #[serde(rename = "down")]
152    Down,
153    #[serde(rename = "left")]
154    Left,
155    #[serde(rename = "right")]
156    Right,
157}
158
159/// Parameters of `AndroidDevice.swipe` (Swipe).
160#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
161pub struct AndroidDeviceSwipeParams {
162    #[serde(rename = "androidSelector")]
163    pub android_selector: AndroidSelector,
164    #[serde(rename = "direction")]
165    pub direction: AndroidDeviceSwipeParamsDirection,
166    #[serde(rename = "percent")]
167    pub percent: f64,
168    #[serde(rename = "speed", default, skip_serializing_if = "Option::is_none")]
169    pub speed: Option<f64>,
170}
171
172/// Parameters of `AndroidDevice.info`.
173#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
174pub struct AndroidDeviceInfoParams {
175    #[serde(rename = "androidSelector")]
176    pub android_selector: AndroidSelector,
177}
178
179/// Result of `AndroidDevice.info`.
180#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
181pub struct AndroidDeviceInfoResult {
182    #[serde(rename = "info")]
183    pub info: AndroidElementInfo,
184}
185
186/// Result of `AndroidDevice.screenshot` (Screenshot).
187#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
188pub struct AndroidDeviceScreenshotResult {
189    #[serde(rename = "binary")]
190    pub binary: Binary,
191}
192
193/// Parameters of `AndroidDevice.inputType` (Type).
194#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
195pub struct AndroidDeviceInputTypeParams {
196    #[serde(rename = "text")]
197    pub text: String,
198}
199
200/// Parameters of `AndroidDevice.inputPress` (Press).
201#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
202pub struct AndroidDeviceInputPressParams {
203    #[serde(rename = "key")]
204    pub key: String,
205}
206
207/// Parameters of `AndroidDevice.inputTap` (Tap).
208#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
209pub struct AndroidDeviceInputTapParams {
210    #[serde(rename = "point")]
211    pub point: Point,
212}
213
214/// Parameters of `AndroidDevice.inputSwipe` (Swipe).
215#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
216pub struct AndroidDeviceInputSwipeParams {
217    #[serde(rename = "segments")]
218    pub segments: Vec<Point>,
219    #[serde(rename = "steps")]
220    pub steps: i64,
221}
222
223/// Parameters of `AndroidDevice.inputDrag` (Drag).
224#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
225pub struct AndroidDeviceInputDragParams {
226    #[serde(rename = "from")]
227    pub from: Point,
228    #[serde(rename = "to")]
229    pub to: Point,
230    #[serde(rename = "steps")]
231    pub steps: i64,
232}
233
234#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
235pub struct AndroidDeviceLaunchBrowserParamsProxy {
236    #[serde(rename = "server")]
237    pub server: String,
238    #[serde(rename = "bypass", default, skip_serializing_if = "Option::is_none")]
239    pub bypass: Option<String>,
240    #[serde(rename = "username", default, skip_serializing_if = "Option::is_none")]
241    pub username: Option<String>,
242    #[serde(rename = "password", default, skip_serializing_if = "Option::is_none")]
243    pub password: Option<String>,
244}
245
246/// Parameters of `AndroidDevice.launchBrowser` (Launch browser).
247#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
248pub struct AndroidDeviceLaunchBrowserParams {
249    /// Properties of the `ContextOptions` mixin.
250    #[serde(flatten)]
251    pub context_options: ContextOptions,
252    #[serde(rename = "pkg", default, skip_serializing_if = "Option::is_none")]
253    pub pkg: Option<String>,
254    #[serde(rename = "args", default, skip_serializing_if = "Option::is_none")]
255    pub args: Option<Vec<String>>,
256    #[serde(rename = "proxy", default, skip_serializing_if = "Option::is_none")]
257    pub proxy: Option<AndroidDeviceLaunchBrowserParamsProxy>,
258}
259
260/// Result of `AndroidDevice.launchBrowser` (Launch browser).
261#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
262pub struct AndroidDeviceLaunchBrowserResult {
263    #[serde(rename = "context")]
264    pub context: Ref<BrowserContext>,
265}
266
267/// Parameters of `AndroidDevice.open` (Open app).
268#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
269pub struct AndroidDeviceOpenParams {
270    #[serde(rename = "command")]
271    pub command: String,
272}
273
274/// Result of `AndroidDevice.open` (Open app).
275#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
276pub struct AndroidDeviceOpenResult {
277    #[serde(rename = "socket")]
278    pub socket: Ref<AndroidSocket>,
279}
280
281/// Parameters of `AndroidDevice.shell` (Execute shell command).
282#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
283pub struct AndroidDeviceShellParams {
284    #[serde(rename = "command")]
285    pub command: String,
286}
287
288/// Result of `AndroidDevice.shell` (Execute shell command).
289#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
290pub struct AndroidDeviceShellResult {
291    #[serde(rename = "result")]
292    pub result: Binary,
293}
294
295/// Parameters of `AndroidDevice.installApk` (Install apk).
296#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
297pub struct AndroidDeviceInstallApkParams {
298    #[serde(rename = "file")]
299    pub file: Binary,
300    #[serde(rename = "args", default, skip_serializing_if = "Option::is_none")]
301    pub args: Option<Vec<String>>,
302}
303
304/// Parameters of `AndroidDevice.push` (Push).
305#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
306pub struct AndroidDevicePushParams {
307    #[serde(rename = "file")]
308    pub file: Binary,
309    #[serde(rename = "path")]
310    pub path: String,
311    #[serde(rename = "mode", default, skip_serializing_if = "Option::is_none")]
312    pub mode: Option<i64>,
313}
314
315/// Parameters of `AndroidDevice.connectToWebView` (Connect to Web View).
316#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
317pub struct AndroidDeviceConnectToWebViewParams {
318    #[serde(rename = "socketName")]
319    pub socket_name: String,
320}
321
322/// Result of `AndroidDevice.connectToWebView` (Connect to Web View).
323#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
324pub struct AndroidDeviceConnectToWebViewResult {
325    #[serde(rename = "context")]
326    pub context: Ref<BrowserContext>,
327}
328
329/// Payload of the `AndroidDevice.webViewAdded` event.
330#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
331pub struct AndroidDeviceWebViewAddedEventParams {
332    #[serde(rename = "webView")]
333    pub web_view: AndroidWebView,
334}
335
336/// Payload of the `AndroidDevice.webViewRemoved` event.
337#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
338pub struct AndroidDeviceWebViewRemovedEventParams {
339    #[serde(rename = "socketName")]
340    pub socket_name: String,
341}
342
343/// Events a `AndroidDevice` channel can emit.
344#[derive(Debug, Clone, PartialEq)]
345pub enum AndroidDeviceEvent {
346    /// `AndroidDevice.close`
347    Close,
348    /// `AndroidDevice.webViewAdded`
349    WebViewAdded(AndroidDeviceWebViewAddedEventParams),
350    /// `AndroidDevice.webViewRemoved`
351    WebViewRemoved(AndroidDeviceWebViewRemovedEventParams),
352    /// An event this binding does not know (a newer driver).
353    Unknown {
354        /// Event name.
355        method: String,
356        /// Raw event parameters.
357        params: serde_json::Value,
358    },
359}
360
361impl ProtocolEvent for AndroidDeviceEvent {
362    fn parse(method: &str, params: serde_json::Value) -> Result<Self, serde_json::Error> {
363        match method {
364            "close" => Ok(Self::Close),
365            "webViewAdded" => Ok(Self::WebViewAdded(serde_json::from_value(params)?)),
366            "webViewRemoved" => Ok(Self::WebViewRemoved(serde_json::from_value(params)?)),
367            _ => Ok(Self::Unknown { method: method.to_string(), params }),
368        }
369    }
370}
371
372/// Channel for the `AndroidDevice` interface (`android.yml`).
373#[derive(Debug, Clone)]
374pub struct AndroidDevice {
375    channel: Channel,
376}
377
378impl ChannelType for AndroidDevice {
379    const INTERFACE: &'static str = "AndroidDevice";
380    type Initializer = AndroidDeviceInitializer;
381    type Event = AndroidDeviceEvent;
382
383    fn accepts(interface: &str) -> bool {
384        matches!(interface, "AndroidDevice")
385    }
386
387    fn from_channel(channel: Channel) -> Self {
388        Self { channel }
389    }
390
391    fn channel(&self) -> &Channel {
392        &self.channel
393    }
394}
395
396impl AndroidDevice {
397    /// `AndroidDevice.wait` ("Wait").
398    pub async fn wait(&self, params: AndroidDeviceWaitParams) -> Result<(), ProtocolError> {
399        self.channel.send_no_result("wait", &params).await
400    }
401
402    /// `AndroidDevice.fill` ("Fill "{text}"").
403    pub async fn fill(&self, params: AndroidDeviceFillParams) -> Result<(), ProtocolError> {
404        self.channel.send_no_result("fill", &params).await
405    }
406
407    /// `AndroidDevice.tap` ("Tap").
408    pub async fn tap(&self, params: AndroidDeviceTapParams) -> Result<(), ProtocolError> {
409        self.channel.send_no_result("tap", &params).await
410    }
411
412    /// `AndroidDevice.drag` ("Drag").
413    pub async fn drag(&self, params: AndroidDeviceDragParams) -> Result<(), ProtocolError> {
414        self.channel.send_no_result("drag", &params).await
415    }
416
417    /// `AndroidDevice.fling` ("Fling").
418    pub async fn fling(&self, params: AndroidDeviceFlingParams) -> Result<(), ProtocolError> {
419        self.channel.send_no_result("fling", &params).await
420    }
421
422    /// `AndroidDevice.longTap` ("Long tap").
423    pub async fn long_tap(&self, params: AndroidDeviceLongTapParams) -> Result<(), ProtocolError> {
424        self.channel.send_no_result("longTap", &params).await
425    }
426
427    /// `AndroidDevice.pinchClose` ("Pinch close").
428    pub async fn pinch_close(&self, params: AndroidDevicePinchCloseParams) -> Result<(), ProtocolError> {
429        self.channel.send_no_result("pinchClose", &params).await
430    }
431
432    /// `AndroidDevice.pinchOpen` ("Pinch open").
433    pub async fn pinch_open(&self, params: AndroidDevicePinchOpenParams) -> Result<(), ProtocolError> {
434        self.channel.send_no_result("pinchOpen", &params).await
435    }
436
437    /// `AndroidDevice.scroll` ("Scroll").
438    pub async fn scroll(&self, params: AndroidDeviceScrollParams) -> Result<(), ProtocolError> {
439        self.channel.send_no_result("scroll", &params).await
440    }
441
442    /// `AndroidDevice.swipe` ("Swipe").
443    pub async fn swipe(&self, params: AndroidDeviceSwipeParams) -> Result<(), ProtocolError> {
444        self.channel.send_no_result("swipe", &params).await
445    }
446
447    /// `AndroidDevice.info` (internal).
448    pub async fn info(&self, params: AndroidDeviceInfoParams) -> Result<AndroidDeviceInfoResult, ProtocolError> {
449        self.channel.send("info", &params).await
450    }
451
452    /// `AndroidDevice.screenshot` ("Screenshot").
453    pub async fn screenshot(&self) -> Result<AndroidDeviceScreenshotResult, ProtocolError> {
454        self.channel.send("screenshot", &serde_json::json!({})).await
455    }
456
457    /// `AndroidDevice.inputType` ("Type").
458    pub async fn input_type(&self, params: AndroidDeviceInputTypeParams) -> Result<(), ProtocolError> {
459        self.channel.send_no_result("inputType", &params).await
460    }
461
462    /// `AndroidDevice.inputPress` ("Press").
463    pub async fn input_press(&self, params: AndroidDeviceInputPressParams) -> Result<(), ProtocolError> {
464        self.channel.send_no_result("inputPress", &params).await
465    }
466
467    /// `AndroidDevice.inputTap` ("Tap").
468    pub async fn input_tap(&self, params: AndroidDeviceInputTapParams) -> Result<(), ProtocolError> {
469        self.channel.send_no_result("inputTap", &params).await
470    }
471
472    /// `AndroidDevice.inputSwipe` ("Swipe").
473    pub async fn input_swipe(&self, params: AndroidDeviceInputSwipeParams) -> Result<(), ProtocolError> {
474        self.channel.send_no_result("inputSwipe", &params).await
475    }
476
477    /// `AndroidDevice.inputDrag` ("Drag").
478    pub async fn input_drag(&self, params: AndroidDeviceInputDragParams) -> Result<(), ProtocolError> {
479        self.channel.send_no_result("inputDrag", &params).await
480    }
481
482    /// `AndroidDevice.launchBrowser` ("Launch browser").
483    pub async fn launch_browser(&self, params: AndroidDeviceLaunchBrowserParams) -> Result<AndroidDeviceLaunchBrowserResult, ProtocolError> {
484        self.channel.send("launchBrowser", &params).await
485    }
486
487    /// `AndroidDevice.open` ("Open app").
488    pub async fn open(&self, params: AndroidDeviceOpenParams) -> Result<AndroidDeviceOpenResult, ProtocolError> {
489        self.channel.send("open", &params).await
490    }
491
492    /// `AndroidDevice.shell` ("Execute shell command").
493    pub async fn shell(&self, params: AndroidDeviceShellParams) -> Result<AndroidDeviceShellResult, ProtocolError> {
494        self.channel.send("shell", &params).await
495    }
496
497    /// `AndroidDevice.installApk` ("Install apk").
498    pub async fn install_apk(&self, params: AndroidDeviceInstallApkParams) -> Result<(), ProtocolError> {
499        self.channel.send_no_result("installApk", &params).await
500    }
501
502    /// `AndroidDevice.push` ("Push").
503    pub async fn push(&self, params: AndroidDevicePushParams) -> Result<(), ProtocolError> {
504        self.channel.send_no_result("push", &params).await
505    }
506
507    /// `AndroidDevice.connectToWebView` ("Connect to Web View").
508    pub async fn connect_to_web_view(&self, params: AndroidDeviceConnectToWebViewParams) -> Result<AndroidDeviceConnectToWebViewResult, ProtocolError> {
509        self.channel.send("connectToWebView", &params).await
510    }
511
512    /// `AndroidDevice.close` (internal).
513    pub async fn close(&self) -> Result<(), ProtocolError> {
514        self.channel.send_no_result("close", &serde_json::json!({})).await
515    }
516}