• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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.
4
5from telemetry import decorators
6
7from telemetry.core import web_contents
8from telemetry.core.forwarders import do_nothing_forwarder
9
10
11class ExtensionsNotSupportedException(Exception):
12  pass
13
14
15class BrowserBackend(object):
16  """A base class for browser backends."""
17
18  def __init__(self, is_content_shell, supports_extensions, browser_options,
19               tab_list_backend):
20    assert browser_options.browser_type
21    self.browser_type = browser_options.browser_type
22    self.is_content_shell = is_content_shell
23    self._supports_extensions = supports_extensions
24    self.browser_options = browser_options
25    self._browser = None
26    self._tab_list_backend_class = tab_list_backend
27    self._forwarder_factory = None
28
29  def AddReplayServerOptions(self, extra_wpr_args):
30    pass
31
32  def SetBrowser(self, browser):
33    self._browser = browser
34    if (self.browser_options.netsim and
35        not browser.platform.CanLaunchApplication('ipfw')):
36      browser.platform.InstallApplication('ipfw')
37
38  @property
39  def browser(self):
40    return self._browser
41
42  @property
43  def supports_extensions(self):
44    """True if this browser backend supports extensions."""
45    return self._supports_extensions
46
47  @property
48  def wpr_mode(self):
49    return self.browser_options.wpr_mode
50
51  @property
52  def supports_tab_control(self):
53    raise NotImplementedError()
54
55  @property
56  @decorators.Cache
57  def tab_list_backend(self):
58    return self._tab_list_backend_class(self)
59
60  @property
61  def supports_tracing(self):
62    raise NotImplementedError()
63
64  @property
65  def supports_system_info(self):
66    return False
67
68  @property
69  def forwarder_factory(self):
70    if not self._forwarder_factory:
71      self._forwarder_factory = do_nothing_forwarder.DoNothingForwarderFactory()
72    return self._forwarder_factory
73
74  def StartTracing(self, custom_categories=None,
75                   timeout=web_contents.DEFAULT_WEB_CONTENTS_TIMEOUT):
76    raise NotImplementedError()
77
78  @property
79  def is_tracing_running(self):
80    return False
81
82  def StopTracing(self):
83    raise NotImplementedError()
84
85  def GetRemotePort(self, port):
86    return port
87
88  def Start(self):
89    raise NotImplementedError()
90
91  def IsBrowserRunning(self):
92    raise NotImplementedError()
93
94  def GetStandardOutput(self):
95    raise NotImplementedError()
96
97  def GetStackTrace(self):
98    raise NotImplementedError()
99
100  def GetSystemInfo(self):
101    raise NotImplementedError()
102