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
- #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 |
# 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 = {} @queued_redirect_info_map = {} @queued_event_group_map = {} end |
Instance Method Details
#enqueue_event_group(network_request_id, queued_event_group) ⇒ Object
115 116 117 |
# File 'lib/puppeteer/network_event_manager.rb', line 115 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
67 68 69 |
# File 'lib/puppeteer/network_event_manager.rb', line 67 def enqueue_redirect_info(fetch_request_id, redirect_info) queued_redirect_info(fetch_request_id) << redirect_info end |
#forget(network_request_id) ⇒ Object
51 52 53 54 55 56 57 |
# File 'lib/puppeteer/network_event_manager.rb', line 51 def forget(network_request_id) @request_will_be_sent_map.delete(network_request_id) @request_paused_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
123 124 125 |
# File 'lib/puppeteer/network_event_manager.rb', line 123 def forget_queued_event_group(network_request_id) @queued_event_group_map.delete(network_request_id) end |
#forget_request(network_request_id) ⇒ Object
111 112 113 |
# File 'lib/puppeteer/network_event_manager.rb', line 111 def forget_request(network_request_id) @http_requests_map.delete(network_request_id) end |
#forget_request_paused(network_request_id) ⇒ Object
99 100 101 |
# File 'lib/puppeteer/network_event_manager.rb', line 99 def forget_request_paused(network_request_id) @request_paused_map.delete(network_request_id) end |
#forget_request_will_be_sent(network_request_id) ⇒ Object
87 88 89 |
# File 'lib/puppeteer/network_event_manager.rb', line 87 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
119 120 121 |
# File 'lib/puppeteer/network_event_manager.rb', line 119 def get_queued_event_group(network_request_id) @queued_event_group_map[network_request_id] end |
#get_request(network_request_id) ⇒ Object
107 108 109 |
# File 'lib/puppeteer/network_event_manager.rb', line 107 def get_request(network_request_id) @http_requests_map[network_request_id] end |
#get_request_paused(network_request_id) ⇒ Object
95 96 97 |
# File 'lib/puppeteer/network_event_manager.rb', line 95 def get_request_paused(network_request_id) @request_paused_map[network_request_id] end |
#get_request_will_be_sent(network_request_id) ⇒ Object
83 84 85 |
# File 'lib/puppeteer/network_event_manager.rb', line 83 def get_request_will_be_sent(network_request_id) @request_will_be_sent_map[network_request_id] end |
#num_requests_in_progress ⇒ Object
75 76 77 |
# File 'lib/puppeteer/network_event_manager.rb', line 75 def num_requests_in_progress @http_requests_map.count { |_, request| !request.response } end |
#response_extra_info(network_request_id) ⇒ Object
59 60 61 |
# File 'lib/puppeteer/network_event_manager.rb', line 59 def response_extra_info(network_request_id) @response_received_extra_info_map[network_request_id] ||= [] end |
#store_request(network_request_id, request) ⇒ Object
103 104 105 |
# File 'lib/puppeteer/network_event_manager.rb', line 103 def store_request(network_request_id, request) @http_requests_map[network_request_id] = request end |
#store_request_paused(network_request_id, event) ⇒ Object
91 92 93 |
# File 'lib/puppeteer/network_event_manager.rb', line 91 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
79 80 81 |
# File 'lib/puppeteer/network_event_manager.rb', line 79 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
71 72 73 |
# File 'lib/puppeteer/network_event_manager.rb', line 71 def take_queued_redirect_info(fetch_request_id) queued_redirect_info(fetch_request_id).shift end |