Skip to main content

browser_commander/playwright/protocol/
worker.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 `Worker`.
14#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
15pub struct WorkerInitializer {
16    #[serde(rename = "url")]
17    pub url: String,
18}
19
20/// Parameters of `Worker.disconnect` (Disconnect from worker).
21#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
22pub struct WorkerDisconnectParams {
23    #[serde(rename = "reason", default, skip_serializing_if = "Option::is_none")]
24    pub reason: Option<String>,
25}
26
27/// Parameters of `Worker.evaluateExpression` (Evaluate).
28#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
29pub struct WorkerEvaluateExpressionParams {
30    #[serde(rename = "expression")]
31    pub expression: String,
32    #[serde(rename = "isFunction", default, skip_serializing_if = "Option::is_none")]
33    pub is_function: Option<bool>,
34    #[serde(rename = "arg")]
35    pub arg: SerializedArgument,
36}
37
38/// Result of `Worker.evaluateExpression` (Evaluate).
39#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
40pub struct WorkerEvaluateExpressionResult {
41    #[serde(rename = "value")]
42    pub value: SerializedValue,
43}
44
45/// Parameters of `Worker.evaluateExpressionHandle` (Evaluate).
46#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
47pub struct WorkerEvaluateExpressionHandleParams {
48    #[serde(rename = "expression")]
49    pub expression: String,
50    #[serde(rename = "isFunction", default, skip_serializing_if = "Option::is_none")]
51    pub is_function: Option<bool>,
52    #[serde(rename = "arg")]
53    pub arg: SerializedArgument,
54}
55
56/// Result of `Worker.evaluateExpressionHandle` (Evaluate).
57#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
58pub struct WorkerEvaluateExpressionHandleResult {
59    #[serde(rename = "handle")]
60    pub handle: Ref<JSHandle>,
61}
62
63#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash, Serialize, Deserialize)]
64pub enum WorkerUpdateSubscriptionParamsEvent {
65    #[default]
66    #[serde(rename = "console")]
67    Console,
68}
69
70/// Parameters of `Worker.updateSubscription`.
71#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
72pub struct WorkerUpdateSubscriptionParams {
73    #[serde(rename = "event")]
74    pub event: WorkerUpdateSubscriptionParamsEvent,
75    #[serde(rename = "enabled")]
76    pub enabled: bool,
77}
78
79/// Payload of the `Worker.console` event.
80#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
81pub struct WorkerConsoleEventParams {
82    /// Properties of the `ConsoleMessage` mixin.
83    #[serde(flatten)]
84    pub console_message: ConsoleMessage,
85}
86
87/// Events a `Worker` channel can emit.
88#[derive(Debug, Clone, PartialEq)]
89pub enum WorkerEvent {
90    /// `Worker.console`
91    Console(WorkerConsoleEventParams),
92    /// `Worker.close`
93    Close,
94    /// An event this binding does not know (a newer driver).
95    Unknown {
96        /// Event name.
97        method: String,
98        /// Raw event parameters.
99        params: serde_json::Value,
100    },
101}
102
103impl ProtocolEvent for WorkerEvent {
104    fn parse(method: &str, params: serde_json::Value) -> Result<Self, serde_json::Error> {
105        match method {
106            "console" => Ok(Self::Console(serde_json::from_value(params)?)),
107            "close" => Ok(Self::Close),
108            _ => Ok(Self::Unknown { method: method.to_string(), params }),
109        }
110    }
111}
112
113/// Channel for the `Worker` interface (`worker.yml`).
114#[derive(Debug, Clone)]
115pub struct Worker {
116    channel: Channel,
117}
118
119impl ChannelType for Worker {
120    const INTERFACE: &'static str = "Worker";
121    type Initializer = WorkerInitializer;
122    type Event = WorkerEvent;
123
124    fn accepts(interface: &str) -> bool {
125        matches!(interface, "Worker")
126    }
127
128    fn from_channel(channel: Channel) -> Self {
129        Self { channel }
130    }
131
132    fn channel(&self) -> &Channel {
133        &self.channel
134    }
135}
136
137impl Worker {
138    /// `Worker.disconnect` ("Disconnect from worker").
139    pub async fn disconnect(&self, params: WorkerDisconnectParams) -> Result<(), ProtocolError> {
140        self.channel.send_no_result("disconnect", &params).await
141    }
142
143    /// `Worker.evaluateExpression` ("Evaluate").
144    pub async fn evaluate_expression(&self, params: WorkerEvaluateExpressionParams) -> Result<WorkerEvaluateExpressionResult, ProtocolError> {
145        self.channel.send("evaluateExpression", &params).await
146    }
147
148    /// `Worker.evaluateExpressionHandle` ("Evaluate").
149    pub async fn evaluate_expression_handle(&self, params: WorkerEvaluateExpressionHandleParams) -> Result<WorkerEvaluateExpressionHandleResult, ProtocolError> {
150        self.channel.send("evaluateExpressionHandle", &params).await
151    }
152
153    /// `Worker.updateSubscription` (internal).
154    pub async fn update_subscription(&self, params: WorkerUpdateSubscriptionParams) -> Result<(), ProtocolError> {
155        self.channel.send_no_result("updateSubscription", &params).await
156    }
157}