| Index: chrome/test/functional/protector.py
|
| diff --git a/chrome/test/functional/protector.py b/chrome/test/functional/protector.py
|
| index c7f432d03b66f5b3f843a6905683699209a1d0af..9b62d8a5b81a8338d6baf14cf82b3743665bd324 100755
|
| --- a/chrome/test/functional/protector.py
|
| +++ b/chrome/test/functional/protector.py
|
| @@ -151,21 +151,30 @@ class BaseProtectorTest(pyauto.PyUITest):
|
| prefs['backup']['_signature'] = 'INVALID'
|
| self._WritePreferences(prefs)
|
|
|
| - def _ChangeSessionStartupPrefs(self, startup_type, startup_urls=None,
|
| - homepage=None):
|
| + 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.
|
| + 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()
|
| - prefs['session']['restore_on_startup'] = startup_type
|
| + 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
|
| + if delete_migrated_pref:
|
| + del prefs['session']['restore_on_startup_migrated']
|
| self._WritePreferences(prefs)
|
|
|
| def _ChangePinnedTabsPrefs(self, pinned_tabs):
|
| @@ -452,7 +461,7 @@ class ProtectorSessionStartupTest(BaseProtectorTest):
|
| # No longer showing the change.
|
| self.assertFalse(self.GetProtectorState()['showing_change'])
|
|
|
| - def testSessionStartupPrefMigration(self):
|
| + 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)
|
| @@ -463,7 +472,8 @@ class ProtectorSessionStartupTest(BaseProtectorTest):
|
| clear_profile=False,
|
| pre_launch_hook=lambda: self._ChangeSessionStartupPrefs(
|
| self._SESSION_STARTUP_HOMEPAGE,
|
| - homepage=new_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.
|
| @@ -481,6 +491,63 @@ class ProtectorSessionStartupTest(BaseProtectorTest):
|
| # 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/']
|
|
|