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

Unified Diff: tools/telemetry/telemetry/core/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: Address comments. Created 7 years, 5 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/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()

Powered by Google App Engine
This is Rietveld 408576698