 Chromium Code Reviews
 Chromium Code Reviews Issue 20672002:
  [telemetry] Add a webdriver backend with support for IE.  (Closed) 
  Base URL: https://chromium.googlesource.com/chromium/src.git@master
    
  
    Issue 20672002:
  [telemetry] Add a webdriver backend with support for IE.  (Closed) 
  Base URL: https://chromium.googlesource.com/chromium/src.git@master| 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..9221836ce17e9263ec67d421f8bb2644a14dee5a | 
| --- /dev/null | 
| +++ b/tools/telemetry/telemetry/core/webdriver/webdriver_browser_backend.py | 
| @@ -0,0 +1,101 @@ | 
| +# 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' | 
| 
tonyg
2013/07/30 19:35:34
Is this unused? If not, can we share it with the s
 
chrisgao (Use stgao instead)
2013/07/31 19:05:41
Found chrome backend and webdriver backend share a
 | 
| + | 
| + def __init__(self, webdriver, supports_extensions, options): | 
| + self.browser_type = options.browser_type | 
| + self.webdriver_based = True | 
| + self._driver = webdriver | 
| + self._supports_extensions = supports_extensions | 
| + 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): | 
| + # Based on webdriver protocol API, only closing a tab is supported while | 
| + # activating or creating a tab is not. Thus, tab control is not supported. | 
| + return False | 
| + | 
| + @property | 
| + def wpr_mode(self): | 
| + return self.options.wpr_mode | 
| + | 
| + @property | 
| + def supports_tracing(self): | 
| + # Tracing is not available in IE/Firefox yet and not supported through | 
| + # webdriver API. | 
| + return False | 
| + | 
| + def StartTracing(self, _): | 
| + raise NotImplementedError() | 
| + | 
| + def StopTracing(self): | 
| + raise NotImplementedError() | 
| + | 
| + def GetTraceResultAndReset(self): | 
| + raise NotImplementedError() | 
| + | 
| + def GetProcessName(self, _): | 
| + # Leave implementation details to subclass as process name depends on the | 
| + # type of browser. | 
| + raise NotImplementedError() | 
| + | 
| + def GetRemotePort(self, _): | 
| + return util.GetAvailableLocalPort() | 
| + | 
| + def Close(self): | 
| + self._driver.quit() | 
| + self._driver = None | 
| + | 
| + def CreateForwarder(self, *port_pairs): | 
| + return util.DoNothingForwarder(*port_pairs) | 
| + | 
| + def IsBrowserRunning(self): | 
| + # Assume the browser is running if not explicitly closed. | 
| + return self._driver is not None | 
| + | 
| + def GetStandardOutput(self): | 
| + # TODO: Double check whether there is a way for python client to get stdout. | 
| + return '' | 
| + | 
| + def __del__(self): | 
| + self.Close() |