Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6305)

Unified Diff: chrome/test/functional/protector.py

Issue 11493003: Remove the protector service. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix implicit ExtensionSystem -> TemplateURLService dependency Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/test/data/web_database/version_47.sql ('k') | chrome/test/pyautolib/pyauto.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/test/functional/protector.py
diff --git a/chrome/test/functional/protector.py b/chrome/test/functional/protector.py
deleted file mode 100755
index 65cc3945a6c2b872e27cc21482730066f0e2169d..0000000000000000000000000000000000000000
--- a/chrome/test/functional/protector.py
+++ /dev/null
@@ -1,750 +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 pyauto_functional # Must be imported first
-import pyauto
-import test_utils
-
-import json
-import logging
-import os
-
-
-class BaseProtectorTest(pyauto.PyUITest):
- """Base class for Protector test cases."""
-
- _DEFAULT_SEARCH_ID_KEY = 'Default Search Provider ID'
-
- # Possible values for session.restore_on_startup pref:
- _SESSION_STARTUP_HOMEPAGE = 0 # For migration testing only.
- _SESSION_STARTUP_LAST = 1
- _SESSION_STARTUP_URLS = 4
- _SESSION_STARTUP_NTP = 5
-
- def setUp(self):
- pyauto.PyUITest.setUp(self)
- # Get the profile path of the first profile.
- profiles = self.GetMultiProfileInfo()
- self.assertTrue(profiles['profiles'])
- self._profile_path = profiles['profiles'][0]['path']
- self.assertTrue(self._profile_path)
- # Set to the keyword of the new default search engine after a successful
- # _GetDefaultSearchEngine call.
- self._new_default_search_keyword = None
-
- def _IsEnabled(self):
- """Whether protector should be enabled for the test suite."""
- return True
-
- def ExtraChromeFlags(self):
- """Adds required Protector-related flags.
-
- Returns:
- A list of extra flags to pass to Chrome when it is launched.
- """
- return super(BaseProtectorTest, self).ExtraChromeFlags() + [
- '--protector' if self._IsEnabled() else '--no-protector'
- ]
-
- def _GetDefaultSearchEngine(self):
- """Returns the default search engine, if any; None otherwise.
-
- Returns:
- Dictionary describing the default search engine. See GetSearchEngineInfo
- for an example.
- """
- for search_engine in self.GetSearchEngineInfo():
- if search_engine['is_default']:
- return search_engine
- return None
-
- def _OpenDatabase(self, db_name):
- """Opens a given SQLite database in the default profile.
-
- Args:
- db_name: name of database file (relative to the profile directory).
-
- Returns:
- An sqlite3.Connection instance.
-
- Raises:
- ImportError if sqlite3 module is not found.
- """
- db_path = os.path.join(self._profile_path, db_name)
- logging.info('Opening DB: %s' % db_path)
- import sqlite3
- db_conn = sqlite3.connect(db_path)
- db_conn.isolation_level = None
- self.assertTrue(db_conn)
- return db_conn
-
- def _FetchSingleValue(self, conn, query, parameters=None):
- """Executes an SQL query that should select a single row with a single
- column and returns its value.
-
- Args:
- conn: sqlite3.Connection instance.
- query: SQL query (may contain placeholders).
- parameters: parameters to substitute for query.
-
- Returns:
- Value of the column fetched.
- """
- cursor = conn.cursor()
- cursor.execute(query, parameters)
- row = cursor.fetchone()
- self.assertTrue(row)
- self.assertEqual(1, len(row))
- return row[0]
-
- def _UpdateSingleRow(self, conn, query, parameters=None):
- """Executes an SQL query that should update a single row.
-
- Args:
- conn: sqlite3.Connection instance.
- query: SQL query (may contain placeholders).
- parameters: parameters to substitute for query.
- """
- cursor = conn.cursor()
- cursor.execute(query, parameters)
- self.assertEqual(1, cursor.rowcount)
-
- def _ChangeDefaultSearchEngine(self):
- """Replaces the default search engine in Web Data database with another one.
-
- Keywords of the new default search engine is saved to
- self._new_default_search_keyword.
- """
- web_database = self._OpenDatabase('Web Data')
- default_id = int(self._FetchSingleValue(
- web_database,
- 'SELECT value FROM meta WHERE key = ?',
- (self._DEFAULT_SEARCH_ID_KEY,)))
- self.assertTrue(default_id)
- new_default_id = int(self._FetchSingleValue(
- web_database,
- 'SELECT id FROM keywords WHERE id != ? LIMIT 1',
- (default_id,)))
- self.assertTrue(new_default_id)
- self.assertNotEqual(default_id, new_default_id)
- self._UpdateSingleRow(web_database,
- 'UPDATE meta SET value = ? WHERE key = ?',
- (new_default_id, self._DEFAULT_SEARCH_ID_KEY))
- self._new_default_search_keyword = self._FetchSingleValue(
- web_database,
- 'SELECT keyword FROM keywords WHERE id = ?',
- (new_default_id,))
- logging.info('Update default search ID: %d -> %d (%s)' %
- (default_id, new_default_id, self._new_default_search_keyword))
- web_database.close()
-
- def _LoadPreferences(self):
- """Reads the contents of Preferences file.
-
- Returns: dict() with user preferences as returned by PrefsInfo.Prefs().
- """
- prefs_path = os.path.join(self._profile_path, 'Preferences')
- logging.info('Opening prefs: %s' % prefs_path)
- with open(prefs_path) as f:
- return json.load(f)
-
- def _WritePreferences(self, prefs):
- """Writes new contents to the Preferences file.
-
- Args:
- prefs: dict() with new user preferences as returned by PrefsInfo.Prefs().
- """
- with open(os.path.join(self._profile_path, 'Preferences'), 'w') as f:
- json.dump(prefs, f)
-
- def _InvalidatePreferencesBackup(self):
- """Makes the Preferences backup invalid by clearing the signature."""
- prefs = self._LoadPreferences()
- prefs['backup']['_signature'] = 'INVALID'
- self._WritePreferences(prefs)
-
- def _ChangeSessionStartupPrefs(self, startup_type=None, startup_urls=None,
- homepage=None, delete_migrated_pref=False):
- """Changes the session startup type and the list of URLs to load on startup.
-
- Args:
- startup_type: int with one of _SESSION_STARTUP_* values. If startup_type
- is None, then it deletes the preference.
- startup_urls: list(str) with a list of URLs; if None, is left unchanged.
- homepage: unless None, the new value for homepage.
- delete_migrated_pref: Whether we should delete the preference which says
- we've already migrated the startup_type preference.
- """
- prefs = self._LoadPreferences()
- if startup_type is None:
- del prefs['session']['restore_on_startup']
- else:
- prefs['session']['restore_on_startup'] = startup_type
-
- if startup_urls is not None:
- prefs['session']['urls_to_restore_on_startup'] = startup_urls
- if homepage is not None:
- prefs['homepage'] = homepage
- prefs['homepage_is_newtabpage'] = False
- if delete_migrated_pref:
- del prefs['session']['restore_on_startup_migrated']
- self._WritePreferences(prefs)
-
- def _ChangePinnedTabsPrefs(self, pinned_tabs):
- """Changes the list of pinned tabs.
-
- Args:
- pinned_tabs: list(str) with a list of pinned tabs URLs.
- """
- prefs = self._LoadPreferences()
- prefs['pinned_tabs'] = []
- for tab in pinned_tabs:
- prefs['pinned_tabs'].append({'url': tab})
- self._WritePreferences(prefs)
-
- def _ChangeHomepage(self, homepage, homepage_is_ntp, show_homepage_button):
- """Changes homepage settings.
-
- Args:
- homepage: new homepage URL (str),
- homepage_is_ntp: whether homepage is NTP.
- show_homepage_button: whether homepage button is visible.
- """
- prefs = self._LoadPreferences()
- prefs['homepage'] = homepage
- prefs['homepage_is_newtabpage'] = homepage_is_ntp
- prefs['browser']['show_home_button'] = show_homepage_button
- self._WritePreferences(prefs)
-
- def _AssertTabsOpen(self, urls, pinned=None):
- """Asserts that exactly one window with the specified URLs is open.
-
- Args:
- urls: list of URLs of expected open tabs.
- pinned: if given, list of boolean values whether the corresponding tab is
- expected to be pinned or not.
- """
- info = self.GetBrowserInfo()
- self.assertEqual(1, len(info['windows'])) # one window
- self.assertEqual(urls, [tab['url'] for tab in info['windows'][0]['tabs']])
- if pinned:
- self.assertEqual(pinned,
- [tab['pinned'] for tab in info['windows'][0]['tabs']])
-
- def testNoChangeOnCleanProfile(self):
- """Test that no change is reported on a clean profile."""
- self.assertFalse(self.GetProtectorState()['showing_change'])
-
-
-class ProtectorSearchEngineTest(BaseProtectorTest):
- """Test suite for search engine change detection with Protector enabled."""
-
- def testDetectSearchEngineChangeAndApply(self):
- """Test for detecting and applying a default search engine change."""
- # Get current search engine.
- old_default_search = self._GetDefaultSearchEngine()
- self.assertTrue(old_default_search)
- # Close browser, change the search engine and start it again.
- self.RestartBrowser(clear_profile=False,
- pre_launch_hook=self._ChangeDefaultSearchEngine)
- # The change must be detected by Protector.
- self.assertTrue(self.GetProtectorState()['showing_change'])
- default_search = self._GetDefaultSearchEngine()
- # Protector must restore the old search engine.
- self.assertEqual(old_default_search, default_search)
- self.ApplyProtectorChange()
- # Now the search engine must have changed to the new one.
- default_search = self._GetDefaultSearchEngine()
- self.assertNotEqual(old_default_search, default_search)
- self.assertEqual(self._new_default_search_keyword,
- default_search['keyword'])
- # No longer showing the change.
- self.assertFalse(self.GetProtectorState()['showing_change'])
-
- def testDetectSearchEngineChangeAndDiscard(self):
- """Test for detecting and discarding a default search engine change."""
- # Get current search engine.
- old_default_search = self._GetDefaultSearchEngine()
- self.assertTrue(old_default_search)
- # Close browser, change the search engine and start it again.
- self.RestartBrowser(clear_profile=False,
- pre_launch_hook=self._ChangeDefaultSearchEngine)
- # The change must be detected by Protector.
- self.assertTrue(self.GetProtectorState()['showing_change'])
- default_search = self._GetDefaultSearchEngine()
- # Protector must restore the old search engine.
- self.assertEqual(old_default_search, default_search)
- self.DiscardProtectorChange()
- # Old search engine remains active.
- default_search = self._GetDefaultSearchEngine()
- self.assertEqual(old_default_search, default_search)
- # No longer showing the change.
- self.assertFalse(self.GetProtectorState()['showing_change'])
-
- def testSearchEngineChangeDismissedOnEdit(self):
- """Test that default search engine change is dismissed when default search
- engine is changed by user.
- """
- # Get current search engine.
- old_default_search = self._GetDefaultSearchEngine()
- self.assertTrue(old_default_search)
- # Close browser, change the search engine and start it again.
- self.RestartBrowser(clear_profile=False,
- pre_launch_hook=self._ChangeDefaultSearchEngine)
- # The change must be detected by Protector.
- self.assertTrue(self.GetProtectorState()['showing_change'])
- # Change default search engine.
- self.MakeSearchEngineDefault(self._new_default_search_keyword)
- # Change is successful.
- default_search = self._GetDefaultSearchEngine()
- self.assertEqual(self._new_default_search_keyword,
- default_search['keyword'])
- # No longer showing the change.
- self.assertFalse(self.GetProtectorState()['showing_change'])
- search_urls = [engine['url'] for engine in self.GetSearchEngineInfo()]
- # Verify there are no duplicate search engines:
- self.assertEqual(len(search_urls), len(set(search_urls)))
-
- def testSearchEngineChangeWithMultipleWindows(self):
- """Test that default search engine change is detected in multiple
- browser windows.
- """
- # Get current search engine.
- old_default_search = self._GetDefaultSearchEngine()
- self.assertTrue(old_default_search)
- # Close browser, change the search engine and start it again.
- self.RestartBrowser(clear_profile=False,
- pre_launch_hook=self._ChangeDefaultSearchEngine)
- # The change must be detected by Protector in first window
- self.OpenNewBrowserWindow(True)
- self.assertTrue(self.GetProtectorState(window_index=0)['showing_change'])
- # Open another Browser Window
- self.OpenNewBrowserWindow(True)
- # The change must be detected by Protector in second window
- self.assertTrue(self.GetProtectorState(window_index=1)['showing_change'])
-
- def testSearchEngineChangeDiscardedOnRelaunchingBrowser(self):
- """Verify that relaunching the browser while Protector is showing a change
- discards it.
- """
- # Get current search engine.
- old_default_search = self._GetDefaultSearchEngine()
- self.assertTrue(old_default_search)
- # Close browser, change the search engine and start it again.
- self.RestartBrowser(clear_profile=False,
- pre_launch_hook=self._ChangeDefaultSearchEngine)
- # The change must be detected by Protector.
- self.assertTrue(self.GetProtectorState()['showing_change'])
- default_search = self._GetDefaultSearchEngine()
- self.assertEqual(old_default_search, default_search)
- # After relaunching the browser, old search engine still must be active.
- self.RestartBrowser(clear_profile=False)
- default_search = self._GetDefaultSearchEngine()
- self.assertEqual(old_default_search, default_search)
- # No longer showing the change.
- self.assertFalse(self.GetProtectorState()['showing_change'])
-
-# TODO(ivankr): more hijacking cases (remove the current default search engine,
-# add new search engines to the list, invalidate backup, etc).
-
-
-class ProtectorPreferencesTest(BaseProtectorTest):
- """Generic test suite for Preferences protection."""
-
- def testPreferencesBackupInvalid(self):
- """Test for detecting invalid Preferences backup."""
- # Set startup prefs to open specific URLs.
- self.SetPrefs(pyauto.kRestoreOnStartup, self._SESSION_STARTUP_URLS)
- self.SetPrefs(pyauto.kURLsToRestoreOnStartup, ['http://www.google.com/'])
- self.RestartBrowser(
- clear_profile=False,
- pre_launch_hook=self._InvalidatePreferencesBackup)
- # The change must be detected by Protector.
- self.assertTrue(self.GetProtectorState()['showing_change'])
- # Startup settings are reset to default (NTP).
- self.assertEqual(self._SESSION_STARTUP_NTP,
- self.GetPrefsInfo().Prefs(pyauto.kRestoreOnStartup))
- # Verify that previous startup URL has not been opened.
- self._AssertTabsOpen(['chrome://newtab/'])
- # Click "Edit Settings...".
- self.DiscardProtectorChange()
- # Verify that a new tab with settings is opened.
- info = self.GetBrowserInfo()
- self._AssertTabsOpen(['chrome://newtab/', 'chrome://chrome/settings/'])
- # No longer showing the change.
- self.assertFalse(self.GetProtectorState()['showing_change'])
- self.RestartBrowser(clear_profile=False)
- # Not showing the change after a restart
- self.assertFalse(self.GetProtectorState()['showing_change'])
-
- def testPreferencesBackupInvalidRestoreLastSession(self):
- """Test that session restore setting is not reset if backup is invalid."""
- # Set startup prefs to restore the last session.
- self.SetPrefs(pyauto.kRestoreOnStartup, self._SESSION_STARTUP_LAST)
- previous_urls = ['chrome://version/', 'http://news.google.com/']
- self.NavigateToURL(previous_urls[0])
- for url in previous_urls[1:]:
- self.AppendTab(pyauto.GURL(url))
- self.RestartBrowser(
- clear_profile=False,
- pre_launch_hook=self._InvalidatePreferencesBackup)
- # The change must be detected by Protector.
- self.assertTrue(self.GetProtectorState()['showing_change'])
- # Startup settings are left unchanged.
- self.assertEqual(self._SESSION_STARTUP_LAST,
- self.GetPrefsInfo().Prefs(pyauto.kRestoreOnStartup))
- # Session has been restored.
- self._AssertTabsOpen(previous_urls)
-
- def testPreferencesBackupInvalidChangeDismissedOnEdit(self):
- """Test that editing protected prefs dismisses the invalid backup bubble."""
- self.RestartBrowser(
- clear_profile=False,
- pre_launch_hook=self._InvalidatePreferencesBackup)
- # The change must be detected by Protector.
- self.assertTrue(self.GetProtectorState()['showing_change'])
- # Change some protected setting manually.
- self.SetPrefs(pyauto.kHomePage, 'http://example.com/')
- # No longer showing the change.
- self.assertFalse(self.GetProtectorState()['showing_change'])
-
-
-class ProtectorSessionStartupTest(BaseProtectorTest):
- """Test suite for session startup changes detection with Protector enabled.
- """
- def testDetectSessionStartupChangeAndApply(self):
- """Test for detecting and applying a session startup pref change."""
- # Set startup prefs to restoring last open tabs.
- self.SetPrefs(pyauto.kRestoreOnStartup, self._SESSION_STARTUP_LAST)
- previous_urls = ['chrome://version/', 'http://news.google.com/']
- self.NavigateToURL(previous_urls[0])
- for url in previous_urls[1:]:
- self.AppendTab(pyauto.GURL(url))
- # Restart browser with startup prefs set to open google.com.
- self.RestartBrowser(
- clear_profile=False,
- pre_launch_hook=lambda: self._ChangeSessionStartupPrefs(
- self._SESSION_STARTUP_URLS,
- startup_urls=['http://www.google.com']))
- # The change must be detected by Protector.
- self.assertTrue(self.GetProtectorState()['showing_change'])
- # Protector must restore old preference values.
- self.assertEqual(self._SESSION_STARTUP_LAST,
- self.GetPrefsInfo().Prefs(pyauto.kRestoreOnStartup))
- # Verify that open tabs are consistent with restored prefs.
- self._AssertTabsOpen(previous_urls)
- self.ApplyProtectorChange()
- # Now the new preference values are active.
- self.assertEqual(self._SESSION_STARTUP_URLS,
- self.GetPrefsInfo().Prefs(pyauto.kRestoreOnStartup))
- # No longer showing the change.
- self.assertFalse(self.GetProtectorState()['showing_change'])
-
- def testDetectSessionStartupChangeAndDiscard(self):
- """Test for detecting and discarding a session startup pref change."""
- # Set startup prefs to restoring last open tabs.
- self.SetPrefs(pyauto.kRestoreOnStartup, self._SESSION_STARTUP_LAST)
- # Restart browser with startup prefs set to open google.com.
- self.RestartBrowser(
- clear_profile=False,
- pre_launch_hook=lambda: self._ChangeSessionStartupPrefs(
- self._SESSION_STARTUP_URLS,
- startup_urls=['http://www.google.com']))
- # The change must be detected by Protector.
- self.assertTrue(self.GetProtectorState()['showing_change'])
- # Old preference values restored.
- self.assertEqual(self._SESSION_STARTUP_LAST,
- self.GetPrefsInfo().Prefs(pyauto.kRestoreOnStartup))
- self.DiscardProtectorChange()
- # Old preference values are still active.
- self.assertEqual(self._SESSION_STARTUP_LAST,
- self.GetPrefsInfo().Prefs(pyauto.kRestoreOnStartup))
- # No longer showing the change.
- self.assertFalse(self.GetProtectorState()['showing_change'])
-
- def testSessionStartupChangeDismissedOnEdit(self):
- """Test for that editing startup prefs manually dismissed the change."""
- # Set startup prefs to restoring last open tabs.
- self.SetPrefs(pyauto.kRestoreOnStartup, self._SESSION_STARTUP_LAST)
- # Restart browser with startup prefs set to open google.com.
- self.RestartBrowser(
- clear_profile=False,
- pre_launch_hook=lambda: self._ChangeSessionStartupPrefs(
- self._SESSION_STARTUP_URLS,
- startup_urls=['http://www.google.com']))
- # The change must be detected by Protector.
- self.assertTrue(self.GetProtectorState()['showing_change'])
- # Change the setting manually.
- self.SetPrefs(pyauto.kRestoreOnStartup, self._SESSION_STARTUP_NTP)
- # No longer showing the change.
- self.assertFalse(self.GetProtectorState()['showing_change'])
-
- def testSessionStartupPrefMigrationFromHomepage(self):
- """Test migration from old session.restore_on_startup values (homepage)."""
- # Set startup prefs to restoring last open tabs.
- self.SetPrefs(pyauto.kRestoreOnStartup, self._SESSION_STARTUP_LAST)
- self.SetPrefs(pyauto.kURLsToRestoreOnStartup, [])
- new_homepage = 'http://www.google.com/'
- # Restart browser with startup prefs set to open homepage (google.com).
- self.RestartBrowser(
- clear_profile=False,
- pre_launch_hook=lambda: self._ChangeSessionStartupPrefs(
- self._SESSION_STARTUP_HOMEPAGE,
- homepage=new_homepage,
- delete_migrated_pref=True))
- # The change must be detected by Protector.
- self.assertTrue(self.GetProtectorState()['showing_change'])
- # Protector must restore old preference values.
- self.assertEqual(self._SESSION_STARTUP_LAST,
- self.GetPrefsInfo().Prefs(pyauto.kRestoreOnStartup))
- self.assertEqual([],
- self.GetPrefsInfo().Prefs(pyauto.kURLsToRestoreOnStartup))
- self.ApplyProtectorChange()
- # Now the new preference values are active.
- self.assertEqual(self._SESSION_STARTUP_URLS,
- self.GetPrefsInfo().Prefs(pyauto.kRestoreOnStartup))
- # Homepage migrated to the list of startup URLs.
- self.assertEqual([new_homepage],
- self.GetPrefsInfo().Prefs(pyauto.kURLsToRestoreOnStartup))
- # No longer showing the change.
- self.assertFalse(self.GetProtectorState()['showing_change'])
-
- def testSessionStartupPrefMigrationFromBlank(self):
- """Test migration from session.restore_on_startup being blank, as it would
- be for a user who had m18 or lower, and never changed that preference.
- """
- # Set startup prefs to restoring last open tabs.
- self.SetPrefs(pyauto.kRestoreOnStartup, self._SESSION_STARTUP_LAST)
- self.SetPrefs(pyauto.kURLsToRestoreOnStartup, [])
- # Set the homepage.
- new_homepage = 'http://www.google.com/'
- self.SetPrefs(pyauto.kHomePageIsNewTabPage, False)
- self.SetPrefs(pyauto.kHomePage, new_homepage)
- # Restart browser, clearing the 'restore on startup' pref, to simulate a
- # user coming from m18 and having left it on the default value.
- self.RestartBrowser(
- clear_profile=False,
- pre_launch_hook=lambda: self._ChangeSessionStartupPrefs(
- startup_type=None,
- delete_migrated_pref=True))
- # The change must be detected by Protector.
- self.assertTrue(self.GetProtectorState()['showing_change'])
- # Protector must restore old preference values.
- self.assertEqual(self._SESSION_STARTUP_LAST,
- self.GetPrefsInfo().Prefs(pyauto.kRestoreOnStartup))
- self.assertEqual([],
- self.GetPrefsInfo().Prefs(pyauto.kURLsToRestoreOnStartup))
- self.ApplyProtectorChange()
- # Now the new preference values are active.
- self.assertEqual(self._SESSION_STARTUP_URLS,
- self.GetPrefsInfo().Prefs(pyauto.kRestoreOnStartup))
- # Homepage migrated to the list of startup URLs.
- self.assertEqual([new_homepage],
- self.GetPrefsInfo().Prefs(pyauto.kURLsToRestoreOnStartup))
- # No longer showing the change.
- self.assertFalse(self.GetProtectorState()['showing_change'])
-
- def testSessionStartupPrefNoMigrationOnHomepageChange(self):
- """Test that when the user modifies their homepage in m19+, we don't do the
- preference migration.
- """
- # Initially, the default value is selected for kRestoreOnStartup.
- self.assertEqual(self._SESSION_STARTUP_NTP,
- self.GetPrefsInfo().Prefs(pyauto.kRestoreOnStartup))
- # Set the homepage, but leave kRestoreOnStartup unchanged.
- new_homepage = 'http://www.google.com/'
- self.SetPrefs(pyauto.kHomePageIsNewTabPage, False)
- self.SetPrefs(pyauto.kHomePage, new_homepage)
- # Restart browser.
- self.RestartBrowser(clear_profile=False)
- # Now the new preference values are active.
- self.assertEqual(self._SESSION_STARTUP_NTP,
- self.GetPrefsInfo().Prefs(pyauto.kRestoreOnStartup))
- # kURLsToRestoreOnStartup pref is unchanged.
- self.assertEqual([],
- self.GetPrefsInfo().Prefs(pyauto.kURLsToRestoreOnStartup))
- # No longer showing the change.
- self.assertFalse(self.GetProtectorState()['showing_change'])
-
- def testDetectPinnedTabsChangeAndApply(self):
- """Test for detecting and applying a change to pinned tabs."""
- pinned_urls = ['chrome://version/', 'chrome://credits/']
- self.RestartBrowser(
- clear_profile=False,
- pre_launch_hook=lambda: self._ChangePinnedTabsPrefs(pinned_urls))
- # The change must be detected by Protector.
- self.assertTrue(self.GetProtectorState()['showing_change'])
- # Protector must restore old preference values.
- self.assertEqual([],
- self.GetPrefsInfo().Prefs(pyauto.kPinnedTabs))
- # No pinned tabs are open, only NTP.
- info = self.GetBrowserInfo()
- self._AssertTabsOpen(['chrome://newtab/'])
- self.ApplyProtectorChange()
- # No longer showing the change.
- self.assertFalse(self.GetProtectorState()['showing_change'])
- # Pinned tabs should have been opened now in the correct order.
- self._AssertTabsOpen(pinned_urls + ['chrome://newtab/'],
- pinned=[True, True, False])
- self.RestartBrowser(clear_profile=False)
- # Not showing the change after a restart
- self.assertFalse(self.GetProtectorState()['showing_change'])
- # Same pinned tabs are open.
- self._AssertTabsOpen(pinned_urls + ['chrome://newtab/'],
- pinned=[True, True, False])
-
- def testDetectPinnedTabsChangeAndDiscard(self):
- """Test for detecting and discarding a change to pinned tabs."""
- pinned_url = 'chrome://version/'
- self.RestartBrowser(
- clear_profile=False,
- pre_launch_hook=lambda: self._ChangePinnedTabsPrefs([pinned_url]))
- # The change must be detected by Protector.
- self.assertTrue(self.GetProtectorState()['showing_change'])
- # Protector must restore old preference values.
- self.assertEqual([],
- self.GetPrefsInfo().Prefs(pyauto.kPinnedTabs))
- # No pinned tabs are open, only NTP.
- info = self.GetBrowserInfo()
- self._AssertTabsOpen(['chrome://newtab/'])
- self.DiscardProtectorChange()
- # No longer showing the change.
- self.assertFalse(self.GetProtectorState()['showing_change'])
- # Pinned tabs are not opened after another restart.
- self.RestartBrowser(clear_profile=False)
- self._AssertTabsOpen(['chrome://newtab/'])
- # Not showing the change after a restart.
- self.assertFalse(self.GetProtectorState()['showing_change'])
-
-
-class ProtectorHomepageTest(BaseProtectorTest):
- """Test suite for homepage changes with Protector enabled."""
-
- def testDetectHomepageChangeAndApply(self):
- """Test that homepage change is detected and can be applied."""
- previous_homepage = 'http://example.com/'
- new_homepage = 'http://example.info/'
- self.SetPrefs(pyauto.kHomePage, previous_homepage)
- self.SetPrefs(pyauto.kHomePageIsNewTabPage, False)
- self.SetPrefs(pyauto.kShowHomeButton, False)
- self.RestartBrowser(
- clear_profile=False,
- pre_launch_hook=lambda: self._ChangeHomepage(new_homepage, False, True))
- # The change must be detected by Protector.
- self.assertTrue(self.GetProtectorState()['showing_change'])
- # Protector must restore old preference values.
- self.assertEquals(previous_homepage,
- self.GetPrefsInfo().Prefs(pyauto.kHomePage))
- self.assertEquals(False, self.GetPrefsInfo().Prefs(pyauto.kShowHomeButton))
- self.ApplyProtectorChange()
- # Now new values are active.
- self.assertEquals(new_homepage, self.GetPrefsInfo().Prefs(pyauto.kHomePage))
- self.assertEquals(True, self.GetPrefsInfo().Prefs(pyauto.kShowHomeButton))
- # No longer showing the change
- self.assertFalse(self.GetProtectorState()['showing_change'])
-
- def testDetectHomepageChangeAndDiscard(self):
- """Test that homepage change is detected and can be discarded."""
- previous_homepage = 'http://example.com/'
- new_homepage = 'http://example.info/'
- self.SetPrefs(pyauto.kHomePage, previous_homepage)
- self.SetPrefs(pyauto.kHomePageIsNewTabPage, False)
- self.SetPrefs(pyauto.kShowHomeButton, False)
- self.RestartBrowser(
- clear_profile=False,
- pre_launch_hook=lambda: self._ChangeHomepage(new_homepage, False, True))
- # The change must be detected by Protector.
- self.assertTrue(self.GetProtectorState()['showing_change'])
- # Protector must restore old preference values.
- self.assertEquals(previous_homepage,
- self.GetPrefsInfo().Prefs(pyauto.kHomePage))
- self.assertEquals(False, self.GetPrefsInfo().Prefs(pyauto.kShowHomeButton))
- self.DiscardProtectorChange()
- # Nothing changed
- self.assertEquals(previous_homepage,
- self.GetPrefsInfo().Prefs(pyauto.kHomePage))
- self.assertEquals(False, self.GetPrefsInfo().Prefs(pyauto.kShowHomeButton))
- # No longer showing the change
- self.assertFalse(self.GetProtectorState()['showing_change'])
-
-
-class ProtectorDisabledTest(BaseProtectorTest):
- """Test suite for Protector in disabled state."""
-
- def _IsEnabled(self):
- """Overriden from BaseProtectorTest to disable Protector."""
- return False
-
- def testNoSearchEngineChangeReported(self):
- """Test that the default search engine change is neither reported to user
- nor reverted.
- """
- # Get current search engine.
- old_default_search = self._GetDefaultSearchEngine()
- self.assertTrue(old_default_search)
- # Close browser, change the search engine and start it again.
- self.RestartBrowser(clear_profile=False,
- pre_launch_hook=self._ChangeDefaultSearchEngine)
- # The change must not be reported by Protector.
- self.assertFalse(self.GetProtectorState()['showing_change'])
- default_search = self._GetDefaultSearchEngine()
- # The new search engine must be active.
- self.assertEqual(self._new_default_search_keyword,
- default_search['keyword'])
-
- def testNoPreferencesBackupInvalidReported(self):
- """Test that invalid Preferences backup is not reported."""
- self.SetPrefs(pyauto.kRestoreOnStartup, self._SESSION_STARTUP_URLS)
- new_url = 'chrome://version/'
- self.SetPrefs(pyauto.kURLsToRestoreOnStartup, [new_url])
- self.RestartBrowser(
- clear_profile=False,
- pre_launch_hook=self._InvalidatePreferencesBackup)
- # The change must not be reported by Protector.
- self.assertFalse(self.GetProtectorState()['showing_change'])
- # New preference values must be active.
- self.assertEqual(self._SESSION_STARTUP_URLS,
- self.GetPrefsInfo().Prefs(pyauto.kRestoreOnStartup))
- # Verify that open tabs are consistent with new prefs.
- self._AssertTabsOpen([new_url])
-
- def testNoSessionStartupChangeReported(self):
- """Test that the session startup change is neither reported nor reverted."""
- # Set startup prefs to restoring last open tabs.
- self.SetPrefs(pyauto.kRestoreOnStartup, self._SESSION_STARTUP_LAST)
- new_url = 'chrome://version/'
- self.NavigateToURL('http://www.google.com/')
- # Restart browser with startup prefs set to open google.com.
- self.RestartBrowser(
- clear_profile=False,
- pre_launch_hook=lambda: self._ChangeSessionStartupPrefs(
- self._SESSION_STARTUP_URLS,
- startup_urls=[new_url]))
- # The change must not be reported by Protector.
- self.assertFalse(self.GetProtectorState()['showing_change'])
- # New preference values must be active.
- self.assertEqual(self._SESSION_STARTUP_URLS,
- self.GetPrefsInfo().Prefs(pyauto.kRestoreOnStartup))
- # Verify that open tabs are consistent with new prefs.
- self._AssertTabsOpen([new_url])
-
- def testNoHomepageChangeReported(self):
- """Test that homepage change is neither reported nor reverted."""
- new_homepage = 'http://example.info/'
- self.SetPrefs(pyauto.kHomePage, 'http://example.com/')
- self.SetPrefs(pyauto.kHomePageIsNewTabPage, False)
- self.SetPrefs(pyauto.kShowHomeButton, False)
- self.RestartBrowser(
- clear_profile=False,
- pre_launch_hook=lambda: self._ChangeHomepage(new_homepage, False, True))
- # Not showing the change.
- self.assertFalse(self.GetProtectorState()['showing_change'])
- # New values must be active.
- self.assertEquals(new_homepage, self.GetPrefsInfo().Prefs(pyauto.kHomePage))
- self.assertEquals(True, self.GetPrefsInfo().Prefs(pyauto.kShowHomeButton))
-
-
-if __name__ == '__main__':
- pyauto_functional.Main()
« no previous file with comments | « chrome/test/data/web_database/version_47.sql ('k') | chrome/test/pyautolib/pyauto.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698