diff options
author | kochi@chromium.org <kochi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-08-06 05:05:26 +0000 |
---|---|---|
committer | kochi@chromium.org <kochi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-08-06 05:05:26 +0000 |
commit | d8d13a2ae191fcb47acb11411ce3ed61424b9035 (patch) | |
tree | 15ab038349805551967f6e74de0c3835855fa523 /tools/telemetry | |
parent | 6ae1107bb2e65db6f4b098c584bae62ed7029dfb (diff) | |
download | chromium_src-d8d13a2ae191fcb47acb11411ce3ed61424b9035.zip chromium_src-d8d13a2ae191fcb47acb11411ce3ed61424b9035.tar.gz chromium_src-d8d13a2ae191fcb47acb11411ce3ed61424b9035.tar.bz2 |
Revert 215785 "[telemetry] Add a webdriver backend with support ..."
> [telemetry] Add a webdriver backend with support for IE.
> BUG=none
> TEST=tools/perf/run_measurement --browser=internet-explorer octane & kraken
>
> Review URL: https://chromiumcodereview.appspot.com/20672002
TBR=chrisgao@chromium.org
Review URL: https://codereview.chromium.org/22336006
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@215796 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'tools/telemetry')
6 files changed, 1 insertions, 328 deletions
diff --git a/tools/telemetry/telemetry/core/backends/webdriver/__init__.py b/tools/telemetry/telemetry/core/backends/webdriver/__init__.py deleted file mode 100644 index 9228df8..0000000 --- a/tools/telemetry/telemetry/core/backends/webdriver/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -# Copyright 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. diff --git a/tools/telemetry/telemetry/core/backends/webdriver/webdriver_browser_backend.py b/tools/telemetry/telemetry/core/backends/webdriver/webdriver_browser_backend.py deleted file mode 100644 index 7b680c7..0000000 --- a/tools/telemetry/telemetry/core/backends/webdriver/webdriver_browser_backend.py +++ /dev/null @@ -1,69 +0,0 @@ -# Copyright 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() diff --git a/tools/telemetry/telemetry/core/backends/webdriver/webdriver_desktop_browser_finder.py b/tools/telemetry/telemetry/core/backends/webdriver/webdriver_desktop_browser_finder.py deleted file mode 100644 index a781a97..0000000 --- a/tools/telemetry/telemetry/core/backends/webdriver/webdriver_desktop_browser_finder.py +++ /dev/null @@ -1,86 +0,0 @@ -# Copyright 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. -"""Finds desktop browsers that can be controlled by telemetry.""" - -import os -import sys - -from telemetry.core import browser -from telemetry.core import util -from telemetry.core import possible_browser -from telemetry.core import platform -from telemetry.core.backends.webdriver import webdriver_browser_backend - - -# Add webdriver selenium client to PYTHONPATH. -sys.path.insert(0, os.path.join(util.GetChromiumSrcDir(), - 'third_party', 'webdriver', 'pylib')) -# TODO(chrisgao): Handle failure of import gracefully. crbug.com/266177 -from selenium import webdriver # pylint: disable=F0401 - -ALL_BROWSER_TYPES = ','.join([ - 'internet-explorer', - 'internet-explorer-x64']) - - -class PossibleWebDriverBrowser(possible_browser.PossibleBrowser): - """A browser that can be controlled through webdriver API.""" - - def __init__(self, browser_type, options): - super(PossibleWebDriverBrowser, self).__init__(browser_type, options) - - def CreateWebDriverBackend(self): - raise NotImplementedError() - - def Create(self): - backend = self.CreateWebDriverBackend() - b = browser.Browser(backend, platform.CreatePlatformBackendForCurrentOS()) - return b - - def SupportsOptions(self, options): - # TODO(chrisgao): Check if some options are not supported. - return True - - @property - def last_modification_time(self): - return -1 - - def SelectDefaultBrowser(self, possible_browsers): # pylint: disable=W0613 - return None - - -class PossibleDesktopIE(PossibleWebDriverBrowser): - def __init__(self, browser_type, options, architecture): - super(PossibleDesktopIE, self).__init__(browser_type, options) - self._architecture = architecture - - def CreateWebDriverBackend(self): - def DriverCreator(): - # TODO(chrisgao): Check in IEDriverServer.exe and specify path to it when - # creating the webdriver instance. crbug.com/266170 - return webdriver.Ie() - return webdriver_browser_backend.WebDriverBrowserBackend( - DriverCreator, False, self.options) - - -def FindAllAvailableBrowsers(options): - """Finds all the desktop browsers available on this machine.""" - browsers = [] - - # Look for the IE browser in the standard location. - if sys.platform.startswith('win'): - ie_path = os.path.join('Internet Explorer', 'iexplore.exe') - win_search_paths = { - '32' : { 'path' : os.getenv('PROGRAMFILES(X86)'), - 'type' : 'internet-explorer'}, - '64' : { 'path' : os.getenv('PROGRAMFILES'), - 'type' : 'internet-explorer-x64'}} - for architecture, ie_info in win_search_paths.iteritems(): - if not ie_info['path']: - continue - if os.path.exists(os.path.join(ie_info['path'], ie_path)): - browsers.append( - PossibleDesktopIE(ie_info['type'], options, architecture)) - - return browsers diff --git a/tools/telemetry/telemetry/core/backends/webdriver/webdriver_tab_backend.py b/tools/telemetry/telemetry/core/backends/webdriver/webdriver_tab_backend.py deleted file mode 100644 index df2e7ae..0000000 --- a/tools/telemetry/telemetry/core/backends/webdriver/webdriver_tab_backend.py +++ /dev/null @@ -1,120 +0,0 @@ -# Copyright 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. - -import logging - -# TODO(chrisgao): Make png_bitmap sharable for both chrome and webdriver. -from telemetry.core.chrome import png_bitmap - -class WebDriverTabBackend(object): - def __init__(self, browser_backend, window_handle): - self._browser_backend = browser_backend - self._window_handle = window_handle - - def Disconnect(self): - pass - - @property - def browser(self): - return self._browser_backend.browser - - @property - def window_handle(self): - return self._window_handle - - @property - def url(self): - self._browser_backend.driver.switch_to_window(self._window_handle) - return self._browser_backend.driver.current_url - - def Activate(self): - # Webdriver doesn't support tab control. - raise NotImplementedError() - - def Close(self): - self._browser_backend.driver.switch_to_window(self._window_handle) - self._browser_backend.driver.close() - - def WaitForDocumentReadyStateToBeComplete(self, timeout=None): - # TODO(chrisgao): Double check of document state. - pass - - def WaitForDocumentReadyStateToBeInteractiveOrBetter(self, timeout=None): - # TODO(chrisgao): Double check of document state. - pass - - @property - def screenshot_supported(self): - return True - - def Screenshot(self, timeout=None): # pylint: disable=W0613 - if timeout: - logging.warning('timeout is not supported') - self._browser_backend.driver.switch_to_window(self._window_handle) - snap = self._browser_backend.driver.get_screenshot_as_base64() - if snap: - return png_bitmap.PngBitmap(snap) - return None - - @property - def message_output_stream(self): - # Webdriver has no API for grabbing console messages. - raise NotImplementedError() - - @message_output_stream.setter - def message_output_stream(self, stream): - raise NotImplementedError() - - def GetDOMStats(self, timeout=None): - # Webdriver has no API for DOM status. - raise NotImplementedError() - - def PerformActionAndWaitForNavigate(self, action_function, _): - # TODO(chrisgao): Double check of navigation. - action_function() - - def Navigate(self, url, script_to_evaluate_on_commit=None, timeout=None): - if script_to_evaluate_on_commit: - raise NotImplementedError('script_to_evaluate_on_commit is NOT supported') - self._browser_backend.driver.switch_to_window(self._window_handle) - if timeout: - self._browser_backend.driver.set_page_load_timeout(timeout * 1000) - self._browser_backend.driver.get(url) - - def GetCookieByName(self, name, timeout=None): - if timeout: - logging.warning('timeout is not supported') - self._browser_backend.driver.switch_to_window(self._window_handle) - cookie = self._browser_backend.driver.get_cookie(name) - if cookie: - return cookie['value'] - return None - - def ExecuteJavaScript(self, expr, timeout=None): - self._browser_backend.driver.switch_to_window(self._window_handle) - if timeout: - logging.warning('timeout is not supported') - self._browser_backend.driver.execute_script(expr) - - def EvaluateJavaScript(self, expr, timeout=None): - self._browser_backend.driver.switch_to_window(self._window_handle) - if timeout: - logging.warning('timeout is not supported') - return self._browser_backend.driver.execute_script( - 'return eval(\'%s\')' % expr.replace('\'', '\\\'').replace('\n', ' ')) - - @property - def timeline_model(self): - # IE/Firefox has no timeline. - raise NotImplementedError() - - def StartTimelineRecording(self): - raise NotImplementedError() - - def StopTimelineRecording(self): - raise NotImplementedError() - - def ClearCache(self): - # Can't find a way to clear cache of a tab in IE/Firefox. - raise NotImplementedError() diff --git a/tools/telemetry/telemetry/core/backends/webdriver/webdriver_tab_list_backend.py b/tools/telemetry/telemetry/core/backends/webdriver/webdriver_tab_list_backend.py deleted file mode 100644 index ea9c834..0000000 --- a/tools/telemetry/telemetry/core/backends/webdriver/webdriver_tab_list_backend.py +++ /dev/null @@ -1,47 +0,0 @@ -# Copyright 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.webdriver import webdriver_tab_backend - -class WebDriverTabListBackend(object): - def __init__(self, browser_backend): - self._browser_backend = browser_backend - # Stores the window handles. - self._tab_list = [] - - def Init(self): - self._UpdateTabList() - - def New(self, timeout=None): - # Webdriver API doesn't support tab controlling. - raise NotImplementedError() - - def __iter__(self): - self._UpdateTabList() - return self._tab_list.__iter__() - - def __len__(self): - self._UpdateTabList() - return len(self._tab_list) - - def __getitem__(self, index): - self._UpdateTabList() - if len(self._tab_list) <= index: - raise IndexError('list index out of range') - return self._tab_list[index] - - def _UpdateTabList(self): - window_handles = self._browser_backend.driver.window_handles - old_tab_list = self._tab_list - self._tab_list = [] - for window_handle in window_handles: - tab = None - for old_tab in old_tab_list: - if old_tab.window_handle == window_handle: - tab = old_tab - break - else: - tab = webdriver_tab_backend.WebDriverTabBackend( - self._browser_backend, window_handle) - self._tab_list.append(tab) diff --git a/tools/telemetry/telemetry/core/browser_finder.py b/tools/telemetry/telemetry/core/browser_finder.py index 38514d1..e316e05 100644 --- a/tools/telemetry/telemetry/core/browser_finder.py +++ b/tools/telemetry/telemetry/core/browser_finder.py @@ -8,13 +8,11 @@ import logging from telemetry.core.chrome import android_browser_finder from telemetry.core.chrome import cros_browser_finder from telemetry.core.chrome import desktop_browser_finder -from telemetry.core.backends.webdriver import webdriver_desktop_browser_finder BROWSER_FINDERS = [ desktop_browser_finder, android_browser_finder, - cros_browser_finder, - webdriver_desktop_browser_finder + cros_browser_finder ] ALL_BROWSER_TYPES = ','.join([bf.ALL_BROWSER_TYPES for bf in BROWSER_FINDERS]) |