Index: tools/android/loading/loading_trace.py |
diff --git a/tools/android/loading/loading_trace.py b/tools/android/loading/loading_trace.py |
index 6dbd13deb9f12075a812f2f1a7fc97b5e7238673..7630bcc07cff699482928a6eb80a2e00d6e5d88f 100644 |
--- a/tools/android/loading/loading_trace.py |
+++ b/tools/android/loading/loading_trace.py |
@@ -34,7 +34,8 @@ class LoadingTrace(object): |
self.metadata = metadata |
self.page_track = page |
self.request_track = request |
- self.tracing_track = tracing_track |
+ self._tracing_track = tracing_track |
+ self._tracing_json_str = None |
def ToJsonDict(self): |
"""Returns a dictionary representing this instance.""" |
@@ -94,3 +95,23 @@ class LoadingTrace(object): |
else categories)) |
connection.MonitorUrl(url, timeout_seconds=timeout_seconds) |
return cls(url, chrome_metadata, page, request, trace) |
+ |
+ @property |
+ def tracing_track(self): |
+ if not self._tracing_track: |
+ self._RestoreTracingTrack() |
+ return self._tracing_track |
+ |
+ def Slim(self): |
+ """Slims the memory usage of a trace by dropping the TraceEvents from it. |
+ |
+ The tracing track is restored on-demand when accessed. |
+ """ |
+ self._tracing_json_str = json.dumps(self._tracing_track.ToJsonDict()) |
+ self._tracing_track = None |
+ |
+ def _RestoreTracingTrack(self): |
+ assert self._tracing_json_str |
+ self._tracing_track = tracing.TracingTrack.FromJsonDict( |
+ json.loads(self._tracing_json_str)) |
+ self._tracing_json_str = None |