Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(209)

Unified Diff: tools/telemetry/telemetry/internal/backends/chrome_inspector/devtools_client_backend.py

Issue 1338423007: [Telemetry] Platform-level tracing (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: review fix Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: tools/telemetry/telemetry/internal/backends/chrome_inspector/devtools_client_backend.py
diff --git a/tools/telemetry/telemetry/internal/backends/chrome_inspector/devtools_client_backend.py b/tools/telemetry/telemetry/internal/backends/chrome_inspector/devtools_client_backend.py
index 426219e154821d6e084c505a7c0d8e194de76ea1..a037840f36495c75f33563513c79e2511088a73c 100644
--- a/tools/telemetry/telemetry/internal/backends/chrome_inspector/devtools_client_backend.py
+++ b/tools/telemetry/telemetry/internal/backends/chrome_inspector/devtools_client_backend.py
@@ -12,6 +12,7 @@ from telemetry.internal.backends import browser_backend
from telemetry.internal.backends.chrome_inspector import devtools_http
from telemetry.internal.backends.chrome_inspector import inspector_backend
from telemetry.internal.backends.chrome_inspector import tracing_backend
+from telemetry.internal.platform.tracing_agent import chrome_tracing_agent
from telemetry.internal.platform.tracing_agent import (
chrome_tracing_devtools_manager)
from telemetry.timeline import trace_data as trace_data_module
@@ -75,10 +76,29 @@ class DevToolsClientBackend(object):
if not self.supports_tracing:
return
- self._tracing_backend = tracing_backend.TracingBackend(self._devtools_port)
chrome_tracing_devtools_manager.RegisterDevToolsClient(
self, self._app_backend.platform_backend)
+ # Telemetry has started Chrome tracing if there is trace config, so start
+ # tracing on this newly created devtools client if needed.
+ trace_config = (self._app_backend.platform_backend
+ .tracing_controller_backend.GetChromeTraceConfig())
+ if not trace_config:
+ self._tracing_backend = tracing_backend.TracingBackend(
+ self._devtools_port, False)
+ return
+
+ if self.support_startup_tracing:
+ self._tracing_backend = tracing_backend.TracingBackend(
+ self._devtools_port, True)
+ return
+
+ self._tracing_backend = tracing_backend.TracingBackend(
+ self._devtools_port, False)
+ self.StartChromeTracing(
+ trace_options=trace_config.tracing_options,
+ custom_categories=trace_config.tracing_category_filter.filter_string)
+
@property
def remote_port(self):
return self._remote_devtools_port
@@ -97,6 +117,18 @@ class DevToolsClientBackend(object):
return False
return self._tracing_backend.is_tracing_running
+ @property
+ def support_startup_tracing(self):
+ # Startup tracing with --trace-config-file flag was not supported until
+ # Chromium branch number 2512 (see crrev.com/1309243004 and
+ # crrev.com/1353583002).
+ if not chrome_tracing_agent.ChromeTracingAgent.IsStartupTracingSupported(
+ self._app_backend.platform_backend):
+ return False
+ # TODO(zhenw): Remove this once stable Chrome and reference browser have
+ # passed 2512.
+ return self.GetChromeBranchNumber() >= 2512
+
def IsAlive(self):
"""Whether the DevTools server is available and connectable."""
return _IsDevToolsAgentAvailable(self._devtools_http)

Powered by Google App Engine
This is Rietveld 408576698