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

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

Issue 5646003: Sanitize PrefStore interface. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix PrefService mock construction in PrefServiceTest to include command line store. Created 10 years 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
« no previous file with comments | « chrome/browser/prefs/pref_value_store.cc ('k') | chrome/browser/prefs/testing_pref_store.h » ('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) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 <set> 5 #include <set>
6 #include <string> 6 #include <string>
7 7
8 #include "base/scoped_ptr.h" 8 #include "base/scoped_ptr.h"
9 #include "base/values.h" 9 #include "base/values.h"
10 #include "chrome/browser/browser_thread.h" 10 #include "chrome/browser/browser_thread.h"
11 #include "chrome/browser/policy/configuration_policy_pref_store.h" 11 #include "chrome/browser/policy/configuration_policy_pref_store.h"
12 #include "chrome/browser/policy/dummy_configuration_policy_provider.h"
12 #include "chrome/browser/prefs/pref_notifier.h" 13 #include "chrome/browser/prefs/pref_notifier.h"
13 #include "chrome/browser/prefs/pref_value_store.h" 14 #include "chrome/browser/prefs/pref_value_store.h"
14 #include "chrome/browser/prefs/testing_pref_store.h" 15 #include "chrome/browser/prefs/testing_pref_store.h"
15 #include "chrome/common/pref_names.h" 16 #include "chrome/common/pref_names.h"
16 #include "testing/gmock/include/gmock/gmock.h" 17 #include "testing/gmock/include/gmock/gmock.h"
17 #include "testing/gtest/include/gtest/gtest.h" 18 #include "testing/gtest/include/gtest/gtest.h"
18 19
19 using testing::_; 20 using testing::_;
20 using testing::AnyNumber; 21 using testing::AnyNumber;
21 using testing::Mock; 22 using testing::Mock;
22 using testing::Invoke; 23 using testing::Invoke;
23 24
24 namespace { 25 namespace {
25 26
26 // Records preference changes.
27 class PrefChangeRecorder {
28 public:
29 void Record(const std::string& pref_name) {
30 changed_prefs_.insert(pref_name);
31 }
32
33 void Clear() {
34 changed_prefs_.clear();
35 }
36
37 const std::set<std::string>& changed_prefs() { return changed_prefs_; }
38
39 private:
40 std::set<std::string> changed_prefs_;
41 };
42
43 // Allows to capture pref notifications through gmock. 27 // Allows to capture pref notifications through gmock.
44 class MockPrefNotifier : public PrefNotifier { 28 class MockPrefNotifier : public PrefNotifier {
45 public: 29 public:
46 MOCK_METHOD1(OnPreferenceChanged, void(const std::string&)); 30 MOCK_METHOD1(OnPreferenceChanged, void(const std::string&));
47 MOCK_METHOD0(OnInitializationCompleted, void()); 31 MOCK_METHOD0(OnInitializationCompleted, void());
48 }; 32 };
49 33
50 } // namespace 34 } // namespace
51 35
52 // Names of the preferences used in this test program. 36 // Names of the preferences used in this test program.
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 pref_value_store_->RegisterPreferenceType(prefs::kRecommendedPref, 128 pref_value_store_->RegisterPreferenceType(prefs::kRecommendedPref,
145 Value::TYPE_BOOLEAN); 129 Value::TYPE_BOOLEAN);
146 pref_value_store_->RegisterPreferenceType(prefs::kSampleDict, 130 pref_value_store_->RegisterPreferenceType(prefs::kSampleDict,
147 Value::TYPE_DICTIONARY); 131 Value::TYPE_DICTIONARY);
148 pref_value_store_->RegisterPreferenceType(prefs::kSampleList, 132 pref_value_store_->RegisterPreferenceType(prefs::kSampleList,
149 Value::TYPE_LIST); 133 Value::TYPE_LIST);
150 pref_value_store_->RegisterPreferenceType(prefs::kDefaultPref, 134 pref_value_store_->RegisterPreferenceType(prefs::kDefaultPref,
151 Value::TYPE_INTEGER); 135 Value::TYPE_INTEGER);
152 pref_value_store_->RegisterPreferenceType(prefs::kProxyAutoDetect, 136 pref_value_store_->RegisterPreferenceType(prefs::kProxyAutoDetect,
153 Value::TYPE_BOOLEAN); 137 Value::TYPE_BOOLEAN);
154
155 ui_thread_.reset(new BrowserThread(BrowserThread::UI, &loop_));
156 file_thread_.reset(new BrowserThread(BrowserThread::FILE, &loop_));
157 } 138 }
158 139
159 // Creates a new dictionary and stores some sample user preferences 140 // Creates a new dictionary and stores some sample user preferences
160 // in it. 141 // in it.
161 void CreateUserPrefs() { 142 void CreateUserPrefs() {
162 user_pref_store_ = new TestingPrefStore; 143 user_pref_store_ = new TestingPrefStore;
163 user_pref_store_->prefs()->SetBoolean(prefs::kDeleteCache, 144 user_pref_store_->SetBoolean(prefs::kDeleteCache,
164 user_pref::kDeleteCacheValue); 145 user_pref::kDeleteCacheValue);
165 user_pref_store_->prefs()->SetInteger(prefs::kStabilityLaunchCount, 146 user_pref_store_->SetInteger(prefs::kStabilityLaunchCount,
166 user_pref::kStabilityLaunchCountValue); 147 user_pref::kStabilityLaunchCountValue);
167 user_pref_store_->prefs()->SetString(prefs::kCurrentThemeID, 148 user_pref_store_->SetString(prefs::kCurrentThemeID,
168 user_pref::kCurrentThemeIDValue); 149 user_pref::kCurrentThemeIDValue);
169 user_pref_store_->prefs()->SetString(prefs::kApplicationLocale, 150 user_pref_store_->SetString(prefs::kApplicationLocale,
170 user_pref::kApplicationLocaleValue); 151 user_pref::kApplicationLocaleValue);
171 user_pref_store_->prefs()->SetString(prefs::kDefaultSearchProviderName, 152 user_pref_store_->SetString(prefs::kDefaultSearchProviderName,
172 user_pref::kSearchProviderNameValue); 153 user_pref::kSearchProviderNameValue);
173 user_pref_store_->prefs()->SetString(prefs::kHomePage, 154 user_pref_store_->SetString(prefs::kHomePage,
174 user_pref::kHomepageValue); 155 user_pref::kHomepageValue);
175 } 156 }
176 157
177 void CreateManagedPlatformPrefs() { 158 void CreateManagedPlatformPrefs() {
178 managed_platform_pref_store_ = new TestingPrefStore; 159 managed_platform_pref_store_ = new TestingPrefStore;
179 managed_platform_pref_store_->prefs()->SetString( 160 managed_platform_pref_store_->SetString(prefs::kHomePage,
180 prefs::kHomePage,
181 managed_platform_pref::kHomepageValue); 161 managed_platform_pref::kHomepageValue);
182 expected_differing_paths_.insert(prefs::kHomePage);
183 } 162 }
184 163
185 void CreateDeviceManagementPrefs() { 164 void CreateDeviceManagementPrefs() {
186 device_management_pref_store_ = new TestingPrefStore; 165 device_management_pref_store_ = new TestingPrefStore;
187 device_management_pref_store_->prefs()->SetString( 166 device_management_pref_store_->SetString(prefs::kDefaultSearchProviderName,
188 prefs::kDefaultSearchProviderName,
189 device_management_pref::kSearchProviderNameValue); 167 device_management_pref::kSearchProviderNameValue);
190 expected_differing_paths_.insert("default_search_provider"); 168 device_management_pref_store_->SetString(prefs::kHomePage,
191 expected_differing_paths_.insert(prefs::kDefaultSearchProviderName);
192 device_management_pref_store_->prefs()->SetString(prefs::kHomePage,
193 device_management_pref::kHomepageValue); 169 device_management_pref::kHomepageValue);
194 } 170 }
195 171
196 void CreateExtensionPrefs() { 172 void CreateExtensionPrefs() {
197 extension_pref_store_ = new TestingPrefStore; 173 extension_pref_store_ = new TestingPrefStore;
198 extension_pref_store_->prefs()->SetString(prefs::kCurrentThemeID, 174 extension_pref_store_->SetString(prefs::kCurrentThemeID,
199 extension_pref::kCurrentThemeIDValue); 175 extension_pref::kCurrentThemeIDValue);
200 extension_pref_store_->prefs()->SetString(prefs::kHomePage, 176 extension_pref_store_->SetString(prefs::kHomePage,
201 extension_pref::kHomepageValue); 177 extension_pref::kHomepageValue);
202 extension_pref_store_->prefs()->SetString(prefs::kDefaultSearchProviderName, 178 extension_pref_store_->SetString(prefs::kDefaultSearchProviderName,
203 extension_pref::kSearchProviderNameValue); 179 extension_pref::kSearchProviderNameValue);
204 } 180 }
205 181
206 void CreateCommandLinePrefs() { 182 void CreateCommandLinePrefs() {
207 command_line_pref_store_ = new TestingPrefStore; 183 command_line_pref_store_ = new TestingPrefStore;
208 command_line_pref_store_->prefs()->SetString(prefs::kCurrentThemeID, 184 command_line_pref_store_->SetString(prefs::kCurrentThemeID,
209 command_line_pref::kCurrentThemeIDValue); 185 command_line_pref::kCurrentThemeIDValue);
210 command_line_pref_store_->prefs()->SetString(prefs::kApplicationLocale, 186 command_line_pref_store_->SetString(prefs::kApplicationLocale,
211 command_line_pref::kApplicationLocaleValue); 187 command_line_pref::kApplicationLocaleValue);
212 command_line_pref_store_->prefs()->SetString(prefs::kHomePage, 188 command_line_pref_store_->SetString(prefs::kHomePage,
213 command_line_pref::kHomepageValue); 189 command_line_pref::kHomepageValue);
214 command_line_pref_store_->prefs()->SetString( 190 command_line_pref_store_->SetString(prefs::kDefaultSearchProviderName,
215 prefs::kDefaultSearchProviderName,
216 command_line_pref::kSearchProviderNameValue); 191 command_line_pref::kSearchProviderNameValue);
217 } 192 }
218 193
219 void CreateRecommendedPrefs() { 194 void CreateRecommendedPrefs() {
220 recommended_pref_store_ = new TestingPrefStore; 195 recommended_pref_store_ = new TestingPrefStore;
221 recommended_pref_store_->prefs()->SetInteger(prefs::kStabilityLaunchCount, 196 recommended_pref_store_->SetInteger(prefs::kStabilityLaunchCount,
222 recommended_pref::kStabilityLaunchCountValue); 197 recommended_pref::kStabilityLaunchCountValue);
223 recommended_pref_store_->prefs()->SetBoolean( 198 recommended_pref_store_->SetBoolean(prefs::kRecommendedPref,
224 prefs::kRecommendedPref,
225 recommended_pref::kRecommendedPrefValue); 199 recommended_pref::kRecommendedPrefValue);
226
227 expected_differing_paths_.insert("this");
228 expected_differing_paths_.insert("this.pref");
229 expected_differing_paths_.insert(prefs::kRecommendedPref);
230 expected_differing_paths_.insert("user_experience_metrics");
231 expected_differing_paths_.insert("user_experience_metrics.stability");
232 expected_differing_paths_.insert(prefs::kStabilityLaunchCount);
233 } 200 }
234 201
235 void CreateDefaultPrefs() { 202 void CreateDefaultPrefs() {
236 default_pref_store_ = new TestingPrefStore; 203 default_pref_store_ = new TestingPrefStore;
237 default_pref_store_->prefs()->SetInteger(prefs::kDefaultPref, 204 default_pref_store_->SetInteger(prefs::kDefaultPref,
238 default_pref::kDefaultValue); 205 default_pref::kDefaultValue);
239 } 206 }
240 207
241 DictionaryValue* CreateSampleDictValue() { 208 DictionaryValue* CreateSampleDictValue() {
242 DictionaryValue* sample_dict = new DictionaryValue(); 209 DictionaryValue* sample_dict = new DictionaryValue();
243 sample_dict->SetBoolean("issample", true); 210 sample_dict->SetBoolean("issample", true);
244 sample_dict->SetInteger("value", 4); 211 sample_dict->SetInteger("value", 4);
245 sample_dict->SetString("descr", "Sample Test Dictionary"); 212 sample_dict->SetString("descr", "Sample Test Dictionary");
246 return sample_dict; 213 return sample_dict;
247 } 214 }
248 215
249 ListValue* CreateSampleListValue() { 216 ListValue* CreateSampleListValue() {
250 ListValue* sample_list = new ListValue(); 217 ListValue* sample_list = new ListValue();
251 sample_list->Set(0, Value::CreateIntegerValue(0)); 218 sample_list->Set(0, Value::CreateIntegerValue(0));
252 sample_list->Set(1, Value::CreateIntegerValue(1)); 219 sample_list->Set(1, Value::CreateIntegerValue(1));
253 sample_list->Set(2, Value::CreateIntegerValue(2)); 220 sample_list->Set(2, Value::CreateIntegerValue(2));
254 sample_list->Set(3, Value::CreateIntegerValue(3)); 221 sample_list->Set(3, Value::CreateIntegerValue(3));
255 return sample_list; 222 return sample_list;
256 } 223 }
257 224
258 virtual void TearDown() {
259 loop_.RunAllPending();
260 }
261
262 MessageLoop loop_;
263 MockPrefNotifier pref_notifier_; 225 MockPrefNotifier pref_notifier_;
264 scoped_refptr<PrefValueStore> pref_value_store_; 226 scoped_refptr<PrefValueStore> pref_value_store_;
265 227
266 // |PrefStore|s are owned by the |PrefValueStore|. 228 // |PrefStore|s are owned by the |PrefValueStore|.
267 TestingPrefStore* managed_platform_pref_store_; 229 TestingPrefStore* managed_platform_pref_store_;
268 TestingPrefStore* device_management_pref_store_; 230 TestingPrefStore* device_management_pref_store_;
269 TestingPrefStore* extension_pref_store_; 231 TestingPrefStore* extension_pref_store_;
270 TestingPrefStore* command_line_pref_store_; 232 TestingPrefStore* command_line_pref_store_;
271 TestingPrefStore* user_pref_store_; 233 TestingPrefStore* user_pref_store_;
272 TestingPrefStore* recommended_pref_store_; 234 TestingPrefStore* recommended_pref_store_;
273 TestingPrefStore* default_pref_store_; 235 TestingPrefStore* default_pref_store_;
274
275 // A vector of the preferences paths in the managed and recommended
276 // PrefStores that are set at the beginning of a test. Can be modified
277 // by the test to track changes that it makes to the preferences
278 // stored in the managed and recommended PrefStores.
279 std::set<std::string> expected_differing_paths_;
280
281 private:
282 scoped_ptr<BrowserThread> ui_thread_;
283 scoped_ptr<BrowserThread> file_thread_;
284 }; 236 };
285 237
286 TEST_F(PrefValueStoreTest, IsReadOnly) {
287 managed_platform_pref_store_->set_read_only(true);
288 extension_pref_store_->set_read_only(true);
289 command_line_pref_store_->set_read_only(true);
290 user_pref_store_->set_read_only(true);
291 recommended_pref_store_->set_read_only(true);
292 default_pref_store_->set_read_only(true);
293 EXPECT_TRUE(pref_value_store_->ReadOnly());
294
295 user_pref_store_->set_read_only(false);
296 EXPECT_FALSE(pref_value_store_->ReadOnly());
297 }
298
299 TEST_F(PrefValueStoreTest, GetValue) { 238 TEST_F(PrefValueStoreTest, GetValue) {
300 Value* value; 239 Value* value;
301 240
302 // Test getting a managed platform value overwriting a user-defined and 241 // Test getting a managed platform value overwriting a user-defined and
303 // extension-defined value. 242 // extension-defined value.
304 value = NULL; 243 value = NULL;
305 ASSERT_TRUE(pref_value_store_->GetValue(prefs::kHomePage, &value)); 244 ASSERT_TRUE(pref_value_store_->GetValue(prefs::kHomePage, &value));
306 std::string actual_str_value; 245 std::string actual_str_value;
307 EXPECT_TRUE(value->GetAsString(&actual_str_value)); 246 EXPECT_TRUE(value->GetAsString(&actual_str_value));
308 EXPECT_EQ(managed_platform_pref::kHomepageValue, actual_str_value); 247 EXPECT_EQ(managed_platform_pref::kHomepageValue, actual_str_value);
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
361 // does not contain. 300 // does not contain.
362 FundamentalValue tmp_dummy_value(true); 301 FundamentalValue tmp_dummy_value(true);
363 Value* v_null = &tmp_dummy_value; 302 Value* v_null = &tmp_dummy_value;
364 ASSERT_FALSE(pref_value_store_->GetValue(prefs::kMissingPref, &v_null)); 303 ASSERT_FALSE(pref_value_store_->GetValue(prefs::kMissingPref, &v_null));
365 ASSERT_TRUE(v_null == NULL); 304 ASSERT_TRUE(v_null == NULL);
366 } 305 }
367 306
368 // Make sure that if a preference changes type, so the wrong type is stored in 307 // Make sure that if a preference changes type, so the wrong type is stored in
369 // the user pref file, it uses the correct fallback value instead. 308 // the user pref file, it uses the correct fallback value instead.
370 TEST_F(PrefValueStoreTest, GetValueChangedType) { 309 TEST_F(PrefValueStoreTest, GetValueChangedType) {
310 EXPECT_CALL(pref_notifier_, OnPreferenceChanged(_)).Times(AnyNumber());
311
371 // Check falling back to a recommended value. 312 // Check falling back to a recommended value.
372 user_pref_store_->prefs()->SetString(prefs::kStabilityLaunchCount, 313 user_pref_store_->SetString(prefs::kStabilityLaunchCount,
373 "not an integer"); 314 "not an integer");
374 Value* value = NULL; 315 Value* value = NULL;
375 ASSERT_TRUE(pref_value_store_->GetValue(prefs::kStabilityLaunchCount, 316 ASSERT_TRUE(pref_value_store_->GetValue(prefs::kStabilityLaunchCount,
376 &value)); 317 &value));
377 ASSERT_TRUE(value != NULL); 318 ASSERT_TRUE(value != NULL);
378 ASSERT_EQ(Value::TYPE_INTEGER, value->GetType()); 319 ASSERT_EQ(Value::TYPE_INTEGER, value->GetType());
379 int actual_int_value = -1; 320 int actual_int_value = -1;
380 EXPECT_TRUE(value->GetAsInteger(&actual_int_value)); 321 EXPECT_TRUE(value->GetAsInteger(&actual_int_value));
381 EXPECT_EQ(recommended_pref::kStabilityLaunchCountValue, actual_int_value); 322 EXPECT_EQ(recommended_pref::kStabilityLaunchCountValue, actual_int_value);
382 323
383 // Check falling back multiple times, to a default string. 324 // Check falling back multiple times, to a default string.
384 managed_platform_pref_store_->prefs()->SetInteger(prefs::kHomePage, 1); 325 default_pref_store_->SetString(prefs::kHomePage,
385 device_management_pref_store_->prefs()->SetInteger(prefs::kHomePage, 1); 326 default_pref::kHomepageValue);
386 extension_pref_store_->prefs()->SetInteger(prefs::kHomePage, 1); 327 managed_platform_pref_store_->SetInteger(prefs::kHomePage, 1);
387 command_line_pref_store_->prefs()->SetInteger(prefs::kHomePage, 1); 328 device_management_pref_store_->SetInteger(prefs::kHomePage, 1);
388 user_pref_store_->prefs()->SetInteger(prefs::kHomePage, 1); 329 extension_pref_store_->SetInteger(prefs::kHomePage, 1);
389 recommended_pref_store_->prefs()->SetInteger(prefs::kHomePage, 1); 330 command_line_pref_store_->SetInteger(prefs::kHomePage, 1);
390 default_pref_store_->prefs()->SetString(prefs::kHomePage, 331 user_pref_store_->SetInteger(prefs::kHomePage, 1);
391 default_pref::kHomepageValue); 332 recommended_pref_store_->SetInteger(prefs::kHomePage, 1);
392 333
393 value = NULL; 334 value = NULL;
394 ASSERT_TRUE(pref_value_store_->GetValue(prefs::kHomePage, &value)); 335 ASSERT_TRUE(pref_value_store_->GetValue(prefs::kHomePage, &value));
395 ASSERT_TRUE(value != NULL); 336 ASSERT_TRUE(value != NULL);
396 ASSERT_EQ(Value::TYPE_STRING, value->GetType()); 337 ASSERT_EQ(Value::TYPE_STRING, value->GetType());
397 std::string actual_str_value; 338 std::string actual_str_value;
398 EXPECT_TRUE(value->GetAsString(&actual_str_value)); 339 EXPECT_TRUE(value->GetAsString(&actual_str_value));
399 EXPECT_EQ(default_pref::kHomepageValue, actual_str_value); 340 EXPECT_EQ(default_pref::kHomepageValue, actual_str_value);
400 } 341 }
401 342
(...skipping 10 matching lines...) Expand all
412 // Recommended preference 353 // Recommended preference
413 EXPECT_TRUE(pref_value_store_->HasPrefPath(prefs::kRecommendedPref)); 354 EXPECT_TRUE(pref_value_store_->HasPrefPath(prefs::kRecommendedPref));
414 // Default preference 355 // Default preference
415 EXPECT_FALSE(pref_value_store_->HasPrefPath(prefs::kDefaultPref)); 356 EXPECT_FALSE(pref_value_store_->HasPrefPath(prefs::kDefaultPref));
416 // Unknown preference 357 // Unknown preference
417 EXPECT_FALSE(pref_value_store_->HasPrefPath(prefs::kMissingPref)); 358 EXPECT_FALSE(pref_value_store_->HasPrefPath(prefs::kMissingPref));
418 } 359 }
419 360
420 TEST_F(PrefValueStoreTest, PrefChanges) { 361 TEST_F(PrefValueStoreTest, PrefChanges) {
421 // Setup. 362 // Setup.
363 EXPECT_CALL(pref_notifier_, OnPreferenceChanged(_)).Times(AnyNumber());
422 const char managed_platform_pref_path[] = "managed_platform_pref"; 364 const char managed_platform_pref_path[] = "managed_platform_pref";
423 pref_value_store_->RegisterPreferenceType(managed_platform_pref_path, 365 pref_value_store_->RegisterPreferenceType(managed_platform_pref_path,
424 Value::TYPE_STRING); 366 Value::TYPE_STRING);
425 managed_platform_pref_store_->prefs()->SetString(managed_platform_pref_path, 367 managed_platform_pref_store_->SetString(managed_platform_pref_path,
426 "managed value"); 368 "managed value");
427 const char user_pref_path[] = "user_pref"; 369 const char user_pref_path[] = "user_pref";
428 pref_value_store_->RegisterPreferenceType(user_pref_path, Value::TYPE_STRING); 370 pref_value_store_->RegisterPreferenceType(user_pref_path, Value::TYPE_STRING);
429 user_pref_store_->prefs()->SetString(user_pref_path, "user value"); 371 user_pref_store_->SetString(user_pref_path, "user value");
430 const char default_pref_path[] = "default_pref"; 372 const char default_pref_path[] = "default_pref";
431 pref_value_store_->RegisterPreferenceType(default_pref_path, 373 pref_value_store_->RegisterPreferenceType(default_pref_path,
432 Value::TYPE_STRING); 374 Value::TYPE_STRING);
433 default_pref_store_->prefs()->SetString(default_pref_path, "default value"); 375 default_pref_store_->SetString(default_pref_path, "default value");
376 Mock::VerifyAndClearExpectations(&pref_notifier_);
434 377
435 // Check pref controlled by highest-priority store. 378 // Check pref controlled by highest-priority store.
436 EXPECT_CALL(pref_notifier_, OnPreferenceChanged(managed_platform_pref_path)); 379 EXPECT_CALL(pref_notifier_, OnPreferenceChanged(managed_platform_pref_path));
437 managed_platform_pref_store_->NotifyPrefValueChanged( 380 managed_platform_pref_store_->NotifyPrefValueChanged(
438 managed_platform_pref_path); 381 managed_platform_pref_path);
439 Mock::VerifyAndClearExpectations(&pref_notifier_); 382 Mock::VerifyAndClearExpectations(&pref_notifier_);
440 383
441 EXPECT_CALL(pref_notifier_, OnPreferenceChanged(_)).Times(0); 384 EXPECT_CALL(pref_notifier_, OnPreferenceChanged(_)).Times(0);
442 user_pref_store_->NotifyPrefValueChanged(managed_platform_pref_path); 385 user_pref_store_->NotifyPrefValueChanged(managed_platform_pref_path);
443 Mock::VerifyAndClearExpectations(&pref_notifier_); 386 Mock::VerifyAndClearExpectations(&pref_notifier_);
(...skipping 30 matching lines...) Expand all
474 recommended_pref_store_->SetInitializationCompleted(); 417 recommended_pref_store_->SetInitializationCompleted();
475 default_pref_store_->SetInitializationCompleted(); 418 default_pref_store_->SetInitializationCompleted();
476 Mock::VerifyAndClearExpectations(&pref_notifier_); 419 Mock::VerifyAndClearExpectations(&pref_notifier_);
477 420
478 // The notification should only be triggered after the last store is done. 421 // The notification should only be triggered after the last store is done.
479 EXPECT_CALL(pref_notifier_, OnInitializationCompleted()).Times(1); 422 EXPECT_CALL(pref_notifier_, OnInitializationCompleted()).Times(1);
480 user_pref_store_->SetInitializationCompleted(); 423 user_pref_store_->SetInitializationCompleted();
481 Mock::VerifyAndClearExpectations(&pref_notifier_); 424 Mock::VerifyAndClearExpectations(&pref_notifier_);
482 } 425 }
483 426
484 TEST_F(PrefValueStoreTest, ReadPrefs) {
485 pref_value_store_->ReadPrefs();
486 // The ReadPrefs method of the |TestingPrefStore| deletes the |pref_store|s
487 // internal dictionary and creates a new empty dictionary. Hence this
488 // dictionary does not contain any of the preloaded preferences.
489 // This shows that the ReadPrefs method of the |TestingPrefStore| was called.
490 EXPECT_FALSE(pref_value_store_->HasPrefPath(prefs::kDeleteCache));
491 }
492
493 TEST_F(PrefValueStoreTest, WritePrefs) {
494 user_pref_store_->set_prefs_written(false);
495 pref_value_store_->WritePrefs();
496 ASSERT_TRUE(user_pref_store_->get_prefs_written());
497 }
498
499 TEST_F(PrefValueStoreTest, SetUserPrefValue) {
500 Value* new_value = NULL;
501 Value* actual_value = NULL;
502
503 // Test that managed platform values can not be set.
504 EXPECT_CALL(pref_notifier_, OnPreferenceChanged(_)).Times(0);
505 ASSERT_TRUE(pref_value_store_->PrefValueInManagedPlatformStore(
506 prefs::kHomePage));
507 // The ownership is transfered to PrefValueStore.
508 new_value = Value::CreateStringValue("http://www.youtube.com");
509 pref_value_store_->SetUserPrefValue(prefs::kHomePage, new_value);
510 Mock::VerifyAndClearExpectations(&pref_notifier_);
511
512 ASSERT_TRUE(pref_value_store_->GetValue(prefs::kHomePage, &actual_value));
513 std::string value_str;
514 actual_value->GetAsString(&value_str);
515 ASSERT_EQ(managed_platform_pref::kHomepageValue, value_str);
516
517 // User preferences values can be set.
518 ASSERT_FALSE(pref_value_store_->PrefValueInManagedPlatformStore(
519 prefs::kStabilityLaunchCount));
520 actual_value = NULL;
521 pref_value_store_->GetValue(prefs::kStabilityLaunchCount, &actual_value);
522 int int_value;
523 EXPECT_TRUE(actual_value->GetAsInteger(&int_value));
524 EXPECT_EQ(user_pref::kStabilityLaunchCountValue, int_value);
525
526 EXPECT_CALL(pref_notifier_, OnPreferenceChanged(_)).Times(1);
527 new_value = Value::CreateIntegerValue(1);
528 pref_value_store_->SetUserPrefValue(prefs::kStabilityLaunchCount, new_value);
529 actual_value = NULL;
530 pref_value_store_->GetValue(prefs::kStabilityLaunchCount, &actual_value);
531 EXPECT_TRUE(new_value->Equals(actual_value));
532 Mock::VerifyAndClearExpectations(&pref_notifier_);
533
534 // Set and Get DictionaryValue.
535 EXPECT_CALL(pref_notifier_, OnPreferenceChanged(_)).Times(1);
536 DictionaryValue* expected_dict_value = CreateSampleDictValue();
537 pref_value_store_->SetUserPrefValue(prefs::kSampleDict, expected_dict_value);
538 Mock::VerifyAndClearExpectations(&pref_notifier_);
539
540 actual_value = NULL;
541 std::string key(prefs::kSampleDict);
542 pref_value_store_->GetValue(key, &actual_value);
543
544 ASSERT_EQ(expected_dict_value, actual_value);
545 ASSERT_TRUE(expected_dict_value->Equals(actual_value));
546
547 // Set and Get a ListValue.
548 EXPECT_CALL(pref_notifier_, OnPreferenceChanged(_)).Times(1);
549 ListValue* expected_list_value = CreateSampleListValue();
550 pref_value_store_->SetUserPrefValue(prefs::kSampleList, expected_list_value);
551 Mock::VerifyAndClearExpectations(&pref_notifier_);
552
553 actual_value = NULL;
554 key = prefs::kSampleList;
555 pref_value_store_->GetValue(key, &actual_value);
556
557 ASSERT_EQ(expected_list_value, actual_value);
558 ASSERT_TRUE(expected_list_value->Equals(actual_value));
559 }
560
561 TEST_F(PrefValueStoreTest, PrefValueInManagedPlatformStore) { 427 TEST_F(PrefValueStoreTest, PrefValueInManagedPlatformStore) {
562 // Test a managed platform preference. 428 // Test a managed platform preference.
563 ASSERT_TRUE(pref_value_store_->HasPrefPath(prefs::kHomePage)); 429 ASSERT_TRUE(pref_value_store_->HasPrefPath(prefs::kHomePage));
564 EXPECT_TRUE(pref_value_store_->PrefValueInManagedPlatformStore( 430 EXPECT_TRUE(pref_value_store_->PrefValueInManagedPlatformStore(
565 prefs::kHomePage)); 431 prefs::kHomePage));
566 432
567 // Test a device management preference. 433 // Test a device management preference.
568 ASSERT_TRUE(pref_value_store_->HasPrefPath( 434 ASSERT_TRUE(pref_value_store_->HasPrefPath(
569 prefs::kDefaultSearchProviderName)); 435 prefs::kDefaultSearchProviderName));
570 EXPECT_TRUE(pref_value_store_->PrefValueInDeviceManagementStore( 436 EXPECT_TRUE(pref_value_store_->PrefValueInDeviceManagementStore(
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
652 prefs::kDefaultPref)); 518 prefs::kDefaultPref));
653 519
654 // Test a preference for which the PrefValueStore does not contain a value. 520 // Test a preference for which the PrefValueStore does not contain a value.
655 ASSERT_FALSE(pref_value_store_->HasPrefPath(prefs::kMissingPref)); 521 ASSERT_FALSE(pref_value_store_->HasPrefPath(prefs::kMissingPref));
656 EXPECT_FALSE(pref_value_store_->PrefValueInExtensionStore( 522 EXPECT_FALSE(pref_value_store_->PrefValueInExtensionStore(
657 prefs::kMissingPref)); 523 prefs::kMissingPref));
658 EXPECT_FALSE(pref_value_store_->PrefValueFromExtensionStore( 524 EXPECT_FALSE(pref_value_store_->PrefValueFromExtensionStore(
659 prefs::kMissingPref)); 525 prefs::kMissingPref));
660 } 526 }
661 527
662 TEST_F(PrefValueStoreTest, DetectProxyConfigurationConflict) {
663 // There should be no conflicting proxy prefs in the default
664 // preference stores created for the test.
665 ASSERT_FALSE(pref_value_store_->HasPolicyConflictingUserProxySettings());
666
667 // Create conflicting proxy settings in the managed and command-line
668 // preference stores.
669 command_line_pref_store_->prefs()->SetBoolean(prefs::kProxyAutoDetect, false);
670 managed_platform_pref_store_->prefs()->SetBoolean(prefs::kProxyAutoDetect,
671 true);
672 ASSERT_TRUE(pref_value_store_->HasPolicyConflictingUserProxySettings());
673 }
674
675 TEST_F(PrefValueStoreTest, PrefValueInUserStore) { 528 TEST_F(PrefValueStoreTest, PrefValueInUserStore) {
676 // Test a managed platform preference. 529 // Test a managed platform preference.
677 ASSERT_TRUE(pref_value_store_->HasPrefPath(prefs::kHomePage)); 530 ASSERT_TRUE(pref_value_store_->HasPrefPath(prefs::kHomePage));
678 EXPECT_TRUE(pref_value_store_->PrefValueInUserStore(prefs::kHomePage)); 531 EXPECT_TRUE(pref_value_store_->PrefValueInUserStore(prefs::kHomePage));
679 EXPECT_FALSE(pref_value_store_->PrefValueFromUserStore(prefs::kHomePage)); 532 EXPECT_FALSE(pref_value_store_->PrefValueFromUserStore(prefs::kHomePage));
680 533
681 // Test a device management preference. 534 // Test a device management preference.
682 ASSERT_TRUE(pref_value_store_->HasPrefPath( 535 ASSERT_TRUE(pref_value_store_->HasPrefPath(
683 prefs::kDefaultSearchProviderName)); 536 prefs::kDefaultSearchProviderName));
684 EXPECT_TRUE(pref_value_store_->PrefValueInUserStore( 537 EXPECT_TRUE(pref_value_store_->PrefValueInUserStore(
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
760 ASSERT_FALSE(pref_value_store_->HasPrefPath(prefs::kDefaultPref)); 613 ASSERT_FALSE(pref_value_store_->HasPrefPath(prefs::kDefaultPref));
761 EXPECT_TRUE( 614 EXPECT_TRUE(
762 pref_value_store_->PrefValueFromDefaultStore(prefs::kDefaultPref)); 615 pref_value_store_->PrefValueFromDefaultStore(prefs::kDefaultPref));
763 616
764 // Test a preference for which the PrefValueStore does not contain a value. 617 // Test a preference for which the PrefValueStore does not contain a value.
765 ASSERT_FALSE(pref_value_store_->HasPrefPath(prefs::kMissingPref)); 618 ASSERT_FALSE(pref_value_store_->HasPrefPath(prefs::kMissingPref));
766 EXPECT_FALSE( 619 EXPECT_FALSE(
767 pref_value_store_->PrefValueFromDefaultStore(prefs::kMissingPref)); 620 pref_value_store_->PrefValueFromDefaultStore(prefs::kMissingPref));
768 } 621 }
769 622
770 TEST_F(PrefValueStoreTest, TestPolicyRefresh) { 623 // TODO(mnissler, danno): Clean this up when refactoring
624 // ConfigurationPolicyPrefStore.
625 class PrefValueStorePolicyRefreshTest : public testing::Test {
626 protected:
627 // Records preference changes.
628 class PrefChangeRecorder {
629 public:
630 void Record(const std::string& pref_name) {
631 changed_prefs_.insert(pref_name);
632 }
633
634 void Clear() {
635 changed_prefs_.clear();
636 }
637
638 const std::set<std::string>& changed_prefs() { return changed_prefs_; }
639
640 private:
641 std::set<std::string> changed_prefs_;
642 };
643
644 virtual void SetUp() {
645 using policy::ConfigurationPolicyPrefStore;
646
647 ui_thread_.reset(new BrowserThread(BrowserThread::UI, &loop_)),
648 file_thread_.reset(new BrowserThread(BrowserThread::FILE, &loop_)),
649 policy_provider_.reset(new policy::DummyConfigurationPolicyProvider(
650 policy::ConfigurationPolicyPrefStore::GetChromePolicyDefinitionList()));
651
652 ConfigurationPolicyPrefStore* managed_store =
653 NewConfigurationPolicyPrefStore();
654 managed_store->prefs()->SetString(prefs::kHomePage,
655 managed_platform_pref::kHomepageValue);
656 expected_differing_paths_.insert(prefs::kHomePage);
657
658 ConfigurationPolicyPrefStore* device_management_store =
659 NewConfigurationPolicyPrefStore();
660 device_management_store->prefs()->SetString(
661 prefs::kDefaultSearchProviderName,
662 device_management_pref::kSearchProviderNameValue);
663 expected_differing_paths_.insert("default_search_provider");
664 expected_differing_paths_.insert(prefs::kDefaultSearchProviderName);
665
666 ConfigurationPolicyPrefStore* recommended_store =
667 NewConfigurationPolicyPrefStore();
668 recommended_store->prefs()->SetInteger(prefs::kStabilityLaunchCount,
669 recommended_pref::kStabilityLaunchCountValue);
670 recommended_store->prefs()->SetBoolean(prefs::kRecommendedPref,
671 recommended_pref::kRecommendedPrefValue);
672
673 expected_differing_paths_.insert("this");
674 expected_differing_paths_.insert("this.pref");
675 expected_differing_paths_.insert(prefs::kRecommendedPref);
676 expected_differing_paths_.insert("user_experience_metrics");
677 expected_differing_paths_.insert("user_experience_metrics.stability");
678 expected_differing_paths_.insert(prefs::kStabilityLaunchCount);
679
680 pref_value_store_ = new PrefValueStore(
681 managed_store,
682 device_management_store,
683 NULL,
684 NULL,
685 new TestingPrefStore(),
686 recommended_store,
687 NULL,
688 &pref_notifier_,
689 NULL);
690 }
691
692 virtual void TearDown() {
693 loop_.RunAllPending();
694 pref_value_store_ = NULL;
695 file_thread_.reset();
696 ui_thread_.reset();
697 }
698
699 // Creates a new ConfigurationPolicyPrefStore for testing.
700 policy::ConfigurationPolicyPrefStore* NewConfigurationPolicyPrefStore() {
701 return new policy::ConfigurationPolicyPrefStore(policy_provider_.get());
702 }
703
704 // A vector of the preferences paths in policy PrefStores that are set at the
705 // beginning of a test. Can be modified by the test to track changes that it
706 // makes to the preferences stored in the managed and recommended PrefStores.
707 std::set<std::string> expected_differing_paths_;
708
709 MessageLoop loop_;
710 MockPrefNotifier pref_notifier_;
711 scoped_refptr<PrefValueStore> pref_value_store_;
712
713 private:
714 scoped_ptr<BrowserThread> ui_thread_;
715 scoped_ptr<BrowserThread> file_thread_;
716
717 scoped_ptr<policy::DummyConfigurationPolicyProvider> policy_provider_;
718 };
719
720 TEST_F(PrefValueStorePolicyRefreshTest, TestPolicyRefresh) {
771 // pref_value_store_ is initialized by PrefValueStoreTest to have values in 721 // pref_value_store_ is initialized by PrefValueStoreTest to have values in
772 // the managed platform, device management and recommended stores. By 722 // the managed platform, device management and recommended stores. By
773 // replacing them with dummy stores, all of the paths of the prefs originally 723 // replacing them with dummy stores, all of the paths of the prefs originally
774 // in the managed platform, device management and recommended stores should 724 // in the managed platform, device management and recommended stores should
775 // change. 725 // change.
776 pref_value_store_->RefreshPolicyPrefs(); 726 pref_value_store_->RefreshPolicyPrefs();
777 727
778 PrefChangeRecorder recorder; 728 PrefChangeRecorder recorder;
779 EXPECT_CALL(pref_notifier_, OnPreferenceChanged(_)) 729 EXPECT_CALL(pref_notifier_, OnPreferenceChanged(_))
780 .WillRepeatedly(Invoke(&recorder, &PrefChangeRecorder::Record)); 730 .WillRepeatedly(Invoke(&recorder, &PrefChangeRecorder::Record));
781 loop_.RunAllPending(); 731 loop_.RunAllPending();
782 EXPECT_EQ(expected_differing_paths_, recorder.changed_prefs()); 732 EXPECT_EQ(expected_differing_paths_, recorder.changed_prefs());
783 } 733 }
784 734
785 TEST_F(PrefValueStoreTest, TestRefreshPolicyPrefsCompletion) { 735 TEST_F(PrefValueStorePolicyRefreshTest, TestRefreshPolicyPrefsCompletion) {
736 using policy::ConfigurationPolicyPrefStore;
786 PrefChangeRecorder recorder; 737 PrefChangeRecorder recorder;
787 EXPECT_CALL(pref_notifier_, OnPreferenceChanged(_)) 738 EXPECT_CALL(pref_notifier_, OnPreferenceChanged(_))
788 .WillRepeatedly(Invoke(&recorder, &PrefChangeRecorder::Record)); 739 .WillRepeatedly(Invoke(&recorder, &PrefChangeRecorder::Record));
789 740
790 // Test changed preferences in the managed platform store and removed 741 // Test changed preferences in the managed platform store and removed
791 // preferences in the recommended store. In addition to "homepage", the other 742 // preferences in the recommended store. In addition to "homepage", the other
792 // prefs that are set by default in the test class are removed by the 743 // prefs that are set by default in the test class are removed by the
793 // DummyStore. 744 // DummyStore.
794 scoped_ptr<TestingPrefStore> new_managed_platform_store( 745 scoped_ptr<ConfigurationPolicyPrefStore> new_managed_platform_store(
795 new TestingPrefStore()); 746 NewConfigurationPolicyPrefStore());
796 DictionaryValue* dict = new DictionaryValue(); 747 new_managed_platform_store->prefs()->SetString("homepage",
797 dict->SetString("homepage", "some other changed homepage"); 748 "some other changed homepage");
798 new_managed_platform_store->set_prefs(dict);
799 749
800 recorder.Clear(); 750 recorder.Clear();
801 pref_value_store_->RefreshPolicyPrefsCompletion( 751 pref_value_store_->RefreshPolicyPrefsCompletion(
802 new_managed_platform_store.release(), 752 new_managed_platform_store.release(),
803 new TestingPrefStore(), 753 NewConfigurationPolicyPrefStore(),
804 new TestingPrefStore()); 754 NewConfigurationPolicyPrefStore());
805 EXPECT_EQ(expected_differing_paths_, recorder.changed_prefs()); 755 EXPECT_EQ(expected_differing_paths_, recorder.changed_prefs());
806 756
807 // Test properties that have been removed from the managed platform store. 757 // Test properties that have been removed from the managed platform store.
808 // Homepage is still set in managed prefs. 758 // Homepage is still set in managed prefs.
809 expected_differing_paths_.clear(); 759 expected_differing_paths_.clear();
810 expected_differing_paths_.insert(prefs::kHomePage); 760 expected_differing_paths_.insert(prefs::kHomePage);
811 761
812 recorder.Clear(); 762 recorder.Clear();
813 pref_value_store_->RefreshPolicyPrefsCompletion( 763 pref_value_store_->RefreshPolicyPrefsCompletion(
814 new TestingPrefStore(), 764 NewConfigurationPolicyPrefStore(),
815 new TestingPrefStore(), 765 NewConfigurationPolicyPrefStore(),
816 new TestingPrefStore()); 766 NewConfigurationPolicyPrefStore());
817 EXPECT_EQ(expected_differing_paths_, recorder.changed_prefs()); 767 EXPECT_EQ(expected_differing_paths_, recorder.changed_prefs());
818 768
819 // Test properties that are added to the device management store. 769 // Test properties that are added to the device management store.
820 expected_differing_paths_.clear(); 770 expected_differing_paths_.clear();
821 expected_differing_paths_.insert(prefs::kHomePage); 771 expected_differing_paths_.insert(prefs::kHomePage);
822 scoped_ptr<TestingPrefStore> new_device_management_store( 772 scoped_ptr<ConfigurationPolicyPrefStore> new_device_management_store(
823 new TestingPrefStore()); 773 NewConfigurationPolicyPrefStore());
824 dict = new DictionaryValue(); 774 new_device_management_store->prefs()->SetString(
825 dict->SetString("homepage", "some other changed homepage"); 775 "homepage", "some other changed homepage");
826 new_device_management_store->set_prefs(dict);
827 776
828 recorder.Clear(); 777 recorder.Clear();
829 pref_value_store_->RefreshPolicyPrefsCompletion( 778 pref_value_store_->RefreshPolicyPrefsCompletion(
830 new TestingPrefStore(), 779 NewConfigurationPolicyPrefStore(),
831 new_device_management_store.release(), 780 new_device_management_store.release(),
832 new TestingPrefStore()); 781 NewConfigurationPolicyPrefStore());
833 EXPECT_EQ(expected_differing_paths_, recorder.changed_prefs()); 782 EXPECT_EQ(expected_differing_paths_, recorder.changed_prefs());
834 783
835 // Test properties that are added to the recommended store. 784 // Test properties that are added to the recommended store.
836 scoped_ptr<TestingPrefStore> new_recommended_store(new TestingPrefStore()); 785 scoped_ptr<ConfigurationPolicyPrefStore> new_recommended_store(
837 dict = new DictionaryValue(); 786 NewConfigurationPolicyPrefStore());
838 dict->SetString("homepage", "some other changed homepage 2"); 787 new_recommended_store->prefs()->SetString("homepage",
839 new_recommended_store->set_prefs(dict); 788 "some other changed homepage 2");
840 expected_differing_paths_.clear(); 789 expected_differing_paths_.clear();
841 expected_differing_paths_.insert(prefs::kHomePage); 790 expected_differing_paths_.insert(prefs::kHomePage);
842 791
843 recorder.Clear(); 792 recorder.Clear();
844 pref_value_store_->RefreshPolicyPrefsCompletion( 793 pref_value_store_->RefreshPolicyPrefsCompletion(
845 new TestingPrefStore(), 794 NewConfigurationPolicyPrefStore(),
846 new TestingPrefStore(), 795 NewConfigurationPolicyPrefStore(),
847 new_recommended_store.release()); 796 new_recommended_store.release());
848 EXPECT_EQ(expected_differing_paths_, recorder.changed_prefs()); 797 EXPECT_EQ(expected_differing_paths_, recorder.changed_prefs());
849 798
850 // Test adding a multi-key path. 799 // Test adding a multi-key path.
851 new_managed_platform_store.reset(new TestingPrefStore()); 800 new_managed_platform_store.reset(NewConfigurationPolicyPrefStore());
852 dict = new DictionaryValue(); 801 new_managed_platform_store->prefs()->SetString("segment1.segment2", "value");
853 dict->SetString("segment1.segment2", "value");
854 new_managed_platform_store->set_prefs(dict);
855 expected_differing_paths_.clear(); 802 expected_differing_paths_.clear();
856 expected_differing_paths_.insert(prefs::kHomePage); 803 expected_differing_paths_.insert(prefs::kHomePage);
857 expected_differing_paths_.insert("segment1"); 804 expected_differing_paths_.insert("segment1");
858 expected_differing_paths_.insert("segment1.segment2"); 805 expected_differing_paths_.insert("segment1.segment2");
859 806
860 recorder.Clear(); 807 recorder.Clear();
861 pref_value_store_->RefreshPolicyPrefsCompletion( 808 pref_value_store_->RefreshPolicyPrefsCompletion(
862 new_managed_platform_store.release(), 809 new_managed_platform_store.release(),
863 new TestingPrefStore(), 810 NewConfigurationPolicyPrefStore(),
864 new TestingPrefStore()); 811 NewConfigurationPolicyPrefStore());
865 EXPECT_EQ(expected_differing_paths_, recorder.changed_prefs()); 812 EXPECT_EQ(expected_differing_paths_, recorder.changed_prefs());
866 } 813 }
867 814
868 TEST_F(PrefValueStoreTest, TestConcurrentPolicyRefresh) { 815 TEST_F(PrefValueStorePolicyRefreshTest, TestConcurrentPolicyRefresh) {
869 PrefChangeRecorder recorder; 816 PrefChangeRecorder recorder;
870 EXPECT_CALL(pref_notifier_, OnPreferenceChanged(_)) 817 EXPECT_CALL(pref_notifier_, OnPreferenceChanged(_))
871 .WillRepeatedly(Invoke(&recorder, &PrefChangeRecorder::Record)); 818 .WillRepeatedly(Invoke(&recorder, &PrefChangeRecorder::Record));
872 819
873 BrowserThread::PostTask( 820 BrowserThread::PostTask(
874 BrowserThread::UI, FROM_HERE, 821 BrowserThread::UI, FROM_HERE,
875 NewRunnableMethod( 822 NewRunnableMethod(
876 pref_value_store_.get(), 823 pref_value_store_.get(),
877 &PrefValueStore::RefreshPolicyPrefs)); 824 &PrefValueStore::RefreshPolicyPrefs));
878 825
879 BrowserThread::PostTask( 826 BrowserThread::PostTask(
880 BrowserThread::UI, FROM_HERE, 827 BrowserThread::UI, FROM_HERE,
881 NewRunnableMethod( 828 NewRunnableMethod(
882 pref_value_store_.get(), 829 pref_value_store_.get(),
883 &PrefValueStore::RefreshPolicyPrefs)); 830 &PrefValueStore::RefreshPolicyPrefs));
884 831
885 BrowserThread::PostTask( 832 BrowserThread::PostTask(
886 BrowserThread::UI, FROM_HERE, 833 BrowserThread::UI, FROM_HERE,
887 NewRunnableMethod( 834 NewRunnableMethod(
888 pref_value_store_.get(), 835 pref_value_store_.get(),
889 &PrefValueStore::RefreshPolicyPrefs)); 836 &PrefValueStore::RefreshPolicyPrefs));
890 837
891 loop_.RunAllPending(); 838 loop_.RunAllPending();
892 EXPECT_EQ(expected_differing_paths_, recorder.changed_prefs()); 839 EXPECT_EQ(expected_differing_paths_, recorder.changed_prefs());
893 } 840 }
OLDNEW
« no previous file with comments | « chrome/browser/prefs/pref_value_store.cc ('k') | chrome/browser/prefs/testing_pref_store.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698