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

Unified Diff: tools/telemetry/telemetry/core/backends/chrome_inspector/inspector_backend.py

Issue 980043003: Telemetry: Explicitly disconnect InspectorBackend. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@telemetry_add_decorator
Patch Set: Rebase. Created 5 years, 9 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 side-by-side diff with in-line comments
Download patch
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 f55195151f15f6fdc319d5ecd80517ecf6b3dfd1..2c276f3561fab7937a5750f410a3e920bd9820d9 100644
--- a/tools/telemetry/telemetry/core/backends/chrome_inspector/inspector_backend.py
+++ b/tools/telemetry/telemetry/core/backends/chrome_inspector/inspector_backend.py
@@ -34,13 +34,19 @@ def _HandleInspectorWebSocketExceptions(func):
def inner(inspector_backend, *args, **kwargs):
try:
return func(inspector_backend, *args, **kwargs)
- except (socket.error, websocket.WebSocketException) as e:
+ except (socket.error, websocket.WebSocketException,
+ inspector_websocket.WebSocketDisconnected) as e:
inspector_backend._ConvertExceptionFromInspectorWebsocket(e)
return inner
class InspectorBackend(object):
+ """Class for communicating with a devtools client.
+
+ The owner of an instance of this class is responsible for calling
+ Disconnect() before disposing of the instance.
+ """
def __init__(self, app, devtools_client, context, timeout=60):
self._websocket = inspector_websocket.InspectorWebsocket()
self._websocket.RegisterDomain(
@@ -68,8 +74,17 @@ class InspectorBackend(object):
self._network = inspector_network.InspectorNetwork(self._websocket)
self._timeline_model = None
+ def Disconnect(self):
+ """Disconnects the inspector websocket.
+
+ This method intentionally leaves the self._websocket object around, so that
+ future calls it to it will fail with a relevant error.
+ """
+ if self._websocket:
+ self._websocket.Disconnect()
+
def __del__(self):
- self._websocket.Disconnect()
+ self.Disconnect()
@property
def app(self):

Powered by Google App Engine
This is Rietveld 408576698