| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <string> | 5 #include <string> |
| 6 | 6 |
| 7 #include "app/test/data/resource.h" | 7 #include "app/test/data/resource.h" |
| 8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
| 9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
| 10 #include "base/values.h" | 10 #include "base/values.h" |
| (...skipping 17 matching lines...) Expand all Loading... |
| 28 using testing::_; | 28 using testing::_; |
| 29 using testing::Mock; | 29 using testing::Mock; |
| 30 | 30 |
| 31 // TODO(port): port this test to POSIX. | 31 // TODO(port): port this test to POSIX. |
| 32 #if defined(OS_WIN) | 32 #if defined(OS_WIN) |
| 33 TEST(PrefServiceTest, LocalizedPrefs) { | 33 TEST(PrefServiceTest, LocalizedPrefs) { |
| 34 TestingPrefService prefs; | 34 TestingPrefService prefs; |
| 35 const char kBoolean[] = "boolean"; | 35 const char kBoolean[] = "boolean"; |
| 36 const char kInteger[] = "integer"; | 36 const char kInteger[] = "integer"; |
| 37 const char kString[] = "string"; | 37 const char kString[] = "string"; |
| 38 prefs.RegisterLocalizedBooleanPref(kBoolean, IDS_LOCALE_BOOL); | 38 prefs.RegisterLocalizedBooleanPref(kBoolean, |
| 39 prefs.RegisterLocalizedIntegerPref(kInteger, IDS_LOCALE_INT); | 39 IDS_LOCALE_BOOL, |
| 40 prefs.RegisterLocalizedStringPref(kString, IDS_LOCALE_STRING); | 40 false /* don't sync pref */); |
| 41 prefs.RegisterLocalizedIntegerPref(kInteger, |
| 42 IDS_LOCALE_INT, |
| 43 false /* don't sync pref */); |
| 44 prefs.RegisterLocalizedStringPref(kString, |
| 45 IDS_LOCALE_STRING, |
| 46 false /* don't sync pref */); |
| 41 | 47 |
| 42 // The locale default should take preference over the user default. | 48 // The locale default should take preference over the user default. |
| 43 EXPECT_FALSE(prefs.GetBoolean(kBoolean)); | 49 EXPECT_FALSE(prefs.GetBoolean(kBoolean)); |
| 44 EXPECT_EQ(1, prefs.GetInteger(kInteger)); | 50 EXPECT_EQ(1, prefs.GetInteger(kInteger)); |
| 45 EXPECT_EQ("hello", prefs.GetString(kString)); | 51 EXPECT_EQ("hello", prefs.GetString(kString)); |
| 46 | 52 |
| 47 prefs.SetBoolean(kBoolean, true); | 53 prefs.SetBoolean(kBoolean, true); |
| 48 EXPECT_TRUE(prefs.GetBoolean(kBoolean)); | 54 EXPECT_TRUE(prefs.GetBoolean(kBoolean)); |
| 49 prefs.SetInteger(kInteger, 5); | 55 prefs.SetInteger(kInteger, 5); |
| 50 EXPECT_EQ(5, prefs.GetInteger(kInteger)); | 56 EXPECT_EQ(5, prefs.GetInteger(kInteger)); |
| 51 prefs.SetString(kString, "foo"); | 57 prefs.SetString(kString, "foo"); |
| 52 EXPECT_EQ("foo", prefs.GetString(kString)); | 58 EXPECT_EQ("foo", prefs.GetString(kString)); |
| 53 } | 59 } |
| 54 #endif | 60 #endif |
| 55 | 61 |
| 56 TEST(PrefServiceTest, NoObserverFire) { | 62 TEST(PrefServiceTest, NoObserverFire) { |
| 57 TestingPrefService prefs; | 63 TestingPrefService prefs; |
| 58 | 64 |
| 59 const char pref_name[] = "homepage"; | 65 const char pref_name[] = "homepage"; |
| 60 prefs.RegisterStringPref(pref_name, std::string()); | 66 prefs.RegisterStringPref(pref_name, |
| 67 std::string(), |
| 68 false /* don't sync pref */); |
| 61 | 69 |
| 62 const char new_pref_value[] = "http://www.google.com/"; | 70 const char new_pref_value[] = "http://www.google.com/"; |
| 63 PrefObserverMock obs; | 71 PrefObserverMock obs; |
| 64 PrefChangeRegistrar registrar; | 72 PrefChangeRegistrar registrar; |
| 65 registrar.Init(&prefs); | 73 registrar.Init(&prefs); |
| 66 registrar.Add(pref_name, &obs); | 74 registrar.Add(pref_name, &obs); |
| 67 | 75 |
| 68 // This should fire the checks in PrefObserverMock::Observe. | 76 // This should fire the checks in PrefObserverMock::Observe. |
| 69 const StringValue expected_value(new_pref_value); | 77 const StringValue expected_value(new_pref_value); |
| 70 obs.Expect(&prefs, pref_name, &expected_value); | 78 obs.Expect(&prefs, pref_name, &expected_value); |
| (...skipping 21 matching lines...) Expand all Loading... |
| 92 TEST(PrefServiceTest, HasPrefPath) { | 100 TEST(PrefServiceTest, HasPrefPath) { |
| 93 TestingPrefService prefs; | 101 TestingPrefService prefs; |
| 94 | 102 |
| 95 const char path[] = "fake.path"; | 103 const char path[] = "fake.path"; |
| 96 | 104 |
| 97 // Shouldn't initially have a path. | 105 // Shouldn't initially have a path. |
| 98 EXPECT_FALSE(prefs.HasPrefPath(path)); | 106 EXPECT_FALSE(prefs.HasPrefPath(path)); |
| 99 | 107 |
| 100 // Register the path. This doesn't set a value, so the path still shouldn't | 108 // Register the path. This doesn't set a value, so the path still shouldn't |
| 101 // exist. | 109 // exist. |
| 102 prefs.RegisterStringPref(path, std::string()); | 110 prefs.RegisterStringPref(path, std::string(), false /* don't sync pref */); |
| 103 EXPECT_FALSE(prefs.HasPrefPath(path)); | 111 EXPECT_FALSE(prefs.HasPrefPath(path)); |
| 104 | 112 |
| 105 // Set a value and make sure we have a path. | 113 // Set a value and make sure we have a path. |
| 106 prefs.SetString(path, "blah"); | 114 prefs.SetString(path, "blah"); |
| 107 EXPECT_TRUE(prefs.HasPrefPath(path)); | 115 EXPECT_TRUE(prefs.HasPrefPath(path)); |
| 108 } | 116 } |
| 109 | 117 |
| 110 TEST(PrefServiceTest, Observers) { | 118 TEST(PrefServiceTest, Observers) { |
| 111 const char pref_name[] = "homepage"; | 119 const char pref_name[] = "homepage"; |
| 112 | 120 |
| 113 TestingPrefService prefs; | 121 TestingPrefService prefs; |
| 114 prefs.SetUserPref(pref_name, Value::CreateStringValue("http://www.cnn.com")); | 122 prefs.SetUserPref(pref_name, Value::CreateStringValue("http://www.cnn.com")); |
| 115 prefs.RegisterStringPref(pref_name, std::string()); | 123 prefs.RegisterStringPref(pref_name, |
| 124 std::string(), |
| 125 false /* don't sync pref */); |
| 116 | 126 |
| 117 const char new_pref_value[] = "http://www.google.com/"; | 127 const char new_pref_value[] = "http://www.google.com/"; |
| 118 const StringValue expected_new_pref_value(new_pref_value); | 128 const StringValue expected_new_pref_value(new_pref_value); |
| 119 PrefObserverMock obs; | 129 PrefObserverMock obs; |
| 120 PrefChangeRegistrar registrar; | 130 PrefChangeRegistrar registrar; |
| 121 registrar.Init(&prefs); | 131 registrar.Init(&prefs); |
| 122 registrar.Add(pref_name, &obs); | 132 registrar.Add(pref_name, &obs); |
| 123 | 133 |
| 124 // This should fire the checks in PrefObserverMock::Observe. | 134 // This should fire the checks in PrefObserverMock::Observe. |
| 125 obs.Expect(&prefs, pref_name, &expected_new_pref_value); | 135 obs.Expect(&prefs, pref_name, &expected_new_pref_value); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 146 prefs.SetString(pref_name, new_pref_value); | 156 prefs.SetString(pref_name, new_pref_value); |
| 147 Mock::VerifyAndClearExpectations(&obs); | 157 Mock::VerifyAndClearExpectations(&obs); |
| 148 Mock::VerifyAndClearExpectations(&obs2); | 158 Mock::VerifyAndClearExpectations(&obs2); |
| 149 } | 159 } |
| 150 | 160 |
| 151 // Make sure that if a preference changes type, so the wrong type is stored in | 161 // Make sure that if a preference changes type, so the wrong type is stored in |
| 152 // the user pref file, it uses the correct fallback value instead. | 162 // the user pref file, it uses the correct fallback value instead. |
| 153 TEST(PrefServiceTest, GetValueChangedType) { | 163 TEST(PrefServiceTest, GetValueChangedType) { |
| 154 const int kTestValue = 10; | 164 const int kTestValue = 10; |
| 155 TestingPrefService prefs; | 165 TestingPrefService prefs; |
| 156 prefs.RegisterIntegerPref(prefs::kStabilityLaunchCount, kTestValue); | 166 prefs.RegisterIntegerPref(prefs::kStabilityLaunchCount, |
| 167 kTestValue, |
| 168 false /* don't sync pref */); |
| 157 | 169 |
| 158 // Check falling back to a recommended value. | 170 // Check falling back to a recommended value. |
| 159 prefs.SetUserPref(prefs::kStabilityLaunchCount, | 171 prefs.SetUserPref(prefs::kStabilityLaunchCount, |
| 160 Value::CreateStringValue("not an integer")); | 172 Value::CreateStringValue("not an integer")); |
| 161 const PrefService::Preference* pref = | 173 const PrefService::Preference* pref = |
| 162 prefs.FindPreference(prefs::kStabilityLaunchCount); | 174 prefs.FindPreference(prefs::kStabilityLaunchCount); |
| 163 ASSERT_TRUE(pref); | 175 ASSERT_TRUE(pref); |
| 164 const Value* value = pref->GetValue(); | 176 const Value* value = pref->GetValue(); |
| 165 ASSERT_TRUE(value); | 177 ASSERT_TRUE(value); |
| 166 EXPECT_EQ(Value::TYPE_INTEGER, value->GetType()); | 178 EXPECT_EQ(Value::TYPE_INTEGER, value->GetType()); |
| (...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 357 TestingPrefService prefs_; | 369 TestingPrefService prefs_; |
| 358 PrefObserverMock observer_; | 370 PrefObserverMock observer_; |
| 359 }; | 371 }; |
| 360 | 372 |
| 361 const char PrefServiceSetValueTest::kName[] = "name"; | 373 const char PrefServiceSetValueTest::kName[] = "name"; |
| 362 const char PrefServiceSetValueTest::kValue[] = "value"; | 374 const char PrefServiceSetValueTest::kValue[] = "value"; |
| 363 | 375 |
| 364 TEST_F(PrefServiceSetValueTest, SetStringValue) { | 376 TEST_F(PrefServiceSetValueTest, SetStringValue) { |
| 365 const char default_string[] = "default"; | 377 const char default_string[] = "default"; |
| 366 const StringValue default_value(default_string); | 378 const StringValue default_value(default_string); |
| 367 prefs_.RegisterStringPref(kName, default_string); | 379 prefs_.RegisterStringPref(kName, |
| 380 default_string, |
| 381 false /* don't sync pref */); |
| 368 | 382 |
| 369 PrefChangeRegistrar registrar; | 383 PrefChangeRegistrar registrar; |
| 370 registrar.Init(&prefs_); | 384 registrar.Init(&prefs_); |
| 371 registrar.Add(kName, &observer_); | 385 registrar.Add(kName, &observer_); |
| 372 | 386 |
| 373 // Changing the controlling store from default to user triggers notification. | 387 // Changing the controlling store from default to user triggers notification. |
| 374 observer_.Expect(&prefs_, kName, &default_value); | 388 observer_.Expect(&prefs_, kName, &default_value); |
| 375 prefs_.Set(kName, default_value); | 389 prefs_.Set(kName, default_value); |
| 376 Mock::VerifyAndClearExpectations(&observer_); | 390 Mock::VerifyAndClearExpectations(&observer_); |
| 377 | 391 |
| 378 EXPECT_CALL(observer_, Observe(_, _, _)).Times(0); | 392 EXPECT_CALL(observer_, Observe(_, _, _)).Times(0); |
| 379 prefs_.Set(kName, default_value); | 393 prefs_.Set(kName, default_value); |
| 380 Mock::VerifyAndClearExpectations(&observer_); | 394 Mock::VerifyAndClearExpectations(&observer_); |
| 381 | 395 |
| 382 StringValue new_value(kValue); | 396 StringValue new_value(kValue); |
| 383 observer_.Expect(&prefs_, kName, &new_value); | 397 observer_.Expect(&prefs_, kName, &new_value); |
| 384 prefs_.Set(kName, new_value); | 398 prefs_.Set(kName, new_value); |
| 385 Mock::VerifyAndClearExpectations(&observer_); | 399 Mock::VerifyAndClearExpectations(&observer_); |
| 386 } | 400 } |
| 387 | 401 |
| 388 TEST_F(PrefServiceSetValueTest, SetDictionaryValue) { | 402 TEST_F(PrefServiceSetValueTest, SetDictionaryValue) { |
| 389 prefs_.RegisterDictionaryPref(kName); | 403 prefs_.RegisterDictionaryPref(kName, false /* don't sync pref */); |
| 390 PrefChangeRegistrar registrar; | 404 PrefChangeRegistrar registrar; |
| 391 registrar.Init(&prefs_); | 405 registrar.Init(&prefs_); |
| 392 registrar.Add(kName, &observer_); | 406 registrar.Add(kName, &observer_); |
| 393 | 407 |
| 394 EXPECT_CALL(observer_, Observe(_, _, _)).Times(0); | 408 EXPECT_CALL(observer_, Observe(_, _, _)).Times(0); |
| 395 prefs_.RemoveUserPref(kName); | 409 prefs_.RemoveUserPref(kName); |
| 396 Mock::VerifyAndClearExpectations(&observer_); | 410 Mock::VerifyAndClearExpectations(&observer_); |
| 397 | 411 |
| 398 DictionaryValue new_value; | 412 DictionaryValue new_value; |
| 399 new_value.SetString(kName, kValue); | 413 new_value.SetString(kName, kValue); |
| 400 observer_.Expect(&prefs_, kName, &new_value); | 414 observer_.Expect(&prefs_, kName, &new_value); |
| 401 prefs_.Set(kName, new_value); | 415 prefs_.Set(kName, new_value); |
| 402 Mock::VerifyAndClearExpectations(&observer_); | 416 Mock::VerifyAndClearExpectations(&observer_); |
| 403 | 417 |
| 404 EXPECT_CALL(observer_, Observe(_, _, _)).Times(0); | 418 EXPECT_CALL(observer_, Observe(_, _, _)).Times(0); |
| 405 prefs_.Set(kName, new_value); | 419 prefs_.Set(kName, new_value); |
| 406 Mock::VerifyAndClearExpectations(&observer_); | 420 Mock::VerifyAndClearExpectations(&observer_); |
| 407 | 421 |
| 408 DictionaryValue empty; | 422 DictionaryValue empty; |
| 409 observer_.Expect(&prefs_, kName, &empty); | 423 observer_.Expect(&prefs_, kName, &empty); |
| 410 prefs_.Set(kName, empty); | 424 prefs_.Set(kName, empty); |
| 411 Mock::VerifyAndClearExpectations(&observer_); | 425 Mock::VerifyAndClearExpectations(&observer_); |
| 412 } | 426 } |
| 413 | 427 |
| 414 TEST_F(PrefServiceSetValueTest, SetListValue) { | 428 TEST_F(PrefServiceSetValueTest, SetListValue) { |
| 415 prefs_.RegisterListPref(kName); | 429 prefs_.RegisterListPref(kName, false /* don't sync pref */); |
| 416 PrefChangeRegistrar registrar; | 430 PrefChangeRegistrar registrar; |
| 417 registrar.Init(&prefs_); | 431 registrar.Init(&prefs_); |
| 418 registrar.Add(kName, &observer_); | 432 registrar.Add(kName, &observer_); |
| 419 | 433 |
| 420 EXPECT_CALL(observer_, Observe(_, _, _)).Times(0); | 434 EXPECT_CALL(observer_, Observe(_, _, _)).Times(0); |
| 421 prefs_.RemoveUserPref(kName); | 435 prefs_.RemoveUserPref(kName); |
| 422 Mock::VerifyAndClearExpectations(&observer_); | 436 Mock::VerifyAndClearExpectations(&observer_); |
| 423 | 437 |
| 424 ListValue new_value; | 438 ListValue new_value; |
| 425 new_value.Append(Value::CreateStringValue(kValue)); | 439 new_value.Append(Value::CreateStringValue(kValue)); |
| 426 observer_.Expect(&prefs_, kName, &new_value); | 440 observer_.Expect(&prefs_, kName, &new_value); |
| 427 prefs_.Set(kName, new_value); | 441 prefs_.Set(kName, new_value); |
| 428 Mock::VerifyAndClearExpectations(&observer_); | 442 Mock::VerifyAndClearExpectations(&observer_); |
| 429 | 443 |
| 430 EXPECT_CALL(observer_, Observe(_, _, _)).Times(0); | 444 EXPECT_CALL(observer_, Observe(_, _, _)).Times(0); |
| 431 prefs_.Set(kName, new_value); | 445 prefs_.Set(kName, new_value); |
| 432 Mock::VerifyAndClearExpectations(&observer_); | 446 Mock::VerifyAndClearExpectations(&observer_); |
| 433 | 447 |
| 434 ListValue empty; | 448 ListValue empty; |
| 435 observer_.Expect(&prefs_, kName, &empty); | 449 observer_.Expect(&prefs_, kName, &empty); |
| 436 prefs_.Set(kName, empty); | 450 prefs_.Set(kName, empty); |
| 437 Mock::VerifyAndClearExpectations(&observer_); | 451 Mock::VerifyAndClearExpectations(&observer_); |
| 438 } | 452 } |
| OLD | NEW |