| Index: chrome/test/functional/prefs_ui.py
|
| ===================================================================
|
| --- chrome/test/functional/prefs_ui.py (revision 261231)
|
| +++ chrome/test/functional/prefs_ui.py (working copy)
|
| @@ -1,343 +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 time
|
| -
|
| -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
|
| -from webdriver_pages.settings import RestoreOnStartupType
|
| -
|
| -
|
| -class PrefsUITest(pyauto.PyUITest):
|
| - """TestCase for Preferences UI."""
|
| -
|
| - 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.
|
| - """
|
| - driver = self.NewWebDriver()
|
| - page = settings.ContentSettingsPage.FromNavigation(driver)
|
| - import pdb
|
| - pdb.set_trace()
|
| -
|
| - def _GetGeolocationContentSettingsBehavior(self):
|
| - """Get the Content Settings behavior for Geolocation.
|
| -
|
| - Returns:
|
| - The exceptions behavior for the specified content type.
|
| - The content type is the available content setting available.
|
| - """
|
| - behavior_key = self.GetPrefsInfo().Prefs(
|
| - pyauto.kGeolocationDefaultContentSetting)
|
| - behaviors_dict = {1: 'ALLOW', 2: 'BLOCK', 3: 'ASK'}
|
| - self.assertTrue(
|
| - behavior_key in behaviors_dict,
|
| - msg=('Invalid default behavior key "%s" for "geolocation" content' %
|
| - behavior_key))
|
| - return behaviors_dict[behavior_key]
|
| -
|
| - def _VerifyContentExceptionUI(self, content_type, hostname_pattern, behavior,
|
| - incognito=False):
|
| - """Find hostname pattern and behavior within UI on content exceptions page.
|
| -
|
| - Args:
|
| - content_type: The string content settings type to manage.
|
| - hostname_pattern: The URL or pattern associated with the behavior.
|
| - behavior: The exception to allow or block the hostname.
|
| - incognito: Incognito list displayed on exceptions settings page.
|
| - Default to False.
|
| - """
|
| - page = settings.ManageExceptionsPage.FromNavigation(
|
| - self._driver, content_type)
|
| - self.assertTrue(page.GetExceptions(incognito).has_key(hostname_pattern),
|
| - msg=('No displayed host name matches pattern "%s"'
|
| - % hostname_pattern))
|
| - self.assertEqual(behavior, page.GetExceptions(incognito)[hostname_pattern],
|
| - msg=('Displayed behavior "%s" does not match behavior "%s"'
|
| - % (page.GetExceptions(incognito)[hostname_pattern],
|
| - behavior)))
|
| -
|
| - def testLocationSettingOptionsUI(self):
|
| - """Verify the location options setting UI.
|
| -
|
| - Set the options through the UI using webdriver and verify the settings in
|
| - pyAuto.
|
| - """
|
| - page = settings.ContentSettingsPage.FromNavigation(self._driver)
|
| - page.SetContentTypeOption(ContentTypes.GEOLOCATION, Behaviors.ALLOW)
|
| - self.assertEqual(
|
| - 1, self.GetPrefsInfo().Prefs(pyauto.kGeolocationDefaultContentSetting))
|
| - page.SetContentTypeOption(ContentTypes.GEOLOCATION, Behaviors.BLOCK)
|
| - self.assertEqual(
|
| - 2, self.GetPrefsInfo().Prefs(pyauto.kGeolocationDefaultContentSetting))
|
| - page.SetContentTypeOption(ContentTypes.GEOLOCATION, Behaviors.ASK)
|
| - self.assertEqual(
|
| - 3, self.GetPrefsInfo().Prefs(pyauto.kGeolocationDefaultContentSetting))
|
| -
|
| - def testBehaviorValueCorrectlyDisplayed(self):
|
| - """Verify the set behavior value is correctly displayed."""
|
| - # Block all sites.
|
| - self.SetPrefs(pyauto.kGeolocationDefaultContentSetting, 2)
|
| - self.assertEqual(
|
| - self._GetGeolocationContentSettingsBehavior(), Behaviors.BLOCK.upper(),
|
| - msg='The behavior was incorrectly set.')
|
| - # Allow all sites.
|
| - self.SetPrefs(pyauto.kGeolocationDefaultContentSetting, 1)
|
| - self.assertEqual(
|
| - self._GetGeolocationContentSettingsBehavior(), Behaviors.ALLOW.upper(),
|
| - msg='The behavior was incorrectly set.')
|
| - # Ask for permission when site wants to track.
|
| - self.SetPrefs(pyauto.kGeolocationDefaultContentSetting, 3)
|
| - self.assertEqual(
|
| - self._GetGeolocationContentSettingsBehavior(), Behaviors.ASK.upper(),
|
| - msg='The behavior was incorrectly set.')
|
| -
|
| - def testExceptionsEntryCorrectlyDisplayed(self):
|
| - """Verify the exceptions line entry is correctly displayed in the UI."""
|
| - geo_exception = (
|
| - {'http://maps.google.com:80,http://maps.google.com:80':
|
| - {'geolocation': 2}})
|
| - self.SetPrefs(pyauto.kContentSettingsPatternPairs, geo_exception)
|
| - self._VerifyContentExceptionUI(
|
| - ContentTypes.GEOLOCATION, 'http://maps.google.com:80',
|
| - Behaviors.BLOCK)
|
| - geo_exception = (
|
| - {'http://maps.google.com:80,http://maps.google.com:80':
|
| - {'geolocation': 1}})
|
| - self.SetPrefs(pyauto.kContentSettingsPatternPairs, geo_exception)
|
| - self._VerifyContentExceptionUI(
|
| - ContentTypes.GEOLOCATION, 'http://maps.google.com:80',
|
| - Behaviors.ALLOW)
|
| - geo_exception = (
|
| - {'http://maps.google.com:80,http://maps.google.com:80':
|
| - {'geolocation': 3}})
|
| - self.SetPrefs(pyauto.kContentSettingsPatternPairs, geo_exception)
|
| - self._VerifyContentExceptionUI(
|
| - ContentTypes.GEOLOCATION, 'http://maps.google.com:80', Behaviors.ASK)
|
| -
|
| - def testAddNewExceptionUI(self):
|
| - """Verify new exception added for hostname pattern and behavior in UI."""
|
| - content_type = ContentTypes.PLUGINS
|
| - page = settings.ManageExceptionsPage.FromNavigation(
|
| - self._driver, content_type)
|
| -
|
| - pattern, behavior = ('bing.com', Behaviors.BLOCK)
|
| - page.AddNewException(pattern, behavior)
|
| - self.assertEqual(page.GetExceptions()[pattern], Behaviors.BLOCK,
|
| - msg='The behavior "%s" was not added for pattern "%s"'
|
| - % (behavior, pattern))
|
| -
|
| - def testChangeExceptionBehaviorUI(self):
|
| - """Verify behavior for hostname pattern is changed in the UI."""
|
| - content_type = ContentTypes.PLUGINS
|
| - page = settings.ManageExceptionsPage.FromNavigation(
|
| - self._driver, content_type)
|
| -
|
| - pattern, behavior = ('bing.com', Behaviors.BLOCK)
|
| - page.AddNewException(pattern, behavior)
|
| - new_behavior = Behaviors.ALLOW
|
| - page.SetBehaviorForPattern(pattern, new_behavior)
|
| - self.assertEqual(page.GetExceptions()[pattern], Behaviors.ALLOW,
|
| - msg='The behavior for "%s" did not change: "%s"'
|
| - % (pattern, behavior))
|
| -
|
| - def testDeleteExceptionUI(self):
|
| - """Verify exception deleted for hostname pattern and behavior in the UI."""
|
| - content_type = ContentTypes.PLUGINS
|
| - page = settings.ManageExceptionsPage.FromNavigation(
|
| - self._driver, content_type)
|
| -
|
| - pattern, behavior = ('bing.com', Behaviors.BLOCK)
|
| - page.AddNewException(pattern, behavior)
|
| - self.assertEqual(page.GetExceptions()[pattern], Behaviors.BLOCK,
|
| - msg='The behavior "%s" was not added for pattern "%s"'
|
| - % (behavior, pattern))
|
| - page.DeleteException(pattern)
|
| - self.assertEqual(page.GetExceptions().get(pattern, KeyError), KeyError,
|
| - msg='Pattern "%s" was not deleted' % pattern)
|
| -
|
| - def testNoInitialLineEntryInUI(self):
|
| - """Verify no initial line entry is displayed in UI."""
|
| - # Ask for permission when site wants to track.
|
| - self.SetPrefs(pyauto.kGeolocationDefaultContentSetting, 3)
|
| - self.assertEqual(
|
| - 3, self.GetPrefsInfo().Prefs(pyauto.kGeolocationDefaultContentSetting))
|
| - page = settings.ManageExceptionsPage.FromNavigation(
|
| - self._driver, ContentTypes.GEOLOCATION)
|
| - self.assertEqual(0, len(page.GetExceptions()))
|
| -
|
| - def testCorrectCookiesSessionInUI(self):
|
| - """Verify exceptions for cookies in UI list entry."""
|
| - # Block cookies for for a session for google.com.
|
| - self.SetPrefs(pyauto.kContentSettingsPatternPairs,
|
| - {'http://google.com:80': {'cookies': 2}})
|
| - self._VerifyContentExceptionUI(
|
| - ContentTypes.COOKIES, 'http://google.com:80', Behaviors.BLOCK)
|
| -
|
| - def testInitialLineEntryInIncognitoUI(self):
|
| - """Verify initial line entry is displayed in Incognito UI."""
|
| - self.RunCommand(pyauto.IDC_NEW_INCOGNITO_WINDOW) # Display incognito list.
|
| - page = settings.ManageExceptionsPage.FromNavigation(
|
| - self._driver, ContentTypes.PLUGINS)
|
| - self.assertEqual(1, len(page.GetExceptions(incognito=True)))
|
| -
|
| - def testIncognitoExceptionsEntryCorrectlyDisplayed(self):
|
| - """Verify exceptions entry is correctly displayed in the incognito UI."""
|
| - self.RunCommand(pyauto.IDC_NEW_INCOGNITO_WINDOW) # Display incognito list.
|
| - page = settings.ManageExceptionsPage.FromNavigation(
|
| - self._driver, ContentTypes.PLUGINS)
|
| - pattern, behavior = ('http://maps.google.com:80', Behaviors.BLOCK)
|
| - page.AddNewException(pattern, behavior, incognito=True)
|
| - self._VerifyContentExceptionUI(
|
| - ContentTypes.PLUGINS, 'http://maps.google.com:80',
|
| - Behaviors.BLOCK, incognito=True)
|
| -
|
| - def testSetCookieAndDeleteInContentSettings(self):
|
| - """Verify a cookie can be deleted in the Content Settings UI."""
|
| - # Create a cookie.
|
| - cookie_dict = {
|
| - 'name': 'test_cookie',
|
| - 'value': 'test_value',
|
| - 'expiry': time.time() + 30,
|
| - }
|
| - site = '127.0.0.1'
|
| - self.NavigateToURL(self.GetHttpURLForDataPath('google', 'google.html'))
|
| - self._driver.add_cookie(cookie_dict)
|
| - page = settings.CookiesAndSiteDataSettings.FromNavigation(self._driver)
|
| - page.DeleteSiteData(site)
|
| - self.assertTrue(site not in page.GetSiteNameList(),
|
| - 'Site "%s" was not deleted.' % site)
|
| -
|
| - def testRemoveMailProtocolHandler(self):
|
| - """Verify the mail protocol handler is added and removed successfully."""
|
| - url = self.GetHttpURLForDataPath('settings', 'protocol_handler.html')
|
| - self.NavigateToURL(url)
|
| - # Returns a dictionary with the mail handler that was asked for
|
| - # registration.
|
| - asked_handler_dict = self._driver.execute_script(
|
| - 'return registerMailClient()')
|
| - self.PerformActionOnInfobar(
|
| - 'accept', infobar_index=test_utils.WaitForInfobarTypeAndGetIndex(
|
| - self, self.INFOBAR_TYPE))
|
| - self._driver.find_element_by_id('test_mail_protocol').click()
|
| -
|
| - protocol_handlers_list = (
|
| - self.GetPrefsInfo().Prefs(pyauto.kRegisteredProtocolHandlers))
|
| - registered_mail_handler = {}
|
| - for handler_dict in protocol_handlers_list:
|
| - if (handler_dict['protocol'] == 'mailto' and
|
| - handler_dict['url'] == asked_handler_dict['url'] and
|
| - handler_dict['title'] == asked_handler_dict['title'] and
|
| - handler_dict.get('default')):
|
| - registered_mail_handler = handler_dict
|
| - break
|
| - # Verify the mail handler is registered as asked.
|
| - self.assertNotEqual(
|
| - registered_mail_handler, {},
|
| - msg='Mail protocol handler was not registered correctly.')
|
| - # Verify the registered mail handler works as expected.
|
| - self.assertTrue(
|
| - self._driver.execute_script(
|
| - 'return doesQueryConformsToProtocol("%s", "%s")'
|
| - % (asked_handler_dict['query_key'],
|
| - asked_handler_dict['query_value'])),
|
| - msg='Mail protocol did not register correctly.')
|
| -
|
| - self._driver.get('chrome://settings-frame/handlers')
|
| - # There are 3 DIVs in a handler entry. The last one acts as a remove button.
|
| - # The remove button is also equivalent to setting the site to NONE.
|
| - self._driver.find_element_by_id('handlers-list').\
|
| - find_element_by_xpath('.//div[@role="listitem"]').\
|
| - find_element_by_xpath('.//div[@class="handlers-site-column"]').\
|
| - find_element_by_xpath('.//option[@value="-1"]').click()
|
| -
|
| - self._driver.get(url)
|
| - self._driver.find_element_by_id('test_mail_protocol').click()
|
| - self.assertEqual(url, self._driver.current_url,
|
| - msg='Mail protocol still registered.')
|
| -
|
| -class BasicSettingsUITest(pyauto.PyUITest):
|
| - """Testcases for uber page basic settings UI."""
|
| -
|
| - def setUp(self):
|
| - pyauto.PyUITest.setUp(self)
|
| - self._driver = self.NewWebDriver()
|
| -
|
| - def Debug(self):
|
| - """chrome://plugins test debug method.
|
| -
|
| - This method will not run automatically.
|
| - """
|
| - driver = self.NewWebDriver()
|
| - page = settings.BasicSettingsPage.FromNavigation(driver)
|
| - import pdb
|
| - pdb.set_trace()
|
| -
|
| - def testOnStartupSettings(self):
|
| - """Verify user can set startup options."""
|
| - page = settings.BasicSettingsPage.FromNavigation(self._driver)
|
| - page.SetOnStartupOptions(RestoreOnStartupType.NEW_TAB_PAGE)
|
| - self.assertEqual(RestoreOnStartupType.NEW_TAB_PAGE,
|
| - self.GetPrefsInfo().Prefs(pyauto.kRestoreOnStartup))
|
| - page.SetOnStartupOptions(RestoreOnStartupType.RESTORE_SESSION)
|
| - self.assertEqual(RestoreOnStartupType.RESTORE_SESSION,
|
| - self.GetPrefsInfo().Prefs(pyauto.kRestoreOnStartup))
|
| - page.SetOnStartupOptions(RestoreOnStartupType.RESTORE_URLS)
|
| - self.assertEqual(RestoreOnStartupType.RESTORE_URLS,
|
| - self.GetPrefsInfo().Prefs(pyauto.kRestoreOnStartup))
|
| -
|
| - def testSetStartupPages(self):
|
| - """Verify user can add urls for startup pages."""
|
| - page = settings.BasicSettingsPage.FromNavigation(self._driver)
|
| - for url in ['www.google.com', 'http://www.amazon.com', 'ebay.com']:
|
| - page.AddStartupPage(url)
|
| - self.assertEqual(RestoreOnStartupType.RESTORE_URLS,
|
| - self.GetPrefsInfo().Prefs(pyauto.kRestoreOnStartup))
|
| - startup_urls = self.GetPrefsInfo().Prefs(pyauto.kURLsToRestoreOnStartup)
|
| - self.assertEqual(startup_urls[0], 'http://www.google.com/')
|
| - self.assertEqual(startup_urls[1], 'http://www.amazon.com/')
|
| - self.assertEqual(startup_urls[2], 'http://ebay.com/')
|
| -
|
| - def testUseCurrentPagesForStartup(self):
|
| - """Verify user can start up browser using current pages."""
|
| - page = settings.BasicSettingsPage.FromNavigation(self._driver)
|
| - self.OpenNewBrowserWindow(True)
|
| - url1 = self.GetHttpURLForDataPath('title2.html')
|
| - url2 = self.GetHttpURLForDataPath('title3.html')
|
| - self.NavigateToURL(url1, 1, 0)
|
| - self.AppendTab(pyauto.GURL(url2), 1)
|
| - title_list = ['Title Of Awesomeness',
|
| - 'Title Of More Awesomeness']
|
| - page.UseCurrentPageForStartup(title_list)
|
| - page.VerifyStartupURLs(title_list)
|
| - self.assertEqual(RestoreOnStartupType.RESTORE_URLS,
|
| - self.GetPrefsInfo().Prefs(pyauto.kRestoreOnStartup))
|
| - startup_urls = self.GetPrefsInfo().Prefs(pyauto.kURLsToRestoreOnStartup)
|
| - self.assertEqual(len(startup_urls), 3)
|
| - self.assertEqual(startup_urls[1], url1)
|
| - self.assertEqual(startup_urls[2], url2)
|
| -
|
| - def testCancelStartupURLSetting(self):
|
| - """Verify canceled start up URLs settings are not saved."""
|
| - page = settings.BasicSettingsPage.FromNavigation(self._driver)
|
| - for url in ['www.google.com', 'http://www.amazon.com']:
|
| - page.CancelStartupURLSetting(url)
|
| - startup_urls = self.GetPrefsInfo().Prefs(pyauto.kURLsToRestoreOnStartup)
|
| - self.assertEqual(len(startup_urls), 0)
|
| -
|
| -
|
| -if __name__ == '__main__':
|
| - pyauto_functional.Main()
|
|
|