| 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 json |
| 8 | 8 |
| 9 import devtools_monitor | 9 import devtools_monitor |
| 10 import page_track | 10 import page_track |
| (...skipping 16 matching lines...) Expand all Loading... |
| 27 url: (str) URL that has been loaded | 27 url: (str) URL that has been loaded |
| 28 metadata: (dict) Metadata associated with the load. | 28 metadata: (dict) Metadata associated with the load. |
| 29 page: (PageTrack) instance of PageTrack. | 29 page: (PageTrack) instance of PageTrack. |
| 30 request: (RequestTrack) instance of RequestTrack. | 30 request: (RequestTrack) instance of RequestTrack. |
| 31 tracing_track: (TracingTrack) instance of TracingTrack. | 31 tracing_track: (TracingTrack) instance of TracingTrack. |
| 32 """ | 32 """ |
| 33 self.url = url | 33 self.url = url |
| 34 self.metadata = metadata | 34 self.metadata = metadata |
| 35 self.page_track = page | 35 self.page_track = page |
| 36 self.request_track = request | 36 self.request_track = request |
| 37 self.tracing_track = tracing_track | 37 self._tracing_track = tracing_track |
| 38 self._tracing_json_str = None |
| 38 | 39 |
| 39 def ToJsonDict(self): | 40 def ToJsonDict(self): |
| 40 """Returns a dictionary representing this instance.""" | 41 """Returns a dictionary representing this instance.""" |
| 41 result = {self._URL_KEY: self.url, self._METADATA_KEY: self.metadata, | 42 result = {self._URL_KEY: self.url, self._METADATA_KEY: self.metadata, |
| 42 self._PAGE_KEY: self.page_track.ToJsonDict(), | 43 self._PAGE_KEY: self.page_track.ToJsonDict(), |
| 43 self._REQUEST_KEY: self.request_track.ToJsonDict(), | 44 self._REQUEST_KEY: self.request_track.ToJsonDict(), |
| 44 self._TRACING_KEY: self.tracing_track.ToJsonDict()} | 45 self._TRACING_KEY: self.tracing_track.ToJsonDict()} |
| 45 return result | 46 return result |
| 46 | 47 |
| 47 def ToJsonFile(self, json_path): | 48 def ToJsonFile(self, json_path): |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 87 LoadingTrace instance. | 88 LoadingTrace instance. |
| 88 """ | 89 """ |
| 89 page = page_track.PageTrack(connection) | 90 page = page_track.PageTrack(connection) |
| 90 request = request_track.RequestTrack(connection) | 91 request = request_track.RequestTrack(connection) |
| 91 trace = tracing.TracingTrack( | 92 trace = tracing.TracingTrack( |
| 92 connection, | 93 connection, |
| 93 categories=(tracing.DEFAULT_CATEGORIES if categories is None | 94 categories=(tracing.DEFAULT_CATEGORIES if categories is None |
| 94 else categories)) | 95 else categories)) |
| 95 connection.MonitorUrl(url, timeout_seconds=timeout_seconds) | 96 connection.MonitorUrl(url, timeout_seconds=timeout_seconds) |
| 96 return cls(url, chrome_metadata, page, request, trace) | 97 return cls(url, chrome_metadata, page, request, trace) |
| 98 |
| 99 @property |
| 100 def tracing_track(self): |
| 101 if not self._tracing_track: |
| 102 self._RestoreTracingTrack() |
| 103 return self._tracing_track |
| 104 |
| 105 def Slim(self): |
| 106 """Slims the memory usage of a trace by dropping the TraceEvents from it. |
| 107 |
| 108 The tracing track is restored on-demand when accessed. |
| 109 """ |
| 110 self._tracing_json_str = json.dumps(self._tracing_track.ToJsonDict()) |
| 111 self._tracing_track = None |
| 112 |
| 113 def _RestoreTracingTrack(self): |
| 114 assert self._tracing_json_str |
| 115 self._tracing_track = tracing.TracingTrack.FromJsonDict( |
| 116 json.loads(self._tracing_json_str)) |
| 117 self._tracing_json_str = None |
| OLD | NEW |