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.
5 from telemetry.core.backends import browser_backend
6 from telemetry.core.backends.webdriver import webdriver_tab_list_backend
8 class WebDriverBrowserBackend(browser_backend.BrowserBackend):
9 """The webdriver-based backend for controlling a locally-executed browser
10 instance, on Linux, Mac, and Windows.
13 def __init__(self, driver_creator, supports_extensions, browser_options):
14 super(WebDriverBrowserBackend, self).__init__(
15 is_content_shell=False,
16 supports_extensions=supports_extensions,
17 browser_options=browser_options,
18 tab_list_backend=webdriver_tab_list_backend.WebDriverTabListBackend)
20 self._driver_creator = driver_creator
22 self.webpagereplay_local_http_port = 80
23 self.webpagereplay_local_https_port = 443
24 self.webpagereplay_remote_http_port = self.webpagereplay_local_http_port
25 self.webpagereplay_remote_https_port = self.webpagereplay_local_https_port
28 assert not self._driver
29 self._driver = self._driver_creator()
37 def supports_tab_control(self):
38 # Based on webdriver protocol API, only closing a tab is supported while
39 # activating or creating a tab is not. Thus, tab control is not supported.
43 def supports_tracing(self):
44 # Tracing is not available in IE/Firefox yet and not supported through
48 def GetProcessName(self, cmd_line):
49 # Leave implementation details to subclass as process name depends on the
51 raise NotImplementedError()
58 def CreateForwarder(self, *port_pairs):
59 return browser_backend.DoNothingForwarder(*port_pairs)
61 def IsBrowserRunning(self):
62 # Assume the browser is running if not explicitly closed.
63 return self._driver is not None