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