// 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. #include "base/memory/scoped_ptr.h" #include "chrome/browser/prefs/pref_service.h" #include "chrome/browser/prefs/session_startup_pref.h" #include "chrome/browser/protector/base_setting_change.h" #include "chrome/common/pref_names.h" #include "chrome/test/base/testing_profile.h" #include "testing/gtest/include/gtest/gtest.h" #if defined(OS_MACOSX) #include "base/mac/mac_util.h" #endif namespace protector { namespace { const char kStartupUrl[] = "http://example.com/"; } // namespace class PrefsBackupInvalidChangeTest : public testing::Test { protected: virtual void SetUp() OVERRIDE { // Make the tests independent of the Mac startup pref migration (see // SessionStartupPref::MigrateMacDefaultPrefIfNecessary). PrefService* prefs = profile_.GetPrefs(); prefs->SetString(prefs::kProfileCreatedByVersion, "22.0.0.0.0"); } TestingProfile profile_; }; // Test that correct default values are applied by Init. TEST_F(PrefsBackupInvalidChangeTest, Defaults) { SessionStartupPref startup_pref(SessionStartupPref::URLS); startup_pref.urls.push_back(GURL(kStartupUrl)); SessionStartupPref::SetStartupPref(&profile_, startup_pref); scoped_ptr change(CreatePrefsBackupInvalidChange()); change->Init(&profile_); SessionStartupPref new_startup_pref = SessionStartupPref::GetStartupPref(&profile_); // Startup type should be reset to default. EXPECT_EQ(SessionStartupPref::GetDefaultStartupType(), new_startup_pref.type); // Startup URLs should be left unchanged. EXPECT_EQ(1UL, new_startup_pref.urls.size()); EXPECT_EQ(std::string(kStartupUrl), new_startup_pref.urls[0].spec()); // Homepage prefs are reset to defaults. PrefService* prefs = profile_.GetPrefs(); EXPECT_FALSE(prefs->HasPrefPath(prefs::kHomePageIsNewTabPage)); EXPECT_FALSE(prefs->HasPrefPath(prefs::kHomePage)); EXPECT_FALSE(prefs->HasPrefPath(prefs::kShowHomeButton)); } // Test that "restore last session" setting is not changed by Init. TEST_F(PrefsBackupInvalidChangeTest, DefaultsWithSessionRestore) { SessionStartupPref startup_pref(SessionStartupPref::LAST); startup_pref.urls.push_back(GURL(kStartupUrl)); SessionStartupPref::SetStartupPref(&profile_, startup_pref); scoped_ptr change(CreatePrefsBackupInvalidChange()); change->Init(&profile_); SessionStartupPref new_startup_pref = SessionStartupPref::GetStartupPref(&profile_); // Both startup type and startup URLs should be left unchanged. EXPECT_EQ(SessionStartupPref::LAST, new_startup_pref.type); EXPECT_EQ(1UL, new_startup_pref.urls.size()); EXPECT_EQ(std::string(kStartupUrl), new_startup_pref.urls[0].spec()); } } // namespace protector