Class: Puppeteer::NetworkEventManager
- Inherits:
-
Object
- Object
- Puppeteer::NetworkEventManager
- Defined in:
- lib/puppeteer/network_event_manager.rb
Overview
Helper class to track network events by request ID
Instance Method Summary collapse
- #enqueue_event_group(network_request_id, queued_event_group) ⇒ Object
- #enqueue_redirect_info(fetch_request_id, redirect_info) ⇒ Object
- #forget(network_request_id) ⇒ Object
- #forget_queued_event_group(network_request_id) ⇒ Object
- #forget_request(network_request_id) ⇒ Object
- #forget_request_paused(network_request_id) ⇒ Object
- #forget_request_will_be_sent(network_request_id) ⇒ Object
- #get_queued_event_group(network_request_id) ⇒ Object
- #get_request(network_request_id) ⇒ Object
- #get_request_paused(network_request_id) ⇒ Object
- #get_request_will_be_sent(network_request_id) ⇒ Object
-
#initialize ⇒ NetworkEventManager
constructor
A new instance of NetworkEventManager.
- #num_requests_in_progress ⇒ Object
- #request_extra_info(network_request_id) ⇒ Object
- #response_extra_info(network_request_id) ⇒ Object
- #store_request(network_request_id, request) ⇒ Object
- #store_request_paused(network_request_id, event) ⇒ Object
- #store_request_will_be_sent(network_request_id, event) ⇒ Object
- #take_queued_redirect_info(fetch_request_id) ⇒ Object
Constructor Details
#initialize ⇒ NetworkEventManager
Returns a new instance of NetworkEventManager.
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 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 |
# File 'lib/puppeteer/network_event_manager.rb', line 3 def initialize # # There are four possible orders of events: # A. `_onRequestWillBeSent` # B. `_onRequestWillBeSent`, `_onRequestPaused` # C. `_onRequestPaused`, `_onRequestWillBeSent` # D. `_onRequestPaused`, `_onRequestWillBeSent`, `_onRequestPaused`, # `_onRequestWillBeSent`, `_onRequestPaused`, `_onRequestPaused` # (see crbug.com/1196004) # # For `_onRequest` we need the event from `_onRequestWillBeSent` and # optionally the `interceptionId` from `_onRequestPaused`. # # If request interception is disabled, call `_onRequest` once per call to # `_onRequestWillBeSent`. # If request interception is enabled, call `_onRequest` once per call to # `_onRequestPaused` (once per `interceptionId`). # # Events are stored to allow for subsequent events to call `_onRequest`. # # Note that (chains of) redirect requests have the same `requestId` (!) as # the original request. We have to anticipate series of events like these: # A. `_onRequestWillBeSent`, # `_onRequestWillBeSent`, ... # B. `_onRequestWillBeSent`, `_onRequestPaused`, # `_onRequestWillBeSent`, `_onRequestPaused`, ... # C. `_onRequestWillBeSent`, `_onRequestPaused`, # `_onRequestPaused`, `_onRequestWillBeSent`, ... # D. `_onRequestPaused`, `_onRequestWillBeSent`, # `_onRequestPaused`, `_onRequestWillBeSent`, `_onRequestPaused`, # `_onRequestWillBeSent`, `_onRequestPaused`, `_onRequestPaused`, ... # (see crbug.com/1196004) @request_will_be_sent_map = {} @request_paused_map = {} @http_requests_map = {} # # The below maps are used to reconcile Network.responseReceivedExtraInfo # events with their corresponding request. Each response and redirect # response gets an ExtraInfo event, and we don't know which will come first. # This means that we have to store a Response or an ExtraInfo for each # response, and emit the event when we get both of them. In addition, to # handle redirects, we have to make them Arrays to represent the chain of # events. @response_received_extra_info_map = {} @request_will_be_sent_extra_info_map = {} @queued_redirect_info_map = {} @queued_event_group_map = {} end |
Instance Method Details
#enqueue_event_group(network_request_id, queued_event_group) ⇒ Object
122 123 124 |
# File 'lib/puppeteer/network_event_manager.rb', line 122 def enqueue_event_group(network_request_id, queued_event_group) @queued_event_group_map[network_request_id] = queued_event_group end |
#enqueue_redirect_info(fetch_request_id, redirect_info) ⇒ Object
73 74 75 |
# File 'lib/puppeteer/network_event_manager.rb', line 73 def enqueue_redirect_info(fetch_request_id, redirect_info) queued_redirect_info(fetch_request_id) << redirect_info end |
#forget(network_request_id) ⇒ Object
52 53 54 55 56 57 58 59 |
# File 'lib/puppeteer/network_event_manager.rb', line 52 def forget(network_request_id) @request_will_be_sent_map.delete(network_request_id) @request_paused_map.delete(network_request_id) @request_will_be_sent_extra_info_map.delete(network_request_id) @queued_event_group_map.delete(network_request_id) @queued_redirect_info_map.delete(network_request_id) @response_received_extra_info_map.delete(network_request_id) end |
#forget_queued_event_group(network_request_id) ⇒ Object
130 131 132 |
# File 'lib/puppeteer/network_event_manager.rb', line 130 def forget_queued_event_group(network_request_id) @queued_event_group_map.delete(network_request_id) end |
#forget_request(network_request_id) ⇒ Object
118 119 120 |
# File 'lib/puppeteer/network_event_manager.rb', line 118 def forget_request(network_request_id) @http_requests_map.delete(network_request_id) end |
#forget_request_paused(network_request_id) ⇒ Object
105 106 107 |
# File 'lib/puppeteer/network_event_manager.rb', line 105 def forget_request_paused(network_request_id) @request_paused_map.delete(network_request_id) end |
#forget_request_will_be_sent(network_request_id) ⇒ Object
93 94 95 |
# File 'lib/puppeteer/network_event_manager.rb', line 93 def forget_request_will_be_sent(network_request_id) @request_will_be_sent_map.delete(network_request_id) end |
#get_queued_event_group(network_request_id) ⇒ Object
126 127 128 |
# File 'lib/puppeteer/network_event_manager.rb', line 126 def get_queued_event_group(network_request_id) @queued_event_group_map[network_request_id] end |
#get_request(network_request_id) ⇒ Object
113 114 115 |
# File 'lib/puppeteer/network_event_manager.rb', line 113 def get_request(network_request_id) @http_requests_map[network_request_id] end |
#get_request_paused(network_request_id) ⇒ Object
101 102 103 |
# File 'lib/puppeteer/network_event_manager.rb', line 101 def get_request_paused(network_request_id) @request_paused_map[network_request_id] end |
#get_request_will_be_sent(network_request_id) ⇒ Object
89 90 91 |
# File 'lib/puppeteer/network_event_manager.rb', line 89 def get_request_will_be_sent(network_request_id) @request_will_be_sent_map[network_request_id] end |
#num_requests_in_progress ⇒ Object
81 82 83 |
# File 'lib/puppeteer/network_event_manager.rb', line 81 def num_requests_in_progress @http_requests_map.count { |_, request| !request.response } end |
#request_extra_info(network_request_id) ⇒ Object
61 62 63 |
# File 'lib/puppeteer/network_event_manager.rb', line 61 def request_extra_info(network_request_id) @request_will_be_sent_extra_info_map[network_request_id] ||= [] end |
#response_extra_info(network_request_id) ⇒ Object
65 66 67 |
# File 'lib/puppeteer/network_event_manager.rb', line 65 def response_extra_info(network_request_id) @response_received_extra_info_map[network_request_id] ||= [] end |
#store_request(network_request_id, request) ⇒ Object
109 110 111 |
# File 'lib/puppeteer/network_event_manager.rb', line 109 def store_request(network_request_id, request) @http_requests_map[network_request_id] = request end |
#store_request_paused(network_request_id, event) ⇒ Object
97 98 99 |
# File 'lib/puppeteer/network_event_manager.rb', line 97 def store_request_paused(network_request_id, event) @request_paused_map[network_request_id] = event end |
#store_request_will_be_sent(network_request_id, event) ⇒ Object
85 86 87 |
# File 'lib/puppeteer/network_event_manager.rb', line 85 def store_request_will_be_sent(network_request_id, event) @request_will_be_sent_map[network_request_id] = event end |
#take_queued_redirect_info(fetch_request_id) ⇒ Object
77 78 79 |
# File 'lib/puppeteer/network_event_manager.rb', line 77 def take_queued_redirect_info(fetch_request_id) queued_redirect_info(fetch_request_id).shift end |