Index: tools/telemetry/telemetry/core/backends/browser_backend.py |
diff --git a/tools/telemetry/telemetry/core/backends/browser_backend.py b/tools/telemetry/telemetry/core/backends/browser_backend.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..64b01e77892c8dd23a4fd08ed3065941645d8d3b |
--- /dev/null |
+++ b/tools/telemetry/telemetry/core/backends/browser_backend.py |
@@ -0,0 +1,96 @@ |
+# Copyright (c) 2013 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. |
+ |
+from telemetry.core import util |
+from telemetry.core import web_contents |
+ |
+ |
+class ExtensionsNotSupportedException(Exception): |
+ pass |
+ |
+class BrowserBackend(object): |
+ """A base class for browser backends.""" |
+ |
+ WEBPAGEREPLAY_HOST = '127.0.0.1' |
+ |
+ def __init__(self, is_content_shell, supports_extensions, options, |
+ tab_list_backend): |
+ self.browser_type = options.browser_type |
+ self.is_content_shell = is_content_shell |
+ self._supports_extensions = supports_extensions |
+ self.options = options |
+ self._browser = None |
+ self._tab_list_backend = tab_list_backend(self) |
+ |
+ def AddReplayServerOptions(self, options): |
+ pass |
+ |
+ def SetBrowser(self, browser): |
+ self._browser = browser |
+ self._tab_list_backend.Init() |
+ |
+ @property |
+ def browser(self): |
+ return self._browser |
+ |
+ @property |
+ def supports_extensions(self): |
+ """True if this browser backend supports extensions.""" |
+ return self._supports_extensions |
+ |
+ @property |
+ def wpr_mode(self): |
+ return self.options.wpr_mode |
+ |
+ @property |
+ def supports_tab_control(self): |
+ raise NotImplementedError() |
+ |
+ @property |
+ def tab_list_backend(self): |
+ return self._tab_list_backend |
+ |
+ @property |
+ def supports_tracing(self): |
+ raise NotImplementedError() |
+ |
+ def StartTracing(self, custom_categories=None, |
+ timeout=web_contents.DEFAULT_WEB_CONTENTS_TIMEOUT): |
+ raise NotImplementedError() |
+ |
+ def StopTracing(self): |
+ raise NotImplementedError() |
+ |
+ def GetTraceResultAndReset(self): |
+ raise NotImplementedError() |
+ |
+ def GetRemotePort(self, _): |
+ return util.GetAvailableLocalPort() |
+ |
+ def Start(self): |
+ raise NotImplementedError() |
+ |
+ def CreateForwarder(self, *port_pairs): |
+ raise NotImplementedError() |
+ |
+ def IsBrowserRunning(self): |
+ raise NotImplementedError() |
+ |
+ def GetStandardOutput(self): |
+ raise NotImplementedError() |
+ |
+ def GetStackTrace(self): |
+ raise NotImplementedError() |
+ |
+class DoNothingForwarder(object): |
+ def __init__(self, *port_pairs): |
+ self._host_port = port_pairs[0].local_port |
+ |
+ @property |
+ def url(self): |
+ assert self._host_port |
+ return 'http://127.0.0.1:%i' % self._host_port |
+ |
+ def Close(self): |
+ self._host_port = None |