Chromium Code Reviews| 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 1a797083b147e6a9e4a105ce8702f96ef78b8ba6..28affb75c1ac7d06ad5226229d37d2a2a5b1c258 100644 |
| --- a/chrome/browser/prefs/pref_service_unittest.cc |
| +++ b/chrome/browser/prefs/pref_service_unittest.cc |
| @@ -1,4 +1,4 @@ |
| -// Copyright (c) 2010 The Chromium Authors. All rights reserved. |
| +// Copyright (c) 2011 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. |
| @@ -148,6 +148,27 @@ TEST(PrefServiceTest, Observers) { |
| Mock::VerifyAndClearExpectations(&obs2); |
| } |
| +// Make sure that if a preference changes type, so the wrong type is stored in |
| +// the user pref file, it uses the correct fallback value instead. |
| +TEST(PrefServiceTest, GetValueChangedType) { |
| + const int kTestValue = 10; |
| + TestingPrefService prefs; |
| + prefs.RegisterIntegerPref(prefs::kStabilityLaunchCount, kTestValue); |
| + |
| + // Check falling back to a recommended value. |
| + prefs.SetUserPref(prefs::kStabilityLaunchCount, |
| + Value::CreateStringValue("not an integer")); |
|
danno
2011/01/14 13:05:09
nit: indent
battre
2011/01/20 17:59:29
Done.
|
| + const PrefService::Preference* pref = |
| + prefs.FindPreference(prefs::kStabilityLaunchCount); |
| + ASSERT_TRUE(pref); |
| + 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(kTestValue, actual_int_value); |
| +} |
| + |
| TEST(PrefServiceTest, ProxyPolicyOverridesCommandLineOptions) { |
| CommandLine command_line(CommandLine::NO_PROGRAM); |
| command_line.AppendSwitchASCII(switches::kProxyBypassList, "123"); |
| @@ -296,11 +317,7 @@ class PrefServiceSetValueTest : public testing::Test { |
| static const char kName[]; |
| static const char kValue[]; |
| - PrefServiceSetValueTest() |
| - : null_value_(Value::CreateNullValue()) {} |
| - |
| TestingPrefService prefs_; |
| - scoped_ptr<Value> null_value_; |
| PrefObserverMock observer_; |
| }; |
| @@ -337,10 +354,8 @@ TEST_F(PrefServiceSetValueTest, SetDictionaryValue) { |
| registrar.Init(&prefs_); |
| registrar.Add(kName, &observer_); |
| - // Dictionary values are special: setting one to NULL is the same as clearing |
| - // the user value, allowing the NULL default to take (or keep) control. |
| EXPECT_CALL(observer_, Observe(_, _, _)).Times(0); |
| - prefs_.Set(kName, *null_value_); |
| + prefs_.RemoveUserPref(kName); |
| Mock::VerifyAndClearExpectations(&observer_); |
| DictionaryValue new_value; |
| @@ -353,8 +368,9 @@ TEST_F(PrefServiceSetValueTest, SetDictionaryValue) { |
| prefs_.Set(kName, new_value); |
| Mock::VerifyAndClearExpectations(&observer_); |
| - observer_.Expect(&prefs_, kName, null_value_.get()); |
| - prefs_.Set(kName, *null_value_); |
| + DictionaryValue empty; |
| + observer_.Expect(&prefs_, kName, &empty); |
| + prefs_.Set(kName, empty); |
| Mock::VerifyAndClearExpectations(&observer_); |
| } |
| @@ -364,10 +380,8 @@ TEST_F(PrefServiceSetValueTest, SetListValue) { |
| registrar.Init(&prefs_); |
| registrar.Add(kName, &observer_); |
| - // List values are special: setting one to NULL is the same as clearing the |
| - // user value, allowing the NULL default to take (or keep) control. |
| EXPECT_CALL(observer_, Observe(_, _, _)).Times(0); |
| - prefs_.Set(kName, *null_value_); |
| + prefs_.RemoveUserPref(kName); |
| Mock::VerifyAndClearExpectations(&observer_); |
| ListValue new_value; |
| @@ -380,7 +394,8 @@ TEST_F(PrefServiceSetValueTest, SetListValue) { |
| prefs_.Set(kName, new_value); |
| Mock::VerifyAndClearExpectations(&observer_); |
| - observer_.Expect(&prefs_, kName, null_value_.get()); |
| - prefs_.Set(kName, *null_value_); |
| + ListValue empty; |
| + observer_.Expect(&prefs_, kName, &empty); |
| + prefs_.Set(kName, empty); |
| Mock::VerifyAndClearExpectations(&observer_); |
| } |