15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/prefs/session_startup_pref.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/pref_names.h"
72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/test/base/testing_pref_service_syncable.h"
8cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "components/pref_registry/pref_registry_syncable.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gmock/include/gmock/gmock.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_MACOSX)
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/cocoa/window_restore_utils.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Unit tests for SessionStartupPref.
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SessionStartupPrefTest : public testing::Test {
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SetUp() {
202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    pref_service_.reset(new TestingPrefServiceSyncable);
217dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    SessionStartupPref::RegisterProfilePrefs(registry());
22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    registry()->RegisterBooleanPref(
23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        prefs::kHomePageIsNewTabPage,
24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        true,
25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // Make the tests independent of the Mac startup pref migration (see
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // SessionStartupPref::MigrateMacDefaultPrefIfNecessary).
28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    registry()->RegisterStringPref(
29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        prefs::kProfileCreatedByVersion,
30c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        "22.0.0.0",
31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool IsUseLastOpenDefault() {
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // On ChromeOS, the default SessionStartupPref is LAST.
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_CHROMEOS)
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return true;
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return false;
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  user_prefs::PrefRegistrySyncable* registry() {
442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return pref_service_->registry();
452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  scoped_ptr<TestingPrefServiceSyncable> pref_service_;
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(SessionStartupPrefTest, URLListIsFixedUp) {
515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  base::ListValue* url_pref_list = new base::ListValue;
525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  url_pref_list->Set(0, new base::StringValue("google.com"));
535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  url_pref_list->Set(1, new base::StringValue("chromium.org"));
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  pref_service_->SetUserPref(prefs::kURLsToRestoreOnStartup, url_pref_list);
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SessionStartupPref result =
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      SessionStartupPref::GetStartupPref(pref_service_.get());
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(2u, result.urls.size());
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ("http://google.com/", result.urls[0].spec());
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ("http://chromium.org/", result.urls[1].spec());
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(SessionStartupPrefTest, URLListManagedOverridesUser) {
645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  base::ListValue* url_pref_list1 = new base::ListValue;
655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  url_pref_list1->Set(0, new base::StringValue("chromium.org"));
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  pref_service_->SetUserPref(prefs::kURLsToRestoreOnStartup, url_pref_list1);
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  base::ListValue* url_pref_list2 = new base::ListValue;
695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  url_pref_list2->Set(0, new base::StringValue("chromium.org"));
705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  url_pref_list2->Set(1, new base::StringValue("chromium.org"));
715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  url_pref_list2->Set(2, new base::StringValue("chromium.org"));
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  pref_service_->SetManagedPref(prefs::kURLsToRestoreOnStartup,
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                url_pref_list2);
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SessionStartupPref result =
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      SessionStartupPref::GetStartupPref(pref_service_.get());
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(3u, result.urls.size());
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SessionStartupPref override_test =
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      SessionStartupPref(SessionStartupPref::URLS);
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  override_test.urls.push_back(GURL("dev.chromium.org"));
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SessionStartupPref::SetStartupPref(pref_service_.get(), override_test);
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  result = SessionStartupPref::GetStartupPref(pref_service_.get());
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(3u, result.urls.size());
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Checks to make sure that if the user had previously not selected anything
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// (so that, in effect, the default value "Open the homepage" was selected),
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// their preferences are migrated on upgrade to m19.
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(SessionStartupPrefTest, DefaultMigration) {
92c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  registry()->RegisterStringPref(
93c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      prefs::kHomePage,
94c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      "http://google.com/",
95c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  pref_service_->SetString(prefs::kHomePage, "http://chromium.org/");
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  pref_service_->SetBoolean(prefs::kHomePageIsNewTabPage, false);
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(pref_service_->HasPrefPath(prefs::kRestoreOnStartup));
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SessionStartupPref pref = SessionStartupPref::GetStartupPref(
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      pref_service_.get());
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (IsUseLastOpenDefault()) {
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    EXPECT_EQ(SessionStartupPref::LAST, pref.type);
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    EXPECT_EQ(0U, pref.urls.size());
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  } else {
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    EXPECT_EQ(SessionStartupPref::URLS, pref.type);
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    EXPECT_EQ(1U, pref.urls.size());
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    EXPECT_EQ(GURL("http://chromium.org/"), pref.urls[0]);
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Checks to make sure that if the user had previously not selected anything
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// (so that, in effect, the default value "Open the homepage" was selected),
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// and the NTP is being used for the homepage, their preferences are migrated
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// to "Open the New Tab Page" on upgrade to M19.
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(SessionStartupPrefTest, DefaultMigrationHomepageIsNTP) {
119c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  registry()->RegisterStringPref(
120c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      prefs::kHomePage,
121c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      "http://google.com/",
122c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  pref_service_->SetString(prefs::kHomePage, "http://chromium.org/");
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  pref_service_->SetBoolean(prefs::kHomePageIsNewTabPage, true);
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(pref_service_->HasPrefPath(prefs::kRestoreOnStartup));
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SessionStartupPref pref = SessionStartupPref::GetStartupPref(
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      pref_service_.get());
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (IsUseLastOpenDefault())
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    EXPECT_EQ(SessionStartupPref::LAST, pref.type);
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  else
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    EXPECT_EQ(SessionStartupPref::DEFAULT, pref.type);
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The "URLs to restore on startup" shouldn't get migrated.
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(0U, pref.urls.size());
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Checks to make sure that if the user had previously selected "Open the
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// "homepage", their preferences are migrated on upgrade to M19.
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(SessionStartupPrefTest, HomePageMigration) {
143c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  registry()->RegisterStringPref(
144c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      prefs::kHomePage,
145c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      "http://google.com/",
146c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // By design, it's impossible to set the 'restore on startup' pref to 0
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // ("open the homepage") using SessionStartupPref::SetStartupPref(), so set it
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // using the pref service directly.
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  pref_service_->SetInteger(prefs::kRestoreOnStartup, /*kPrefValueHomePage*/ 0);
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  pref_service_->SetString(prefs::kHomePage, "http://chromium.org/");
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  pref_service_->SetBoolean(prefs::kHomePageIsNewTabPage, false);
1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SessionStartupPref pref = SessionStartupPref::GetStartupPref(
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      pref_service_.get());
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(SessionStartupPref::URLS, pref.type);
1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(1U, pref.urls.size());
1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(GURL("http://chromium.org/"), pref.urls[0]);
1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Checks to make sure that if the user had previously selected "Open the
1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// "homepage", and the NTP is being used for the homepage, their preferences
1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// are migrated on upgrade to M19.
1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(SessionStartupPrefTest, HomePageMigrationHomepageIsNTP) {
167c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  registry()->RegisterStringPref(
168c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      prefs::kHomePage,
169c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      "http://google.com/",
170c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // By design, it's impossible to set the 'restore on startup' pref to 0
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // ("open the homepage") using SessionStartupPref::SetStartupPref(), so set it
1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // using the pref service directly.
1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  pref_service_->SetInteger(prefs::kRestoreOnStartup, /*kPrefValueHomePage*/ 0);
1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  pref_service_->SetString(prefs::kHomePage, "http://chromium.org/");
1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  pref_service_->SetBoolean(prefs::kHomePageIsNewTabPage, true);
1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SessionStartupPref pref = SessionStartupPref::GetStartupPref(
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      pref_service_.get());
1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(SessionStartupPref::DEFAULT, pref.type);
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_MACOSX)
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// See SessionStartupPref::MigrateMacDefaultPrefIfNecessary.
1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(SessionStartupPrefTest, MacDefaultStartupPrefMigration) {
1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (!restore_utils::IsWindowRestoreEnabled())
1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return;
1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Use an old profile.
1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  pref_service_->SetString(prefs::kProfileCreatedByVersion, "19.0.0.0");
1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_TRUE(SessionStartupPref::TypeIsDefault(pref_service_.get()));
1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Trigger the migration.
1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SessionStartupPref pref = SessionStartupPref::GetStartupPref(
1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      pref_service_.get());
1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The pref is now explicit.
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(SessionStartupPref::LAST, pref.type);
2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(SessionStartupPref::TypeIsDefault(pref_service_.get()));
2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
204