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

Side by Side Diff: components/prefs/pref_service_unittest.cc

Issue 2664753002: Remove base::StringValue (Closed)
Patch Set: Rebase Created 3 years, 9 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
« no previous file with comments | « components/prefs/pref_service.cc ('k') | components/prefs/pref_value_map.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 <stddef.h> 5 #include <stddef.h>
6 #include <stdint.h> 6 #include <stdint.h>
7 7
8 #include <string> 8 #include <string>
9 9
10 #include "base/macros.h" 10 #include "base/macros.h"
(...skipping 20 matching lines...) Expand all
31 const char pref_name[] = "homepage"; 31 const char pref_name[] = "homepage";
32 prefs.registry()->RegisterStringPref(pref_name, std::string()); 32 prefs.registry()->RegisterStringPref(pref_name, std::string());
33 33
34 const char new_pref_value[] = "http://www.google.com/"; 34 const char new_pref_value[] = "http://www.google.com/";
35 MockPrefChangeCallback obs(&prefs); 35 MockPrefChangeCallback obs(&prefs);
36 PrefChangeRegistrar registrar; 36 PrefChangeRegistrar registrar;
37 registrar.Init(&prefs); 37 registrar.Init(&prefs);
38 registrar.Add(pref_name, obs.GetCallback()); 38 registrar.Add(pref_name, obs.GetCallback());
39 39
40 // This should fire the checks in MockPrefChangeCallback::OnPreferenceChanged. 40 // This should fire the checks in MockPrefChangeCallback::OnPreferenceChanged.
41 const base::StringValue expected_value(new_pref_value); 41 const base::Value expected_value(new_pref_value);
42 obs.Expect(pref_name, &expected_value); 42 obs.Expect(pref_name, &expected_value);
43 prefs.SetString(pref_name, new_pref_value); 43 prefs.SetString(pref_name, new_pref_value);
44 Mock::VerifyAndClearExpectations(&obs); 44 Mock::VerifyAndClearExpectations(&obs);
45 45
46 // Setting the pref to the same value should not set the pref value a second 46 // Setting the pref to the same value should not set the pref value a second
47 // time. 47 // time.
48 EXPECT_CALL(obs, OnPreferenceChanged(_)).Times(0); 48 EXPECT_CALL(obs, OnPreferenceChanged(_)).Times(0);
49 prefs.SetString(pref_name, new_pref_value); 49 prefs.SetString(pref_name, new_pref_value);
50 Mock::VerifyAndClearExpectations(&obs); 50 Mock::VerifyAndClearExpectations(&obs);
51 51
52 // Clearing the pref should cause the pref to fire. 52 // Clearing the pref should cause the pref to fire.
53 const base::StringValue expected_default_value((std::string())); 53 const base::Value expected_default_value((std::string()));
54 obs.Expect(pref_name, &expected_default_value); 54 obs.Expect(pref_name, &expected_default_value);
55 prefs.ClearPref(pref_name); 55 prefs.ClearPref(pref_name);
56 Mock::VerifyAndClearExpectations(&obs); 56 Mock::VerifyAndClearExpectations(&obs);
57 57
58 // Clearing the pref again should not cause the pref to fire. 58 // Clearing the pref again should not cause the pref to fire.
59 EXPECT_CALL(obs, OnPreferenceChanged(_)).Times(0); 59 EXPECT_CALL(obs, OnPreferenceChanged(_)).Times(0);
60 prefs.ClearPref(pref_name); 60 prefs.ClearPref(pref_name);
61 Mock::VerifyAndClearExpectations(&obs); 61 Mock::VerifyAndClearExpectations(&obs);
62 } 62 }
63 63
(...skipping 12 matching lines...) Expand all
76 76
77 // Set a value and make sure we have a path. 77 // Set a value and make sure we have a path.
78 prefs.SetString(path, "blah"); 78 prefs.SetString(path, "blah");
79 EXPECT_TRUE(prefs.HasPrefPath(path)); 79 EXPECT_TRUE(prefs.HasPrefPath(path));
80 } 80 }
81 81
82 TEST(PrefServiceTest, Observers) { 82 TEST(PrefServiceTest, Observers) {
83 const char pref_name[] = "homepage"; 83 const char pref_name[] = "homepage";
84 84
85 TestingPrefServiceSimple prefs; 85 TestingPrefServiceSimple prefs;
86 prefs.SetUserPref(pref_name, 86 prefs.SetUserPref(pref_name, new base::Value("http://www.cnn.com"));
87 new base::StringValue("http://www.cnn.com"));
88 prefs.registry()->RegisterStringPref(pref_name, std::string()); 87 prefs.registry()->RegisterStringPref(pref_name, std::string());
89 88
90 const char new_pref_value[] = "http://www.google.com/"; 89 const char new_pref_value[] = "http://www.google.com/";
91 const base::StringValue expected_new_pref_value(new_pref_value); 90 const base::Value expected_new_pref_value(new_pref_value);
92 MockPrefChangeCallback obs(&prefs); 91 MockPrefChangeCallback obs(&prefs);
93 PrefChangeRegistrar registrar; 92 PrefChangeRegistrar registrar;
94 registrar.Init(&prefs); 93 registrar.Init(&prefs);
95 registrar.Add(pref_name, obs.GetCallback()); 94 registrar.Add(pref_name, obs.GetCallback());
96 95
97 PrefChangeRegistrar registrar_two; 96 PrefChangeRegistrar registrar_two;
98 registrar_two.Init(&prefs); 97 registrar_two.Init(&prefs);
99 98
100 // This should fire the checks in MockPrefChangeCallback::OnPreferenceChanged. 99 // This should fire the checks in MockPrefChangeCallback::OnPreferenceChanged.
101 obs.Expect(pref_name, &expected_new_pref_value); 100 obs.Expect(pref_name, &expected_new_pref_value);
102 prefs.SetString(pref_name, new_pref_value); 101 prefs.SetString(pref_name, new_pref_value);
103 Mock::VerifyAndClearExpectations(&obs); 102 Mock::VerifyAndClearExpectations(&obs);
104 103
105 // Now try adding a second pref observer. 104 // Now try adding a second pref observer.
106 const char new_pref_value2[] = "http://www.youtube.com/"; 105 const char new_pref_value2[] = "http://www.youtube.com/";
107 const base::StringValue expected_new_pref_value2(new_pref_value2); 106 const base::Value expected_new_pref_value2(new_pref_value2);
108 MockPrefChangeCallback obs2(&prefs); 107 MockPrefChangeCallback obs2(&prefs);
109 obs.Expect(pref_name, &expected_new_pref_value2); 108 obs.Expect(pref_name, &expected_new_pref_value2);
110 obs2.Expect(pref_name, &expected_new_pref_value2); 109 obs2.Expect(pref_name, &expected_new_pref_value2);
111 registrar_two.Add(pref_name, obs2.GetCallback()); 110 registrar_two.Add(pref_name, obs2.GetCallback());
112 // This should fire the checks in obs and obs2. 111 // This should fire the checks in obs and obs2.
113 prefs.SetString(pref_name, new_pref_value2); 112 prefs.SetString(pref_name, new_pref_value2);
114 Mock::VerifyAndClearExpectations(&obs); 113 Mock::VerifyAndClearExpectations(&obs);
115 Mock::VerifyAndClearExpectations(&obs2); 114 Mock::VerifyAndClearExpectations(&obs2);
116 115
117 // Set a recommended value. 116 // Set a recommended value.
118 const base::StringValue recommended_pref_value("http://www.gmail.com/"); 117 const base::Value recommended_pref_value("http://www.gmail.com/");
119 obs.Expect(pref_name, &expected_new_pref_value2); 118 obs.Expect(pref_name, &expected_new_pref_value2);
120 obs2.Expect(pref_name, &expected_new_pref_value2); 119 obs2.Expect(pref_name, &expected_new_pref_value2);
121 // This should fire the checks in obs and obs2 but with an unchanged value 120 // This should fire the checks in obs and obs2 but with an unchanged value
122 // as the recommended value is being overridden by the user-set value. 121 // as the recommended value is being overridden by the user-set value.
123 prefs.SetRecommendedPref(pref_name, recommended_pref_value.DeepCopy()); 122 prefs.SetRecommendedPref(pref_name, recommended_pref_value.DeepCopy());
124 Mock::VerifyAndClearExpectations(&obs); 123 Mock::VerifyAndClearExpectations(&obs);
125 Mock::VerifyAndClearExpectations(&obs2); 124 Mock::VerifyAndClearExpectations(&obs2);
126 125
127 // Make sure obs2 still works after removing obs. 126 // Make sure obs2 still works after removing obs.
128 registrar.Remove(pref_name); 127 registrar.Remove(pref_name);
129 EXPECT_CALL(obs, OnPreferenceChanged(_)).Times(0); 128 EXPECT_CALL(obs, OnPreferenceChanged(_)).Times(0);
130 obs2.Expect(pref_name, &expected_new_pref_value); 129 obs2.Expect(pref_name, &expected_new_pref_value);
131 // This should only fire the observer in obs2. 130 // This should only fire the observer in obs2.
132 prefs.SetString(pref_name, new_pref_value); 131 prefs.SetString(pref_name, new_pref_value);
133 Mock::VerifyAndClearExpectations(&obs); 132 Mock::VerifyAndClearExpectations(&obs);
134 Mock::VerifyAndClearExpectations(&obs2); 133 Mock::VerifyAndClearExpectations(&obs2);
135 } 134 }
136 135
137 // Make sure that if a preference changes type, so the wrong type is stored in 136 // Make sure that if a preference changes type, so the wrong type is stored in
138 // the user pref file, it uses the correct fallback value instead. 137 // the user pref file, it uses the correct fallback value instead.
139 TEST(PrefServiceTest, GetValueChangedType) { 138 TEST(PrefServiceTest, GetValueChangedType) {
140 const int kTestValue = 10; 139 const int kTestValue = 10;
141 TestingPrefServiceSimple prefs; 140 TestingPrefServiceSimple prefs;
142 prefs.registry()->RegisterIntegerPref(kPrefName, kTestValue); 141 prefs.registry()->RegisterIntegerPref(kPrefName, kTestValue);
143 142
144 // Check falling back to a recommended value. 143 // Check falling back to a recommended value.
145 prefs.SetUserPref(kPrefName, 144 prefs.SetUserPref(kPrefName, new base::Value("not an integer"));
146 new base::StringValue("not an integer"));
147 const PrefService::Preference* pref = prefs.FindPreference(kPrefName); 145 const PrefService::Preference* pref = prefs.FindPreference(kPrefName);
148 ASSERT_TRUE(pref); 146 ASSERT_TRUE(pref);
149 const base::Value* value = pref->GetValue(); 147 const base::Value* value = pref->GetValue();
150 ASSERT_TRUE(value); 148 ASSERT_TRUE(value);
151 EXPECT_EQ(base::Value::Type::INTEGER, value->GetType()); 149 EXPECT_EQ(base::Value::Type::INTEGER, value->GetType());
152 int actual_int_value = -1; 150 int actual_int_value = -1;
153 EXPECT_TRUE(value->GetAsInteger(&actual_int_value)); 151 EXPECT_TRUE(value->GetAsInteger(&actual_int_value));
154 EXPECT_EQ(kTestValue, actual_int_value); 152 EXPECT_EQ(kTestValue, actual_int_value);
155 } 153 }
156 154
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after
347 345
348 TestingPrefServiceSimple prefs_; 346 TestingPrefServiceSimple prefs_;
349 MockPrefChangeCallback observer_; 347 MockPrefChangeCallback observer_;
350 }; 348 };
351 349
352 const char PrefServiceSetValueTest::kName[] = "name"; 350 const char PrefServiceSetValueTest::kName[] = "name";
353 const char PrefServiceSetValueTest::kValue[] = "value"; 351 const char PrefServiceSetValueTest::kValue[] = "value";
354 352
355 TEST_F(PrefServiceSetValueTest, SetStringValue) { 353 TEST_F(PrefServiceSetValueTest, SetStringValue) {
356 const char default_string[] = "default"; 354 const char default_string[] = "default";
357 const base::StringValue default_value(default_string); 355 const base::Value default_value(default_string);
358 prefs_.registry()->RegisterStringPref(kName, default_string); 356 prefs_.registry()->RegisterStringPref(kName, default_string);
359 357
360 PrefChangeRegistrar registrar; 358 PrefChangeRegistrar registrar;
361 registrar.Init(&prefs_); 359 registrar.Init(&prefs_);
362 registrar.Add(kName, observer_.GetCallback()); 360 registrar.Add(kName, observer_.GetCallback());
363 361
364 // Changing the controlling store from default to user triggers notification. 362 // Changing the controlling store from default to user triggers notification.
365 observer_.Expect(kName, &default_value); 363 observer_.Expect(kName, &default_value);
366 prefs_.Set(kName, default_value); 364 prefs_.Set(kName, default_value);
367 Mock::VerifyAndClearExpectations(&observer_); 365 Mock::VerifyAndClearExpectations(&observer_);
368 366
369 EXPECT_CALL(observer_, OnPreferenceChanged(_)).Times(0); 367 EXPECT_CALL(observer_, OnPreferenceChanged(_)).Times(0);
370 prefs_.Set(kName, default_value); 368 prefs_.Set(kName, default_value);
371 Mock::VerifyAndClearExpectations(&observer_); 369 Mock::VerifyAndClearExpectations(&observer_);
372 370
373 base::StringValue new_value(kValue); 371 base::Value new_value(kValue);
374 observer_.Expect(kName, &new_value); 372 observer_.Expect(kName, &new_value);
375 prefs_.Set(kName, new_value); 373 prefs_.Set(kName, new_value);
376 Mock::VerifyAndClearExpectations(&observer_); 374 Mock::VerifyAndClearExpectations(&observer_);
377 } 375 }
378 376
379 TEST_F(PrefServiceSetValueTest, SetDictionaryValue) { 377 TEST_F(PrefServiceSetValueTest, SetDictionaryValue) {
380 prefs_.registry()->RegisterDictionaryPref(kName); 378 prefs_.registry()->RegisterDictionaryPref(kName);
381 PrefChangeRegistrar registrar; 379 PrefChangeRegistrar registrar;
382 registrar.Init(&prefs_); 380 registrar.Init(&prefs_);
383 registrar.Add(kName, observer_.GetCallback()); 381 registrar.Add(kName, observer_.GetCallback());
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
420 418
421 EXPECT_CALL(observer_, OnPreferenceChanged(_)).Times(0); 419 EXPECT_CALL(observer_, OnPreferenceChanged(_)).Times(0);
422 prefs_.Set(kName, new_value); 420 prefs_.Set(kName, new_value);
423 Mock::VerifyAndClearExpectations(&observer_); 421 Mock::VerifyAndClearExpectations(&observer_);
424 422
425 base::ListValue empty; 423 base::ListValue empty;
426 observer_.Expect(kName, &empty); 424 observer_.Expect(kName, &empty);
427 prefs_.Set(kName, empty); 425 prefs_.Set(kName, empty);
428 Mock::VerifyAndClearExpectations(&observer_); 426 Mock::VerifyAndClearExpectations(&observer_);
429 } 427 }
OLDNEW
« no previous file with comments | « components/prefs/pref_service.cc ('k') | components/prefs/pref_value_map.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698