Index: tools/telemetry/telemetry/core/backends/chrome_inspector/inspector_backend.py |
diff --git a/tools/telemetry/telemetry/core/backends/chrome_inspector/inspector_backend.py b/tools/telemetry/telemetry/core/backends/chrome_inspector/inspector_backend.py |
index ceff8d735824618ccfc8bbd3e634ecb3f9c9e6ca..55c7f7bf2b9b678b634af20a33b9c2281190774b 100644 |
--- a/tools/telemetry/telemetry/core/backends/chrome_inspector/inspector_backend.py |
+++ b/tools/telemetry/telemetry/core/backends/chrome_inspector/inspector_backend.py |
@@ -4,7 +4,6 @@ |
import logging |
import os |
-import socket |
import sys |
from telemetry import decorators |
@@ -29,7 +28,7 @@ |
class InspectorBackend(object): |
def __init__(self, app, devtools_client, context, timeout=60): |
- self._websocket = inspector_websocket.InspectorWebsocket() |
+ self._websocket = inspector_websocket.InspectorWebsocket(self._HandleError) |
self._websocket.RegisterDomain( |
'Inspector', self._HandleInspectorDomainNotification) |
@@ -95,10 +94,7 @@ |
def Screenshot(self, timeout): |
assert self.screenshot_supported, 'Browser does not support screenshotting' |
- try: |
- return self._page.CaptureScreenshot(timeout) |
- except (socket.error, websocket.WebSocketException) as e: |
- self._HandleError(e) |
+ return self._page.CaptureScreenshot(timeout) |
# Console public methods. |
@@ -113,10 +109,7 @@ |
# Memory public methods. |
def GetDOMStats(self, timeout): |
- try: |
- dom_counters = self._memory.GetDOMCounters(timeout) |
- except (socket.error, websocket.WebSocketException) as e: |
- self._HandleError(e) |
+ dom_counters = self._memory.GetDOMCounters(timeout) |
return { |
'document_count': dom_counters['documents'], |
'node_count': dom_counters['nodes'], |
@@ -126,42 +119,24 @@ |
# Page public methods. |
def WaitForNavigate(self, timeout): |
- try: |
- self._page.WaitForNavigate(timeout) |
- except (socket.error, websocket.WebSocketException) as e: |
- self._HandleError(e) |
+ self._page.WaitForNavigate(timeout) |
def Navigate(self, url, script_to_evaluate_on_commit, timeout): |
- try: |
- self._page.Navigate(url, script_to_evaluate_on_commit, timeout) |
- except (socket.error, websocket.WebSocketException) as e: |
- self._HandleError(e) |
+ self._page.Navigate(url, script_to_evaluate_on_commit, timeout) |
def GetCookieByName(self, name, timeout): |
- try: |
- return self._page.GetCookieByName(name, timeout) |
- except (socket.error, websocket.WebSocketException) as e: |
- self._HandleError(e) |
+ return self._page.GetCookieByName(name, timeout) |
# Runtime public methods. |
def ExecuteJavaScript(self, expr, context_id=None, timeout=60): |
- try: |
- self._runtime.Execute(expr, context_id, timeout) |
- except (socket.error, websocket.WebSocketException) as e: |
- self._HandleError(e) |
+ self._runtime.Execute(expr, context_id, timeout) |
def EvaluateJavaScript(self, expr, context_id=None, timeout=60): |
- try: |
- return self._runtime.Evaluate(expr, context_id, timeout) |
- except (socket.error, websocket.WebSocketException) as e: |
- self._HandleError(e) |
+ return self._runtime.Evaluate(expr, context_id, timeout) |
def EnableAllContexts(self): |
- try: |
- return self._runtime.EnableAllContexts() |
- except (socket.error, websocket.WebSocketException) as e: |
- self._HandleError(e) |
+ return self._runtime.EnableAllContexts() |
# Timeline public methods. |
@@ -170,18 +145,12 @@ |
return self._timeline_model |
def StartTimelineRecording(self): |
- try: |
- self._network.timeline_recorder.Start() |
- except (socket.error, websocket.WebSocketException) as e: |
- self._HandleError(e) |
+ self._network.timeline_recorder.Start() |
def StopTimelineRecording(self): |
builder = trace_data_module.TraceDataBuilder() |
- try: |
- data = self._network.timeline_recorder.Stop() |
- except (socket.error, websocket.WebSocketException) as e: |
- self._HandleError(e) |
+ data = self._network.timeline_recorder.Stop() |
if data: |
builder.AddEventsTo(trace_data_module.INSPECTOR_TRACE_PART, data) |
self._timeline_model = timeline_model_module.TimelineModel( |
@@ -190,10 +159,7 @@ |
# Network public methods. |
def ClearCache(self): |
- try: |
- self._network.ClearCache() |
- except (socket.error, websocket.WebSocketException) as e: |
- self._HandleError(e) |
+ self._network.ClearCache() |
# Methods used internally by other backends. |
@@ -205,15 +171,15 @@ |
if res['method'] == 'Inspector.targetCrashed': |
raise exceptions.DevtoolsTargetCrashException(self.app) |
- def _HandleError(self, error): |
+ def _HandleError(self, elapsed_time): |
if self.IsInspectable(): |
raise exceptions.DevtoolsTargetCrashException(self.app, |
'Received a socket error in the browser connection and the tab ' |
'still exists, assuming it timed out. ' |
- 'Error=%s' % error) |
+ 'Elapsed=%ds Error=%s' % (elapsed_time, sys.exc_info()[1])) |
raise exceptions.DevtoolsTargetCrashException(self.app, |
'Received a socket error in the browser connection and the tab no ' |
- 'longer exists, assuming it crashed. Error=%s' % error) |
+ 'longer exists, assuming it crashed. Error=%s' % sys.exc_info()[1]) |
def _WaitForInspectorToGoAwayAndReconnect(self): |
sys.stderr.write('The connection to Chrome was lost to the Inspector UI.\n') |
@@ -236,10 +202,7 @@ |
sys.stderr.write('Inspector\'s UI closed. Telemetry will now resume.\n') |
def CollectGarbage(self): |
- try: |
- self._page.CollectGarbage() |
- except (socket.error, websocket.WebSocketException) as e: |
- self._HandleError(e) |
+ self._page.CollectGarbage() |
def TakeJSHeapSnapshot(self, timeout=120): |
snapshot = [] |
@@ -248,16 +211,12 @@ |
if res['method'] == 'HeapProfiler.addHeapSnapshotChunk': |
snapshot.append(res['params']['chunk']) |
- try: |
- self._websocket.RegisterDomain('HeapProfiler', OnNotification) |
- |
- self._websocket.SyncRequest({'method': 'Page.getResourceTree'}, timeout) |
- self._websocket.SyncRequest({'method': 'Debugger.enable'}, timeout) |
- self._websocket.SyncRequest( |
- {'method': 'HeapProfiler.takeHeapSnapshot'}, timeout) |
- except (socket.error, websocket.WebSocketException) as e: |
- self._HandleError(e) |
- |
+ self._websocket.RegisterDomain('HeapProfiler', OnNotification) |
+ |
+ self._websocket.SyncRequest({'method': 'Page.getResourceTree'}, timeout) |
+ self._websocket.SyncRequest({'method': 'Debugger.enable'}, timeout) |
+ self._websocket.SyncRequest( |
+ {'method': 'HeapProfiler.takeHeapSnapshot'}, timeout) |
snapshot = ''.join(snapshot) |
self.UnregisterDomain('HeapProfiler') |