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

Side by Side Diff: telemetry/telemetry/internal/backends/chrome_inspector/devtools_client_backend.py

Issue 3002793002: [Telemetry] fix run_benchmark crash on CrOS (Closed)
Patch Set: Created 3 years, 4 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 unified diff | Download patch
OLDNEW
1 # Copyright 2014 The Chromium Authors. All rights reserved. 1 # Copyright 2014 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 import logging 5 import logging
6 import re 6 import re
7 import socket 7 import socket
8 import sys 8 import sys
9 9
10 from telemetry.core import exceptions 10 from telemetry.core import exceptions
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
82 return True 82 return True
83 83
84 84
85 class DevToolsClientBackend(object): 85 class DevToolsClientBackend(object):
86 """An object that communicates with Chrome's devtools. 86 """An object that communicates with Chrome's devtools.
87 87
88 This class owns a map of InspectorBackends. It is responsible for creating 88 This class owns a map of InspectorBackends. It is responsible for creating
89 them and destroying them. 89 them and destroying them.
90 """ 90 """
91 def __init__(self, devtools_port, browser_target, remote_devtools_port, 91 def __init__(self, devtools_port, browser_target, remote_devtools_port,
92 app_backend): 92 app_backend, enable_tracing=True):
93 """Creates a new DevToolsClientBackend. 93 """Creates a new DevToolsClientBackend.
94 94
95 A DevTools agent must exist on the given devtools_port. 95 A DevTools agent must exist on the given devtools_port.
96 96
97 Args: 97 Args:
98 devtools_port: The port to use to connect to DevTools agent. 98 devtools_port: The port to use to connect to DevTools agent.
99 remote_devtools_port: In some cases (e.g., app running on 99 remote_devtools_port: In some cases (e.g., app running on
100 Android device, devtools_port is the forwarded port on the 100 Android device, devtools_port is the forwarded port on the
101 host platform. We also need to know the remote_devtools_port 101 host platform. We also need to know the remote_devtools_port
102 so that we can uniquely identify the DevTools agent. 102 so that we can uniquely identify the DevTools agent.
103 app_backend: For the app that contains the DevTools agent. 103 app_backend: For the app that contains the DevTools agent.
104 """ 104 """
105 self._devtools_port = devtools_port 105 self._devtools_port = devtools_port
106 self._browser_target = browser_target or '/devtools/browser' 106 self._browser_target = browser_target or '/devtools/browser'
107 self._remote_devtools_port = remote_devtools_port 107 self._remote_devtools_port = remote_devtools_port
108 self._devtools_http = devtools_http.DevToolsHttp(devtools_port) 108 self._devtools_http = devtools_http.DevToolsHttp(devtools_port)
109 self._browser_inspector_websocket = None 109 self._browser_inspector_websocket = None
110 self._tracing_backend = None 110 self._tracing_backend = None
111 self._memory_backend = None 111 self._memory_backend = None
112 self._system_info_backend = None 112 self._system_info_backend = None
113 self._app_backend = app_backend 113 self._app_backend = app_backend
114 self._devtools_context_map_backend = _DevToolsContextMapBackend( 114 self._devtools_context_map_backend = _DevToolsContextMapBackend(
115 self._app_backend, self) 115 self._app_backend, self)
116 self._enable_tracing = enable_tracing
116 117
117 self._tab_ids = None 118 self._tab_ids = None
118 119
119 if not self.supports_tracing: 120 if not self.supports_tracing:
120 return 121 return
121 chrome_tracing_devtools_manager.RegisterDevToolsClient( 122 chrome_tracing_devtools_manager.RegisterDevToolsClient(
122 self, self._app_backend.platform_backend) 123 self, self._app_backend.platform_backend)
123 124
124 # Telemetry has started Chrome tracing if there is trace config, so start 125 # Telemetry has started Chrome tracing if there is trace config, so start
125 # tracing on this newly created devtools client if needed. 126 # tracing on this newly created devtools client if needed.
(...skipping 11 matching lines...) Expand all
137 self.StartChromeTracing(trace_config) 138 self.StartChromeTracing(trace_config)
138 139
139 @property 140 @property
140 def remote_port(self): 141 def remote_port(self):
141 return self._remote_devtools_port 142 return self._remote_devtools_port
142 143
143 @property 144 @property
144 def supports_tracing(self): 145 def supports_tracing(self):
145 if not isinstance(self._app_backend, browser_backend.BrowserBackend): 146 if not isinstance(self._app_backend, browser_backend.BrowserBackend):
146 return False 147 return False
148 if not self._enable_tracing:
nednguyen 2017/08/17 14:16:24 This is a misusage of abstraction. The name of thi
149 return False
147 return self._app_backend.supports_tracing 150 return self._app_backend.supports_tracing
148 151
149 @property 152 @property
150 def supports_overriding_memory_pressure_notifications(self): 153 def supports_overriding_memory_pressure_notifications(self):
151 if not isinstance(self._app_backend, browser_backend.BrowserBackend): 154 if not isinstance(self._app_backend, browser_backend.BrowserBackend):
152 return False 155 return False
153 return self._app_backend.supports_overriding_memory_pressure_notifications 156 return self._app_backend.supports_overriding_memory_pressure_notifications
154 157
155 158
156 @property 159 @property
(...skipping 353 matching lines...) Expand 10 before | Expand all | Expand 10 after
510 context_id) 513 context_id)
511 continue 514 continue
512 valid_contexts.append(context) 515 valid_contexts.append(context)
513 self._contexts = valid_contexts 516 self._contexts = valid_contexts
514 517
515 def Clear(self): 518 def Clear(self):
516 for backend in self._inspector_backends_dict.values(): 519 for backend in self._inspector_backends_dict.values():
517 backend.Disconnect() 520 backend.Disconnect()
518 self._inspector_backends_dict = {} 521 self._inspector_backends_dict = {}
519 self._contexts = None 522 self._contexts = None
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698