| Index: chrome/browser/protector/protected_prefs_watcher_unittest.cc
|
| diff --git a/chrome/browser/protector/protected_prefs_watcher_unittest.cc b/chrome/browser/protector/protected_prefs_watcher_unittest.cc
|
| deleted file mode 100644
|
| index ba7807c6336f65e6c9bc7aa96377155a872a559d..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/protector/protected_prefs_watcher_unittest.cc
|
| +++ /dev/null
|
| @@ -1,291 +0,0 @@
|
| -// 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/message_loop.h"
|
| -#include "base/values.h"
|
| -#include "chrome/browser/extensions/extension_pref_value_map.h"
|
| -#include "chrome/browser/extensions/extension_pref_value_map_factory.h"
|
| -#include "chrome/browser/extensions/extension_prefs.h"
|
| -#include "chrome/browser/extensions/extension_service.h"
|
| -#include "chrome/browser/prefs/pref_service.h"
|
| -#include "chrome/browser/prefs/scoped_user_pref_update.h"
|
| -#include "chrome/browser/protector/protected_prefs_watcher.h"
|
| -#include "chrome/browser/protector/protector_service_factory.h"
|
| -#include "chrome/browser/protector/protector_service.h"
|
| -#include "chrome/common/extensions/extension_constants.h"
|
| -#include "chrome/common/pref_names.h"
|
| -#include "chrome/test/base/testing_profile.h"
|
| -#include "content/public/test/test_browser_thread.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -
|
| -namespace protector {
|
| -
|
| -namespace {
|
| -
|
| -const char kBackupSignature[] = "backup._signature";
|
| -const char kNewHomePage[] = "http://example.com";
|
| -
|
| -}
|
| -
|
| -class ProtectedPrefsWatcherTest : public testing::Test {
|
| - public:
|
| - virtual void SetUp() OVERRIDE {
|
| - prefs_watcher_ =
|
| - ProtectorServiceFactory::GetForProfile(&profile_)->GetPrefsWatcher();
|
| - prefs_ = profile_.GetPrefs();
|
| - }
|
| -
|
| - bool IsSignatureValid() {
|
| - return prefs_watcher_->IsSignatureValid();
|
| - }
|
| -
|
| - bool HasBackup() {
|
| - return prefs_watcher_->HasBackup();
|
| - }
|
| -
|
| - void RevalidateBackup() {
|
| - prefs_watcher_->ValidateBackup();
|
| - }
|
| -
|
| - void ForceUpdateSignature(ProtectedPrefsWatcher* prefs_watcher) {
|
| - prefs_watcher->UpdateBackupSignature();
|
| - }
|
| -
|
| - protected:
|
| - ProtectedPrefsWatcher* prefs_watcher_;
|
| - TestingProfile profile_;
|
| - PrefService* prefs_;
|
| -};
|
| -
|
| -TEST_F(ProtectedPrefsWatcherTest, ValidOnCleanProfile) {
|
| - EXPECT_TRUE(HasBackup());
|
| - EXPECT_TRUE(prefs_watcher_->is_backup_valid());
|
| -}
|
| -
|
| -TEST_F(ProtectedPrefsWatcherTest, ValidAfterPrefChange) {
|
| - // Signature is still valid after a protected pref has been changed.
|
| - base::StringValue new_homepage(kNewHomePage);
|
| - EXPECT_NE(prefs_->GetString(prefs::kHomePage), kNewHomePage);
|
| - EXPECT_FALSE(new_homepage.Equals(
|
| - prefs_watcher_->GetBackupForPref(prefs::kHomePage)));
|
| -
|
| - prefs_->SetString(prefs::kHomePage, kNewHomePage);
|
| -
|
| - EXPECT_TRUE(HasBackup());
|
| - EXPECT_TRUE(prefs_watcher_->is_backup_valid());
|
| - EXPECT_EQ(prefs_->GetString(prefs::kHomePage), kNewHomePage);
|
| - // Backup is updated accordingly.
|
| - EXPECT_TRUE(new_homepage.Equals(
|
| - prefs_watcher_->GetBackupForPref(prefs::kHomePage)));
|
| -}
|
| -
|
| -TEST_F(ProtectedPrefsWatcherTest, InvalidSignature) {
|
| - // Make backup invalid by changing one of its members directly.
|
| - prefs_->SetString("backup.homepage", kNewHomePage);
|
| - RevalidateBackup();
|
| - EXPECT_TRUE(HasBackup());
|
| - EXPECT_FALSE(prefs_watcher_->is_backup_valid());
|
| - // No backup values available.
|
| - EXPECT_FALSE(prefs_watcher_->GetBackupForPref(prefs::kHomePage));
|
| -
|
| - // Now change the corresponding protected prefernce: backup should be signed
|
| - // again but still invalid.
|
| - prefs_->SetString(prefs::kHomePage, kNewHomePage);
|
| - EXPECT_TRUE(IsSignatureValid());
|
| - EXPECT_FALSE(prefs_watcher_->is_backup_valid());
|
| - EXPECT_FALSE(prefs_watcher_->GetBackupForPref(prefs::kHomePage));
|
| -}
|
| -
|
| -TEST_F(ProtectedPrefsWatcherTest, ExtensionPrefChange) {
|
| - // Changes to extensions data (but not to extension IDs) do not update
|
| - // the backup and its signature.
|
| - MessageLoopForUI message_loop;
|
| - content::TestBrowserThread ui_thread(content::BrowserThread::UI,
|
| - &message_loop);
|
| -
|
| - FilePath extensions_install_dir =
|
| - profile_.GetPath().AppendASCII(ExtensionService::kInstallDirectoryName);
|
| - scoped_ptr<extensions::ExtensionPrefs> extension_prefs =
|
| - extensions::ExtensionPrefs::Create(
|
| - profile_.GetPrefs(),
|
| - extensions_install_dir,
|
| - ExtensionPrefValueMapFactory::GetForProfile(&profile_),
|
| - false); // extensions_disabled
|
| - std::string sample_id = extension_misc::kWebStoreAppId;
|
| - // Flip a pref value of an extension (this will actually add it to the list).
|
| - extension_prefs->SetAppNotificationDisabled(
|
| - sample_id, !extension_prefs->IsAppNotificationDisabled(sample_id));
|
| -
|
| - // Backup is still valid.
|
| - EXPECT_TRUE(prefs_watcher_->is_backup_valid());
|
| -
|
| - // Make signature invalid by changing it directly.
|
| - prefs_->SetString(kBackupSignature, "INVALID");
|
| - EXPECT_FALSE(IsSignatureValid());
|
| -
|
| - // Flip another pref value of that extension.
|
| - extension_prefs->SetExtensionRunning(
|
| - sample_id, !extension_prefs->IsExtensionRunning(sample_id));
|
| -
|
| - // No changes to the backup and signature.
|
| - EXPECT_FALSE(IsSignatureValid());
|
| -
|
| - // Blacklisting the extension does update the backup and signature.
|
| - extension_prefs->SetExtensionBlacklisted(sample_id, true);
|
| -
|
| - EXPECT_TRUE(IsSignatureValid());
|
| -}
|
| -
|
| -// Verify that version bigger than 1 is included in the signature.
|
| -TEST_F(ProtectedPrefsWatcherTest, VersionIsSigned) {
|
| - // Reset version to 1.
|
| - prefs_->ClearPref("backup._version");
|
| - // This should make the backup invalid.
|
| - EXPECT_FALSE(IsSignatureValid());
|
| -
|
| - // "Migrate" the backup back to the latest version.
|
| - RevalidateBackup();
|
| -
|
| - EXPECT_FALSE(prefs_watcher_->is_backup_valid());
|
| - EXPECT_EQ(ProtectedPrefsWatcher::kCurrentVersionNumber,
|
| - prefs_->GetInteger("backup._version"));
|
| -}
|
| -
|
| -// Verify that backup for "pinned_tabs" is added during version 2 migration.
|
| -TEST_F(ProtectedPrefsWatcherTest, MigrationToVersion2) {
|
| - // Add a pinned tab.
|
| - {
|
| - ListPrefUpdate pinned_tabs_update(prefs_, prefs::kPinnedTabs);
|
| - base::ListValue* pinned_tabs = pinned_tabs_update.Get();
|
| - pinned_tabs->Clear();
|
| - base::DictionaryValue* tab = new base::DictionaryValue;
|
| - tab->SetString("url", "http://example.com/");
|
| - pinned_tabs->Append(tab);
|
| - }
|
| - EXPECT_TRUE(prefs_watcher_->is_backup_valid());
|
| -
|
| - scoped_ptr<base::Value> pinned_tabs_copy(
|
| - prefs_->GetList(prefs::kPinnedTabs)->DeepCopy());
|
| -
|
| - // Reset version to 1, remove "pinned_tabs" and overwrite the signature.
|
| - // Store the old signature (without "pinned_tabs").
|
| - prefs_->ClearPref("backup._version");
|
| - prefs_->ClearPref("backup.pinned_tabs");
|
| - ForceUpdateSignature(prefs_watcher_);
|
| - EXPECT_TRUE(IsSignatureValid());
|
| -
|
| - // This will migrate backup to the latest version.
|
| - RevalidateBackup();
|
| -
|
| - // Now the backup should be valid and "pinned_tabs" is added back.
|
| - EXPECT_TRUE(prefs_watcher_->is_backup_valid());
|
| - EXPECT_TRUE(pinned_tabs_copy->Equals(prefs_->GetList("backup.pinned_tabs")));
|
| - EXPECT_TRUE(pinned_tabs_copy->Equals(prefs_->GetList(prefs::kPinnedTabs)));
|
| - EXPECT_FALSE(prefs_watcher_->DidPrefChange(prefs::kPinnedTabs));
|
| - EXPECT_EQ(ProtectedPrefsWatcher::kCurrentVersionNumber,
|
| - prefs_->GetInteger("backup._version"));
|
| -}
|
| -
|
| -// Verify that SessionStartupPref migration doesn't trigger Protector
|
| -// (version 3 migration).
|
| -TEST_F(ProtectedPrefsWatcherTest, MigrationToVersion3) {
|
| - EXPECT_TRUE(prefs_watcher_->is_backup_valid());
|
| -
|
| - // Bring startup prefs to an old (pre-migration) version.
|
| - prefs_->SetBoolean(prefs::kHomePageIsNewTabPage, false);
|
| - prefs_->SetString(prefs::kHomePage, kNewHomePage);
|
| - prefs_->ClearPref(prefs::kRestoreOnStartupMigrated);
|
| -
|
| - // Reset version to 2 and overwrite the signature.
|
| - prefs_->SetInteger("backup._version", 2);
|
| - ForceUpdateSignature(prefs_watcher_);
|
| - EXPECT_TRUE(IsSignatureValid());
|
| -
|
| - // Take down the old instance and create a new ProtectedPrefsWatcher from
|
| - // current prefs.
|
| - ProtectorServiceFactory::GetForProfile(&profile_)->
|
| - StopWatchingPrefsForTesting();
|
| - scoped_ptr<ProtectedPrefsWatcher> prefs_watcher2(
|
| - new ProtectedPrefsWatcher(&profile_));
|
| - EXPECT_TRUE(prefs_watcher2->is_backup_valid());
|
| -
|
| - // Startup settings shouldn't be reported as changed.
|
| - EXPECT_FALSE(prefs_watcher2->DidPrefChange(prefs::kRestoreOnStartup));
|
| - EXPECT_FALSE(prefs_watcher2->DidPrefChange(prefs::kURLsToRestoreOnStartup));
|
| - EXPECT_EQ(ProtectedPrefsWatcher::kCurrentVersionNumber,
|
| - prefs_->GetInteger("backup._version"));
|
| -}
|
| -
|
| -// Verify that migration to version 4 removes backups with default values.
|
| -TEST_F(ProtectedPrefsWatcherTest, MigrationToVersion4) {
|
| - EXPECT_TRUE(prefs_watcher_->is_backup_valid());
|
| -
|
| - prefs_->SetString(prefs::kHomePage, kNewHomePage);
|
| - EXPECT_TRUE(prefs_->HasPrefPath("backup.homepage"));
|
| -
|
| - // Reset version to 3 and overwrite the signature.
|
| - prefs_->SetInteger("backup._version", 3);
|
| - ForceUpdateSignature(prefs_watcher_);
|
| - EXPECT_TRUE(IsSignatureValid());
|
| -
|
| - ProtectorServiceFactory::GetForProfile(&profile_)->
|
| - StopWatchingPrefsForTesting();
|
| -
|
| - // Restore |kHomePage| to default value.
|
| - prefs_->ClearPref(prefs::kHomePage);
|
| -
|
| - scoped_ptr<ProtectedPrefsWatcher> prefs_watcher2(
|
| - new ProtectedPrefsWatcher(&profile_));
|
| - EXPECT_TRUE(prefs_watcher2->is_backup_valid());
|
| -
|
| - // Backup for |kHomePage| should now be restored to the default value, too.
|
| - EXPECT_FALSE(prefs_->HasPrefPath("backup.homepage"));
|
| - EXPECT_FALSE(prefs_watcher2->DidPrefChange(prefs::kHomePage));
|
| - EXPECT_EQ(ProtectedPrefsWatcher::kCurrentVersionNumber,
|
| - prefs_->GetInteger("backup._version"));
|
| -}
|
| -
|
| -// Verify handling of default values of protected prefs.
|
| -TEST_F(ProtectedPrefsWatcherTest, DefaultValues) {
|
| - EXPECT_TRUE(prefs_watcher_->is_backup_valid());
|
| -
|
| - EXPECT_FALSE(prefs_->HasPrefPath(prefs::kHomePage));
|
| - EXPECT_FALSE(prefs_watcher_->DidPrefChange(prefs::kHomePage));
|
| - prefs_->SetString(prefs::kHomePage, kNewHomePage);
|
| - EXPECT_FALSE(prefs_watcher_->DidPrefChange(prefs::kHomePage));
|
| -
|
| - ProtectorServiceFactory::GetForProfile(&profile_)->
|
| - StopWatchingPrefsForTesting();
|
| -
|
| - // Restore |kHomePage| to default value.
|
| - prefs_->ClearPref(prefs::kHomePage);
|
| -
|
| - scoped_ptr<ProtectedPrefsWatcher> prefs_watcher2(
|
| - new ProtectedPrefsWatcher(&profile_));
|
| - EXPECT_TRUE(prefs_watcher2->is_backup_valid());
|
| - EXPECT_TRUE(prefs_watcher2->DidPrefChange(prefs::kHomePage));
|
| -
|
| - prefs_->ClearPref("backup.homepage");
|
| - ForceUpdateSignature(prefs_watcher2.get());
|
| -
|
| - EXPECT_TRUE(prefs_watcher2->is_backup_valid());
|
| - EXPECT_FALSE(prefs_watcher2->DidPrefChange(prefs::kHomePage));
|
| -}
|
| -
|
| -TEST_F(ProtectedPrefsWatcherTest, CheckPrefNames) {
|
| - // If any of these preference names change, add corresponding migration code
|
| - // to ProtectedPrefsWatcher.
|
| - // DO NOT simply fix these literals!
|
| - EXPECT_EQ("homepage", std::string(prefs::kHomePage));
|
| - EXPECT_EQ("homepage_is_newtabpage",
|
| - std::string(prefs::kHomePageIsNewTabPage));
|
| - EXPECT_EQ("browser.show_home_button", std::string(prefs::kShowHomeButton));
|
| - EXPECT_EQ("session.restore_on_startup",
|
| - std::string(prefs::kRestoreOnStartup));
|
| - EXPECT_EQ("session.urls_to_restore_on_startup",
|
| - std::string(prefs::kURLsToRestoreOnStartup));
|
| - EXPECT_EQ("pinned_tabs", std::string(prefs::kPinnedTabs));
|
| -}
|
| -
|
| -} // namespace protector
|
|
|