selenium-webdriver 4.45.0 → 4.47.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES +36 -0
  3. data/bin/linux/selenium-manager +0 -0
  4. data/bin/macos/selenium-manager +0 -0
  5. data/bin/selenium-manager-THIRD-PARTY-NOTICES.txt +5971 -0
  6. data/bin/selenium-manager.cdx.json +11629 -0
  7. data/bin/windows/selenium-manager.exe +0 -0
  8. data/lib/selenium/webdriver/{common/driver_extensions/has_bidi.rb → bidi/error.rb} +21 -13
  9. data/lib/selenium/webdriver/bidi/protocol/bluetooth.rb +495 -0
  10. data/lib/selenium/webdriver/bidi/protocol/browser.rb +250 -0
  11. data/lib/selenium/webdriver/bidi/protocol/browsing_context.rb +798 -0
  12. data/lib/selenium/webdriver/bidi/protocol/domain.rb +46 -0
  13. data/lib/selenium/webdriver/bidi/protocol/emulation.rb +448 -0
  14. data/lib/selenium/webdriver/bidi/protocol/error_code.rb +66 -0
  15. data/lib/selenium/webdriver/bidi/protocol/input.rb +354 -0
  16. data/lib/selenium/webdriver/bidi/protocol/log.rb +115 -0
  17. data/lib/selenium/webdriver/bidi/protocol/network.rb +720 -0
  18. data/lib/selenium/webdriver/bidi/protocol/permissions.rb +75 -0
  19. data/lib/selenium/webdriver/bidi/protocol/script.rb +1052 -0
  20. data/lib/selenium/webdriver/bidi/protocol/session.rb +286 -0
  21. data/lib/selenium/webdriver/bidi/protocol/speculation.rb +58 -0
  22. data/lib/selenium/webdriver/bidi/protocol/storage.rb +183 -0
  23. data/lib/selenium/webdriver/bidi/protocol/user_agent_client_hints.rb +88 -0
  24. data/lib/selenium/webdriver/bidi/protocol/web_extension.rb +132 -0
  25. data/lib/selenium/webdriver/bidi/protocol.rb +42 -0
  26. data/lib/selenium/webdriver/bidi/serialization/record.rb +402 -0
  27. data/lib/selenium/webdriver/bidi/serialization/union.rb +156 -0
  28. data/lib/selenium/webdriver/bidi/serialization.rb +90 -0
  29. data/lib/selenium/webdriver/bidi/support/bidi_generate.rb +1420 -0
  30. data/lib/selenium/webdriver/bidi/support/check_generated.rb +63 -0
  31. data/lib/selenium/webdriver/bidi/transport.rb +57 -0
  32. data/lib/selenium/webdriver/bidi.rb +3 -0
  33. data/lib/selenium/webdriver/chrome/driver.rb +3 -3
  34. data/lib/selenium/webdriver/chrome/service.rb +4 -1
  35. data/lib/selenium/webdriver/chromium/driver.rb +0 -1
  36. data/lib/selenium/webdriver/chromium/options.rb +20 -0
  37. data/lib/selenium/webdriver/common/client_config.rb +97 -0
  38. data/lib/selenium/webdriver/common/driver.rb +13 -2
  39. data/lib/selenium/webdriver/common/driver_extensions/has_log_events.rb +0 -7
  40. data/lib/selenium/webdriver/common/driver_extensions/has_network_interception.rb +0 -7
  41. data/lib/selenium/webdriver/common/driver_finder.rb +4 -3
  42. data/lib/selenium/webdriver/common/local_driver.rb +15 -4
  43. data/lib/selenium/webdriver/common/options.rb +21 -1
  44. data/lib/selenium/webdriver/common/proxy.rb +1 -9
  45. data/lib/selenium/webdriver/common/selenium_manager.rb +2 -1
  46. data/lib/selenium/webdriver/common/takes_screenshot.rb +1 -1
  47. data/lib/selenium/webdriver/common.rb +1 -1
  48. data/lib/selenium/webdriver/edge/driver.rb +3 -3
  49. data/lib/selenium/webdriver/edge/service.rb +4 -1
  50. data/lib/selenium/webdriver/firefox/driver.rb +3 -6
  51. data/lib/selenium/webdriver/firefox/options.rb +19 -0
  52. data/lib/selenium/webdriver/firefox/profile.rb +13 -6
  53. data/lib/selenium/webdriver/ie/driver.rb +3 -3
  54. data/lib/selenium/webdriver/remote/bidi_bridge.rb +41 -9
  55. data/lib/selenium/webdriver/remote/bridge.rb +8 -10
  56. data/lib/selenium/webdriver/remote/driver.rb +14 -4
  57. data/lib/selenium/webdriver/remote/http/common.rb +25 -12
  58. data/lib/selenium/webdriver/remote/http/default.rb +56 -39
  59. data/lib/selenium/webdriver/safari/driver.rb +3 -3
  60. data/lib/selenium/webdriver/safari/options.rb +16 -1
  61. data/lib/selenium/webdriver/support/guards/guard.rb +20 -3
  62. data/lib/selenium/webdriver/support/guards.rb +9 -3
  63. data/lib/selenium/webdriver/version.rb +1 -1
  64. metadata +29 -3
