- add sources.
[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.core import util
6 from telemetry.core import web_contents
7
8
9 class ExtensionsNotSupportedException(Exception):
10   pass
11
12 class BrowserBackend(object):
13   """A base class for browser backends."""
14
15   WEBPAGEREPLAY_HOST = '127.0.0.1'
16
17   def __init__(self, is_content_shell, supports_extensions, browser_options,
18                tab_list_backend):
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
23     self._browser = None
24     self._tab_list_backend = tab_list_backend(self)
25
26   def AddReplayServerOptions(self, extra_wpr_args):
27     pass
28
29   def SetBrowser(self, browser):
30     self._browser = browser
31     self._tab_list_backend.Init()
32
33   @property
34   def browser(self):
35     return self._browser
36
37   @property
38   def supports_extensions(self):
39     """True if this browser backend supports extensions."""
40     return self._supports_extensions
41
42   @property
43   def wpr_mode(self):
44     return self.browser_options.wpr_mode
45
46   @property
47   def supports_tab_control(self):
48     raise NotImplementedError()
49
50   @property
51   def tab_list_backend(self):
52     return self._tab_list_backend
53
54   @property
55   def supports_tracing(self):
56     raise NotImplementedError()
57
58   @property
59   def supports_system_info(self):
60     return False
61
62   def StartTracing(self, custom_categories=None,
63                    timeout=web_contents.DEFAULT_WEB_CONTENTS_TIMEOUT):
64     raise NotImplementedError()
65
66   def StopTracing(self):
67     raise NotImplementedError()
68
69   def GetRemotePort(self, _):
70     return util.GetAvailableLocalPort()
71
72   def Start(self):
73     raise NotImplementedError()
74
75   def CreateForwarder(self, *port_pairs):
76     raise NotImplementedError()
77
78   def IsBrowserRunning(self):
79     raise NotImplementedError()
80
81   def GetStandardOutput(self):
82     raise NotImplementedError()
83
84   def GetStackTrace(self):
85     raise NotImplementedError()
86
87   def GetSystemInfo(self):
88     raise NotImplementedError()
89
90 class DoNothingForwarder(object):
91   def __init__(self, *port_pairs):
92     self._host_port = port_pairs[0].local_port
93
94   @property
95   def url(self):
96     assert self._host_port
97     return 'http://127.0.0.1:%i' % self._host_port
98
99   def Close(self):
100     self._host_port = None