| Index: chrome/test/functional/prefs.py
|
| ===================================================================
|
| --- chrome/test/functional/prefs.py (revision 261231)
|
| +++ chrome/test/functional/prefs.py (working copy)
|
| @@ -1,238 +0,0 @@
|
| -#!/usr/bin/env python
|
| -# Copyright (c) 2012 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
|
| -import os
|
| -import shutil
|
| -
|
| -import pyauto_functional # Must be imported before pyauto
|
| -import pyauto
|
| -import test_utils
|
| -
|
| -from webdriver_pages import settings
|
| -from webdriver_pages.settings import Behaviors, ContentTypes
|
| -
|
| -
|
| -class PrefsTest(pyauto.PyUITest):
|
| - """TestCase for Preferences."""
|
| -
|
| - INFOBAR_TYPE = 'rph_infobar'
|
| -
|
| - def setUp(self):
|
| - pyauto.PyUITest.setUp(self)
|
| - self._driver = self.NewWebDriver()
|
| -
|
| - def Debug(self):
|
| - """Test method for experimentation.
|
| -
|
| - This method will not run automatically.
|
| - """
|
| - while True:
|
| - raw_input('Interact with the browser and hit <enter> to dump prefs... ')
|
| - self.pprint(self.GetPrefsInfo().Prefs())
|
| -
|
| - def testSessionRestore(self):
|
| - """Test session restore preference."""
|
| - url1 = 'http://www.google.com/'
|
| - url2 = 'http://news.google.com/'
|
| - self.NavigateToURL(url1)
|
| - self.AppendTab(pyauto.GURL(url2))
|
| - num_tabs = self.GetTabCount()
|
| - # Set pref to restore session on startup.
|
| - self.SetPrefs(pyauto.kRestoreOnStartup, 1)
|
| - logging.debug('Setting %s to 1' % pyauto.kRestoreOnStartup)
|
| - self.RestartBrowser(clear_profile=False)
|
| - self.assertEqual(self.GetPrefsInfo().Prefs(pyauto.kRestoreOnStartup), 1)
|
| - self.assertEqual(num_tabs, self.GetTabCount())
|
| - self.ActivateTab(0)
|
| - self.assertEqual(url1, self.GetActiveTabURL().spec())
|
| - self.ActivateTab(1)
|
| - self.assertEqual(url2, self.GetActiveTabURL().spec())
|
| -
|
| - def testNavigationStateOnSessionRestore(self):
|
| - """Verify navigation state is preserved on session restore."""
|
| - urls = ('http://www.google.com/',
|
| - 'http://news.google.com/',
|
| - 'http://dev.chromium.org/',)
|
| - for url in urls:
|
| - self.NavigateToURL(url)
|
| - self.TabGoBack()
|
| - self.assertEqual(self.GetActiveTabURL().spec(), urls[-2])
|
| - self.SetPrefs(pyauto.kRestoreOnStartup, 1) # set pref to restore session
|
| - self.RestartBrowser(clear_profile=False)
|
| - # Verify that navigation state (forward/back state) is restored.
|
| - self.TabGoBack()
|
| - self.assertEqual(self.GetActiveTabURL().spec(), urls[0])
|
| - for i in (-2, -1):
|
| - tab.GoForward()
|
| - self.assertEqual(self.GetActiveTabURL().spec(), urls[i])
|
| -
|
| - def testSessionRestoreURLs(self):
|
| - """Verify restore URLs preference."""
|
| - url1 = self.GetFileURLForPath(os.path.join(self.DataDir(), 'title1.html'))
|
| - url2 = self.GetFileURLForPath(os.path.join(self.DataDir(), 'title2.html'))
|
| - # Set pref to restore given URLs on startup
|
| - self.SetPrefs(pyauto.kRestoreOnStartup, 4) # 4 is for restoring URLs
|
| - self.SetPrefs(pyauto.kURLsToRestoreOnStartup, [url1, url2])
|
| - self.RestartBrowser(clear_profile=False)
|
| - # Verify
|
| - self.assertEqual(self.GetPrefsInfo().Prefs(pyauto.kRestoreOnStartup), 4)
|
| - self.assertEqual(2, self.GetTabCount())
|
| - self.ActivateTab(0)
|
| - self.assertEqual(url1, self.GetActiveTabURL().spec())
|
| - self.ActivateTab(1)
|
| - self.assertEqual(url2, self.GetActiveTabURL().spec())
|
| -
|
| - def testGeolocationPref(self):
|
| - """Verify geolocation pref.
|
| -
|
| - Checks for the geolocation infobar.
|
| - """
|
| - # GetBrowserInfo() call seems to fail later on in this test. Call it early.
|
| - # crbug.com/89000
|
| - branding = self.GetBrowserInfo()['properties']['branding']
|
| - url = self.GetFileURLForPath(os.path.join( # triggers geolocation
|
| - self.DataDir(), 'geolocation', 'geolocation_on_load.html'))
|
| - self.assertEqual(3, # default state
|
| - self.GetPrefsInfo().Prefs(pyauto.kGeolocationDefaultContentSetting))
|
| - self.NavigateToURL(url)
|
| - self.assertTrue(self.WaitForInfobarCount(1))
|
| - self.assertTrue(self.GetBrowserInfo()['windows'][0]['tabs'][0]['infobars'])
|
| - # Disable geolocation
|
| - self.SetPrefs(pyauto.kGeolocationDefaultContentSetting, 2)
|
| - self.assertEqual(2,
|
| - self.GetPrefsInfo().Prefs(pyauto.kGeolocationDefaultContentSetting))
|
| - self.ReloadTab()
|
| - # Fails on Win7/Vista Chromium bots. crbug.com/89000
|
| - if (self.IsWin7() or self.IsWinVista()) and branding == 'Chromium':
|
| - return
|
| - behavior = self._driver.execute_async_script(
|
| - 'triggerGeoWithCallback(arguments[arguments.length - 1]);')
|
| - self.assertEqual(
|
| - behavior, Behaviors.BLOCK,
|
| - msg='Behavior is "%s" when it should be BLOCKED.' % behavior)
|
| -
|
| - def testAllowSelectedGeoTracking(self):
|
| - """Verify hostname pattern and behavior for allowed tracking."""
|
| - # Default location tracking option "Ask me".
|
| - self.SetPrefs(pyauto.kGeolocationDefaultContentSetting, 3)
|
| - self.NavigateToURL(
|
| - self.GetHttpURLForDataPath('geolocation', 'geolocation_on_load.html'))
|
| - self.assertTrue(self.WaitForInfobarCount(1))
|
| - self.PerformActionOnInfobar('accept', infobar_index=0) # Allow tracking.
|
| - # Get the hostname pattern (e.g. http://127.0.0.1:57622).
|
| - hostname_pattern = (
|
| - '/'.join(self.GetHttpURLForDataPath('').split('/')[0:3]))
|
| - self.assertEqual(
|
| - # Allow the hostname.
|
| - {hostname_pattern+','+hostname_pattern: {'geolocation': 1}},
|
| - self.GetPrefsInfo().Prefs(pyauto.kContentSettingsPatternPairs))
|
| -
|
| - def testDismissedInfobarSavesNoEntry(self):
|
| - """Verify dismissing infobar does not save an exception entry."""
|
| - # Default location tracking option "Ask me".
|
| - self.SetPrefs(pyauto.kGeolocationDefaultContentSetting, 3)
|
| - self.NavigateToURL(
|
| - self.GetFileURLForDataPath('geolocation', 'geolocation_on_load.html'))
|
| - self.assertTrue(self.WaitForInfobarCount(1))
|
| - self.PerformActionOnInfobar('dismiss', infobar_index=0)
|
| - self.assertEqual(
|
| - {}, self.GetPrefsInfo().Prefs(pyauto.kContentSettingsPatternPairs))
|
| -
|
| - def testGeolocationBlockedWhenTrackingDenied(self):
|
| - """Verify geolocations is blocked when tracking is denied.
|
| -
|
| - The test verifies the blocked hostname pattern entry on the Geolocations
|
| - exceptions page.
|
| - """
|
| - # Ask for permission when site wants to track.
|
| - self.SetPrefs(pyauto.kGeolocationDefaultContentSetting, 3)
|
| - self.NavigateToURL(
|
| - self.GetHttpURLForDataPath('geolocation', 'geolocation_on_load.html'))
|
| - self.assertTrue(self.WaitForInfobarCount(1))
|
| - self.PerformActionOnInfobar('cancel', infobar_index=0) # Deny tracking.
|
| - behavior = self._driver.execute_async_script(
|
| - 'triggerGeoWithCallback(arguments[arguments.length - 1]);')
|
| - self.assertEqual(
|
| - behavior, Behaviors.BLOCK,
|
| - msg='Behavior is "%s" when it should be BLOCKED.' % behavior)
|
| - # Get the hostname pattern (e.g. http://127.0.0.1:57622).
|
| - hostname_pattern = (
|
| - '/'.join(self.GetHttpURLForDataPath('').split('/')[0:3]))
|
| - self.assertEqual(
|
| - # Block the hostname.
|
| - {hostname_pattern+','+hostname_pattern: {'geolocation': 2}},
|
| - self.GetPrefsInfo().Prefs(pyauto.kContentSettingsPatternPairs))
|
| -
|
| - def _CheckForVisibleImage(self, tab_index=0, windex=0):
|
| - """Checks whether or not an image is visible on the webpage.
|
| -
|
| - Args:
|
| - tab_index: Tab index. Defaults to 0 (first tab).
|
| - windex: Window index. Defaults to 0 (first window).
|
| -
|
| - Returns:
|
| - True if image is loaded, otherwise returns False if image is not loaded.
|
| - """
|
| - # Checks whether an image is loaded by checking the area (width
|
| - # and height) of the image. If the area is non zero then the image is
|
| - # visible. If the area is zero then the image is not loaded.
|
| - # Chrome zeros the |naturalWidth| and |naturalHeight|.
|
| - script = """
|
| - for (i=0; i < document.images.length; i++) {
|
| - if ((document.images[i].naturalWidth != 0) &&
|
| - (document.images[i].naturalHeight != 0)) {
|
| - window.domAutomationController.send(true);
|
| - }
|
| - }
|
| - window.domAutomationController.send(false);
|
| - """
|
| - return self.ExecuteJavascript(script, windex=windex, tab_index=tab_index)
|
| -
|
| - def testBlockImagesForHostname(self):
|
| - """Verify images blocked for defined hostname pattern."""
|
| - url = 'http://www.google.com'
|
| - page = settings.ManageExceptionsPage.FromNavigation(
|
| - self._driver, ContentTypes.IMAGES)
|
| - pattern, behavior = (url, Behaviors.BLOCK)
|
| - # Add an exception BLOCK for hostname pattern 'www.google.com'.
|
| - page.AddNewException(pattern, behavior)
|
| - self.NavigateToURL(url)
|
| - self.assertFalse(self._CheckForVisibleImage(),
|
| - msg='At least one visible image found.')
|
| -
|
| - def testAllowImagesForHostname(self):
|
| - """Verify images allowed for defined hostname pattern."""
|
| - url = 'http://www.google.com'
|
| - page = settings.ManageExceptionsPage.FromNavigation(
|
| - self._driver, ContentTypes.IMAGES)
|
| - pattern, behavior = (url, Behaviors.ALLOW)
|
| - # Add an exception ALLOW for hostname pattern 'www.google.com'.
|
| - page.AddNewException(pattern, behavior)
|
| - self.NavigateToURL(url)
|
| - self.assertTrue(self._CheckForVisibleImage(),
|
| - msg='No visible images found.')
|
| -
|
| - def testProtocolHandlerRegisteredCorrectly(self):
|
| - """Verify sites that ask to be default handlers registers correctly."""
|
| - url = self.GetHttpURLForDataPath('settings', 'protocol_handler.html')
|
| - self.NavigateToURL(url)
|
| - # Returns a dictionary with the custom handler.
|
| - asked_handler_dict = self._driver.execute_script(
|
| - 'return registerCustomHandler()')
|
| - self.PerformActionOnInfobar(
|
| - 'accept', infobar_index=test_utils.WaitForInfobarTypeAndGetIndex(
|
| - self, self.INFOBAR_TYPE))
|
| - self._driver.find_element_by_id('test_protocol').click()
|
| - self.assertTrue(
|
| - self._driver.execute_script(
|
| - 'return doesQueryConformsToProtocol("%s", "%s")'
|
| - % (asked_handler_dict['query_key'],
|
| - asked_handler_dict['query_value'])),
|
| - msg='Protocol did not register correctly.')
|
| -
|
| -
|
| -if __name__ == '__main__':
|
| - pyauto_functional.Main()
|
|
|