Class: Puppeteer::Bidi::Core::SharedWorkerRealm

Inherits:
Realm show all
Defined in:
lib/puppeteer/bidi/core/realm.rb,
sig/puppeteer/bidi/core/realm.rbs

Overview

SharedWorkerRealm represents a JavaScript realm in a shared worker

Instance Attribute Summary collapse

Attributes inherited from Realm

#id, #origin

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Realm

#call_function, #disown, #dispose, #evaluate, #perform_dispose, #resolve_execution_context_id, #target

Methods included from Disposable::DisposableMixin

#dispose, #disposed?, #perform_dispose

Methods inherited from EventEmitter

#dispose, #disposed?, #emit, #off, #on, #once, #remove_all_listeners

Constructor Details

#initialize(browser, id, origin) ⇒ SharedWorkerRealm

Returns a new instance of SharedWorkerRealm.

Parameters:

  • browser (Object)
  • id (Object)
  • origin (Object)


290
291
292
293
294
# File 'lib/puppeteer/bidi/core/realm.rb', line 290

def initialize(browser, id, origin)
  super(id, origin)
  @browser = browser
  @workers = {}
end

Instance Attribute Details

#browserObject (readonly)

Returns the value of attribute browser.

Returns:

  • (Object)


288
289
290
# File 'lib/puppeteer/bidi/core/realm.rb', line 288

def browser
  @browser
end

Class Method Details

.from(browser, id, origin) ⇒ SharedWorkerRealm

Create a shared worker realm

Parameters:

  • browser (Browser)
  • id (String)
  • origin (String)

Returns:



282
283
284
285
286
# File 'lib/puppeteer/bidi/core/realm.rb', line 282

def self.from(browser, id, origin)
  realm = new(browser, id, origin)
  realm.send(:initialize_realm)
  realm
end

Instance Method Details

#dispose_realm(reason) ⇒ Object

Parameters:

  • reason (Object)

Returns:

  • (Object)


327
328
329
330
# File 'lib/puppeteer/bidi/core/realm.rb', line 327

def dispose_realm(reason)
  @reason = reason
  dispose
end

#initialize_realmObject

Returns:

  • (Object)


304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
# File 'lib/puppeteer/bidi/core/realm.rb', line 304

def initialize_realm
  # Listen for realm destruction
  session.on('script.realmDestroyed') do |info|
    next unless info['realm'] == @id
    dispose_realm('Realm already destroyed.')
  end

  # Listen for dedicated worker creation
  session.on('script.realmCreated') do |info|
    next unless info['type'] == 'dedicated-worker'
    next unless info['owners']&.include?(@id)

    worker = DedicatedWorkerRealm.from(self, info['realm'], info['origin'])
    @workers[worker.id] = worker

    worker.once(:destroyed) do
      @workers.delete(worker.id)
    end

    emit(:worker, worker)
  end
end

#sessionObject

Returns:

  • (Object)


298
299
300
# File 'lib/puppeteer/bidi/core/realm.rb', line 298

def session
  @browser.session
end