| 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 bisect | 10 import bisect |
| (...skipping 473 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 484 response = params['response'] | 484 response = params['response'] |
| 485 _CopyFromDictToObject( | 485 _CopyFromDictToObject( |
| 486 response, r, (('status', 'status'), ('mimeType', 'mime_type'), | 486 response, r, (('status', 'status'), ('mimeType', 'mime_type'), |
| 487 ('fromDiskCache', 'from_disk_cache'), | 487 ('fromDiskCache', 'from_disk_cache'), |
| 488 ('fromServiceWorker', 'from_service_worker'), | 488 ('fromServiceWorker', 'from_service_worker'), |
| 489 ('protocol', 'protocol'), | 489 ('protocol', 'protocol'), |
| 490 # Actual request headers are not known before reaching the | 490 # Actual request headers are not known before reaching the |
| 491 # network stack. | 491 # network stack. |
| 492 ('requestHeaders', 'request_headers'), | 492 ('requestHeaders', 'request_headers'), |
| 493 ('headers', 'response_headers'))) | 493 ('headers', 'response_headers'))) |
| 494 # data URLs don't have a timing dict. | |
| 495 timing_dict = {} | 494 timing_dict = {} |
| 496 if r.protocol != 'data': | 495 # data URLs don't have a timing dict, and timings for cached requests are |
| 496 # stale. |
| 497 # TODO(droger): the timestamp is inacurate, get the real timings instead. |
| 498 if r.protocol == 'data' or r.served_from_cache: |
| 499 timing_dict = {'requestTime': r.timestamp} |
| 500 else: |
| 497 timing_dict = response['timing'] | 501 timing_dict = response['timing'] |
| 498 else: | |
| 499 timing_dict = {'requestTime': r.timestamp} | |
| 500 r.timing = TimingFromDict(timing_dict) | 502 r.timing = TimingFromDict(timing_dict) |
| 501 self._requests_in_flight[request_id] = (r, RequestTrack._STATUS_RESPONSE) | 503 self._requests_in_flight[request_id] = (r, RequestTrack._STATUS_RESPONSE) |
| 502 self._request_id_to_response_received[request_id] = params | 504 self._request_id_to_response_received[request_id] = params |
| 503 | 505 |
| 504 def _DataReceived(self, request_id, params): | 506 def _DataReceived(self, request_id, params): |
| 505 (r, status) = self._requests_in_flight[request_id] | 507 (r, status) = self._requests_in_flight[request_id] |
| 506 assert (status == RequestTrack._STATUS_RESPONSE | 508 assert (status == RequestTrack._STATUS_RESPONSE |
| 507 or status == RequestTrack._STATUS_DATA) | 509 or status == RequestTrack._STATUS_DATA) |
| 508 offset = r._TimestampOffsetFromStartMs(params['timestamp']) | 510 offset = r._TimestampOffsetFromStartMs(params['timestamp']) |
| 509 r.data_chunks.append((offset, params['encodedDataLength'])) | 511 r.data_chunks.append((offset, params['encodedDataLength'])) |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 564 | 566 |
| 565 | 567 |
| 566 if __name__ == '__main__': | 568 if __name__ == '__main__': |
| 567 import json | 569 import json |
| 568 import sys | 570 import sys |
| 569 events = json.load(open(sys.argv[1], 'r')) | 571 events = json.load(open(sys.argv[1], 'r')) |
| 570 request_track = RequestTrack(None) | 572 request_track = RequestTrack(None) |
| 571 for event in events: | 573 for event in events: |
| 572 event_method = event['method'] | 574 event_method = event['method'] |
| 573 request_track.Handle(event_method, event) | 575 request_track.Handle(event_method, event) |
| OLD | NEW |