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

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: 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..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()
+

Powered by Google App Engine
This is Rietveld 408576698