puppeteer-bidi 0.0.7 → 0.0.8
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.
- checksums.yaml +4 -4
- data/lib/puppeteer/bidi/browser.rb +25 -18
- data/lib/puppeteer/bidi/browser_context.rb +6 -3
- data/lib/puppeteer/bidi/browser_launcher.rb +1 -1
- data/lib/puppeteer/bidi/connection.rb +9 -4
- data/lib/puppeteer/bidi/core/event_emitter.rb +10 -5
- data/lib/puppeteer/bidi/page.rb +19 -18
- data/lib/puppeteer/bidi/transport.rb +1 -3
- data/lib/puppeteer/bidi/version.rb +1 -1
- data/sig/puppeteer/bidi/browser.rbs +6 -6
- data/sig/puppeteer/bidi/browser_context.rbs +6 -6
- data/sig/puppeteer/bidi/connection.rbs +4 -4
- data/sig/puppeteer/bidi/core/event_emitter.rbs +6 -6
- data/sig/puppeteer/bidi/page.rbs +8 -6
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 4d4180fa84d0b98325b3d8cddd680e4210cf40465addf4d0e12f366e95e51ba2
|
|
4
|
+
data.tar.gz: d6cc60b73af37fbe80bedec148ad6629d55dbf4237caf8d007cb86abcbf11839
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 90d9023d9a7b7c3d3c5efeba254889f913ae5569dc624102d6c0d312e3e92c33909f8e72fcb6f7c6092efac11080869376180f2c72ee750c5a014f1cb9e6a5ec
|
|
7
|
+
data.tar.gz: 81509cc86f61d0eeca316b69eb7b8dfec65e731df00163f5aafa0b44945630624d6c994993e27799e2c698b6b24d19f846f2247ecae7b1e0e020af069bdcc50f
|
|
@@ -92,7 +92,6 @@ module Puppeteer
|
|
|
92
92
|
|
|
93
93
|
# Create transport and connection
|
|
94
94
|
transport = Transport.new(ws_endpoint)
|
|
95
|
-
ws_endpoint = transport.url
|
|
96
95
|
|
|
97
96
|
# Start transport connection in background thread with Sync reactor
|
|
98
97
|
# Sync is the preferred way to run async code at the top level
|
|
@@ -114,7 +113,6 @@ module Puppeteer
|
|
|
114
113
|
# @rbs return: Browser -- Browser instance
|
|
115
114
|
def self.connect(ws_endpoint, timeout: nil, accept_insecure_certs: false)
|
|
116
115
|
transport = Transport.new(ws_endpoint)
|
|
117
|
-
ws_endpoint = transport.url
|
|
118
116
|
timeout_ms = ((timeout || 30) * 1000).to_i
|
|
119
117
|
AsyncUtils.async_timeout(timeout_ms) { transport.connect }.wait
|
|
120
118
|
connection = Connection.new(transport)
|
|
@@ -260,36 +258,45 @@ module Puppeteer
|
|
|
260
258
|
# Register event handler
|
|
261
259
|
# @rbs event: String | Symbol -- Event name
|
|
262
260
|
# @rbs &block: (untyped) -> void -- Event handler
|
|
263
|
-
# @rbs return:
|
|
261
|
+
# @rbs return: Browser -- This browser
|
|
264
262
|
def on(event, &block)
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
263
|
+
if TARGET_EVENTS.include?(event.to_sym)
|
|
264
|
+
@emitter.on(event, &block)
|
|
265
|
+
else
|
|
266
|
+
@connection.on(event, &block)
|
|
267
|
+
end
|
|
268
|
+
self
|
|
268
269
|
end
|
|
269
270
|
|
|
270
271
|
# Register a one-time event handler
|
|
271
272
|
# @rbs event: String | Symbol -- Event name
|
|
272
273
|
# @rbs &block: (untyped) -> void -- Event handler
|
|
273
|
-
# @rbs return:
|
|
274
|
+
# @rbs return: Browser -- This browser
|
|
274
275
|
def once(event, &block)
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
276
|
+
if TARGET_EVENTS.include?(event.to_sym)
|
|
277
|
+
@emitter.once(event, &block)
|
|
278
|
+
else
|
|
279
|
+
# @type var wrapper: ^(untyped) -> void
|
|
280
|
+
wrapper = proc do |data|
|
|
281
|
+
@connection.off(event, &wrapper)
|
|
282
|
+
block.call(data)
|
|
283
|
+
end
|
|
284
|
+
@connection.on(event, &wrapper)
|
|
281
285
|
end
|
|
282
|
-
|
|
286
|
+
self
|
|
283
287
|
end
|
|
284
288
|
|
|
285
289
|
# Remove an event handler
|
|
286
290
|
# @rbs event: String | Symbol -- Event name
|
|
287
291
|
# @rbs &block: ((untyped) -> void)? -- Event handler to remove
|
|
288
|
-
# @rbs return:
|
|
292
|
+
# @rbs return: Browser -- This browser
|
|
289
293
|
def off(event, &block)
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
294
|
+
if TARGET_EVENTS.include?(event.to_sym)
|
|
295
|
+
@emitter.off(event, &block)
|
|
296
|
+
else
|
|
297
|
+
@connection.off(event, &block)
|
|
298
|
+
end
|
|
299
|
+
self
|
|
293
300
|
end
|
|
294
301
|
|
|
295
302
|
# Close the browser
|
|
@@ -54,25 +54,28 @@ module Puppeteer
|
|
|
54
54
|
# Register an event listener
|
|
55
55
|
# @rbs event: Symbol | String -- Event name
|
|
56
56
|
# @rbs &block: (untyped) -> void -- Event handler
|
|
57
|
-
# @rbs return:
|
|
57
|
+
# @rbs return: BrowserContext -- This browser context
|
|
58
58
|
def on(event, &block)
|
|
59
59
|
@emitter.on(event, &block)
|
|
60
|
+
self
|
|
60
61
|
end
|
|
61
62
|
|
|
62
63
|
# Register a one-time event listener
|
|
63
64
|
# @rbs event: Symbol | String -- Event name
|
|
64
65
|
# @rbs &block: (untyped) -> void -- Event handler
|
|
65
|
-
# @rbs return:
|
|
66
|
+
# @rbs return: BrowserContext -- This browser context
|
|
66
67
|
def once(event, &block)
|
|
67
68
|
@emitter.once(event, &block)
|
|
69
|
+
self
|
|
68
70
|
end
|
|
69
71
|
|
|
70
72
|
# Remove an event listener
|
|
71
73
|
# @rbs event: Symbol | String -- Event name
|
|
72
74
|
# @rbs &block: ((untyped) -> void)? -- Event handler to remove
|
|
73
|
-
# @rbs return:
|
|
75
|
+
# @rbs return: BrowserContext -- This browser context
|
|
74
76
|
def off(event, &block)
|
|
75
77
|
@emitter.off(event, &block)
|
|
78
|
+
self
|
|
76
79
|
end
|
|
77
80
|
|
|
78
81
|
# Create a new page (tab/window)
|
|
@@ -84,33 +84,38 @@ module Puppeteer
|
|
|
84
84
|
raise ProtocolError, "Protocol Error. Unexpected BiDi message type: #{result['type'].inspect}"
|
|
85
85
|
end
|
|
86
86
|
rescue Async::TimeoutError
|
|
87
|
-
@pending_commands.delete(id)
|
|
88
87
|
raise TimeoutError, "Timeout waiting for #{method} (#{timeout}ms)"
|
|
89
88
|
end
|
|
89
|
+
ensure
|
|
90
|
+
# A send that raises, an encoding failure for instance, would otherwise leave
|
|
91
|
+
# the command and its promise pending for the life of the connection.
|
|
92
|
+
@pending_commands.delete(id)
|
|
90
93
|
end
|
|
91
94
|
end
|
|
92
95
|
|
|
93
96
|
# Subscribe to BiDi events
|
|
94
97
|
# @rbs event: String
|
|
95
98
|
# @rbs &block: (untyped) -> void
|
|
96
|
-
# @rbs return:
|
|
99
|
+
# @rbs return: Connection -- This connection
|
|
97
100
|
def on(event, &block)
|
|
98
101
|
@event_listeners[event] ||= []
|
|
99
102
|
@event_listeners[event] << block
|
|
103
|
+
self
|
|
100
104
|
end
|
|
101
105
|
|
|
102
106
|
# Unsubscribe from BiDi events
|
|
103
107
|
# @rbs event: String
|
|
104
108
|
# @rbs &block: ((untyped) -> void)?
|
|
105
|
-
# @rbs return:
|
|
109
|
+
# @rbs return: Connection -- This connection
|
|
106
110
|
def off(event, &block)
|
|
107
|
-
return unless @event_listeners[event]
|
|
111
|
+
return self unless @event_listeners[event]
|
|
108
112
|
|
|
109
113
|
if block
|
|
110
114
|
@event_listeners[event].delete(block)
|
|
111
115
|
else
|
|
112
116
|
@event_listeners.delete(event)
|
|
113
117
|
end
|
|
118
|
+
self
|
|
114
119
|
end
|
|
115
120
|
|
|
116
121
|
# Close the connection
|
|
@@ -16,29 +16,33 @@ module Puppeteer
|
|
|
16
16
|
# Register an event listener
|
|
17
17
|
# @rbs event: Symbol | String -- Event name
|
|
18
18
|
# @rbs &block: (untyped) -> void -- Event handler
|
|
19
|
-
# @rbs return:
|
|
19
|
+
# @rbs return: EventEmitter -- This event emitter
|
|
20
20
|
def on(event, &block)
|
|
21
|
-
return if @disposed
|
|
21
|
+
return self if @disposed
|
|
22
|
+
|
|
22
23
|
@listeners[event.to_sym] << block
|
|
24
|
+
self
|
|
23
25
|
end
|
|
24
26
|
|
|
25
27
|
# Register a one-time event listener
|
|
26
28
|
# @rbs event: Symbol | String -- Event name
|
|
27
29
|
# @rbs &block: (untyped) -> void -- Event handler
|
|
28
|
-
# @rbs return:
|
|
30
|
+
# @rbs return: EventEmitter -- This event emitter
|
|
29
31
|
def once(event, &block)
|
|
30
|
-
return if @disposed
|
|
32
|
+
return self if @disposed
|
|
33
|
+
|
|
31
34
|
wrapper = lambda do |*args|
|
|
32
35
|
off(event, &wrapper)
|
|
33
36
|
block.call(*args)
|
|
34
37
|
end
|
|
35
38
|
on(event, &wrapper)
|
|
39
|
+
self
|
|
36
40
|
end
|
|
37
41
|
|
|
38
42
|
# Remove an event listener
|
|
39
43
|
# @rbs event: Symbol | String -- Event name
|
|
40
44
|
# @rbs &block: ((untyped) -> void)? -- Event handler to remove
|
|
41
|
-
# @rbs return:
|
|
45
|
+
# @rbs return: EventEmitter -- This event emitter
|
|
42
46
|
def off(event, &block)
|
|
43
47
|
event_sym = event.to_sym
|
|
44
48
|
if block
|
|
@@ -46,6 +50,7 @@ module Puppeteer
|
|
|
46
50
|
else
|
|
47
51
|
@listeners.delete(event_sym)
|
|
48
52
|
end
|
|
53
|
+
self
|
|
49
54
|
end
|
|
50
55
|
|
|
51
56
|
# Remove all listeners for an event or all events
|
data/lib/puppeteer/bidi/page.rb
CHANGED
|
@@ -94,34 +94,26 @@ module Puppeteer
|
|
|
94
94
|
# Register an event listener
|
|
95
95
|
# @rbs event: Symbol | String -- Event name
|
|
96
96
|
# @rbs &block: (untyped) -> void -- Event handler
|
|
97
|
-
# @rbs return:
|
|
97
|
+
# @rbs return: Page -- This page
|
|
98
98
|
def on(event, &block)
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
unless wrapper
|
|
103
|
-
wrapper = lambda do |request|
|
|
104
|
-
request.enqueue_intercept_action do
|
|
105
|
-
block.call(request)
|
|
106
|
-
end
|
|
107
|
-
end
|
|
108
|
-
@request_handlers[block] = wrapper
|
|
109
|
-
end
|
|
110
|
-
@emitter.on(event, &wrapper)
|
|
99
|
+
listener = event.to_sym == :request ? request_listener_for(block) : block
|
|
100
|
+
@emitter.on(event, &listener)
|
|
101
|
+
self
|
|
111
102
|
end
|
|
112
103
|
|
|
113
104
|
# Register a one-time event listener
|
|
114
105
|
# @rbs event: Symbol | String -- Event name
|
|
115
106
|
# @rbs &block: (untyped) -> void -- Event handler
|
|
116
|
-
# @rbs return:
|
|
107
|
+
# @rbs return: Page -- This page
|
|
117
108
|
def once(event, &block)
|
|
118
109
|
@emitter.once(event, &block)
|
|
110
|
+
self
|
|
119
111
|
end
|
|
120
112
|
|
|
121
113
|
# Remove an event listener
|
|
122
114
|
# @rbs event: Symbol | String -- Event name
|
|
123
115
|
# @rbs &block: (untyped) -> void -- Event handler to remove
|
|
124
|
-
# @rbs return:
|
|
116
|
+
# @rbs return: Page -- This page
|
|
125
117
|
def off(event, &block)
|
|
126
118
|
if event.to_sym == :request && block
|
|
127
119
|
# WeakMap#delete was added in Ruby 3.3, so we need to handle older versions
|
|
@@ -130,10 +122,11 @@ module Puppeteer
|
|
|
130
122
|
else
|
|
131
123
|
@request_handlers[block]
|
|
132
124
|
end
|
|
133
|
-
|
|
125
|
+
@emitter.off(event, &(wrapper || block))
|
|
126
|
+
else
|
|
127
|
+
@emitter.off(event, &block)
|
|
134
128
|
end
|
|
135
|
-
|
|
136
|
-
@emitter.off(event, &block)
|
|
129
|
+
self
|
|
137
130
|
end
|
|
138
131
|
|
|
139
132
|
# Emit an event to all registered listeners
|
|
@@ -1375,6 +1368,14 @@ module Puppeteer
|
|
|
1375
1368
|
|
|
1376
1369
|
private
|
|
1377
1370
|
|
|
1371
|
+
def request_listener_for(listener)
|
|
1372
|
+
@request_handlers[listener] ||= lambda do |request|
|
|
1373
|
+
request.enqueue_intercept_action do
|
|
1374
|
+
listener.call(request)
|
|
1375
|
+
end
|
|
1376
|
+
end
|
|
1377
|
+
end
|
|
1378
|
+
|
|
1378
1379
|
# Navigate history by delta.
|
|
1379
1380
|
#
|
|
1380
1381
|
# In Firefox, BFCache restores may emit `browsingContext.navigationStarted`
|
|
@@ -5,7 +5,6 @@ require 'async'
|
|
|
5
5
|
require 'async/websocket/client'
|
|
6
6
|
require 'async/http/endpoint'
|
|
7
7
|
require 'json'
|
|
8
|
-
require 'uri'
|
|
9
8
|
|
|
10
9
|
module Puppeteer
|
|
11
10
|
module Bidi
|
|
@@ -17,8 +16,7 @@ module Puppeteer
|
|
|
17
16
|
attr_reader :url
|
|
18
17
|
|
|
19
18
|
def initialize(url)
|
|
20
|
-
|
|
21
|
-
@url = url.end_with?('/session') ? url : "#{url}/session"
|
|
19
|
+
@url = url
|
|
22
20
|
@endpoint = nil
|
|
23
21
|
@connection = nil
|
|
24
22
|
@task = nil
|
|
@@ -119,20 +119,20 @@ module Puppeteer
|
|
|
119
119
|
# Register event handler
|
|
120
120
|
# @rbs event: String | Symbol -- Event name
|
|
121
121
|
# @rbs &block: (untyped) -> void -- Event handler
|
|
122
|
-
# @rbs return:
|
|
123
|
-
def on: (String | Symbol event) { (untyped) -> void } ->
|
|
122
|
+
# @rbs return: Browser -- This browser
|
|
123
|
+
def on: (String | Symbol event) { (untyped) -> void } -> Browser
|
|
124
124
|
|
|
125
125
|
# Register a one-time event handler
|
|
126
126
|
# @rbs event: String | Symbol -- Event name
|
|
127
127
|
# @rbs &block: (untyped) -> void -- Event handler
|
|
128
|
-
# @rbs return:
|
|
129
|
-
def once: (String | Symbol event) { (untyped) -> void } ->
|
|
128
|
+
# @rbs return: Browser -- This browser
|
|
129
|
+
def once: (String | Symbol event) { (untyped) -> void } -> Browser
|
|
130
130
|
|
|
131
131
|
# Remove an event handler
|
|
132
132
|
# @rbs event: String | Symbol -- Event name
|
|
133
133
|
# @rbs &block: ((untyped) -> void)? -- Event handler to remove
|
|
134
|
-
# @rbs return:
|
|
135
|
-
def off: (String | Symbol event) ?{ (?) -> untyped } ->
|
|
134
|
+
# @rbs return: Browser -- This browser
|
|
135
|
+
def off: (String | Symbol event) ?{ (?) -> untyped } -> Browser
|
|
136
136
|
|
|
137
137
|
# Close the browser
|
|
138
138
|
# @rbs return: void
|
|
@@ -21,20 +21,20 @@ module Puppeteer
|
|
|
21
21
|
# Register an event listener
|
|
22
22
|
# @rbs event: Symbol | String -- Event name
|
|
23
23
|
# @rbs &block: (untyped) -> void -- Event handler
|
|
24
|
-
# @rbs return:
|
|
25
|
-
def on: (Symbol | String event) { (untyped) -> void } ->
|
|
24
|
+
# @rbs return: BrowserContext -- This browser context
|
|
25
|
+
def on: (Symbol | String event) { (untyped) -> void } -> BrowserContext
|
|
26
26
|
|
|
27
27
|
# Register a one-time event listener
|
|
28
28
|
# @rbs event: Symbol | String -- Event name
|
|
29
29
|
# @rbs &block: (untyped) -> void -- Event handler
|
|
30
|
-
# @rbs return:
|
|
31
|
-
def once: (Symbol | String event) { (untyped) -> void } ->
|
|
30
|
+
# @rbs return: BrowserContext -- This browser context
|
|
31
|
+
def once: (Symbol | String event) { (untyped) -> void } -> BrowserContext
|
|
32
32
|
|
|
33
33
|
# Remove an event listener
|
|
34
34
|
# @rbs event: Symbol | String -- Event name
|
|
35
35
|
# @rbs &block: ((untyped) -> void)? -- Event handler to remove
|
|
36
|
-
# @rbs return:
|
|
37
|
-
def off: (Symbol | String event) ?{ (?) -> untyped } ->
|
|
36
|
+
# @rbs return: BrowserContext -- This browser context
|
|
37
|
+
def off: (Symbol | String event) ?{ (?) -> untyped } -> BrowserContext
|
|
38
38
|
|
|
39
39
|
# Create a new page (tab/window)
|
|
40
40
|
# @rbs background: bool? -- Whether to open the page in background
|
|
@@ -27,14 +27,14 @@ module Puppeteer
|
|
|
27
27
|
# Subscribe to BiDi events
|
|
28
28
|
# @rbs event: String
|
|
29
29
|
# @rbs &block: (untyped) -> void
|
|
30
|
-
# @rbs return:
|
|
31
|
-
def on: (String event) { (untyped) -> void } ->
|
|
30
|
+
# @rbs return: Connection -- This connection
|
|
31
|
+
def on: (String event) { (untyped) -> void } -> Connection
|
|
32
32
|
|
|
33
33
|
# Unsubscribe from BiDi events
|
|
34
34
|
# @rbs event: String
|
|
35
35
|
# @rbs &block: ((untyped) -> void)?
|
|
36
|
-
# @rbs return:
|
|
37
|
-
def off: (String event) ?{ (?) -> untyped } ->
|
|
36
|
+
# @rbs return: Connection -- This connection
|
|
37
|
+
def off: (String event) ?{ (?) -> untyped } -> Connection
|
|
38
38
|
|
|
39
39
|
# Close the connection
|
|
40
40
|
# @rbs return: void
|
|
@@ -12,20 +12,20 @@ module Puppeteer
|
|
|
12
12
|
# Register an event listener
|
|
13
13
|
# @rbs event: Symbol | String -- Event name
|
|
14
14
|
# @rbs &block: (untyped) -> void -- Event handler
|
|
15
|
-
# @rbs return:
|
|
16
|
-
def on: (Symbol | String event) { (untyped) -> void } ->
|
|
15
|
+
# @rbs return: EventEmitter -- This event emitter
|
|
16
|
+
def on: (Symbol | String event) { (untyped) -> void } -> EventEmitter
|
|
17
17
|
|
|
18
18
|
# Register a one-time event listener
|
|
19
19
|
# @rbs event: Symbol | String -- Event name
|
|
20
20
|
# @rbs &block: (untyped) -> void -- Event handler
|
|
21
|
-
# @rbs return:
|
|
22
|
-
def once: (Symbol | String event) { (untyped) -> void } ->
|
|
21
|
+
# @rbs return: EventEmitter -- This event emitter
|
|
22
|
+
def once: (Symbol | String event) { (untyped) -> void } -> EventEmitter
|
|
23
23
|
|
|
24
24
|
# Remove an event listener
|
|
25
25
|
# @rbs event: Symbol | String -- Event name
|
|
26
26
|
# @rbs &block: ((untyped) -> void)? -- Event handler to remove
|
|
27
|
-
# @rbs return:
|
|
28
|
-
def off: (Symbol | String event) ?{ (?) -> untyped } ->
|
|
27
|
+
# @rbs return: EventEmitter -- This event emitter
|
|
28
|
+
def off: (Symbol | String event) ?{ (?) -> untyped } -> EventEmitter
|
|
29
29
|
|
|
30
30
|
# Remove all listeners for an event or all events
|
|
31
31
|
# @rbs event: (Symbol | String)? -- Event name
|
data/sig/puppeteer/bidi/page.rbs
CHANGED
|
@@ -23,20 +23,20 @@ module Puppeteer
|
|
|
23
23
|
# Register an event listener
|
|
24
24
|
# @rbs event: Symbol | String -- Event name
|
|
25
25
|
# @rbs &block: (untyped) -> void -- Event handler
|
|
26
|
-
# @rbs return:
|
|
27
|
-
def on: (Symbol | String event) { (untyped) -> void } ->
|
|
26
|
+
# @rbs return: Page -- This page
|
|
27
|
+
def on: (Symbol | String event) { (untyped) -> void } -> Page
|
|
28
28
|
|
|
29
29
|
# Register a one-time event listener
|
|
30
30
|
# @rbs event: Symbol | String -- Event name
|
|
31
31
|
# @rbs &block: (untyped) -> void -- Event handler
|
|
32
|
-
# @rbs return:
|
|
33
|
-
def once: (Symbol | String event) { (untyped) -> void } ->
|
|
32
|
+
# @rbs return: Page -- This page
|
|
33
|
+
def once: (Symbol | String event) { (untyped) -> void } -> Page
|
|
34
34
|
|
|
35
35
|
# Remove an event listener
|
|
36
36
|
# @rbs event: Symbol | String -- Event name
|
|
37
37
|
# @rbs &block: (untyped) -> void -- Event handler to remove
|
|
38
|
-
# @rbs return:
|
|
39
|
-
def off: (Symbol | String event) { (untyped) -> void } ->
|
|
38
|
+
# @rbs return: Page -- This page
|
|
39
|
+
def off: (Symbol | String event) { (untyped) -> void } -> Page
|
|
40
40
|
|
|
41
41
|
# Emit an event to all registered listeners
|
|
42
42
|
# @rbs event: Symbol | String -- Event name
|
|
@@ -429,6 +429,8 @@ module Puppeteer
|
|
|
429
429
|
|
|
430
430
|
private
|
|
431
431
|
|
|
432
|
+
def request_listener_for: (untyped listener) -> untyped
|
|
433
|
+
|
|
432
434
|
# Navigate history by delta.
|
|
433
435
|
#
|
|
434
436
|
# In Firefox, BFCache restores may emit `browsingContext.navigationStarted`
|