Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(53)

Side by Side Diff: chrome/browser/prefs/pref_service_unittest.cc

Issue 6905044: Refactor preference syncing. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase + comments Created 9 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698