@@ -0,0 +1,720 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Licensed to the Software Freedom Conservancy (SFC) under one
4
+ # or more contributor license agreements. See the NOTICE file
5
+ # distributed with this work for additional information
6
+ # regarding copyright ownership. The SFC licenses this file
7
+ # to you under the Apache License, Version 2.0 (the
8
+ # "License"); you may not use this file except in compliance
9
+ # with the License. You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing,
14
+ # software distributed under the License is distributed on an
15
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16
+ # KIND, either express or implied. See the License for the
17
+ # specific language governing permissions and limitations
18
+ # under the License.
19
+
20
+ # DO NOT EDIT! This file is generated by rb/lib/selenium/webdriver/bidi/support/bidi_generate.rb.
21
+ # Regenerate with: `bazel run //rb/lib/selenium/webdriver:bidi-generate`
22
+
23
+ module Selenium
24
+ module WebDriver
25
+ class BiDi
26
+ module Protocol
27
+ # @api private
28
+ # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/
29
+ # @see https://w3c.github.io/webdriver-bidi/#module-network
30
+ class Network < Domain
31
+ EVENTS = {
32
+ auth_required: 'network.authRequired',
33
+ before_request_sent: 'network.beforeRequestSent',
34
+ fetch_error: 'network.fetchError',
35
+ response_completed: 'network.responseCompleted',
36
+ response_started: 'network.responseStarted'
37
+ }.freeze
38
+
39
+ # @see https://w3c.github.io/webdriver-bidi/#type-network-CollectorType
40
+ COLLECTOR_TYPE = {
41
+ blob: 'blob'
42
+ }.freeze
43
+
44
+ # @see https://w3c.github.io/webdriver-bidi/#cddl-type-networksamesite
45
+ SAME_SITE = {
46
+ strict: 'strict',
47
+ lax: 'lax',
48
+ none: 'none',
49
+ default: 'default'
50
+ }.freeze
51
+
52
+ # @see https://w3c.github.io/webdriver-bidi/#type-network-dataType
53
+ DATA_TYPE = {
54
+ request: 'request',
55
+ response: 'response'
56
+ }.freeze
57
+
58
+ # @see https://w3c.github.io/webdriver-bidi/#cddl-type-networkinterceptphase
59
+ INTERCEPT_PHASE = {
60
+ before_request_sent: 'beforeRequestSent',
61
+ response_started: 'responseStarted',
62
+ auth_required: 'authRequired'
63
+ }.freeze
64
+
65
+ INITIATOR_TYPE = {
66
+ parser: 'parser',
67
+ script: 'script',
68
+ preflight: 'preflight',
69
+ other: 'other'
70
+ }.freeze
71
+
72
+ CONTINUE_WITH_AUTH_NO_CREDENTIALS_ACTION = {
73
+ default: 'default',
74
+ cancel: 'cancel'
75
+ }.freeze
76
+
77
+ SET_CACHE_BEHAVIOR_PARAMETERS_CACHE_BEHAVIOR = {
78
+ default: 'default',
79
+ bypass: 'bypass'
80
+ }.freeze
81
+
82
+ # @api private
83
+ # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/
84
+ # @see https://w3c.github.io/webdriver-bidi/#type-network-AuthChallenge
85
+ AuthChallenge = Serialization::Record.define(
86
+ scheme: {wire_key: 'scheme', primitive: 'string'},
87
+ realm: {wire_key: 'realm', primitive: 'string'}
88
+ )
89
+
90
+ # @api private
91
+ # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/
92
+ # @see https://w3c.github.io/webdriver-bidi/#type-network-AuthCredentials
93
+ AuthCredentials = Serialization::Record.define(
94
+ type: {fixed: 'password'},
95
+ username: {wire_key: 'username', primitive: 'string'},
96
+ password: {wire_key: 'password', primitive: 'string'}
97
+ )
98
+
99
+ # @api private
100
+ # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/
101
+ # @see https://w3c.github.io/webdriver-bidi/#type-network-BaseParameters
102
+ BaseParameters = Serialization::Record.define(
103
+ context: {wire_key: 'context', nullable: true, primitive: 'string'},
104
+ is_blocked: {wire_key: 'isBlocked', primitive: 'boolean'},
105
+ navigation: {wire_key: 'navigation', nullable: true, primitive: 'string'},
106
+ redirect_count: {wire_key: 'redirectCount', primitive: 'integer'},
107
+ request: {wire_key: 'request', ref: 'Network::RequestData'},
108
+ timestamp: {wire_key: 'timestamp', primitive: 'integer'},
109
+ user_context: {wire_key: 'userContext', required: false, nullable: true, primitive: 'string'},
110
+ intercepts: {wire_key: 'intercepts', required: false, list: true}
111
+ )
112
+
113
+ # @api private
114
+ # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/
115
+ # @see https://w3c.github.io/webdriver-bidi/#type-network-BytesValue
116
+ class BytesValue < Serialization::Union
117
+ discriminator 'type', {string: 'string', base64: 'base64'}
118
+ variants(
119
+ string: 'Network::StringValue',
120
+ base64: 'Network::Base64Value'
121
+ )
122
+ object_only
123
+
124
+ def self.string(**) = Network::StringValue.new(**)
125
+ def self.base64(**) = Network::Base64Value.new(**)
126
+ end
127
+
128
+ # @api private
129
+ # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/
130
+ # @see https://w3c.github.io/webdriver-bidi/#cddl-type-networkstringvalue
131
+ StringValue = Serialization::Record.define(
132
+ type: {fixed: 'string'},
133
+ value: {wire_key: 'value', primitive: 'string'}
134
+ )
135
+
136
+ # @api private
137
+ # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/
138
+ # @see https://w3c.github.io/webdriver-bidi/#cddl-type-networkbase64value
139
+ Base64Value = Serialization::Record.define(
140
+ type: {fixed: 'base64'},
141
+ value: {wire_key: 'value', primitive: 'string'}
142
+ )
143
+
144
+ # @api private
145
+ # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/
146
+ # @see https://w3c.github.io/webdriver-bidi/#type-network-Cookie
147
+ Cookie = Serialization::Record.define(
148
+ name: {wire_key: 'name', primitive: 'string'},
149
+ value: {wire_key: 'value', ref: 'Network::BytesValue'},
150
+ domain: {wire_key: 'domain', primitive: 'string'},
151
+ path: {wire_key: 'path', primitive: 'string'},
152
+ size: {wire_key: 'size', primitive: 'integer'},
153
+ http_only: {wire_key: 'httpOnly', primitive: 'boolean'},
154
+ secure: {wire_key: 'secure', primitive: 'boolean'},
155
+ same_site: {wire_key: 'sameSite', enum: 'Network::SAME_SITE'},
156
+ expiry: {wire_key: 'expiry', required: false, primitive: 'integer'},
157
+ extensible: true
158
+ )
159
+
160
+ # @api private
161
+ # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/
162
+ # @see https://w3c.github.io/webdriver-bidi/#type-network-CookieHeader
163
+ CookieHeader = Serialization::Record.define(
164
+ name: {wire_key: 'name', primitive: 'string'},
165
+ value: {wire_key: 'value', ref: 'Network::BytesValue'}
166
+ )
167
+
168
+ # @api private
169
+ # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/
170
+ # @see https://w3c.github.io/webdriver-bidi/#type-network-FetchTimingInfo
171
+ FetchTimingInfo = Serialization::Record.define(
172
+ time_origin: {wire_key: 'timeOrigin', primitive: 'number'},
173
+ request_time: {wire_key: 'requestTime', primitive: 'number'},
174
+ redirect_start: {wire_key: 'redirectStart', primitive: 'number'},
175
+ redirect_end: {wire_key: 'redirectEnd', primitive: 'number'},
176
+ fetch_start: {wire_key: 'fetchStart', primitive: 'number'},
177
+ dns_start: {wire_key: 'dnsStart', primitive: 'number'},
178
+ dns_end: {wire_key: 'dnsEnd', primitive: 'number'},
179
+ connect_start: {wire_key: 'connectStart', primitive: 'number'},
180
+ connect_end: {wire_key: 'connectEnd', primitive: 'number'},
181
+ tls_start: {wire_key: 'tlsStart', primitive: 'number'},
182
+ request_start: {wire_key: 'requestStart', primitive: 'number'},
183
+ response_start: {wire_key: 'responseStart', primitive: 'number'},
184
+ response_end: {wire_key: 'responseEnd', primitive: 'number'}
185
+ )
186
+
187
+ # @api private
188
+ # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/
189
+ # @see https://w3c.github.io/webdriver-bidi/#type-network-Header
190
+ Header = Serialization::Record.define(
191
+ name: {wire_key: 'name', primitive: 'string'},
192
+ value: {wire_key: 'value', ref: 'Network::BytesValue'}
193
+ )
194
+
195
+ # @api private
196
+ # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/
197
+ # @see https://w3c.github.io/webdriver-bidi/#type-network-Initiator
198
+ Initiator = Serialization::Record.define(
199
+ column_number: {wire_key: 'columnNumber', required: false, primitive: 'integer'},
200
+ line_number: {wire_key: 'lineNumber', required: false, primitive: 'integer'},
201
+ request: {wire_key: 'request', required: false, primitive: 'string'},
202
+ stack_trace: {wire_key: 'stackTrace', required: false, ref: 'Script::StackTrace'},
203
+ type: {wire_key: 'type', required: false, enum: 'Network::INITIATOR_TYPE'}
204
+ )
205
+
206
+ # @api private
207
+ # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/
208
+ # @see https://w3c.github.io/webdriver-bidi/#type-network-RequestData
209
+ RequestData = Serialization::Record.define(
210
+ request: {wire_key: 'request', primitive: 'string'},
211
+ url: {wire_key: 'url', primitive: 'string'},
212
+ method_: {wire_key: 'method', primitive: 'string'},
213
+ headers: {wire_key: 'headers', ref: 'Network::Header', list: true},
214
+ cookies: {wire_key: 'cookies', ref: 'Network::Cookie', list: true},
215
+ headers_size: {wire_key: 'headersSize', primitive: 'integer'},
216
+ body_size: {wire_key: 'bodySize', nullable: true, primitive: 'integer'},
217
+ destination: {wire_key: 'destination', primitive: 'string'},
218
+ initiator_type: {wire_key: 'initiatorType', nullable: true, primitive: 'string'},
219
+ timings: {wire_key: 'timings', ref: 'Network::FetchTimingInfo'}
220
+ )
221
+
222
+ # @api private
223
+ # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/
224
+ # @see https://w3c.github.io/webdriver-bidi/#type-network-ResponseContent
225
+ ResponseContent = Serialization::Record.define(size: {wire_key: 'size', primitive: 'integer'})
226
+
227
+ # @api private
228
+ # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/
229
+ # @see https://w3c.github.io/webdriver-bidi/#type-network-ResponseData
230
+ ResponseData = Serialization::Record.define(
231
+ url: {wire_key: 'url', primitive: 'string'},
232
+ protocol: {wire_key: 'protocol', primitive: 'string'},
233
+ status: {wire_key: 'status', primitive: 'integer'},
234
+ status_text: {wire_key: 'statusText', primitive: 'string'},
235
+ from_cache: {wire_key: 'fromCache', primitive: 'boolean'},
236
+ headers: {wire_key: 'headers', ref: 'Network::Header', list: true},
237
+ mime_type: {wire_key: 'mimeType', primitive: 'string'},
238
+ bytes_received: {wire_key: 'bytesReceived', primitive: 'integer'},
239
+ headers_size: {wire_key: 'headersSize', nullable: true, primitive: 'integer'},
240
+ body_size: {wire_key: 'bodySize', nullable: true, primitive: 'integer'},
241
+ content: {wire_key: 'content', ref: 'Network::ResponseContent'},
242
+ auth_challenges: {wire_key: 'authChallenges', required: false, ref: 'Network::AuthChallenge', list: true}
243
+ )
244
+
245
+ # @api private
246
+ # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/
247
+ # @see https://w3c.github.io/webdriver-bidi/#type-network-SetCookieHeader
248
+ SetCookieHeader = Serialization::Record.define(
249
+ name: {wire_key: 'name', primitive: 'string'},
250
+ value: {wire_key: 'value', ref: 'Network::BytesValue'},
251
+ domain: {wire_key: 'domain', required: false, primitive: 'string'},
252
+ http_only: {wire_key: 'httpOnly', required: false, primitive: 'boolean'},
253
+ expiry: {wire_key: 'expiry', required: false, primitive: 'string'},
254
+ max_age: {wire_key: 'maxAge', required: false, primitive: 'integer'},
255
+ path: {wire_key: 'path', required: false, primitive: 'string'},
256
+ same_site: {wire_key: 'sameSite', required: false, enum: 'Network::SAME_SITE'},
257
+ secure: {wire_key: 'secure', required: false, primitive: 'boolean'}
258
+ )
259
+
260
+ # @api private
261
+ # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/
262
+ # @see https://w3c.github.io/webdriver-bidi/#type-network-UrlPattern
263
+ class UrlPattern < Serialization::Union
264
+ discriminator 'type', {pattern: 'pattern', string: 'string'}
265
+ variants(
266
+ pattern: 'Network::UrlPatternPattern',
267
+ string: 'Network::UrlPatternString'
268
+ )
269
+ object_only
270
+
271
+ def self.pattern(**) = Network::UrlPatternPattern.new(**)
272
+ def self.string(**) = Network::UrlPatternString.new(**)
273
+ end
274
+
275
+ # @api private
276
+ # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/
277
+ # @see https://w3c.github.io/webdriver-bidi/#cddl-type-networkurlpatternpattern
278
+ UrlPatternPattern = Serialization::Record.define(
279
+ type: {fixed: 'pattern'},
280
+ protocol: {wire_key: 'protocol', required: false, primitive: 'string'},
281
+ hostname: {wire_key: 'hostname', required: false, primitive: 'string'},
282
+ port: {wire_key: 'port', required: false, primitive: 'string'},
283
+ pathname: {wire_key: 'pathname', required: false, primitive: 'string'},
284
+ search: {wire_key: 'search', required: false, primitive: 'string'}
285
+ )
286
+
287
+ # @api private
288
+ # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/
289
+ # @see https://w3c.github.io/webdriver-bidi/#cddl-type-networkurlpatternstring
290
+ UrlPatternString = Serialization::Record.define(
291
+ type: {fixed: 'string'},
292
+ pattern: {wire_key: 'pattern', primitive: 'string'}
293
+ )
294
+
295
+ # @api private
296
+ # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/
297
+ # @see https://w3c.github.io/webdriver-bidi/#cddl-type-networkadddatacollectorparameters
298
+ AddDataCollectorParameters = Serialization::Record.define(
299
+ data_types: {wire_key: 'dataTypes', list: true, enum: 'Network::DATA_TYPE'},
300
+ max_encoded_data_size: {wire_key: 'maxEncodedDataSize', primitive: 'integer'},
301
+ collector_type: {wire_key: 'collectorType', required: false, enum: 'Network::COLLECTOR_TYPE'},
302
+ contexts: {wire_key: 'contexts', required: false, list: true},
303
+ user_contexts: {wire_key: 'userContexts', required: false, list: true}
304
+ )
305
+
306
+ # @api private
307
+ # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/
308
+ # @see https://w3c.github.io/webdriver-bidi/#cddl-type-networkadddatacollectorresult
309
+ AddDataCollectorResult = Serialization::Record.define(collector: {wire_key: 'collector', primitive: 'string'})
310
+
311
+ # @api private
312
+ # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/
313
+ # @see https://w3c.github.io/webdriver-bidi/#cddl-type-networkaddinterceptparameters
314
+ AddInterceptParameters = Serialization::Record.define(
315
+ phases: {wire_key: 'phases', list: true, enum: 'Network::INTERCEPT_PHASE'},
316
+ contexts: {wire_key: 'contexts', required: false, list: true},
317
+ url_patterns: {wire_key: 'urlPatterns', required: false, ref: 'Network::UrlPattern', list: true}
318
+ )
319
+
320
+ # @api private
321
+ # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/
322
+ # @see https://w3c.github.io/webdriver-bidi/#cddl-type-networkaddinterceptresult
323
+ AddInterceptResult = Serialization::Record.define(intercept: {wire_key: 'intercept', primitive: 'string'})
324
+
325
+ # @api private
326
+ # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/
327
+ # @see https://w3c.github.io/webdriver-bidi/#cddl-type-networkcontinuerequestparameters
328
+ ContinueRequestParameters = Serialization::Record.define(
329
+ request: {wire_key: 'request', primitive: 'string'},
330
+ body: {wire_key: 'body', required: false, ref: 'Network::BytesValue'},
331
+ cookies: {wire_key: 'cookies', required: false, ref: 'Network::CookieHeader', list: true},
332
+ headers: {wire_key: 'headers', required: false, ref: 'Network::Header', list: true},
333
+ method_: {wire_key: 'method', required: false, primitive: 'string'},
334
+ url: {wire_key: 'url', required: false, primitive: 'string'}
335
+ )
336
+
337
+ # @api private
338
+ # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/
339
+ # @see https://w3c.github.io/webdriver-bidi/#cddl-type-networkcontinueresponseparameters
340
+ ContinueResponseParameters = Serialization::Record.define(
341
+ request: {wire_key: 'request', primitive: 'string'},
342
+ cookies: {wire_key: 'cookies', required: false, ref: 'Network::SetCookieHeader', list: true},
343
+ credentials: {wire_key: 'credentials', required: false, ref: 'Network::AuthCredentials'},
344
+ headers: {wire_key: 'headers', required: false, ref: 'Network::Header', list: true},
345
+ reason_phrase: {wire_key: 'reasonPhrase', required: false, primitive: 'string'},
346
+ status_code: {wire_key: 'statusCode', required: false, primitive: 'integer'}
347
+ )
348
+
349
+ # @api private
350
+ # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/
351
+ # @see https://w3c.github.io/webdriver-bidi/#cddl-type-networkcontinuewithauthparameters
352
+ class ContinueWithAuthParameters < Serialization::Union
353
+ discriminator 'action', {provide_credentials: 'provideCredentials'}
354
+ variants(
355
+ provide_credentials: 'Network::ContinueWithAuthParameters::Credentials'
356
+ )
357
+ fallback 'Network::ContinueWithAuthParameters::NoCredentials'
358
+ object_only
359
+
360
+ # @api private
361
+ # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/
362
+ Credentials = Serialization::Record.define(
363
+ action: {fixed: 'provideCredentials'},
364
+ request: {wire_key: 'request', primitive: 'string'},
365
+ credentials: {wire_key: 'credentials', ref: 'Network::AuthCredentials'}
366
+ )
367
+
368
+ # @api private
369
+ # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/
370
+ NoCredentials = Serialization::Record.define(
371
+ request: {wire_key: 'request', primitive: 'string'},
372
+ action: {wire_key: 'action', enum: 'Network::CONTINUE_WITH_AUTH_NO_CREDENTIALS_ACTION'}
373
+ )
374
+
375
+ def self.provide_credentials(**) = Network::ContinueWithAuthParameters::Credentials.new(**)
376
+ end
377
+
378
+ # @api private
379
+ # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/
380
+ # @see https://w3c.github.io/webdriver-bidi/#cddl-type-networkdisowndataparameters
381
+ DisownDataParameters = Serialization::Record.define(
382
+ data_type: {wire_key: 'dataType', enum: 'Network::DATA_TYPE'},
383
+ collector: {wire_key: 'collector', primitive: 'string'},
384
+ request: {wire_key: 'request', primitive: 'string'}
385
+ )
386
+
387
+ # @api private
388
+ # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/
389
+ # @see https://w3c.github.io/webdriver-bidi/#cddl-type-networkfailrequestparameters
390
+ FailRequestParameters = Serialization::Record.define(request: {wire_key: 'request', primitive: 'string'})
391
+
392
+ # @api private
393
+ # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/
394
+ # @see https://w3c.github.io/webdriver-bidi/#cddl-type-networkgetdataparameters
395
+ GetDataParameters = Serialization::Record.define(
396
+ data_type: {wire_key: 'dataType', enum: 'Network::DATA_TYPE'},
397
+ collector: {wire_key: 'collector', required: false, primitive: 'string'},
398
+ disown: {wire_key: 'disown', required: false, primitive: 'boolean'},
399
+ request: {wire_key: 'request', primitive: 'string'}
400
+ )
401
+
402
+ # @api private
403
+ # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/
404
+ # @see https://w3c.github.io/webdriver-bidi/#cddl-type-networkgetdataresult
405
+ GetDataResult = Serialization::Record.define(bytes: {wire_key: 'bytes', ref: 'Network::BytesValue'})
406
+
407
+ # @api private
408
+ # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/
409
+ # @see https://w3c.github.io/webdriver-bidi/#cddl-type-networkprovideresponseparameters
410
+ ProvideResponseParameters = Serialization::Record.define(
411
+ request: {wire_key: 'request', primitive: 'string'},
412
+ body: {wire_key: 'body', required: false, ref: 'Network::BytesValue'},
413
+ cookies: {wire_key: 'cookies', required: false, ref: 'Network::SetCookieHeader', list: true},
414
+ headers: {wire_key: 'headers', required: false, ref: 'Network::Header', list: true},
415
+ reason_phrase: {wire_key: 'reasonPhrase', required: false, primitive: 'string'},
416
+ status_code: {wire_key: 'statusCode', required: false, primitive: 'integer'}
417
+ )
418
+
419
+ # @api private
420
+ # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/
421
+ # @see https://w3c.github.io/webdriver-bidi/#cddl-type-networkremovedatacollectorparameters
422
+ RemoveDataCollectorParameters = Serialization::Record.define(
423
+ collector: {wire_key: 'collector', primitive: 'string'}
424
+ )
425
+
426
+ # @api private
427
+ # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/
428
+ # @see https://w3c.github.io/webdriver-bidi/#cddl-type-networkremoveinterceptparameters
429
+ RemoveInterceptParameters = Serialization::Record.define(
430
+ intercept: {wire_key: 'intercept', primitive: 'string'}
431
+ )
432
+
433
+ # @api private
434
+ # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/
435
+ # @see https://w3c.github.io/webdriver-bidi/#cddl-type-networksetcachebehaviorparameters
436
+ SetCacheBehaviorParameters = Serialization::Record.define(
437
+ cache_behavior: {wire_key: 'cacheBehavior', enum: 'Network::SET_CACHE_BEHAVIOR_PARAMETERS_CACHE_BEHAVIOR'},
438
+ contexts: {wire_key: 'contexts', required: false, list: true}
439
+ )
440
+
441
+ # @api private
442
+ # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/
443
+ # @see https://w3c.github.io/webdriver-bidi/#cddl-type-networksetextraheadersparameters
444
+ SetExtraHeadersParameters = Serialization::Record.define(
445
+ headers: {wire_key: 'headers', ref: 'Network::Header', list: true},
446
+ contexts: {wire_key: 'contexts', required: false, list: true},
447
+ user_contexts: {wire_key: 'userContexts', required: false, list: true}
448
+ )
449
+
450
+ # @api private
451
+ # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/
452
+ # @see https://w3c.github.io/webdriver-bidi/#cddl-type-networkauthrequiredparameters
453
+ AuthRequiredParameters = Serialization::Record.define(
454
+ context: {wire_key: 'context', nullable: true, primitive: 'string'},
455
+ is_blocked: {wire_key: 'isBlocked', primitive: 'boolean'},
456
+ navigation: {wire_key: 'navigation', nullable: true, primitive: 'string'},
457
+ redirect_count: {wire_key: 'redirectCount', primitive: 'integer'},
458
+ request: {wire_key: 'request', ref: 'Network::RequestData'},
459
+ timestamp: {wire_key: 'timestamp', primitive: 'integer'},
460
+ user_context: {wire_key: 'userContext', required: false, nullable: true, primitive: 'string'},
461
+ intercepts: {wire_key: 'intercepts', required: false, list: true},
462
+ response: {wire_key: 'response', ref: 'Network::ResponseData'}
463
+ )
464
+
465
+ # @api private
466
+ # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/
467
+ # @see https://w3c.github.io/webdriver-bidi/#cddl-type-networkbeforerequestsentparameters
468
+ BeforeRequestSentParameters = Serialization::Record.define(
469
+ context: {wire_key: 'context', nullable: true, primitive: 'string'},
470
+ is_blocked: {wire_key: 'isBlocked', primitive: 'boolean'},
471
+ navigation: {wire_key: 'navigation', nullable: true, primitive: 'string'},
472
+ redirect_count: {wire_key: 'redirectCount', primitive: 'integer'},
473
+ request: {wire_key: 'request', ref: 'Network::RequestData'},
474
+ timestamp: {wire_key: 'timestamp', primitive: 'integer'},
475
+ user_context: {wire_key: 'userContext', required: false, nullable: true, primitive: 'string'},
476
+ intercepts: {wire_key: 'intercepts', required: false, list: true},
477
+ initiator: {wire_key: 'initiator', required: false, ref: 'Network::Initiator'}
478
+ )
479
+
480
+ # @api private
481
+ # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/
482
+ # @see https://w3c.github.io/webdriver-bidi/#cddl-type-networkfetcherrorparameters
483
+ FetchErrorParameters = Serialization::Record.define(
484
+ context: {wire_key: 'context', nullable: true, primitive: 'string'},
485
+ is_blocked: {wire_key: 'isBlocked', primitive: 'boolean'},
486
+ navigation: {wire_key: 'navigation', nullable: true, primitive: 'string'},
487
+ redirect_count: {wire_key: 'redirectCount', primitive: 'integer'},
488
+ request: {wire_key: 'request', ref: 'Network::RequestData'},
489
+ timestamp: {wire_key: 'timestamp', primitive: 'integer'},
490
+ user_context: {wire_key: 'userContext', required: false, nullable: true, primitive: 'string'},
491
+ intercepts: {wire_key: 'intercepts', required: false, list: true},
492
+ error_text: {wire_key: 'errorText', primitive: 'string'}
493
+ )
494
+
495
+ # @api private
496
+ # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/
497
+ # @see https://w3c.github.io/webdriver-bidi/#cddl-type-networkresponsecompletedparameters
498
+ ResponseCompletedParameters = Serialization::Record.define(
499
+ context: {wire_key: 'context', nullable: true, primitive: 'string'},
500
+ is_blocked: {wire_key: 'isBlocked', primitive: 'boolean'},
501
+ navigation: {wire_key: 'navigation', nullable: true, primitive: 'string'},
502
+ redirect_count: {wire_key: 'redirectCount', primitive: 'integer'},
503
+ request: {wire_key: 'request', ref: 'Network::RequestData'},
504
+ timestamp: {wire_key: 'timestamp', primitive: 'integer'},
505
+ user_context: {wire_key: 'userContext', required: false, nullable: true, primitive: 'string'},
506
+ intercepts: {wire_key: 'intercepts', required: false, list: true},
507
+ response: {wire_key: 'response', ref: 'Network::ResponseData'}
508
+ )
509
+
510
+ # @api private
511
+ # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/
512
+ # @see https://w3c.github.io/webdriver-bidi/#cddl-type-networkresponsestartedparameters
513
+ ResponseStartedParameters = Serialization::Record.define(
514
+ context: {wire_key: 'context', nullable: true, primitive: 'string'},
515
+ is_blocked: {wire_key: 'isBlocked', primitive: 'boolean'},
516
+ navigation: {wire_key: 'navigation', nullable: true, primitive: 'string'},
517
+ redirect_count: {wire_key: 'redirectCount', primitive: 'integer'},
518
+ request: {wire_key: 'request', ref: 'Network::RequestData'},
519
+ timestamp: {wire_key: 'timestamp', primitive: 'integer'},
520
+ user_context: {wire_key: 'userContext', required: false, nullable: true, primitive: 'string'},
521
+ intercepts: {wire_key: 'intercepts', required: false, list: true},
522
+ response: {wire_key: 'response', ref: 'Network::ResponseData'}
523
+ )
524
+
525
+ EVENT_TYPES = {
526
+ 'network.authRequired' => Network::AuthRequiredParameters,
527
+ 'network.beforeRequestSent' => Network::BeforeRequestSentParameters,
528
+ 'network.fetchError' => Network::FetchErrorParameters,
529
+ 'network.responseCompleted' => Network::ResponseCompletedParameters,
530
+ 'network.responseStarted' => Network::ResponseStartedParameters
531
+ }.freeze
532
+
533
+ def auth_credentials(**) = AuthCredentials.new(**)
534
+ def bytes_value = BytesValue
535
+ def string_value(**) = StringValue.new(**)
536
+ def base64_value(**) = Base64Value.new(**)
537
+ def cookie_header(**) = CookieHeader.new(**)
538
+ def header(**) = Header.new(**)
539
+ def set_cookie_header(**) = SetCookieHeader.new(**)
540
+ def url_pattern = UrlPattern
541
+ def url_pattern_pattern(**) = UrlPatternPattern.new(**)
542
+ def url_pattern_string(**) = UrlPatternString.new(**)
543
+
544
+ # @api private
545
+ # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/
546
+ # @see https://w3c.github.io/webdriver-bidi/#command-network-addDataCollector
547
+ def add_data_collector(
548
+ data_types:,
549
+ max_encoded_data_size:,
550
+ collector_type: Serialization::UNSET,
551
+ contexts: Serialization::UNSET,
552
+ user_contexts: Serialization::UNSET
553
+ )
554
+ Serialization.validate!('dataTypes', data_types, Network::DATA_TYPE)
555
+ Serialization.validate!('collectorType', collector_type, Network::COLLECTOR_TYPE)
556
+ params = AddDataCollectorParameters.new(
557
+ data_types: data_types,
558
+ max_encoded_data_size: max_encoded_data_size,
559
+ collector_type: collector_type,
560
+ contexts: contexts,
561
+ user_contexts: user_contexts
562
+ )
563
+ execute(cmd: 'network.addDataCollector', params: params, result: Network::AddDataCollectorResult)
564
+ end
565
+
566
+ # @api private
567
+ # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/
568
+ # @see https://w3c.github.io/webdriver-bidi/#command-network-addIntercept
569
+ def add_intercept(phases:, contexts: Serialization::UNSET, url_patterns: Serialization::UNSET)
570
+ Serialization.validate!('phases', phases, Network::INTERCEPT_PHASE)
571
+ params = AddInterceptParameters.new(phases: phases, contexts: contexts, url_patterns: url_patterns)
572
+ execute(cmd: 'network.addIntercept', params: params, result: Network::AddInterceptResult)
573
+ end
574
+
575
+ # @api private
576
+ # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/
577
+ # @see https://w3c.github.io/webdriver-bidi/#command-network-continueRequest
578
+ def continue_request(
579
+ request:,
580
+ body: Serialization::UNSET,
581
+ cookies: Serialization::UNSET,
582
+ headers: Serialization::UNSET,
583
+ method_: Serialization::UNSET,
584
+ url: Serialization::UNSET
585
+ )
586
+ params = ContinueRequestParameters.new(
587
+ request: request,
588
+ body: body,
589
+ cookies: cookies,
590
+ headers: headers,
591
+ method_: method_,
592
+ url: url
593
+ )
594
+ execute(cmd: 'network.continueRequest', params: params)
595
+ end
596
+
597
+ # @api private
598
+ # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/
599
+ # @see https://w3c.github.io/webdriver-bidi/#command-network-continueResponse
600
+ def continue_response(
601
+ request:,
602
+ cookies: Serialization::UNSET,
603
+ credentials: Serialization::UNSET,
604
+ headers: Serialization::UNSET,
605
+ reason_phrase: Serialization::UNSET,
606
+ status_code: Serialization::UNSET
607
+ )
608
+ params = ContinueResponseParameters.new(
609
+ request: request,
610
+ cookies: cookies,
611
+ credentials: credentials,
612
+ headers: headers,
613
+ reason_phrase: reason_phrase,
614
+ status_code: status_code
615
+ )
616
+ execute(cmd: 'network.continueResponse', params: params)
617
+ end
618
+
619
+ # @api private
620
+ # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/
621
+ # @see https://w3c.github.io/webdriver-bidi/#command-network-continueWithAuth
622
+ def continue_with_auth(request:, action:, credentials: Serialization::UNSET)
623
+ Serialization.validate!(
624
+ 'action',
625
+ action,
626
+ {provide_credentials: 'provideCredentials', default: 'default', cancel: 'cancel'}
627
+ )
628
+ params = ContinueWithAuthParameters.build(request: request, action: action, credentials: credentials)
629
+ execute(cmd: 'network.continueWithAuth', params: params)
630
+ end
631
+
632
+ # @api private
633
+ # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/
634
+ # @see https://w3c.github.io/webdriver-bidi/#command-network-disownData
635
+ def disown_data(data_type:, collector:, request:)
636
+ Serialization.validate!('dataType', data_type, Network::DATA_TYPE)
637
+ params = DisownDataParameters.new(data_type: data_type, collector: collector, request: request)
638
+ execute(cmd: 'network.disownData', params: params)
639
+ end
640
+
641
+ # @api private
642
+ # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/
643
+ # @see https://w3c.github.io/webdriver-bidi/#command-network-failRequest
644
+ def fail_request(request:)
645
+ params = FailRequestParameters.new(request: request)
646
+ execute(cmd: 'network.failRequest', params: params)
647
+ end
648
+
649
+ # @api private
650
+ # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/
651
+ # @see https://w3c.github.io/webdriver-bidi/#command-network-getData
652
+ def get_data(data_type:, request:, collector: Serialization::UNSET, disown: Serialization::UNSET)
653
+ Serialization.validate!('dataType', data_type, Network::DATA_TYPE)
654
+ params = GetDataParameters.new(data_type: data_type, collector: collector, disown: disown, request: request)
655
+ execute(cmd: 'network.getData', params: params, result: Network::GetDataResult)
656
+ end
657
+
658
+ # @api private
659
+ # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/
660
+ # @see https://w3c.github.io/webdriver-bidi/#command-network-provideResponse
661
+ def provide_response(
662
+ request:,
663
+ body: Serialization::UNSET,
664
+ cookies: Serialization::UNSET,
665
+ headers: Serialization::UNSET,
666
+ reason_phrase: Serialization::UNSET,
667
+ status_code: Serialization::UNSET
668
+ )
669
+ params = ProvideResponseParameters.new(
670
+ request: request,
671
+ body: body,
672
+ cookies: cookies,
673
+ headers: headers,
674
+ reason_phrase: reason_phrase,
675
+ status_code: status_code
676
+ )
677
+ execute(cmd: 'network.provideResponse', params: params)
678
+ end
679
+
680
+ # @api private
681
+ # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/
682
+ # @see https://w3c.github.io/webdriver-bidi/#command-network-removeDataCollector
683
+ def remove_data_collector(collector:)
684
+ params = RemoveDataCollectorParameters.new(collector: collector)
685
+ execute(cmd: 'network.removeDataCollector', params: params)
686
+ end
687
+
688
+ # @api private
689
+ # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/
690
+ # @see https://w3c.github.io/webdriver-bidi/#command-network-removeIntercept
691
+ def remove_intercept(intercept:)
692
+ params = RemoveInterceptParameters.new(intercept: intercept)
693
+ execute(cmd: 'network.removeIntercept', params: params)
694
+ end
695
+
696
+ # @api private
697
+ # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/
698
+ # @see https://w3c.github.io/webdriver-bidi/#command-network-setCacheBehavior
699
+ def set_cache_behavior(cache_behavior:, contexts: Serialization::UNSET)
700
+ Serialization.validate!(
701
+ 'cacheBehavior',
702
+ cache_behavior,
703
+ Network::SET_CACHE_BEHAVIOR_PARAMETERS_CACHE_BEHAVIOR
704
+ )
705
+ params = SetCacheBehaviorParameters.new(cache_behavior: cache_behavior, contexts: contexts)
706
+ execute(cmd: 'network.setCacheBehavior', params: params)
707
+ end
708
+
709
+ # @api private
710
+ # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/
711
+ # @see https://w3c.github.io/webdriver-bidi/#command-network-setExtraHeaders
712
+ def set_extra_headers(headers:, contexts: Serialization::UNSET, user_contexts: Serialization::UNSET)
713
+ params = SetExtraHeadersParameters.new(headers: headers, contexts: contexts, user_contexts: user_contexts)
714
+ execute(cmd: 'network.setExtraHeaders', params: params)
715
+ end
716
+ end # Network
717
+ end # Protocol
718
+ end # BiDi
719
+ end # WebDriver
720
+ end # Selenium