Index: tools/telemetry/telemetry/core/backends/chrome/tracing_backend.py |
diff --git a/tools/telemetry/telemetry/core/backends/chrome/tracing_backend.py b/tools/telemetry/telemetry/core/backends/chrome/tracing_backend.py |
index 5b285151eecb8ef4f772540080ac470931f53b3f..7998954b0161310cdee93a176bd467c03379eb77 100644 |
--- a/tools/telemetry/telemetry/core/backends/chrome/tracing_backend.py |
+++ b/tools/telemetry/telemetry/core/backends/chrome/tracing_backend.py |
@@ -26,7 +26,7 @@ class TracingBackend(object): |
'ws://127.0.0.1:%i/devtools/browser' % devtools_port) |
self._category_filter = None |
self._nesting = 0 |
- self._tracing_data = [] |
+ self._trace_events = [] |
self._is_tracing_running = False |
@property |
@@ -57,10 +57,11 @@ class TracingBackend(object): |
self._is_tracing_running = True |
return True |
- def StopTracing(self, timeout=30): |
- """ Stops tracing on the innermost (!) nested call, because we cannot get |
- results otherwise. Resets _tracing_data on the outermost nested call. |
- Returns the result of the trace, as TracingTimelineData object. |
+ def StopTracing(self, trace_value_builder, timeout=30): |
+ """ Stops tracing and pushes reults to the provided TraceValueBuilder. |
+ |
+ Tracing is stopped on the innermost (!) nested call, because we cannot get |
+ results otherwise. Resets _trace_events on the outermost nested call. |
""" |
self._nesting -= 1 |
assert self._nesting >= 0 |
@@ -80,21 +81,13 @@ class TracingBackend(object): |
'seconds. If the trace data is big, you may want to increase the ' |
'time out amount.' % err.elapsed_time) |
self._is_tracing_running = False |
- if self._nesting == 0: |
- self._category_filter = None |
- return self._GetTraceResultAndReset() |
- else: |
- return self._GetTraceResult() |
- def _GetTraceResult(self): |
- assert not self.is_tracing_running |
- return self._tracing_data |
+ trace_value_builder.AddEventsTo( |
+ trace_value_module.CHROME_TRACE_PART, self._trace_events) |
- def _GetTraceResultAndReset(self): |
- result = self._GetTraceResult() |
- |
- self._tracing_data = [] |
- return result |
+ if self._nesting == 0: |
+ self._category_filter = None |
+ self._trace_events = [] |
def _ErrorHandler(self, elapsed): |
logging.error('Unrecoverable error after %ds reading tracing response.', |
@@ -105,9 +98,9 @@ class TracingBackend(object): |
if 'Tracing.dataCollected' == res.get('method'): |
value = res.get('params', {}).get('value') |
if type(value) in [str, unicode]: |
- self._tracing_data.append(value) |
+ self._trace_events.append(value) |
elif type(value) is list: |
- self._tracing_data.extend(value) |
+ self._trace_events.extend(value) |
else: |
logging.warning('Unexpected type in tracing data') |
elif 'Tracing.tracingComplete' == res.get('method'): |