Class: Puppeteer::Target
- Inherits:
-
Object
show all
- Defined in:
- lib/puppeteer/target.rb,
sig/_supplementary.rbs
Overview
Defined Under Namespace
Classes: InitializeFailure, TargetInfo
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(target_info:, session:, browser_context:, target_manager:, session_factory:, ignore_https_errors:, default_viewport:, network_enabled:, is_page_target_callback:) ⇒ Target
Returns a new instance of Target.
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
# File 'lib/puppeteer/target.rb', line 23
def initialize(target_info:,
session:,
browser_context:,
target_manager:,
session_factory:,
ignore_https_errors:,
default_viewport:,
network_enabled:,
is_page_target_callback:)
@session = session
@target_manager = target_manager
@target_info = target_info
@browser_context = browser_context
@target_id = target_info.target_id
@session_factory = session_factory
@ignore_https_errors = ignore_https_errors
@default_viewport = default_viewport
@network_enabled = network_enabled
@is_page_target_callback = is_page_target_callback
@worker = nil
@initialize_callback_promise = Async::Promise.new
@initialized_promise = Async::Promise.new
@is_closed_promise = Async::Promise.new
Async do
@initialized_promise.resolve(handle_initialized(@initialize_callback_promise.wait))
rescue => err
@initialized_promise.reject(err)
end
@is_initialized = !@is_page_target_callback.call(@target_info) || !@target_info.url.empty?
if @is_initialized
@initialize_callback_promise.resolve(true)
end
end
|
Instance Attribute Details
#initialized_promise ⇒ Object
Returns the value of attribute initialized_promise.
65
66
67
|
# File 'lib/puppeteer/target.rb', line 65
def initialized_promise
@initialized_promise
end
|
#is_closed_promise ⇒ Object
Returns the value of attribute is_closed_promise.
65
66
67
|
# File 'lib/puppeteer/target.rb', line 65
def is_closed_promise
@is_closed_promise
end
|
#target_id ⇒ Object
Returns the value of attribute target_id.
65
66
67
|
# File 'lib/puppeteer/target.rb', line 65
def target_id
@target_id
end
|
#target_info ⇒ Object
Returns the value of attribute target_info.
65
66
67
|
# File 'lib/puppeteer/target.rb', line 65
def target_info
@target_info
end
|
Class Method Details
220
|
# File 'sig/_supplementary.rbs', line 220
def self.new: (target_info: Puppeteer::Target::TargetInfo, session: Puppeteer::CDPSession?, browser_context: Puppeteer::BrowserContext, target_manager: untyped, session_factory: Proc, ignore_https_errors: bool, default_viewport: Puppeteer::Viewport?, network_enabled: bool, is_page_target_callback: Proc) -> Puppeteer::Target
|
Instance Method Details
#==(other) ⇒ Object
67
68
69
70
71
72
73
74
|
# File 'lib/puppeteer/target.rb', line 67
def ==(other)
other = other.__getobj__ if other.is_a?(Puppeteer::ReactorRunner::Proxy)
return true if equal?(other)
return false unless other.is_a?(Puppeteer::Target)
return false if target_id.nil? || other.target_id.nil?
target_id == other.target_id
end
|
151
152
153
154
155
156
157
158
159
160
161
162
163
164
|
# File 'lib/puppeteer/target.rb', line 151
def as_page
return @page if @page
return @as_page if @as_page
client = @session || @session_factory.call(false)
client.wait_for_ready if client.respond_to?(:wait_for_ready)
@as_page = Puppeteer::Page.create(
client,
self,
@ignore_https_errors,
nil,
network_enabled: @network_enabled,
)
end
|
214
215
216
|
# File 'lib/puppeteer/target.rb', line 214
def browser
@browser_context.browser
end
|
219
220
221
|
# File 'lib/puppeteer/target.rb', line 219
def browser_context
@browser_context
end
|
#closed_callback ⇒ void
This method returns an undefined value.
84
85
86
|
# File 'lib/puppeteer/target.rb', line 84
def closed_callback
@is_closed_promise.resolve(true) unless @is_closed_promise.resolved?
end
|
125
126
127
128
129
|
# File 'lib/puppeteer/target.rb', line 125
def create_cdp_session
session = @session_factory.call(false)
session.target = self if session.respond_to?(:target=)
session
end
|
#eql?(other) ⇒ Boolean
76
77
78
|
# File 'lib/puppeteer/target.rb', line 76
def eql?(other)
self == other
end
|
#exposed? ⇒ Boolean
116
117
118
|
# File 'lib/puppeteer/target.rb', line 116
def exposed?
raw_type != 'tab' && !@target_info.subtype
end
|
#handle_initialized(success) ⇒ Boolean
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
# File 'lib/puppeteer/target.rb', line 96
private def handle_initialized(success)
unless success
raise InitializeFailure.new('Failed to create target for page')
end
opener_page = opener&.page
if opener_page.nil? || type != 'page'
return true
end
= page
opener_page.emit_event(PageEmittedEvents::Popup, )
true
end
|
#handle_target_info_changed(target_info) ⇒ void
This method returns an undefined value.
231
232
233
234
235
236
237
238
|
# File 'lib/puppeteer/target.rb', line 231
def handle_target_info_changed(target_info)
@target_info = target_info
if !@is_initialized && (!@is_page_target_callback.call(@target_info) || !@target_info.url.empty?)
@is_initialized = true
@initialize_callback_promise.resolve(true)
end
end
|
#hash ⇒ Object
80
81
82
|
# File 'lib/puppeteer/target.rb', line 80
def hash
target_id ? target_id.hash : super
end
|
#ignore_initialize_callback_promise ⇒ void
This method returns an undefined value.
90
91
92
93
94
|
# File 'lib/puppeteer/target.rb', line 90
def ignore_initialize_callback_promise
unless @initialize_callback_promise.resolved?
@initialize_callback_promise.resolve(false)
end
end
|
#initialized? ⇒ Boolean
112
113
114
|
# File 'lib/puppeteer/target.rb', line 112
def initialized?
@is_initialized
end
|
224
225
226
227
228
|
# File 'lib/puppeteer/target.rb', line 224
def opener
opener_id = @target_info.opener_id
return nil if opener_id.nil?
browser.send(:find_target_by_id, opener_id)
end
|
135
136
137
138
139
140
141
142
143
144
145
146
147
148
|
# File 'lib/puppeteer/target.rb', line 135
def page
if @is_page_target_callback.call(@target_info) && @page.nil?
client = @session || @session_factory.call(true)
client.wait_for_ready if client.respond_to?(:wait_for_ready)
@page = Puppeteer::Page.create(
client,
self,
@ignore_https_errors,
@default_viewport,
network_enabled: @network_enabled,
)
end
@page
end
|
#raw_type ⇒ String
209
210
211
|
# File 'lib/puppeteer/target.rb', line 209
def raw_type
@target_info.type
end
|
121
122
123
|
# File 'lib/puppeteer/target.rb', line 121
def session
@session
end
|
#target_manager ⇒ Object
131
132
133
|
# File 'lib/puppeteer/target.rb', line 131
def target_manager
@target_manager
end
|
#type ⇒ "page"|"background_page"|"service_worker"|"shared_worker"|"webview"|"tab"|"other"|"browser"
199
200
201
202
203
204
205
206
|
# File 'lib/puppeteer/target.rb', line 199
def type
type = @target_info.type
if ['page', 'background_page', 'service_worker', 'shared_worker', 'webview', 'tab', 'browser'].include?(type)
type
else
'other'
end
end
|
#url ⇒ string
194
195
196
|
# File 'lib/puppeteer/target.rb', line 194
def url
@target_info.url
end
|
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
|
# File 'lib/puppeteer/target.rb', line 167
def worker
return nil unless ['service_worker', 'shared_worker'].include?(@target_info.type)
return @worker if @worker
if @target_info.type == 'service_worker'
@target_manager&.wait_for_service_worker_detach(@target_id)
end
client =
if @target_info.type == 'service_worker'
@session_factory.call(false)
else
@session || @session_factory.call(false)
end
client.target = self if client.respond_to?(:target=)
client.wait_for_ready if client.respond_to?(:wait_for_ready)
@worker = Puppeteer::CdpWebWorker.new(
client,
@target_info.url,
@target_id,
@target_info.type,
nil,
nil,
)
end
|