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..218b95c5734a11551c177abebe4a350a33245033 100644 |
--- a/tools/telemetry/telemetry/core/backends/chrome/tracing_backend.py |
+++ b/tools/telemetry/telemetry/core/backends/chrome/tracing_backend.py |
@@ -6,6 +6,7 @@ import logging |
from telemetry.core.backends.chrome import inspector_websocket |
from telemetry.core.platform import tracing_category_filter |
+from telemetry.core.platform import tracing_options |
class TracingUnsupportedException(Exception): |
@@ -17,7 +18,7 @@ class TracingTimeoutException(Exception): |
class TracingBackend(object): |
- def __init__(self, devtools_port): |
+ def __init__(self, devtools_port, chrome_browser_backend): |
self._inspector_websocket = inspector_websocket.InspectorWebsocket( |
self._NotificationHandler, |
self._ErrorHandler) |
@@ -28,12 +29,13 @@ class TracingBackend(object): |
self._nesting = 0 |
self._tracing_data = [] |
self._is_tracing_running = False |
+ self._chrome_browser_backend = chrome_browser_backend |
@property |
def is_tracing_running(self): |
return self._is_tracing_running |
- def StartTracing(self, custom_categories=None, timeout=10): |
+ def StartTracing(self, trace_options, custom_categories=None, timeout=10): |
""" Starts tracing on the first nested call and returns True. Returns False |
and does nothing on subsequent nested calls. |
""" |
@@ -48,11 +50,27 @@ class TracingBackend(object): |
'StartTracing call is subset of current filter.') |
return False |
self._CheckNotificationSupported() |
+ #TODO(nednguyen): remove this when the stable branch pass 2118. |
+ if (trace_options.record_mode == tracing_options.RECORD_AS_MUCH_AS_POSSIBLE |
+ and self._chrome_browser_backend.chrome_branch_number |
+ and self._chrome_browser_backend.chrome_branch_number < 2118): |
+ logging.warning( |
+ 'Cannot use %s tracing mode on chrome browser with branch version %i,' |
+ ' (<2118) fallback to use %s tracing mode' % ( |
+ trace_options.record_mode, |
+ self._chrome_browser_backend.chrome_branch_number, |
+ tracing_options.RECORD_UNTIL_FULL)) |
+ trace_options.record_mode = tracing_options.RECORD_UNTIL_FULL |
req = {'method': 'Tracing.start'} |
+ req['params'] = {} |
+ m = {tracing_options.RECORD_UNTIL_FULL: 'record-until-full', |
+ tracing_options.RECORD_AS_MUCH_AS_POSSIBLE: |
+ 'record-as-much-as-possible'} |
+ req['params']['options'] = m[trace_options.record_mode] |
self._category_filter = tracing_category_filter.TracingCategoryFilter( |
filter_string=custom_categories) |
if custom_categories: |
- req['params'] = {'categories': custom_categories} |
+ req['params']['categories'] = custom_categories |
self._inspector_websocket.SyncRequest(req, timeout) |
self._is_tracing_running = True |
return True |