OLD | NEW |
---|---|
(Empty) | |
1 # Copyright (c) 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 from telemetry.core import util | |
5 from telemetry.core.webdriver import webdriver_tab_list_backend | |
6 | |
7 class WebDriverBrowserBackend(object): | |
8 """The webdriver-based backend for controlling a locally-executed browser | |
9 instance, on Linux, Mac, and Windows. | |
10 """ | |
11 | |
12 WEBPAGEREPLAY_HOST = '127.0.0.1' | |
13 | |
14 def __init__(self, webdriver, supports_extensions, options): | |
15 self.browser_type = options.browser_type | |
16 self._driver = webdriver | |
17 self._supports_extensions = supports_extensions | |
tonyg
2013/07/26 18:21:07
Hmm... I wonder whether this needs to be False.
chrisgao (Use stgao instead)
2013/07/30 02:06:49
I suggest we leave it as it is. Because Firefox do
| |
18 self.options = options | |
19 self._browser = None | |
20 self.webpagereplay_local_http_port = 80 | |
21 self.webpagereplay_local_https_port = 443 | |
22 self.webpagereplay_remote_http_port = self.webpagereplay_local_http_port | |
23 self.webpagereplay_remote_https_port = self.webpagereplay_local_https_port | |
24 self._tab_list_backend = \ | |
25 webdriver_tab_list_backend.WebDriverTabListBackend(self) | |
26 | |
27 def SetBrowser(self, browser): | |
28 self._browser = browser | |
29 self._tab_list_backend.Init() | |
30 | |
31 @property | |
32 def driver(self): | |
33 return self._driver | |
34 | |
35 @property | |
36 def browser(self): | |
37 return self._browser | |
38 | |
39 @property | |
40 def is_content_shell(self): | |
41 return False | |
42 | |
43 @property | |
44 def supports_extensions(self): | |
45 return self._supports_extensions | |
46 | |
47 @property | |
48 def tab_list_backend(self): | |
49 return self._tab_list_backend | |
50 | |
51 @property | |
52 def supports_tab_control(self): | |
tonyg
2013/07/26 18:21:07
Is there any hope for supporting this with web dri
chrisgao (Use stgao instead)
2013/07/30 02:06:49
Base on webdriver protocol API, only closing a tab
| |
53 return False | |
54 | |
55 @property | |
56 def wpr_mode(self): | |
57 return self.options.wpr_mode | |
58 | |
59 @property | |
60 def supports_tracing(self): | |
61 return False | |
62 | |
63 def StartTracing(self, _): | |
64 raise NotImplementedError() | |
65 | |
66 def StopTracing(self): | |
67 raise NotImplementedError() | |
68 | |
69 def GetTraceResultAndReset(self): | |
70 raise NotImplementedError() | |
71 | |
72 def GetProcessName(self, _): | |
73 raise NotImplementedError() | |
74 | |
75 def GetRemotePort(self, _): | |
76 return util.GetAvailableLocalPort() | |
77 | |
78 def Close(self): | |
79 self._driver.quit() | |
80 self._driver = None | |
81 | |
82 def CreateForwarder(self, *port_pairs): | |
83 class DoNothingForwarder(object): | |
tonyg
2013/07/26 18:21:07
Can this code be shared with browser_backend.py?
chrisgao (Use stgao instead)
2013/07/30 02:06:49
Done.
I think it is not a good idea for webdriver
| |
84 def __init__(self, *port_pairs): | |
85 self._host_port = port_pairs[0].local_port | |
86 | |
87 @property | |
88 def url(self): | |
89 assert self._host_port | |
90 return 'http://127.0.0.1:%i' % self._host_port | |
91 | |
92 def Close(self): | |
93 self._host_port = None | |
94 | |
95 return DoNothingForwarder(*port_pairs) | |
96 | |
97 def IsBrowserRunning(self): | |
98 # Assume the browser is running if not explicitly closed. | |
99 return self._driver is not None | |
100 | |
101 def GetStandardOutput(self): | |
102 return '' | |
103 | |
104 def __del__(self): | |
105 self.Close() | |
106 | |
OLD | NEW |