Class: Puppeteer::Bidi::Core::DedicatedWorkerRealm

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

Overview

DedicatedWorkerRealm represents a JavaScript realm in a dedicated 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 Puppeteer::Bidi::Core::Disposable::DisposableMixin

#dispose, #disposed?, #perform_dispose

Methods inherited from EventEmitter

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

Constructor Details

#initialize(owner, id, origin) ⇒ DedicatedWorkerRealm

Returns a new instance of DedicatedWorkerRealm.

Parameters:

  • owner (Object)
  • id (Object)
  • origin (Object)


231
232
233
234
235
# File 'lib/puppeteer/bidi/core/realm.rb', line 231

def initialize(owner, id, origin)
  super(id, origin)
  @owners = Set.new([owner])
  @workers = {}
end

Instance Attribute Details

#ownersObject (readonly)

Returns the value of attribute owners.

Returns:

  • (Object)


229
230
231
# File 'lib/puppeteer/bidi/core/realm.rb', line 229

def owners
  @owners
end

Class Method Details

.from(owner, id, origin) ⇒ DedicatedWorkerRealm

Create a dedicated worker realm

Parameters:

Returns:



223
224
225
226
227
# File 'lib/puppeteer/bidi/core/realm.rb', line 223

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

Instance Method Details

#dispose_realm(reason) ⇒ Object

Parameters:

  • reason (Object)

Returns:

  • (Object)


269
270
271
272
# File 'lib/puppeteer/bidi/core/realm.rb', line 269

def dispose_realm(reason)
  @reason = reason
  dispose
end

#initialize_realmObject

Returns:

  • (Object)


246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
# File 'lib/puppeteer/bidi/core/realm.rb', line 246

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 nested 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)


239
240
241
242
# File 'lib/puppeteer/bidi/core/realm.rb', line 239

def session
  # Get session from any owner
  @owners.first.session
end