Class: Puppeteer::CDPSession
  
  
  
Defined Under Namespace
  
    
  
    
      Classes: Error
    
  
  Instance Attribute Summary collapse
  
  
    
      Instance Method Summary
      collapse
    
    
  
  
  
  
  
  
  
  
  
  
  #add_event_listener, #emit_event, #observe_first, #on_event, #remove_event_listener
  
  
  
  
  
  
  
  
  Methods included from DebugPrint
  #debug_print, #debug_puts
  Constructor Details
  
    
  
  
    #initialize(connection, target_type, session_id)  ⇒ CDPSession 
  
  
  
  
    
Returns a new instance of CDPSession.
   
 
  
    | 
11
12
13
14
15
16 | # File 'lib/puppeteer/cdp_session.rb', line 11
def initialize(connection, target_type, session_id)
  @callbacks = Concurrent::Hash.new
  @connection = connection
  @target_type = target_type
  @session_id = session_id
end | 
 
  
 
  
    Instance Attribute Details
    
      
      
      
  
  
    #connection  ⇒ Object  
  
  
  
  
    
Returns the value of attribute connection.
   
 
  
  
    | 
18
19
20 | # File 'lib/puppeteer/cdp_session.rb', line 18
def connection
  @connection
end | 
 
    
   
  
    Instance Method Details
    
      
  
  
    #async_send_message(method, params = {})  ⇒ Object 
  
  
  
  
    | 
30
31
32
33
34
35
36
37
38
39
40
41
42
43 | # File 'lib/puppeteer/cdp_session.rb', line 30
def async_send_message(method, params = {})
  if !@connection
    raise Error.new("Protocol error (#{method}): Session closed. Most likely the #{@target_type} has been closed.")
  end
  promise = resolvable_future
  @connection.generate_id do |id|
    @callbacks[id] = Puppeteer::Connection::MessageCallback.new(method: method, promise: promise)
    @connection.raw_send(id: id, message: { sessionId: @session_id, method: method, params: params })
  end
  promise
end | 
 
    
      
  
  
    #detach  ⇒ Object 
  
  
  
  
    | 
70
71
72
73
74
75 | # File 'lib/puppeteer/cdp_session.rb', line 70
def detach
  if !@connection
    raise Error.new("Session already detarched. Most likely the #{@target_type} has been closed.")
  end
  @connection.send_message('Target.detachFromTarget',  sessionId: @session_id)
end | 
 
    
      
  
  
    #handle_closed  ⇒ Object 
  
  
  
  
    | 
77
78
79
80
81
82
83
84
85
86
87 | # File 'lib/puppeteer/cdp_session.rb', line 77
def handle_closed
  @callbacks.each_value do |callback|
    callback.reject(
      Puppeteer::Connection::ProtocolError.new(
        method: callback.method,
        error_message: 'Target Closed.'))
  end
  @callbacks.clear
  @connection = nil
  emit_event(CDPSessionEmittedEvents::Disconnected)
end | 
 
    
      
  
  
    #handle_message(message)  ⇒ Object 
  
  
  
  
    | 
46
47
48
49
50
51
52
53
54
55
56 | # File 'lib/puppeteer/cdp_session.rb', line 46
def handle_message(message)
  if message['id']
    if callback = @callbacks.delete(message['id'])
      callback_with_message(callback, message)
    else
      raise Error.new("unknown id: #{message['id']}")
    end
  else
    emit_event(message['method'], message['params'])
  end
end | 
 
    
      
  
  
    #on(event_name, &block)  ⇒ Object 
  
  
  
  
    | 
90
91
92 | # File 'lib/puppeteer/cdp_session.rb', line 90
def on(event_name, &block)
  add_event_listener(event_name, &block)
end | 
 
    
      
  
  
    #once(event_name, &block)  ⇒ Object 
  
  
  
  
    | 
95
96
97 | # File 'lib/puppeteer/cdp_session.rb', line 95
def once(event_name, &block)
  observe_first(event_name, &block)
end | 
 
    
      
  
  
    #send_message(method, params = {})  ⇒ Object 
  
  
  
  
    | 
23
24
25 | # File 'lib/puppeteer/cdp_session.rb', line 23
def send_message(method, params = {})
  await async_send_message(method, params)
end |