Commit b18d23f7 authored by erikchen's avatar erikchen Committed by Commit bot

Telemetry: Simplify exception handling of failed websocket connections.

Previously, an intermediary exception InspectorException was generated. This
was caught and then converted into a more common Telemetry exception. Now the
connection failure throws a standard Telemetry exception directly.

BUG=460625

Review URL: https://codereview.chromium.org/955263003

Cr-Commit-Position: refs/heads/master@{#319161}
parent 2941af41
...@@ -74,10 +74,12 @@ class TabListBackend(inspector_backend_list.InspectorBackendList): ...@@ -74,10 +74,12 @@ class TabListBackend(inspector_backend_list.InspectorBackendList):
def CreateWrapper(self, inspector_backend): def CreateWrapper(self, inspector_backend):
return tab.Tab(inspector_backend, self, self._browser_backend.browser) return tab.Tab(inspector_backend, self, self._browser_backend.browser)
def _HandleDevToolsConnectionError(self, err_msg): def _HandleDevToolsConnectionError(self, error):
if not self._browser_backend.IsAppRunning(): if not self._browser_backend.IsAppRunning():
raise exceptions.BrowserGoneException(self.app, err_msg) error.AddDebuggingMessage('The browser is not running. It probably '
'crashed.')
elif not self._browser_backend.HasBrowserFinishedLaunching(): elif not self._browser_backend.HasBrowserFinishedLaunching():
raise exceptions.BrowserConnectionGoneException(self.app, err_msg) error.AddDebuggingMessage('The browser exists but cannot be reached.')
else: else:
raise exceptions.DevtoolsTargetCrashException(self.app, err_msg) error.AddDebuggingMessage('The browser exists and can be reached. '
'The devtools target probably crashed.')
...@@ -22,10 +22,6 @@ from telemetry.timeline import model as timeline_model_module ...@@ -22,10 +22,6 @@ from telemetry.timeline import model as timeline_model_module
from telemetry.timeline import trace_data as trace_data_module from telemetry.timeline import trace_data as trace_data_module
class InspectorException(Exception):
pass
class InspectorBackend(object): class InspectorBackend(object):
def __init__(self, app, devtools_client, context, timeout=60): def __init__(self, app, devtools_client, context, timeout=60):
self._websocket = inspector_websocket.InspectorWebsocket() self._websocket = inspector_websocket.InspectorWebsocket()
...@@ -44,7 +40,7 @@ class InspectorBackend(object): ...@@ -44,7 +40,7 @@ class InspectorBackend(object):
try: try:
self._websocket.Connect(self.debugger_url) self._websocket.Connect(self.debugger_url)
except (websocket.WebSocketException, exceptions.TimeoutException) as e: except (websocket.WebSocketException, exceptions.TimeoutException) as e:
raise InspectorException(e.msg) self._HandleError(e)
self._console = inspector_console.InspectorConsole(self._websocket) self._console = inspector_console.InspectorConsole(self._websocket)
self._memory = inspector_memory.InspectorMemory(self._websocket) self._memory = inspector_memory.InspectorMemory(self._websocket)
......
...@@ -77,9 +77,9 @@ class InspectorBackendList(collections.Sequence): ...@@ -77,9 +77,9 @@ class InspectorBackendList(collections.Sequence):
try: try:
backend = self._devtools_context_map_backend.GetInspectorBackend( backend = self._devtools_context_map_backend.GetInspectorBackend(
context_id) context_id)
except inspector_backend.InspectorException: except exceptions.Error as e:
err_msg = sys.exc_info()[1] self._HandleDevToolsConnectionError(e)
self._HandleDevToolsConnectionError(err_msg) raise e
# Propagate KeyError from GetInspectorBackend call. # Propagate KeyError from GetInspectorBackend call.
wrapper = self.CreateWrapper(backend) wrapper = self.CreateWrapper(backend)
...@@ -114,10 +114,10 @@ class InspectorBackendList(collections.Sequence): ...@@ -114,10 +114,10 @@ class InspectorBackendList(collections.Sequence):
if context_id not in self._filtered_context_ids: if context_id not in self._filtered_context_ids:
del self._wrapper_dict[context_id] del self._wrapper_dict[context_id]
def _HandleDevToolsConnectionError(self, err_msg): def _HandleDevToolsConnectionError(self, error):
"""Call when handling errors in connecting to the DevTools websocket. """Called when handling errors in connecting to the DevTools websocket.
This can be overwritten by sub-classes to further specify the exceptions This can be overwritten by sub-classes to add more debugging information to
which should be thrown. errors.
""" """
raise exceptions.DevtoolsTargetCrashException(self.app, err_msg) pass
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment