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

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

Issue 1355193002: Reland again [Telemetry] Refactor Chrome devtools tracing (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: 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 a75a2af0bdf5d9cb26df5c884ac45129f366ba00..947a12abed3c262b0665d48f70510df40d4d90d9 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
@@ -8,10 +8,12 @@ import sys
from telemetry.core import exceptions
from telemetry import decorators
+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
@@ -19,8 +21,13 @@ class TabNotFoundError(exceptions.Error):
pass
-def IsDevToolsAgentAvailable(port):
+def IsDevToolsAgentAvailable(port, app_backend):
"""Returns True if a DevTools agent is available on the given port."""
+ if (isinstance(app_backend, browser_backend.BrowserBackend) and
+ app_backend.supports_tracing):
+ if not tracing_backend.IsInspectorWebsocketAvailable(port):
+ return False
+
devtools_http_instance = devtools_http.DevToolsHttp(port)
try:
return _IsDevToolsAgentAvailable(devtools_http.DevToolsHttp(port))
@@ -66,13 +73,30 @@ class DevToolsClientBackend(object):
self._devtools_context_map_backend = _DevToolsContextMapBackend(
self._app_backend, self)
- chrome_tracing_agent.ChromeTracingAgent.RegisterDevToolsClient(
- self, self._app_backend.platform_backend)
+ 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)
@property
def remote_port(self):
return self._remote_devtools_port
+ @property
+ def supports_tracing(self):
+ if not isinstance(self._app_backend, browser_backend.BrowserBackend):
+ return False
+ return self._app_backend.supports_tracing
+
+ @property
+ def is_tracing_running(self):
+ if not self.supports_tracing:
+ return False
+ if not self._tracing_backend:
+ return False
+ return self._tracing_backend.is_tracing_running
+
def IsAlive(self):
"""Whether the DevTools server is available and connectable."""
return _IsDevToolsAgentAvailable(self._devtools_http)
@@ -171,11 +195,14 @@ class DevToolsClientBackend(object):
return self._devtools_context_map_backend
def _CreateTracingBackendIfNeeded(self):
+ assert self.supports_tracing
if not self._tracing_backend:
self._tracing_backend = tracing_backend.TracingBackend(
self._devtools_port)
def IsChromeTracingSupported(self):
+ if not self.supports_tracing:
+ return False
self._CreateTracingBackendIfNeeded()
return self._tracing_backend.IsTracingSupported()

Powered by Google App Engine
This is Rietveld 408576698