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 425b39f37b6ce2c840aa2f827d2df56a2e7e8590..7564aa93dd262e794d01adce8dc7c48a3a2b253b 100644 |
--- a/tools/telemetry/telemetry/core/backends/chrome/tracing_backend.py |
+++ b/tools/telemetry/telemetry/core/backends/chrome/tracing_backend.py |
@@ -8,7 +8,8 @@ import logging |
import socket |
import threading |
-from telemetry.core.backends.chrome import trace_result |
+from telemetry.core import trace_result |
+from telemetry.core.backends.chrome import chrome_trace_result |
from telemetry.core.backends.chrome import websocket |
from telemetry.core.backends.chrome import websocket_browser_connection |
from telemetry.core.timeline import model |
@@ -21,9 +22,10 @@ class TracingUnsupportedException(Exception): |
# protocol, where trace data were sent as JSON-serialized strings. DevTools |
# now send the data as raw objects within the protocol message JSON, so there's |
# no need in extra de-serialization. We might want to remove this in the future. |
-class TraceResultImpl(object): |
- def __init__(self, tracing_data): |
- self._tracing_data = tracing_data |
+class ChromeLegacyTraceResult(chrome_trace_result.ChromeTraceResult): |
+ def __init__(self, tracing_data, tab_to_marker_mapping = None): |
+ super(ChromeLegacyTraceResult, self).__init__( |
+ tracing_data, tab_to_marker_mapping) |
def Serialize(self, f): |
f.write('{"traceEvents": [') |
@@ -43,25 +45,26 @@ class TraceResultImpl(object): |
f.write(d[i]) |
f.write(']}') |
- def AsTimelineModel(self): |
+ def _CreateTimelineModel(self): |
f = cStringIO.StringIO() |
self.Serialize(f) |
return model.TimelineModel( |
event_data=f.getvalue(), |
shift_world_to_zero=False) |
-# RawTraceResultImpl differs from TraceResultImpl above in that |
+# ChromeRawTraceResult differs from ChromeLegacyTraceResult above in that |
# data are kept as a list of dicts, not strings. |
-class RawTraceResultImpl(object): |
- def __init__(self, tracing_data): |
- self._tracing_data = tracing_data |
+class ChromeRawTraceResult(chrome_trace_result.ChromeTraceResult): |
+ def __init__(self, tracing_data, tab_to_marker_mapping = None): |
+ super(ChromeRawTraceResult, self).__init__( |
+ tracing_data, tab_to_marker_mapping) |
def Serialize(self, f): |
f.write('{"traceEvents":') |
json.dump(self._tracing_data, f) |
f.write('}') |
- def AsTimelineModel(self): |
+ def _CreateTimelineModel(self): |
return model.TimelineModel(self._tracing_data) |
class CategoryFilter(object): |
@@ -135,10 +138,14 @@ class TracingBackend(object): |
self._category_filter = None |
self._nesting = 0 |
self._tracing_data = [] |
+ self._tab_to_marker_mapping = {} |
def _IsTracing(self): |
return self._thread != None |
+ def AddTabToMarkerMapping(self, tab, marker): |
+ self._tab_to_marker_mapping[tab] = marker |
+ |
def StartTracing(self, custom_categories=None, timeout=10): |
""" Starts tracing on the first nested call and returns True. Returns False |
and does nothing on subsequent nested calls. |
@@ -188,10 +195,14 @@ class TracingBackend(object): |
def _GetTraceResult(self): |
assert not self._IsTracing() |
if self._tracing_data and type(self._tracing_data[0]) in [str, unicode]: |
- result_impl = TraceResultImpl(self._tracing_data) |
+ result = trace_result.TraceResult( |
+ ChromeLegacyTraceResult(self._tracing_data, |
+ self._tab_to_marker_mapping)) |
else: |
- result_impl = RawTraceResultImpl(self._tracing_data) |
- return trace_result.TraceResult(result_impl) |
+ result = trace_result.TraceResult( |
+ ChromeRawTraceResult(self._tracing_data, |
+ self._tab_to_marker_mapping)) |
+ return result |
def _GetTraceResultAndReset(self): |
result = self._GetTraceResult() |