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

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

Issue 10821047: Provide access to recommended pref values (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Nits addressed. Created 8 years, 4 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
« no previous file with comments | « chrome/browser/prefs/pref_value_store.cc ('k') | no next file » | 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 <string> 5 #include <string>
6 6
7 #include "base/memory/ref_counted.h" 7 #include "base/memory/ref_counted.h"
8 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 #include "base/values.h" 9 #include "base/values.h"
10 #include "chrome/browser/prefs/pref_model_associator.h" 10 #include "chrome/browser/prefs/pref_model_associator.h"
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after
190 prefs::kUserPref, 190 prefs::kUserPref,
191 default_pref::kUserValue); 191 default_pref::kUserValue);
192 default_pref_store_->SetString( 192 default_pref_store_->SetString(
193 prefs::kRecommendedPref, 193 prefs::kRecommendedPref,
194 default_pref::kRecommendedValue); 194 default_pref::kRecommendedValue);
195 default_pref_store_->SetString( 195 default_pref_store_->SetString(
196 prefs::kDefaultPref, 196 prefs::kDefaultPref,
197 default_pref::kDefaultValue); 197 default_pref::kDefaultValue);
198 } 198 }
199 199
200 void ExpectValueChangeNotifications(const char* name) {
201 EXPECT_CALL(pref_notifier_, OnPreferenceChanged(name));
202 EXPECT_CALL(*sync_associator_, ProcessPrefChange(name));
203 }
204
205 void CheckAndClearValueChangeNotifications() {
206 Mock::VerifyAndClearExpectations(&pref_notifier_);
207 Mock::VerifyAndClearExpectations(sync_associator_.get());
208 }
209
200 MockPrefNotifier pref_notifier_; 210 MockPrefNotifier pref_notifier_;
201 scoped_ptr<MockPrefModelAssociator> sync_associator_; 211 scoped_ptr<MockPrefModelAssociator> sync_associator_;
202 scoped_ptr<PrefValueStore> pref_value_store_; 212 scoped_ptr<PrefValueStore> pref_value_store_;
203 213
204 scoped_refptr<TestingPrefStore> managed_pref_store_; 214 scoped_refptr<TestingPrefStore> managed_pref_store_;
205 scoped_refptr<TestingPrefStore> extension_pref_store_; 215 scoped_refptr<TestingPrefStore> extension_pref_store_;
206 scoped_refptr<TestingPrefStore> command_line_pref_store_; 216 scoped_refptr<TestingPrefStore> command_line_pref_store_;
207 scoped_refptr<TestingPrefStore> user_pref_store_; 217 scoped_refptr<TestingPrefStore> user_pref_store_;
208 scoped_refptr<TestingPrefStore> recommended_pref_store_; 218 scoped_refptr<TestingPrefStore> recommended_pref_store_;
209 scoped_refptr<TestingPrefStore> default_pref_store_; 219 scoped_refptr<TestingPrefStore> default_pref_store_;
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
259 Value::TYPE_STRING, &value)); 269 Value::TYPE_STRING, &value));
260 EXPECT_TRUE(value->GetAsString(&actual_str_value)); 270 EXPECT_TRUE(value->GetAsString(&actual_str_value));
261 EXPECT_EQ(default_pref::kDefaultValue, actual_str_value); 271 EXPECT_EQ(default_pref::kDefaultValue, actual_str_value);
262 272
263 // Test getting a preference value that the |PrefValueStore| 273 // Test getting a preference value that the |PrefValueStore|
264 // does not contain. 274 // does not contain.
265 base::FundamentalValue tmp_dummy_value(true); 275 base::FundamentalValue tmp_dummy_value(true);
266 value = &tmp_dummy_value; 276 value = &tmp_dummy_value;
267 ASSERT_FALSE(pref_value_store_->GetValue(prefs::kMissingPref, 277 ASSERT_FALSE(pref_value_store_->GetValue(prefs::kMissingPref,
268 Value::TYPE_STRING, &value)); 278 Value::TYPE_STRING, &value));
269 ASSERT_TRUE(value == NULL); 279 ASSERT_FALSE(value);
280 }
281
282 TEST_F(PrefValueStoreTest, GetRecommendedValue) {
283 const Value* value;
284
285 // The following tests read a value from the PrefService. The preferences are
286 // set in a way such that all lower-priority stores have a value and we can
287 // test whether overrides do not clutter the recommended value.
288
289 // Test getting recommended value when a managed value is present.
290 value = NULL;
291 ASSERT_TRUE(pref_value_store_->GetRecommendedValue(
292 prefs::kManagedPref,
293 Value::TYPE_STRING, &value));
294 std::string actual_str_value;
295 EXPECT_TRUE(value->GetAsString(&actual_str_value));
296 EXPECT_EQ(recommended_pref::kManagedValue, actual_str_value);
297
298 // Test getting recommended value when an extension value is present.
299 value = NULL;
300 ASSERT_TRUE(pref_value_store_->GetRecommendedValue(
301 prefs::kExtensionPref,
302 Value::TYPE_STRING, &value));
303 EXPECT_TRUE(value->GetAsString(&actual_str_value));
304 EXPECT_EQ(recommended_pref::kExtensionValue, actual_str_value);
305
306 // Test getting recommended value when a command-line value is present.
307 value = NULL;
308 ASSERT_TRUE(pref_value_store_->GetRecommendedValue(
309 prefs::kCommandLinePref,
310 Value::TYPE_STRING, &value));
311 EXPECT_TRUE(value->GetAsString(&actual_str_value));
312 EXPECT_EQ(recommended_pref::kCommandLineValue, actual_str_value);
313
314 // Test getting recommended value when a user-set value is present.
315 value = NULL;
316 ASSERT_TRUE(pref_value_store_->GetRecommendedValue(
317 prefs::kUserPref,
318 Value::TYPE_STRING, &value));
319 EXPECT_TRUE(value->GetAsString(&actual_str_value));
320 EXPECT_EQ(recommended_pref::kUserValue, actual_str_value);
321
322 // Test getting recommended value when no higher-priority value is present.
323 value = NULL;
324 ASSERT_TRUE(pref_value_store_->GetRecommendedValue(
325 prefs::kRecommendedPref,
326 Value::TYPE_STRING, &value));
327 EXPECT_TRUE(value->GetAsString(&actual_str_value));
328 EXPECT_EQ(recommended_pref::kRecommendedValue,
329 actual_str_value);
330
331 // Test getting recommended value when no recommended value is present.
332 base::FundamentalValue tmp_dummy_value(true);
333 value = &tmp_dummy_value;
334 ASSERT_FALSE(pref_value_store_->GetRecommendedValue(
335 prefs::kDefaultPref,
336 Value::TYPE_STRING, &value));
337 ASSERT_FALSE(value);
338
339 // Test getting a preference value that the |PrefValueStore|
340 // does not contain.
341 value = &tmp_dummy_value;
342 ASSERT_FALSE(pref_value_store_->GetRecommendedValue(
343 prefs::kMissingPref,
344 Value::TYPE_STRING, &value));
345 ASSERT_FALSE(value);
270 } 346 }
271 347
272 TEST_F(PrefValueStoreTest, PrefChanges) { 348 TEST_F(PrefValueStoreTest, PrefChanges) {
273 // Check pref controlled by highest-priority store. 349 // Check pref controlled by highest-priority store.
274 EXPECT_CALL(pref_notifier_, OnPreferenceChanged(prefs::kManagedPref)); 350 ExpectValueChangeNotifications(prefs::kManagedPref);
275 EXPECT_CALL(*sync_associator_, 351 managed_pref_store_->NotifyPrefValueChanged(prefs::kManagedPref);
276 ProcessPrefChange(prefs::kManagedPref)); 352 CheckAndClearValueChangeNotifications();
277 managed_pref_store_->NotifyPrefValueChanged(
278 prefs::kManagedPref);
279 Mock::VerifyAndClearExpectations(&pref_notifier_);
280 Mock::VerifyAndClearExpectations(sync_associator_.get());
281 353
282 EXPECT_CALL(pref_notifier_, OnPreferenceChanged(_)).Times(0); 354 ExpectValueChangeNotifications(prefs::kManagedPref);
283 EXPECT_CALL(*sync_associator_, ProcessPrefChange(_)).Times(0); 355 extension_pref_store_->NotifyPrefValueChanged(prefs::kManagedPref);
284 extension_pref_store_->NotifyPrefValueChanged( 356 CheckAndClearValueChangeNotifications();
285 prefs::kManagedPref); 357
286 command_line_pref_store_->NotifyPrefValueChanged( 358 ExpectValueChangeNotifications(prefs::kManagedPref);
287 prefs::kManagedPref); 359 command_line_pref_store_->NotifyPrefValueChanged(prefs::kManagedPref);
288 user_pref_store_->NotifyPrefValueChanged( 360 CheckAndClearValueChangeNotifications();
289 prefs::kManagedPref); 361
290 recommended_pref_store_->NotifyPrefValueChanged( 362 ExpectValueChangeNotifications(prefs::kManagedPref);
291 prefs::kManagedPref); 363 user_pref_store_->NotifyPrefValueChanged(prefs::kManagedPref);
292 default_pref_store_->NotifyPrefValueChanged( 364 CheckAndClearValueChangeNotifications();
293 prefs::kManagedPref); 365
294 Mock::VerifyAndClearExpectations(&pref_notifier_); 366 ExpectValueChangeNotifications(prefs::kManagedPref);
295 Mock::VerifyAndClearExpectations(sync_associator_.get()); 367 recommended_pref_store_->NotifyPrefValueChanged(prefs::kManagedPref);
368 CheckAndClearValueChangeNotifications();
369
370 ExpectValueChangeNotifications(prefs::kManagedPref);
371 default_pref_store_->NotifyPrefValueChanged(prefs::kManagedPref);
372 CheckAndClearValueChangeNotifications();
296 373
297 // Check pref controlled by user store. 374 // Check pref controlled by user store.
298 EXPECT_CALL(pref_notifier_, OnPreferenceChanged(prefs::kUserPref)); 375 ExpectValueChangeNotifications(prefs::kUserPref);
299 EXPECT_CALL(*sync_associator_, ProcessPrefChange(prefs::kUserPref));
300 managed_pref_store_->NotifyPrefValueChanged(prefs::kUserPref); 376 managed_pref_store_->NotifyPrefValueChanged(prefs::kUserPref);
301 Mock::VerifyAndClearExpectations(&pref_notifier_); 377 CheckAndClearValueChangeNotifications();
302 Mock::VerifyAndClearExpectations(sync_associator_.get());
303 378
304 EXPECT_CALL(pref_notifier_, OnPreferenceChanged(prefs::kUserPref)); 379 ExpectValueChangeNotifications(prefs::kUserPref);
305 EXPECT_CALL(*sync_associator_, ProcessPrefChange(prefs::kUserPref));
306 extension_pref_store_->NotifyPrefValueChanged(prefs::kUserPref); 380 extension_pref_store_->NotifyPrefValueChanged(prefs::kUserPref);
307 Mock::VerifyAndClearExpectations(&pref_notifier_); 381 CheckAndClearValueChangeNotifications();
308 Mock::VerifyAndClearExpectations(sync_associator_.get());
309 382
310 EXPECT_CALL(pref_notifier_, OnPreferenceChanged(prefs::kUserPref)); 383 ExpectValueChangeNotifications(prefs::kUserPref);
311 EXPECT_CALL(*sync_associator_, ProcessPrefChange(prefs::kUserPref));
312 command_line_pref_store_->NotifyPrefValueChanged(prefs::kUserPref); 384 command_line_pref_store_->NotifyPrefValueChanged(prefs::kUserPref);
313 Mock::VerifyAndClearExpectations(&pref_notifier_); 385 CheckAndClearValueChangeNotifications();
314 Mock::VerifyAndClearExpectations(sync_associator_.get());
315 386
316 EXPECT_CALL(pref_notifier_, OnPreferenceChanged(prefs::kUserPref)); 387 ExpectValueChangeNotifications(prefs::kUserPref);
317 EXPECT_CALL(*sync_associator_, ProcessPrefChange(prefs::kUserPref));
318 user_pref_store_->NotifyPrefValueChanged(prefs::kUserPref); 388 user_pref_store_->NotifyPrefValueChanged(prefs::kUserPref);
319 Mock::VerifyAndClearExpectations(&pref_notifier_); 389 CheckAndClearValueChangeNotifications();
320 Mock::VerifyAndClearExpectations(sync_associator_.get());
321 390
322 EXPECT_CALL(pref_notifier_, OnPreferenceChanged(_)).Times(0); 391 ExpectValueChangeNotifications(prefs::kUserPref);
323 EXPECT_CALL(*sync_associator_, ProcessPrefChange(_)).Times(0); 392 recommended_pref_store_->NotifyPrefValueChanged(prefs::kUserPref);
324 recommended_pref_store_->NotifyPrefValueChanged( 393 CheckAndClearValueChangeNotifications();
325 prefs::kUserPref); 394
326 default_pref_store_->NotifyPrefValueChanged( 395 ExpectValueChangeNotifications(prefs::kUserPref);
327 prefs::kUserPref); 396 default_pref_store_->NotifyPrefValueChanged(prefs::kUserPref);
328 Mock::VerifyAndClearExpectations(&pref_notifier_); 397 CheckAndClearValueChangeNotifications();
329 Mock::VerifyAndClearExpectations(sync_associator_.get());
330 398
331 // Check pref controlled by default-pref store. 399 // Check pref controlled by default-pref store.
332 EXPECT_CALL(pref_notifier_, OnPreferenceChanged(prefs::kDefaultPref)); 400 ExpectValueChangeNotifications(prefs::kDefaultPref);
333 EXPECT_CALL(*sync_associator_, ProcessPrefChange(prefs::kDefaultPref));
334 managed_pref_store_->NotifyPrefValueChanged(prefs::kDefaultPref); 401 managed_pref_store_->NotifyPrefValueChanged(prefs::kDefaultPref);
335 Mock::VerifyAndClearExpectations(&pref_notifier_); 402 CheckAndClearValueChangeNotifications();
336 Mock::VerifyAndClearExpectations(sync_associator_.get());
337 403
338 EXPECT_CALL(pref_notifier_, OnPreferenceChanged(prefs::kDefaultPref)); 404 ExpectValueChangeNotifications(prefs::kDefaultPref);
339 EXPECT_CALL(*sync_associator_, ProcessPrefChange(prefs::kDefaultPref));
340 extension_pref_store_->NotifyPrefValueChanged(prefs::kDefaultPref); 405 extension_pref_store_->NotifyPrefValueChanged(prefs::kDefaultPref);
341 Mock::VerifyAndClearExpectations(&pref_notifier_); 406 CheckAndClearValueChangeNotifications();
342 Mock::VerifyAndClearExpectations(sync_associator_.get());
343 407
344 EXPECT_CALL(pref_notifier_, OnPreferenceChanged(prefs::kDefaultPref)); 408 ExpectValueChangeNotifications(prefs::kDefaultPref);
345 EXPECT_CALL(*sync_associator_, ProcessPrefChange(prefs::kDefaultPref));
346 command_line_pref_store_->NotifyPrefValueChanged(prefs::kDefaultPref); 409 command_line_pref_store_->NotifyPrefValueChanged(prefs::kDefaultPref);
347 Mock::VerifyAndClearExpectations(&pref_notifier_); 410 CheckAndClearValueChangeNotifications();
348 Mock::VerifyAndClearExpectations(sync_associator_.get());
349 411
350 EXPECT_CALL(pref_notifier_, OnPreferenceChanged(prefs::kDefaultPref)); 412 ExpectValueChangeNotifications(prefs::kDefaultPref);
351 EXPECT_CALL(*sync_associator_, ProcessPrefChange(prefs::kDefaultPref));
352 user_pref_store_->NotifyPrefValueChanged(prefs::kDefaultPref); 413 user_pref_store_->NotifyPrefValueChanged(prefs::kDefaultPref);
353 Mock::VerifyAndClearExpectations(&pref_notifier_); 414 CheckAndClearValueChangeNotifications();
354 Mock::VerifyAndClearExpectations(sync_associator_.get());
355 415
356 EXPECT_CALL(pref_notifier_, OnPreferenceChanged(prefs::kDefaultPref)); 416 ExpectValueChangeNotifications(prefs::kDefaultPref);
357 EXPECT_CALL(*sync_associator_, ProcessPrefChange(prefs::kDefaultPref));
358 recommended_pref_store_->NotifyPrefValueChanged(prefs::kDefaultPref); 417 recommended_pref_store_->NotifyPrefValueChanged(prefs::kDefaultPref);
359 Mock::VerifyAndClearExpectations(&pref_notifier_); 418 CheckAndClearValueChangeNotifications();
360 Mock::VerifyAndClearExpectations(sync_associator_.get());
361 419
362 EXPECT_CALL(pref_notifier_, OnPreferenceChanged(prefs::kDefaultPref)); 420 ExpectValueChangeNotifications(prefs::kDefaultPref);
363 EXPECT_CALL(*sync_associator_, ProcessPrefChange(prefs::kDefaultPref));
364 default_pref_store_->NotifyPrefValueChanged(prefs::kDefaultPref); 421 default_pref_store_->NotifyPrefValueChanged(prefs::kDefaultPref);
365 Mock::VerifyAndClearExpectations(&pref_notifier_); 422 CheckAndClearValueChangeNotifications();
366 Mock::VerifyAndClearExpectations(sync_associator_.get());
367 } 423 }
368 424
369 TEST_F(PrefValueStoreTest, OnInitializationCompleted) { 425 TEST_F(PrefValueStoreTest, OnInitializationCompleted) {
370 EXPECT_CALL(pref_notifier_, OnInitializationCompleted(true)).Times(0); 426 EXPECT_CALL(pref_notifier_, OnInitializationCompleted(true)).Times(0);
371 managed_pref_store_->SetInitializationCompleted(); 427 managed_pref_store_->SetInitializationCompleted();
372 extension_pref_store_->SetInitializationCompleted(); 428 extension_pref_store_->SetInitializationCompleted();
373 command_line_pref_store_->SetInitializationCompleted(); 429 command_line_pref_store_->SetInitializationCompleted();
374 recommended_pref_store_->SetInitializationCompleted(); 430 recommended_pref_store_->SetInitializationCompleted();
375 default_pref_store_->SetInitializationCompleted(); 431 default_pref_store_->SetInitializationCompleted();
376 Mock::VerifyAndClearExpectations(&pref_notifier_); 432 Mock::VerifyAndClearExpectations(&pref_notifier_);
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
526 prefs::kCommandLinePref)); 582 prefs::kCommandLinePref));
527 EXPECT_TRUE(pref_value_store_->PrefValueExtensionModifiable( 583 EXPECT_TRUE(pref_value_store_->PrefValueExtensionModifiable(
528 prefs::kUserPref)); 584 prefs::kUserPref));
529 EXPECT_TRUE(pref_value_store_->PrefValueExtensionModifiable( 585 EXPECT_TRUE(pref_value_store_->PrefValueExtensionModifiable(
530 prefs::kRecommendedPref)); 586 prefs::kRecommendedPref));
531 EXPECT_TRUE(pref_value_store_->PrefValueExtensionModifiable( 587 EXPECT_TRUE(pref_value_store_->PrefValueExtensionModifiable(
532 prefs::kDefaultPref)); 588 prefs::kDefaultPref));
533 EXPECT_TRUE(pref_value_store_->PrefValueExtensionModifiable( 589 EXPECT_TRUE(pref_value_store_->PrefValueExtensionModifiable(
534 prefs::kMissingPref)); 590 prefs::kMissingPref));
535 } 591 }
OLDNEW
« no previous file with comments | « chrome/browser/prefs/pref_value_store.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698