Index: chrome/browser/prefs/pref_service_unittest.cc |
diff --git a/chrome/browser/prefs/pref_service_unittest.cc b/chrome/browser/prefs/pref_service_unittest.cc |
index aee3668643d9277b3b8c9e4cccc587cb27d48aeb..99c3fc523f0f3bd44e53c30560d5f10652ad3673 100644 |
--- a/chrome/browser/prefs/pref_service_unittest.cc |
+++ b/chrome/browser/prefs/pref_service_unittest.cc |
@@ -125,6 +125,16 @@ TEST(PrefServiceTest, Observers) { |
Mock::VerifyAndClearExpectations(&obs); |
Mock::VerifyAndClearExpectations(&obs2); |
+ // Set a recommended value. |
+ const StringValue recommended_pref_value("http://www.gmail.com/"); |
+ obs.Expect(&prefs, pref_name, &expected_new_pref_value2); |
+ obs2.Expect(&prefs, pref_name, &expected_new_pref_value2); |
+ // This should fire the checks in obs and obs2 but with an unchanged value |
+ // as the recommended value is being overridden by the user-set value. |
+ prefs.SetRecommendedPref(pref_name, recommended_pref_value.DeepCopy()); |
+ Mock::VerifyAndClearExpectations(&obs); |
+ Mock::VerifyAndClearExpectations(&obs2); |
+ |
// Make sure obs2 still works after removing obs. |
registrar.Remove(pref_name, &obs); |
EXPECT_CALL(obs, Observe(_, _, _)).Times(0); |
@@ -187,6 +197,86 @@ TEST(PrefServiceTest, UpdateCommandLinePrefStore) { |
EXPECT_TRUE(actual_bool_value); |
} |
+TEST(PrefServiceTest, GetValueAndGetRecommendedValue) { |
+ const int kDefaultValue = 5; |
+ const int kUserValue = 10; |
+ const int kRecommendedValue = 15; |
+ TestingPrefService prefs; |
+ prefs.RegisterIntegerPref(prefs::kStabilityLaunchCount, kDefaultValue); |
+ |
+ // Create pref with a default value only. |
+ const PrefService::Preference* pref = |
+ prefs.FindPreference(prefs::kStabilityLaunchCount); |
+ ASSERT_TRUE(pref); |
+ |
+ // Check that GetValue() returns the default value. |
+ const Value* value = pref->GetValue(); |
+ ASSERT_TRUE(value); |
+ EXPECT_EQ(Value::TYPE_INTEGER, value->GetType()); |
+ int actual_int_value = -1; |
+ EXPECT_TRUE(value->GetAsInteger(&actual_int_value)); |
+ EXPECT_EQ(kDefaultValue, actual_int_value); |
+ |
+ // Check that GetRecommendedValue() returns no value. |
+ value = pref->GetRecommendedValue(); |
+ ASSERT_FALSE(value); |
+ |
+ // Set a user-set value. |
+ prefs.SetUserPref(prefs::kStabilityLaunchCount, |
+ Value::CreateIntegerValue(kUserValue)); |
+ |
+ // Check that GetValue() returns the user-set value. |
+ value = pref->GetValue(); |
+ ASSERT_TRUE(value); |
+ EXPECT_EQ(Value::TYPE_INTEGER, value->GetType()); |
+ actual_int_value = -1; |
+ EXPECT_TRUE(value->GetAsInteger(&actual_int_value)); |
+ EXPECT_EQ(kUserValue, actual_int_value); |
+ |
+ // Check that GetRecommendedValue() returns no value. |
+ value = pref->GetRecommendedValue(); |
+ ASSERT_FALSE(value); |
+ |
+ // Set a recommended value. |
+ prefs.SetRecommendedPref(prefs::kStabilityLaunchCount, |
+ Value::CreateIntegerValue(kRecommendedValue)); |
+ |
+ // Check that GetValue() returns the user-set value. |
+ value = pref->GetValue(); |
+ ASSERT_TRUE(value); |
+ EXPECT_EQ(Value::TYPE_INTEGER, value->GetType()); |
+ actual_int_value = -1; |
+ EXPECT_TRUE(value->GetAsInteger(&actual_int_value)); |
+ EXPECT_EQ(kUserValue, actual_int_value); |
+ |
+ // Check that GetRecommendedValue() returns the recommended value. |
+ value = pref->GetRecommendedValue(); |
+ ASSERT_TRUE(value); |
+ EXPECT_EQ(Value::TYPE_INTEGER, value->GetType()); |
+ actual_int_value = -1; |
+ EXPECT_TRUE(value->GetAsInteger(&actual_int_value)); |
+ EXPECT_EQ(kRecommendedValue, actual_int_value); |
+ |
+ // Remove the user-set value. |
+ prefs.RemoveUserPref(prefs::kStabilityLaunchCount); |
+ |
+ // Check that GetValue() returns the recommended value. |
+ value = pref->GetValue(); |
+ ASSERT_TRUE(value); |
+ EXPECT_EQ(Value::TYPE_INTEGER, value->GetType()); |
+ actual_int_value = -1; |
+ EXPECT_TRUE(value->GetAsInteger(&actual_int_value)); |
+ EXPECT_EQ(kRecommendedValue, actual_int_value); |
+ |
+ // Check that GetRecommendedValue() returns the recommended value. |
+ value = pref->GetRecommendedValue(); |
+ ASSERT_TRUE(value); |
+ EXPECT_EQ(Value::TYPE_INTEGER, value->GetType()); |
+ actual_int_value = -1; |
+ EXPECT_TRUE(value->GetAsInteger(&actual_int_value)); |
+ EXPECT_EQ(kRecommendedValue, actual_int_value); |
+} |
+ |
class PrefServiceUserFilePrefsTest : public testing::Test { |
protected: |
virtual void SetUp() { |