| Index: chrome/browser/prefs/pref_value_store_unittest.cc
|
| diff --git a/chrome/browser/prefs/pref_value_store_unittest.cc b/chrome/browser/prefs/pref_value_store_unittest.cc
|
| index 88f4a87d7841dce8ac1cd1447ff29739ab296ad8..2a1b826437069bc8708c18ab6b457ebca2634e82 100644
|
| --- a/chrome/browser/prefs/pref_value_store_unittest.cc
|
| +++ b/chrome/browser/prefs/pref_value_store_unittest.cc
|
| @@ -197,6 +197,16 @@ class PrefValueStoreTest : public testing::Test {
|
| default_pref::kDefaultValue);
|
| }
|
|
|
| + void ExpectValueChangeNotifications(const char* name) {
|
| + EXPECT_CALL(pref_notifier_, OnPreferenceChanged(name));
|
| + EXPECT_CALL(*sync_associator_, ProcessPrefChange(name));
|
| + }
|
| +
|
| + void CheckAndClearValueChangeNotifications() {
|
| + Mock::VerifyAndClearExpectations(&pref_notifier_);
|
| + Mock::VerifyAndClearExpectations(sync_associator_.get());
|
| + }
|
| +
|
| MockPrefNotifier pref_notifier_;
|
| scoped_ptr<MockPrefModelAssociator> sync_associator_;
|
| scoped_ptr<PrefValueStore> pref_value_store_;
|
| @@ -266,104 +276,150 @@ TEST_F(PrefValueStoreTest, GetValue) {
|
| value = &tmp_dummy_value;
|
| ASSERT_FALSE(pref_value_store_->GetValue(prefs::kMissingPref,
|
| Value::TYPE_STRING, &value));
|
| - ASSERT_TRUE(value == NULL);
|
| + ASSERT_FALSE(value);
|
| +}
|
| +
|
| +TEST_F(PrefValueStoreTest, GetRecommendedValue) {
|
| + const Value* value;
|
| +
|
| + // The following tests read a value from the PrefService. The preferences are
|
| + // set in a way such that all lower-priority stores have a value and we can
|
| + // test whether overrides do not clutter the recommended value.
|
| +
|
| + // Test getting recommended value when a managed value is present.
|
| + value = NULL;
|
| + ASSERT_TRUE(pref_value_store_->GetRecommendedValue(
|
| + prefs::kManagedPref,
|
| + Value::TYPE_STRING, &value));
|
| + std::string actual_str_value;
|
| + EXPECT_TRUE(value->GetAsString(&actual_str_value));
|
| + EXPECT_EQ(recommended_pref::kManagedValue, actual_str_value);
|
| +
|
| + // Test getting recommended value when an extension value is present.
|
| + value = NULL;
|
| + ASSERT_TRUE(pref_value_store_->GetRecommendedValue(
|
| + prefs::kExtensionPref,
|
| + Value::TYPE_STRING, &value));
|
| + EXPECT_TRUE(value->GetAsString(&actual_str_value));
|
| + EXPECT_EQ(recommended_pref::kExtensionValue, actual_str_value);
|
| +
|
| + // Test getting recommended value when a command-line value is present.
|
| + value = NULL;
|
| + ASSERT_TRUE(pref_value_store_->GetRecommendedValue(
|
| + prefs::kCommandLinePref,
|
| + Value::TYPE_STRING, &value));
|
| + EXPECT_TRUE(value->GetAsString(&actual_str_value));
|
| + EXPECT_EQ(recommended_pref::kCommandLineValue, actual_str_value);
|
| +
|
| + // Test getting recommended value when a user-set value is present.
|
| + value = NULL;
|
| + ASSERT_TRUE(pref_value_store_->GetRecommendedValue(
|
| + prefs::kUserPref,
|
| + Value::TYPE_STRING, &value));
|
| + EXPECT_TRUE(value->GetAsString(&actual_str_value));
|
| + EXPECT_EQ(recommended_pref::kUserValue, actual_str_value);
|
| +
|
| + // Test getting recommended value when no higher-priority value is present.
|
| + value = NULL;
|
| + ASSERT_TRUE(pref_value_store_->GetRecommendedValue(
|
| + prefs::kRecommendedPref,
|
| + Value::TYPE_STRING, &value));
|
| + EXPECT_TRUE(value->GetAsString(&actual_str_value));
|
| + EXPECT_EQ(recommended_pref::kRecommendedValue,
|
| + actual_str_value);
|
| +
|
| + // Test getting recommended value when no recommended value is present.
|
| + base::FundamentalValue tmp_dummy_value(true);
|
| + value = &tmp_dummy_value;
|
| + ASSERT_FALSE(pref_value_store_->GetRecommendedValue(
|
| + prefs::kDefaultPref,
|
| + Value::TYPE_STRING, &value));
|
| + ASSERT_FALSE(value);
|
| +
|
| + // Test getting a preference value that the |PrefValueStore|
|
| + // does not contain.
|
| + value = &tmp_dummy_value;
|
| + ASSERT_FALSE(pref_value_store_->GetRecommendedValue(
|
| + prefs::kMissingPref,
|
| + Value::TYPE_STRING, &value));
|
| + ASSERT_FALSE(value);
|
| }
|
|
|
| TEST_F(PrefValueStoreTest, PrefChanges) {
|
| // Check pref controlled by highest-priority store.
|
| - EXPECT_CALL(pref_notifier_, OnPreferenceChanged(prefs::kManagedPref));
|
| - EXPECT_CALL(*sync_associator_,
|
| - ProcessPrefChange(prefs::kManagedPref));
|
| - managed_pref_store_->NotifyPrefValueChanged(
|
| - prefs::kManagedPref);
|
| - Mock::VerifyAndClearExpectations(&pref_notifier_);
|
| - Mock::VerifyAndClearExpectations(sync_associator_.get());
|
| -
|
| - EXPECT_CALL(pref_notifier_, OnPreferenceChanged(_)).Times(0);
|
| - EXPECT_CALL(*sync_associator_, ProcessPrefChange(_)).Times(0);
|
| - extension_pref_store_->NotifyPrefValueChanged(
|
| - prefs::kManagedPref);
|
| - command_line_pref_store_->NotifyPrefValueChanged(
|
| - prefs::kManagedPref);
|
| - user_pref_store_->NotifyPrefValueChanged(
|
| - prefs::kManagedPref);
|
| - recommended_pref_store_->NotifyPrefValueChanged(
|
| - prefs::kManagedPref);
|
| - default_pref_store_->NotifyPrefValueChanged(
|
| - prefs::kManagedPref);
|
| - Mock::VerifyAndClearExpectations(&pref_notifier_);
|
| - Mock::VerifyAndClearExpectations(sync_associator_.get());
|
| + ExpectValueChangeNotifications(prefs::kManagedPref);
|
| + managed_pref_store_->NotifyPrefValueChanged(prefs::kManagedPref);
|
| + CheckAndClearValueChangeNotifications();
|
| +
|
| + ExpectValueChangeNotifications(prefs::kManagedPref);
|
| + extension_pref_store_->NotifyPrefValueChanged(prefs::kManagedPref);
|
| + CheckAndClearValueChangeNotifications();
|
| +
|
| + ExpectValueChangeNotifications(prefs::kManagedPref);
|
| + command_line_pref_store_->NotifyPrefValueChanged(prefs::kManagedPref);
|
| + CheckAndClearValueChangeNotifications();
|
| +
|
| + ExpectValueChangeNotifications(prefs::kManagedPref);
|
| + user_pref_store_->NotifyPrefValueChanged(prefs::kManagedPref);
|
| + CheckAndClearValueChangeNotifications();
|
| +
|
| + ExpectValueChangeNotifications(prefs::kManagedPref);
|
| + recommended_pref_store_->NotifyPrefValueChanged(prefs::kManagedPref);
|
| + CheckAndClearValueChangeNotifications();
|
| +
|
| + ExpectValueChangeNotifications(prefs::kManagedPref);
|
| + default_pref_store_->NotifyPrefValueChanged(prefs::kManagedPref);
|
| + CheckAndClearValueChangeNotifications();
|
|
|
| // Check pref controlled by user store.
|
| - EXPECT_CALL(pref_notifier_, OnPreferenceChanged(prefs::kUserPref));
|
| - EXPECT_CALL(*sync_associator_, ProcessPrefChange(prefs::kUserPref));
|
| + ExpectValueChangeNotifications(prefs::kUserPref);
|
| managed_pref_store_->NotifyPrefValueChanged(prefs::kUserPref);
|
| - Mock::VerifyAndClearExpectations(&pref_notifier_);
|
| - Mock::VerifyAndClearExpectations(sync_associator_.get());
|
| + CheckAndClearValueChangeNotifications();
|
|
|
| - EXPECT_CALL(pref_notifier_, OnPreferenceChanged(prefs::kUserPref));
|
| - EXPECT_CALL(*sync_associator_, ProcessPrefChange(prefs::kUserPref));
|
| + ExpectValueChangeNotifications(prefs::kUserPref);
|
| extension_pref_store_->NotifyPrefValueChanged(prefs::kUserPref);
|
| - Mock::VerifyAndClearExpectations(&pref_notifier_);
|
| - Mock::VerifyAndClearExpectations(sync_associator_.get());
|
| + CheckAndClearValueChangeNotifications();
|
|
|
| - EXPECT_CALL(pref_notifier_, OnPreferenceChanged(prefs::kUserPref));
|
| - EXPECT_CALL(*sync_associator_, ProcessPrefChange(prefs::kUserPref));
|
| + ExpectValueChangeNotifications(prefs::kUserPref);
|
| command_line_pref_store_->NotifyPrefValueChanged(prefs::kUserPref);
|
| - Mock::VerifyAndClearExpectations(&pref_notifier_);
|
| - Mock::VerifyAndClearExpectations(sync_associator_.get());
|
| + CheckAndClearValueChangeNotifications();
|
|
|
| - EXPECT_CALL(pref_notifier_, OnPreferenceChanged(prefs::kUserPref));
|
| - EXPECT_CALL(*sync_associator_, ProcessPrefChange(prefs::kUserPref));
|
| + ExpectValueChangeNotifications(prefs::kUserPref);
|
| user_pref_store_->NotifyPrefValueChanged(prefs::kUserPref);
|
| - Mock::VerifyAndClearExpectations(&pref_notifier_);
|
| - Mock::VerifyAndClearExpectations(sync_associator_.get());
|
| -
|
| - EXPECT_CALL(pref_notifier_, OnPreferenceChanged(_)).Times(0);
|
| - EXPECT_CALL(*sync_associator_, ProcessPrefChange(_)).Times(0);
|
| - recommended_pref_store_->NotifyPrefValueChanged(
|
| - prefs::kUserPref);
|
| - default_pref_store_->NotifyPrefValueChanged(
|
| - prefs::kUserPref);
|
| - Mock::VerifyAndClearExpectations(&pref_notifier_);
|
| - Mock::VerifyAndClearExpectations(sync_associator_.get());
|
| + CheckAndClearValueChangeNotifications();
|
| +
|
| + ExpectValueChangeNotifications(prefs::kUserPref);
|
| + recommended_pref_store_->NotifyPrefValueChanged(prefs::kUserPref);
|
| + CheckAndClearValueChangeNotifications();
|
| +
|
| + ExpectValueChangeNotifications(prefs::kUserPref);
|
| + default_pref_store_->NotifyPrefValueChanged(prefs::kUserPref);
|
| + CheckAndClearValueChangeNotifications();
|
|
|
| // Check pref controlled by default-pref store.
|
| - EXPECT_CALL(pref_notifier_, OnPreferenceChanged(prefs::kDefaultPref));
|
| - EXPECT_CALL(*sync_associator_, ProcessPrefChange(prefs::kDefaultPref));
|
| + ExpectValueChangeNotifications(prefs::kDefaultPref);
|
| managed_pref_store_->NotifyPrefValueChanged(prefs::kDefaultPref);
|
| - Mock::VerifyAndClearExpectations(&pref_notifier_);
|
| - Mock::VerifyAndClearExpectations(sync_associator_.get());
|
| + CheckAndClearValueChangeNotifications();
|
|
|
| - EXPECT_CALL(pref_notifier_, OnPreferenceChanged(prefs::kDefaultPref));
|
| - EXPECT_CALL(*sync_associator_, ProcessPrefChange(prefs::kDefaultPref));
|
| + ExpectValueChangeNotifications(prefs::kDefaultPref);
|
| extension_pref_store_->NotifyPrefValueChanged(prefs::kDefaultPref);
|
| - Mock::VerifyAndClearExpectations(&pref_notifier_);
|
| - Mock::VerifyAndClearExpectations(sync_associator_.get());
|
| + CheckAndClearValueChangeNotifications();
|
|
|
| - EXPECT_CALL(pref_notifier_, OnPreferenceChanged(prefs::kDefaultPref));
|
| - EXPECT_CALL(*sync_associator_, ProcessPrefChange(prefs::kDefaultPref));
|
| + ExpectValueChangeNotifications(prefs::kDefaultPref);
|
| command_line_pref_store_->NotifyPrefValueChanged(prefs::kDefaultPref);
|
| - Mock::VerifyAndClearExpectations(&pref_notifier_);
|
| - Mock::VerifyAndClearExpectations(sync_associator_.get());
|
| + CheckAndClearValueChangeNotifications();
|
|
|
| - EXPECT_CALL(pref_notifier_, OnPreferenceChanged(prefs::kDefaultPref));
|
| - EXPECT_CALL(*sync_associator_, ProcessPrefChange(prefs::kDefaultPref));
|
| + ExpectValueChangeNotifications(prefs::kDefaultPref);
|
| user_pref_store_->NotifyPrefValueChanged(prefs::kDefaultPref);
|
| - Mock::VerifyAndClearExpectations(&pref_notifier_);
|
| - Mock::VerifyAndClearExpectations(sync_associator_.get());
|
| + CheckAndClearValueChangeNotifications();
|
|
|
| - EXPECT_CALL(pref_notifier_, OnPreferenceChanged(prefs::kDefaultPref));
|
| - EXPECT_CALL(*sync_associator_, ProcessPrefChange(prefs::kDefaultPref));
|
| + ExpectValueChangeNotifications(prefs::kDefaultPref);
|
| recommended_pref_store_->NotifyPrefValueChanged(prefs::kDefaultPref);
|
| - Mock::VerifyAndClearExpectations(&pref_notifier_);
|
| - Mock::VerifyAndClearExpectations(sync_associator_.get());
|
| + CheckAndClearValueChangeNotifications();
|
|
|
| - EXPECT_CALL(pref_notifier_, OnPreferenceChanged(prefs::kDefaultPref));
|
| - EXPECT_CALL(*sync_associator_, ProcessPrefChange(prefs::kDefaultPref));
|
| + ExpectValueChangeNotifications(prefs::kDefaultPref);
|
| default_pref_store_->NotifyPrefValueChanged(prefs::kDefaultPref);
|
| - Mock::VerifyAndClearExpectations(&pref_notifier_);
|
| - Mock::VerifyAndClearExpectations(sync_associator_.get());
|
| + CheckAndClearValueChangeNotifications();
|
| }
|
|
|
| TEST_F(PrefValueStoreTest, OnInitializationCompleted) {
|
|
|