Class: Puppeteer::CdpWebWorker
- Includes:
- DebugPrint
- Defined in:
- lib/puppeteer/web_worker.rb,
sig/puppeteer/web_worker.rbs
Instance Attribute Summary
Attributes inherited from WebWorker
Instance Method Summary collapse
- #client ⇒ Puppeteer::CDPSession
- #close ⇒ void
- #evaluate(page_function, *args) ⇒ Object
- #evaluate_handle(page_function, *args) ⇒ Puppeteer::JSHandle
- #initialize(client, url, target_id, target_type, console_api_called, exception_thrown, network_manager: nil) ⇒ Object constructor
- #main_realm ⇒ Puppeteer::WorkerWorld
- #wait_for_function(page_function, args: [], polling: nil, timeout: nil) ⇒ Puppeteer::JSHandle
Methods included from DebugPrint
Methods inherited from WebWorker
Methods included from EventCallbackable
#add_event_listener, #emit_event, #observe_first, #off, #on_event, #remove_event_listener
Constructor Details
#initialize(client, url, target_id, target_type, console_api_called, exception_thrown, network_manager: nil) ⇒ Object
175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 |
# File 'lib/puppeteer/web_worker.rb', line 175 def initialize(client, url, target_id, target_type, console_api_called, exception_thrown, network_manager: nil) super(url) @client = client @target_id = target_id @target_type = target_type @world = Puppeteer::WorkerWorld.new(@client) @worker_loaded_promise = Async::Promise.new @client.once('Runtime.executionContextCreated') do |event| @world.set_context(Puppeteer::ExecutionContext.new(@client, event['context'], @world)) end @client.once('Inspector.workerScriptLoaded') do @worker_loaded_promise.resolve(nil) unless @worker_loaded_promise.resolved? end @client.on_event('Runtime.consoleAPICalled') do |event| values = event['args'].map do |arg| remote_object = Puppeteer::RemoteObject.new(arg) Puppeteer::JSHandle.create(context: @world.execution_context, remote_object: remote_object) end console_api_called&.call(@world, event) emit_event( 'console', Puppeteer::ConsoleMessage.new( event['type'], values.map { |value| console_value_from_js_handle(value) }.join(' '), values, (event['stackTrace']), ), ) end if exception_thrown @client.on_event('Runtime.exceptionThrown') do |event| exception_thrown.call(event['exceptionDetails']) end end @client.once(CDPSessionEmittedEvents::Disconnected) do @world.dispose end if network_manager Async do network_manager.add_client(@client) rescue => err debug_puts(err) end end @client.('Runtime.enable') end |
Instance Method Details
#client ⇒ Puppeteer::CDPSession
231 232 233 |
# File 'lib/puppeteer/web_worker.rb', line 231 def client @client end |
#close ⇒ void
This method returns an undefined value.
289 290 291 292 293 294 295 296 297 298 299 300 |
# File 'lib/puppeteer/web_worker.rb', line 289 def close connection = @client.connection case @target_type when 'service_worker' connection&.('Target.closeTarget', targetId: @target_id) connection&.('Target.detachFromTarget', sessionId: @client.id) when 'shared_worker' connection&.('Target.closeTarget', targetId: @target_id) else evaluate('() => self.close()') end end |
#evaluate(page_function, *args) ⇒ Object
238 239 240 241 |
# File 'lib/puppeteer/web_worker.rb', line 238 def evaluate(page_function, *args) @worker_loaded_promise.wait super end |
#evaluate_handle(page_function, *args) ⇒ Puppeteer::JSHandle
246 247 248 249 |
# File 'lib/puppeteer/web_worker.rb', line 246 def evaluate_handle(page_function, *args) @worker_loaded_promise.wait super end |
#main_realm ⇒ Puppeteer::WorkerWorld
226 227 228 |
# File 'lib/puppeteer/web_worker.rb', line 226 def main_realm @world end |
#wait_for_function(page_function, args: [], polling: nil, timeout: nil) ⇒ Puppeteer::JSHandle
256 257 258 259 |
# File 'lib/puppeteer/web_worker.rb', line 256 def wait_for_function(page_function, args: [], polling: nil, timeout: nil) @worker_loaded_promise.wait super end |