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() |