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 |