summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorachuith@chromium.org <achuith@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-07-28 09:18:23 +0000
committerachuith@chromium.org <achuith@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-07-28 09:18:23 +0000
commitb84a6c8c714748d7828f3ef9f955905ea57a189e (patch)
treedb28ad0d5ee432b0d225f2dcb11a6d7a337d3bda /tools
parentf4895bcbc5d5dd80c17350d7f2e6c5d4c890ba89 (diff)
downloadchromium_src-b84a6c8c714748d7828f3ef9f955905ea57a189e.zip
chromium_src-b84a6c8c714748d7828f3ef9f955905ea57a189e.tar.gz
chromium_src-b84a6c8c714748d7828f3ef9f955905ea57a189e.tar.bz2
Browser.Request exceptions cleanup.
This cleans up a bunch of redundant code, and ensures that the clients of telemetry see BrowserConnectionGoneException/BrowserGoneException instead of exceptions from network libraries. BUG=264972 TEST=unittests NOTRY=True Review URL: https://chromiumcodereview.appspot.com/20822003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@214124 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'tools')
-rw-r--r--tools/telemetry/telemetry/core/chrome/browser_backend.py16
-rw-r--r--tools/telemetry/telemetry/core/chrome/extension_dict_backend.py13
-rw-r--r--tools/telemetry/telemetry/core/chrome/misc_web_contents_backend.py13
-rw-r--r--tools/telemetry/telemetry/core/chrome/tab_list_backend.py22
4 files changed, 24 insertions, 40 deletions
diff --git a/tools/telemetry/telemetry/core/chrome/browser_backend.py b/tools/telemetry/telemetry/core/chrome/browser_backend.py
index c910e6d..1d06b5e 100644
--- a/tools/telemetry/telemetry/core/chrome/browser_backend.py
+++ b/tools/telemetry/telemetry/core/chrome/browser_backend.py
@@ -126,7 +126,8 @@ class BrowserBackend(object):
def IsBrowserUp():
try:
self.Request('', timeout=timeout)
- except (socket.error, httplib.BadStatusLine, urllib2.URLError):
+ except (exceptions.BrowserGoneException,
+ exceptions.BrowserConnectionGoneException):
return False
else:
return True
@@ -183,12 +184,19 @@ class BrowserBackend(object):
self._inspector_protocol_version = 1.0
self._chrome_branch_number = 1025
- def Request(self, path, timeout=None):
+ def Request(self, path, timeout=None, throw_network_exception=False):
url = 'http://localhost:%i/json' % self._port
if path:
url += '/' + path
- req = urllib2.urlopen(url, timeout=timeout)
- return req.read()
+ try:
+ req = urllib2.urlopen(url, timeout=timeout)
+ return req.read()
+ except (socket.error, httplib.BadStatusLine, urllib2.URLError) as e:
+ if throw_network_exception:
+ raise e
+ if not self.IsBrowserRunning():
+ raise exceptions.BrowserGoneException()
+ raise exceptions.BrowserConnectionGoneException()
@property
def chrome_branch_number(self):
diff --git a/tools/telemetry/telemetry/core/chrome/extension_dict_backend.py b/tools/telemetry/telemetry/core/chrome/extension_dict_backend.py
index 4b4e2a7..d84a995 100644
--- a/tools/telemetry/telemetry/core/chrome/extension_dict_backend.py
+++ b/tools/telemetry/telemetry/core/chrome/extension_dict_backend.py
@@ -1,14 +1,10 @@
# Copyright (c) 2012 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
-import httplib
import json
import re
-import socket
-import urllib2
import weakref
-from telemetry.core import exceptions
from telemetry.core import extension_page
from telemetry.core.chrome import inspector_backend
@@ -64,13 +60,8 @@ class ExtensionDictBackend(object):
return None
def _GetExtensionInfoList(self, timeout=None):
- try:
- data = self._browser_backend.Request('', timeout=timeout)
- return self._FilterExtensions(json.loads(data))
- except (socket.error, httplib.BadStatusLine, urllib2.URLError):
- if not self._browser_backend.IsBrowserRunning():
- raise exceptions.BrowserGoneException()
- raise exceptions.BrowserConnectionGoneException()
+ data = self._browser_backend.Request('', timeout=timeout)
+ return self._FilterExtensions(json.loads(data))
def _FilterExtensions(self, all_pages):
return [page_info for page_info in all_pages
diff --git a/tools/telemetry/telemetry/core/chrome/misc_web_contents_backend.py b/tools/telemetry/telemetry/core/chrome/misc_web_contents_backend.py
index 27f77fe..f3a4ab7 100644
--- a/tools/telemetry/telemetry/core/chrome/misc_web_contents_backend.py
+++ b/tools/telemetry/telemetry/core/chrome/misc_web_contents_backend.py
@@ -1,12 +1,8 @@
# Copyright (c) 2012 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
-import httplib
import json
-import socket
-import urllib2
-from telemetry.core import exceptions
from telemetry.core import web_contents
from telemetry.core.chrome import inspector_backend
@@ -31,13 +27,8 @@ class MiscWebContentsBackend(object):
debugger_url)
def _ListWebContents(self, timeout=None):
- try:
- data = self._browser_backend.Request('', timeout=timeout)
- return json.loads(data)
- except (socket.error, httplib.BadStatusLine, urllib2.URLError):
- if not self._browser_backend.IsBrowserRunning():
- raise exceptions.BrowserGoneException()
- raise exceptions.BrowserConnectionGoneException()
+ data = self._browser_backend.Request('', timeout=timeout)
+ return json.loads(data)
def _FindWebContentsInfo(self):
for web_contents_info in self._ListWebContents():
diff --git a/tools/telemetry/telemetry/core/chrome/tab_list_backend.py b/tools/telemetry/telemetry/core/chrome/tab_list_backend.py
index b212a9e..b61e4ab 100644
--- a/tools/telemetry/telemetry/core/chrome/tab_list_backend.py
+++ b/tools/telemetry/telemetry/core/chrome/tab_list_backend.py
@@ -1,14 +1,11 @@
# Copyright (c) 2012 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
-import httplib
import json
-import socket
import urllib2
import weakref
from telemetry.core import util
-from telemetry.core import exceptions
from telemetry.core import tab
from telemetry.core.chrome import inspector_backend
@@ -44,7 +41,8 @@ class TabListBackend(object):
tab_id = debugger_url.split('/')[-1]
try:
response = self._browser_backend.Request('close/%s' % tab_id,
- timeout=timeout)
+ timeout=timeout,
+ throw_network_exception=True)
except urllib2.HTTPError:
raise Exception('Unable to close tab, tab id not found: %s' % tab_id)
assert response == 'Target is closing'
@@ -62,7 +60,8 @@ class TabListBackend(object):
tab_id = debugger_url.split('/')[-1]
try:
response = self._browser_backend.Request('activate/%s' % tab_id,
- timeout=timeout)
+ timeout=timeout,
+ throw_network_exception=True)
except urllib2.HTTPError:
raise Exception('Unable to activate tab, tab id not found: %s' % tab_id)
assert response == 'Target activated'
@@ -113,15 +112,10 @@ class TabListBackend(object):
# TODO: For compatibility with Chrome before r177683.
# This check is not completely correct, see crbug.com/190592.
return not context['url'].startswith('chrome-extension://')
- try:
- data = self._browser_backend.Request('', timeout=timeout)
- all_contexts = json.loads(data)
- tabs = filter(_IsTab, all_contexts)
- return tabs
- except (socket.error, httplib.BadStatusLine, urllib2.URLError):
- if not self._browser_backend.IsBrowserRunning():
- raise exceptions.BrowserGoneException()
- raise exceptions.BrowserConnectionGoneException()
+ data = self._browser_backend.Request('', timeout=timeout)
+ all_contexts = json.loads(data)
+ tabs = filter(_IsTab, all_contexts)
+ return tabs
def _UpdateTabList(self):
def GetDebuggerUrl(tab_info):