Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(179)

Unified Diff: tools/telemetry/telemetry/core/backends/webdriver/webdriver_browser_backend.py

Issue 20672002: [telemetry] Add a webdriver backend with support for IE. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix errors after rebase. Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: tools/telemetry/telemetry/core/backends/webdriver/webdriver_browser_backend.py
diff --git a/tools/telemetry/telemetry/core/backends/webdriver/webdriver_browser_backend.py b/tools/telemetry/telemetry/core/backends/webdriver/webdriver_browser_backend.py
new file mode 100644
index 0000000000000000000000000000000000000000..019efbeb65d6efd5c449118c404f8d00db2ccc06
--- /dev/null
+++ b/tools/telemetry/telemetry/core/backends/webdriver/webdriver_browser_backend.py
@@ -0,0 +1,69 @@
+# 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.backends import browser_backend
+from telemetry.core.backends.webdriver import webdriver_tab_list_backend
+
+class WebDriverBrowserBackend(browser_backend.BrowserBackend):
+ """The webdriver-based backend for controlling a locally-executed browser
+ instance, on Linux, Mac, and Windows.
+ """
+
+ def __init__(self, driver_creator, supports_extensions, options):
+ super(WebDriverBrowserBackend, self).__init__(
+ is_content_shell=False,
+ supports_extensions=supports_extensions,
+ options=options,
+ tab_list_backend=webdriver_tab_list_backend.WebDriverTabListBackend)
+
+ self._driver_creator = driver_creator
+ self._driver = 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
+
+ def Start(self):
+ assert not self._driver
+ self._driver = self._driver_creator()
+
+ @property
+ def driver(self):
+ assert self._driver
+ return self._driver
+
+ @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 supports_tracing(self):
+ # Tracing is not available in IE/Firefox yet and not supported through
+ # webdriver API.
+ return False
+
+ def GetProcessName(self, _):
+ # Leave implementation details to subclass as process name depends on the
+ # type of browser.
+ raise NotImplementedError()
+
+ def Close(self):
+ self._driver.quit()
+ self._driver = None
+
+ def CreateForwarder(self, *port_pairs):
+ return browser_backend.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(chrisgao): check if python client can get stdout of browsers.
+ return ''
+
+ def __del__(self):
+ self.Close()

Powered by Google App Engine
This is Rietveld 408576698