Index: tools/telemetry/telemetry/internal/backends/chrome_inspector/devtools_http.py |
diff --git a/tools/telemetry/telemetry/internal/backends/chrome_inspector/devtools_http.py b/tools/telemetry/telemetry/internal/backends/chrome_inspector/devtools_http.py |
deleted file mode 100644 |
index fecd7680fdccbe89379451765c1ef950ef1da47c..0000000000000000000000000000000000000000 |
--- a/tools/telemetry/telemetry/internal/backends/chrome_inspector/devtools_http.py |
+++ /dev/null |
@@ -1,107 +0,0 @@ |
-# Copyright 2014 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 errno |
-import httplib |
-import json |
-import socket |
-import sys |
- |
-from telemetry.core import exceptions |
- |
- |
-class DevToolsClientConnectionError(exceptions.Error): |
- pass |
- |
- |
-class DevToolsClientUrlError(DevToolsClientConnectionError): |
- pass |
- |
- |
-class DevToolsHttp(object): |
- """A helper class to send and parse DevTools HTTP requests. |
- |
- This class maintains a persistent http connection to Chrome devtools. |
- Ideally, owners of instances of this class should call Disconnect() before |
- disposing of the instance. Otherwise, the connection will not be closed until |
- the instance is garbage collected. |
- """ |
- |
- def __init__(self, devtools_port): |
- self._devtools_port = devtools_port |
- self._conn = None |
- |
- def __del__(self): |
- self.Disconnect() |
- |
- def _Connect(self, timeout): |
- """Attempts to establish a connection to Chrome devtools.""" |
- assert not self._conn |
- try: |
- host_port = '127.0.0.1:%i' % self._devtools_port |
- self._conn = httplib.HTTPConnection(host_port, timeout=timeout) |
- except (socket.error, httplib.HTTPException) as e: |
- raise DevToolsClientConnectionError, (e,), sys.exc_info()[2] |
- |
- def Disconnect(self): |
- """Closes the HTTP connection.""" |
- if not self._conn: |
- return |
- |
- try: |
- self._conn.close() |
- except (socket.error, httplib.HTTPException) as e: |
- raise DevToolsClientConnectionError, (e,), sys.exc_info()[2] |
- finally: |
- self._conn = None |
- |
- def Request(self, path, timeout=30): |
- """Sends a request to Chrome devtools. |
- |
- This method lazily creates an HTTP connection, if one does not already |
- exist. |
- |
- Args: |
- path: The DevTools URL path, without the /json/ prefix. |
- timeout: Timeout defaults to 30 seconds. |
- |
- Raises: |
- DevToolsClientConnectionError: If the connection fails. |
- """ |
- assert timeout |
- |
- if not self._conn: |
- self._Connect(timeout) |
- |
- endpoint = '/json' |
- if path: |
- endpoint += '/' + path |
- if self._conn.sock: |
- self._conn.sock.settimeout(timeout) |
- else: |
- self._conn.timeout = timeout |
- |
- try: |
- # By default, httplib avoids going through the default system proxy. |
- self._conn.request('GET', endpoint) |
- response = self._conn.getresponse() |
- return response.read() |
- except (socket.error, httplib.HTTPException) as e: |
- self.Disconnect() |
- if isinstance(e, socket.error) and e.errno == errno.ECONNREFUSED: |
- raise DevToolsClientUrlError, (e,), sys.exc_info()[2] |
- raise DevToolsClientConnectionError, (e,), sys.exc_info()[2] |
- |
- def RequestJson(self, path, timeout=30): |
- """Sends a request and parse the response as JSON. |
- |
- Args: |
- path: The DevTools URL path, without the /json/ prefix. |
- timeout: Timeout defaults to 30 seconds. |
- |
- Raises: |
- DevToolsClientConnectionError: If the connection fails. |
- ValueError: If the response is not a valid JSON. |
- """ |
- return json.loads(self.Request(path, timeout)) |