Chromium Code Reviews| Index: tools/telemetry/telemetry/core/webdriver/webdriver_browser_backend.py |
| diff --git a/tools/telemetry/telemetry/core/webdriver/webdriver_browser_backend.py b/tools/telemetry/telemetry/core/webdriver/webdriver_browser_backend.py |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..03a41bf672a447e131866cff4707d4a6ae6b6f04 |
| --- /dev/null |
| +++ b/tools/telemetry/telemetry/core/webdriver/webdriver_browser_backend.py |
| @@ -0,0 +1,106 @@ |
| +# Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| +# Use of this source code is governed by a BSD-style license that can be |
| +# found in the LICENSE file. |
| +from telemetry.core import util |
| +from telemetry.core.webdriver import webdriver_tab_list_backend |
| + |
| +class WebDriverBrowserBackend(object): |
| + """The webdriver-based backend for controlling a locally-executed browser |
| + instance, on Linux, Mac, and Windows. |
| + """ |
| + |
| + WEBPAGEREPLAY_HOST = '127.0.0.1' |
| + |
| + def __init__(self, webdriver, supports_extensions, options): |
| + self.browser_type = options.browser_type |
| + self._driver = webdriver |
| + 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
|
| + self.options = options |
| + self._browser = None |
| + self.webpagereplay_local_http_port = 80 |
| + self.webpagereplay_local_https_port = 443 |
| + self.webpagereplay_remote_http_port = self.webpagereplay_local_http_port |
| + self.webpagereplay_remote_https_port = self.webpagereplay_local_https_port |
| + self._tab_list_backend = \ |
| + webdriver_tab_list_backend.WebDriverTabListBackend(self) |
| + |
| + def SetBrowser(self, browser): |
| + self._browser = browser |
| + self._tab_list_backend.Init() |
| + |
| + @property |
| + def driver(self): |
| + return self._driver |
| + |
| + @property |
| + def browser(self): |
| + return self._browser |
| + |
| + @property |
| + def is_content_shell(self): |
| + return False |
| + |
| + @property |
| + def supports_extensions(self): |
| + return self._supports_extensions |
| + |
| + @property |
| + def tab_list_backend(self): |
| + return self._tab_list_backend |
| + |
| + @property |
| + 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
|
| + return False |
| + |
| + @property |
| + def wpr_mode(self): |
| + return self.options.wpr_mode |
| + |
| + @property |
| + def supports_tracing(self): |
| + return False |
| + |
| + def StartTracing(self, _): |
| + raise NotImplementedError() |
| + |
| + def StopTracing(self): |
| + raise NotImplementedError() |
| + |
| + def GetTraceResultAndReset(self): |
| + raise NotImplementedError() |
| + |
| + def GetProcessName(self, _): |
| + raise NotImplementedError() |
| + |
| + def GetRemotePort(self, _): |
| + return util.GetAvailableLocalPort() |
| + |
| + def Close(self): |
| + self._driver.quit() |
| + self._driver = None |
| + |
| + def CreateForwarder(self, *port_pairs): |
| + 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
|
| + def __init__(self, *port_pairs): |
| + self._host_port = port_pairs[0].local_port |
| + |
| + @property |
| + def url(self): |
| + assert self._host_port |
| + return 'http://127.0.0.1:%i' % self._host_port |
| + |
| + def Close(self): |
| + self._host_port = None |
| + |
| + return DoNothingForwarder(*port_pairs) |
| + |
| + def IsBrowserRunning(self): |
| + # Assume the browser is running if not explicitly closed. |
| + return self._driver is not None |
| + |
| + def GetStandardOutput(self): |
| + return '' |
| + |
| + def __del__(self): |
| + self.Close() |
| + |