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

Unified Diff: tools/telemetry/telemetry/core/backends/chrome/chrome_browser_backend.py

Issue 811263005: Create DevToolsHttp and basic DevToolsClientBackend. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address review comments. Created 6 years 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/core/backends/chrome/chrome_browser_backend.py
diff --git a/tools/telemetry/telemetry/core/backends/chrome/chrome_browser_backend.py b/tools/telemetry/telemetry/core/backends/chrome/chrome_browser_backend.py
index 27c0eab1ec39b7b465607bd0836bbd9ca1cf72e0..90d6c32ed5d3616c2b5965d31cb93bfdaae8fc5f 100644
--- a/tools/telemetry/telemetry/core/backends/chrome/chrome_browser_backend.py
+++ b/tools/telemetry/telemetry/core/backends/chrome/chrome_browser_backend.py
@@ -24,6 +24,8 @@ from telemetry.core.backends.chrome import extension_backend
from telemetry.core.backends.chrome import system_info_backend
from telemetry.core.backends.chrome import tab_list_backend
from telemetry.core.backends.chrome import tracing_backend
+from telemetry.core.backends.chrome_inspector import devtools_client_backend
+from telemetry.core.backends.chrome_inspector import devtools_http
from telemetry.timeline import tracing_timeline_data
from telemetry.unittest_util import options_for_unittests
@@ -44,6 +46,7 @@ class ChromeBrowserBackend(browser_backend.BrowserBackend):
self._platform_backend = platform_backend
self._supports_tab_control = supports_tab_control
+ self._devtools_client = None
self._tracing_backend = None
self._system_info_backend = None
@@ -69,6 +72,14 @@ class ChromeBrowserBackend(browser_backend.BrowserBackend):
'extensions.\n')
@property
+ def devtools_client(self):
+ if not self._devtools_client:
+ assert self._port, 'No DevTools port info available.'
+ self._devtools_client = devtools_client_backend.DevToolsClientBackend(
+ self._port)
+ return self._devtools_client
+
+ @property
@decorators.Cache
def extension_backend(self):
if not self.supports_extensions:
@@ -164,13 +175,7 @@ class ChromeBrowserBackend(browser_backend.BrowserBackend):
return replay_args
def HasBrowserFinishedLaunching(self):
- try:
- self.Request('', timeout=.1)
- except (exceptions.BrowserGoneException,
- exceptions.BrowserConnectionGoneException):
- return False
- else:
- return True
+ return self.devtools_client.IsAlive()
def _WaitForBrowserToComeUp(self, wait_for_extensions=True):
try:
@@ -226,20 +231,9 @@ class ChromeBrowserBackend(browser_backend.BrowserBackend):
raise
def ListInspectableContexts(self):
- return json.loads(self.Request(''))
-
- def Request(self, path, timeout=30, throw_network_exception=False):
- url = 'http://127.0.0.1:%i/json' % self._port
- if path:
- url += '/' + path
try:
- proxy_handler = urllib2.ProxyHandler({}) # Bypass any system proxy.
- opener = urllib2.build_opener(proxy_handler)
- with contextlib.closing(opener.open(url, timeout=timeout)) as req:
- return req.read()
- except (socket.error, httplib.BadStatusLine, urllib2.URLError) as e:
- if throw_network_exception:
- raise e
+ return self._devtools_client.ListInspectableContexts()
+ except devtools_http.DevToolsClientConnectionError as e:
if not self.IsBrowserRunning():
raise exceptions.BrowserGoneException(self.browser, e)
raise exceptions.BrowserConnectionGoneException(self.browser, e)
@@ -253,29 +247,6 @@ class ChromeBrowserBackend(browser_backend.BrowserBackend):
raise NotImplementedError()
@property
- @decorators.Cache
- def chrome_branch_number(self):
- # Detect version information.
- data = self.Request('version')
- resp = json.loads(data)
- if 'Protocol-Version' in resp:
- if 'Browser' in resp:
- branch_number_match = re.search(r'Chrome/\d+\.\d+\.(\d+)\.\d+',
- resp['Browser'])
- else:
- branch_number_match = re.search(
- r'Chrome/\d+\.\d+\.(\d+)\.\d+ (Mobile )?Safari',
- resp['User-Agent'])
-
- if branch_number_match:
- branch_number = int(branch_number_match.group(1))
- if branch_number:
- return branch_number
-
- # Branch number can't be determined, so fail any branch number checks.
- return 0
-
- @property
def supports_tab_control(self):
return self._supports_tab_control

Powered by Google App Engine
This is Rietveld 408576698