| OLD | NEW |
| 1 # Copyright (c) 2016 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2016 The Chromium Authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 | 4 |
| 5 """The request data track. | 5 """The request data track. |
| 6 | 6 |
| 7 When executed, parses a JSON dump of DevTools messages. | 7 When executed, parses a JSON dump of DevTools messages. |
| 8 """ | 8 """ |
| 9 | 9 |
| 10 import collections | 10 import collections |
| (...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 223 response = params['response'] | 223 response = params['response'] |
| 224 _CopyFromDictToObject( | 224 _CopyFromDictToObject( |
| 225 response, r, (('status', 'status'), ('mimeType', 'mime_type'), | 225 response, r, (('status', 'status'), ('mimeType', 'mime_type'), |
| 226 ('fromDiskCache', 'from_disk_cache'), | 226 ('fromDiskCache', 'from_disk_cache'), |
| 227 ('fromServiceWorker', 'from_service_worker'), | 227 ('fromServiceWorker', 'from_service_worker'), |
| 228 ('protocol', 'protocol'), | 228 ('protocol', 'protocol'), |
| 229 # Actual request headers are not known before reaching the | 229 # Actual request headers are not known before reaching the |
| 230 # network stack. | 230 # network stack. |
| 231 ('requestHeaders', 'request_headers'), | 231 ('requestHeaders', 'request_headers'), |
| 232 ('headers', 'response_headers'))) | 232 ('headers', 'response_headers'))) |
| 233 timing_dict = response['timing'] if r.protocol != 'data' else {} | 233 # data URLs don't have a timing dict. |
| 234 timing_dict = {} |
| 235 if r.protocol != 'data': |
| 236 timing_dict = response['timing'] |
| 237 else: |
| 238 timing_dict = {'requestTime': r.timestamp} |
| 234 r.timing = _TimingFromDict(timing_dict) | 239 r.timing = _TimingFromDict(timing_dict) |
| 235 self._requests_in_flight[request_id] = (r, RequestTrack._STATUS_RESPONSE) | 240 self._requests_in_flight[request_id] = (r, RequestTrack._STATUS_RESPONSE) |
| 236 | 241 |
| 237 def _DataReceived(self, request_id, params): | 242 def _DataReceived(self, request_id, params): |
| 238 (r, status) = self._requests_in_flight[request_id] | 243 (r, status) = self._requests_in_flight[request_id] |
| 239 assert (status == RequestTrack._STATUS_RESPONSE | 244 assert (status == RequestTrack._STATUS_RESPONSE |
| 240 or status == RequestTrack._STATUS_DATA) | 245 or status == RequestTrack._STATUS_DATA) |
| 241 offset = r._TimestampOffsetFromStartMs(params['timestamp']) | 246 offset = r._TimestampOffsetFromStartMs(params['timestamp']) |
| 242 r.data_chunks.append((offset, params['encodedDataLength'])) | 247 r.data_chunks.append((offset, params['encodedDataLength'])) |
| 243 self._requests_in_flight[request_id] = (r, RequestTrack._STATUS_DATA) | 248 self._requests_in_flight[request_id] = (r, RequestTrack._STATUS_DATA) |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 284 def _TimingFromDict(timing_dict): | 289 def _TimingFromDict(timing_dict): |
| 285 complete_timing_dict = {field: -1 for field in Timing._fields} | 290 complete_timing_dict = {field: -1 for field in Timing._fields} |
| 286 timing_dict_mapped = { | 291 timing_dict_mapped = { |
| 287 _TIMING_NAMES_MAPPING[k]: v for (k, v) in timing_dict.items()} | 292 _TIMING_NAMES_MAPPING[k]: v for (k, v) in timing_dict.items()} |
| 288 complete_timing_dict.update(timing_dict_mapped) | 293 complete_timing_dict.update(timing_dict_mapped) |
| 289 return Timing(**complete_timing_dict) | 294 return Timing(**complete_timing_dict) |
| 290 | 295 |
| 291 | 296 |
| 292 def _CopyFromDictToObject(d, o, key_attrs): | 297 def _CopyFromDictToObject(d, o, key_attrs): |
| 293 for (key, attr) in key_attrs: | 298 for (key, attr) in key_attrs: |
| 294 setattr(o, attr, d[key]) | 299 if key in d: |
| 300 setattr(o, attr, d[key]) |
| 295 | 301 |
| 296 | 302 |
| 297 if __name__ == '__main__': | 303 if __name__ == '__main__': |
| 298 import json | 304 import json |
| 299 import sys | 305 import sys |
| 300 events = json.load(open(sys.argv[1], 'r')) | 306 events = json.load(open(sys.argv[1], 'r')) |
| 301 request_track = RequestTrack(None) | 307 request_track = RequestTrack(None) |
| 302 for event in events: | 308 for event in events: |
| 303 event_method = event['method'] | 309 event_method = event['method'] |
| 304 request_track.Handle(event_method, event) | 310 request_track.Handle(event_method, event) |
| OLD | NEW |