Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5)

Side by Side Diff: tools/android/loading/request_track.py

Issue 1606903002: tools/android/loading: Archive tracks in LoadingTrace. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698