Upstream version 6.35.121.0
[platform/framework/web/crosswalk.git] / src / tools / telemetry / telemetry / core / backends / browser_backend.py
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
5 from telemetry import decorators
6
7 from telemetry.core import web_contents
8 from telemetry.core.forwarders import do_nothing_forwarder
9
10
11 class ExtensionsNotSupportedException(Exception):
12   pass
13
14
15 class 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()