| 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 """Represents the trace of a page load.""" | 5 """Represents the trace of a page load.""" |
| 6 | 6 |
| 7 import json |
| 7 import page_track | 8 import page_track |
| 8 import request_track | 9 import request_track |
| 9 import tracing | 10 import tracing |
| 10 | 11 |
| 12 |
| 11 class LoadingTrace(object): | 13 class LoadingTrace(object): |
| 12 """Represents the trace of a page load.""" | 14 """Represents the trace of a page load.""" |
| 13 _URL_KEY = 'url' | 15 _URL_KEY = 'url' |
| 14 _METADATA_KEY = 'metadata' | 16 _METADATA_KEY = 'metadata' |
| 15 _PAGE_KEY = 'page_track' | 17 _PAGE_KEY = 'page_track' |
| 16 _REQUEST_KEY = 'request_track' | 18 _REQUEST_KEY = 'request_track' |
| 17 _TRACING_KEY = 'tracing_track' | 19 _TRACING_KEY = 'tracing_track' |
| 18 | 20 |
| 19 def __init__(self, url, metadata, page, request, tracing_track): | 21 def __init__(self, url, metadata, page, request, tracing_track): |
| 20 """Initializes a loading trace instance. | 22 """Initializes a loading trace instance. |
| (...skipping 12 matching lines...) Expand all Loading... |
| 33 self.tracing_track = tracing_track | 35 self.tracing_track = tracing_track |
| 34 | 36 |
| 35 def ToJsonDict(self): | 37 def ToJsonDict(self): |
| 36 """Returns a dictionary representing this instance.""" | 38 """Returns a dictionary representing this instance.""" |
| 37 result = {self._URL_KEY: self.url, self._METADATA_KEY: self.metadata, | 39 result = {self._URL_KEY: self.url, self._METADATA_KEY: self.metadata, |
| 38 self._PAGE_KEY: self.page_track.ToJsonDict(), | 40 self._PAGE_KEY: self.page_track.ToJsonDict(), |
| 39 self._REQUEST_KEY: self.request_track.ToJsonDict(), | 41 self._REQUEST_KEY: self.request_track.ToJsonDict(), |
| 40 self._TRACING_KEY: self.tracing_track.ToJsonDict()} | 42 self._TRACING_KEY: self.tracing_track.ToJsonDict()} |
| 41 return result | 43 return result |
| 42 | 44 |
| 45 def ToJsonFile(self, json_path): |
| 46 """Save a json file representing this instance.""" |
| 47 json_dict = self.ToJsonDict() |
| 48 with open(json_path, 'w') as output_file: |
| 49 json.dump(json_dict, output_file, indent=2) |
| 50 |
| 43 @classmethod | 51 @classmethod |
| 44 def FromJsonDict(cls, json_dict): | 52 def FromJsonDict(cls, json_dict): |
| 45 """Returns an instance from a dictionary returned by ToJsonDict().""" | 53 """Returns an instance from a dictionary returned by ToJsonDict().""" |
| 46 keys = (cls._URL_KEY, cls._METADATA_KEY, cls._PAGE_KEY, cls._REQUEST_KEY, | 54 keys = (cls._URL_KEY, cls._METADATA_KEY, cls._PAGE_KEY, cls._REQUEST_KEY, |
| 47 cls._TRACING_KEY) | 55 cls._TRACING_KEY) |
| 48 assert all(key in json_dict for key in keys) | 56 assert all(key in json_dict for key in keys) |
| 49 page = page_track.PageTrack.FromJsonDict(json_dict[cls._PAGE_KEY]) | 57 page = page_track.PageTrack.FromJsonDict(json_dict[cls._PAGE_KEY]) |
| 50 request = request_track.RequestTrack.FromJsonDict( | 58 request = request_track.RequestTrack.FromJsonDict( |
| 51 json_dict[cls._REQUEST_KEY]) | 59 json_dict[cls._REQUEST_KEY]) |
| 52 tracing_track = tracing.TracingTrack.FromJsonDict( | 60 tracing_track = tracing.TracingTrack.FromJsonDict( |
| 53 json_dict[cls._TRACING_KEY]) | 61 json_dict[cls._TRACING_KEY]) |
| 54 return LoadingTrace(json_dict[cls._URL_KEY], json_dict[cls._METADATA_KEY], | 62 return LoadingTrace(json_dict[cls._URL_KEY], json_dict[cls._METADATA_KEY], |
| 55 page, request, tracing_track) | 63 page, request, tracing_track) |
| 64 |
| 65 @classmethod |
| 66 def FromJsonFile(cls, json_path): |
| 67 """Returns an instance from a json file saved by ToJsonFile().""" |
| 68 with open(json_path) as input_file: |
| 69 return cls.FromJsonDict(json.load(input_file)) |
| OLD | NEW |