1 # Copyright 2013 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
5 from telemetry.core import util
6 from telemetry.core import web_contents
9 class ExtensionsNotSupportedException(Exception):
12 class BrowserBackend(object):
13 """A base class for browser backends."""
15 WEBPAGEREPLAY_HOST = '127.0.0.1'
17 def __init__(self, is_content_shell, supports_extensions, browser_options,
19 self.browser_type = browser_options.browser_type
20 self.is_content_shell = is_content_shell
21 self._supports_extensions = supports_extensions
22 self.browser_options = browser_options
24 self._tab_list_backend = tab_list_backend(self)
26 def AddReplayServerOptions(self, extra_wpr_args):
29 def SetBrowser(self, browser):
30 self._browser = browser
31 self._tab_list_backend.Init()
38 def supports_extensions(self):
39 """True if this browser backend supports extensions."""
40 return self._supports_extensions
44 return self.browser_options.wpr_mode
47 def supports_tab_control(self):
48 raise NotImplementedError()
51 def tab_list_backend(self):
52 return self._tab_list_backend
55 def supports_tracing(self):
56 raise NotImplementedError()
59 def supports_system_info(self):
62 def StartTracing(self, custom_categories=None,
63 timeout=web_contents.DEFAULT_WEB_CONTENTS_TIMEOUT):
64 raise NotImplementedError()
66 def StopTracing(self):
67 raise NotImplementedError()
69 def GetRemotePort(self, _):
70 return util.GetAvailableLocalPort()
73 raise NotImplementedError()
75 def CreateForwarder(self, *port_pairs):
76 raise NotImplementedError()
78 def IsBrowserRunning(self):
79 raise NotImplementedError()
81 def GetStandardOutput(self):
82 raise NotImplementedError()
84 def GetStackTrace(self):
85 raise NotImplementedError()
87 def GetSystemInfo(self):
88 raise NotImplementedError()
90 class DoNothingForwarder(object):
91 def __init__(self, *port_pairs):
92 self._host_port = port_pairs[0].local_port
96 assert self._host_port
97 return 'http://127.0.0.1:%i' % self._host_port
100 self._host_port = None