OLD | NEW |
---|---|
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 Loading... | |
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 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
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_TRUE(value == NULL); |
270 } | 280 } |
271 | 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_TRUE(value == NULL); | |
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_TRUE(value == NULL); | |
346 } | |
347 | |
Mattias Nissler (ping if slow)
2012/07/27 12:21:58
remove excess whitespace
bartfab (slow)
2012/07/27 13:12:08
Done.
| |
348 | |
349 | |
272 TEST_F(PrefValueStoreTest, PrefChanges) { | 350 TEST_F(PrefValueStoreTest, PrefChanges) { |
273 // Check pref controlled by highest-priority store. | 351 // Check pref controlled by highest-priority store. |
274 EXPECT_CALL(pref_notifier_, OnPreferenceChanged(prefs::kManagedPref)); | 352 ExpectValueChangeNotifications(prefs::kManagedPref); |
275 EXPECT_CALL(*sync_associator_, | 353 managed_pref_store_->NotifyPrefValueChanged(prefs::kManagedPref); |
276 ProcessPrefChange(prefs::kManagedPref)); | 354 CheckAndClearValueChangeNotifications(); |
277 managed_pref_store_->NotifyPrefValueChanged( | |
278 prefs::kManagedPref); | |
279 Mock::VerifyAndClearExpectations(&pref_notifier_); | |
280 Mock::VerifyAndClearExpectations(sync_associator_.get()); | |
281 | 355 |
282 EXPECT_CALL(pref_notifier_, OnPreferenceChanged(_)).Times(0); | 356 ExpectValueChangeNotifications(prefs::kManagedPref); |
283 EXPECT_CALL(*sync_associator_, ProcessPrefChange(_)).Times(0); | 357 extension_pref_store_->NotifyPrefValueChanged(prefs::kManagedPref); |
284 extension_pref_store_->NotifyPrefValueChanged( | 358 CheckAndClearValueChangeNotifications(); |
285 prefs::kManagedPref); | 359 |
286 command_line_pref_store_->NotifyPrefValueChanged( | 360 ExpectValueChangeNotifications(prefs::kManagedPref); |
287 prefs::kManagedPref); | 361 command_line_pref_store_->NotifyPrefValueChanged(prefs::kManagedPref); |
288 user_pref_store_->NotifyPrefValueChanged( | 362 CheckAndClearValueChangeNotifications(); |
289 prefs::kManagedPref); | 363 |
290 recommended_pref_store_->NotifyPrefValueChanged( | 364 ExpectValueChangeNotifications(prefs::kManagedPref); |
291 prefs::kManagedPref); | 365 user_pref_store_->NotifyPrefValueChanged(prefs::kManagedPref); |
292 default_pref_store_->NotifyPrefValueChanged( | 366 CheckAndClearValueChangeNotifications(); |
293 prefs::kManagedPref); | 367 |
294 Mock::VerifyAndClearExpectations(&pref_notifier_); | 368 ExpectValueChangeNotifications(prefs::kManagedPref); |
295 Mock::VerifyAndClearExpectations(sync_associator_.get()); | 369 recommended_pref_store_->NotifyPrefValueChanged(prefs::kManagedPref); |
370 CheckAndClearValueChangeNotifications(); | |
371 | |
372 ExpectValueChangeNotifications(prefs::kManagedPref); | |
373 default_pref_store_->NotifyPrefValueChanged(prefs::kManagedPref); | |
374 CheckAndClearValueChangeNotifications(); | |
296 | 375 |
297 // Check pref controlled by user store. | 376 // Check pref controlled by user store. |
298 EXPECT_CALL(pref_notifier_, OnPreferenceChanged(prefs::kUserPref)); | 377 ExpectValueChangeNotifications(prefs::kUserPref); |
299 EXPECT_CALL(*sync_associator_, ProcessPrefChange(prefs::kUserPref)); | |
300 managed_pref_store_->NotifyPrefValueChanged(prefs::kUserPref); | 378 managed_pref_store_->NotifyPrefValueChanged(prefs::kUserPref); |
301 Mock::VerifyAndClearExpectations(&pref_notifier_); | 379 CheckAndClearValueChangeNotifications(); |
302 Mock::VerifyAndClearExpectations(sync_associator_.get()); | |
303 | 380 |
304 EXPECT_CALL(pref_notifier_, OnPreferenceChanged(prefs::kUserPref)); | 381 ExpectValueChangeNotifications(prefs::kUserPref); |
305 EXPECT_CALL(*sync_associator_, ProcessPrefChange(prefs::kUserPref)); | |
306 extension_pref_store_->NotifyPrefValueChanged(prefs::kUserPref); | 382 extension_pref_store_->NotifyPrefValueChanged(prefs::kUserPref); |
307 Mock::VerifyAndClearExpectations(&pref_notifier_); | 383 CheckAndClearValueChangeNotifications(); |
308 Mock::VerifyAndClearExpectations(sync_associator_.get()); | |
309 | 384 |
310 EXPECT_CALL(pref_notifier_, OnPreferenceChanged(prefs::kUserPref)); | 385 ExpectValueChangeNotifications(prefs::kUserPref); |
311 EXPECT_CALL(*sync_associator_, ProcessPrefChange(prefs::kUserPref)); | |
312 command_line_pref_store_->NotifyPrefValueChanged(prefs::kUserPref); | 386 command_line_pref_store_->NotifyPrefValueChanged(prefs::kUserPref); |
313 Mock::VerifyAndClearExpectations(&pref_notifier_); | 387 CheckAndClearValueChangeNotifications(); |
314 Mock::VerifyAndClearExpectations(sync_associator_.get()); | |
315 | 388 |
316 EXPECT_CALL(pref_notifier_, OnPreferenceChanged(prefs::kUserPref)); | 389 ExpectValueChangeNotifications(prefs::kUserPref); |
317 EXPECT_CALL(*sync_associator_, ProcessPrefChange(prefs::kUserPref)); | |
318 user_pref_store_->NotifyPrefValueChanged(prefs::kUserPref); | 390 user_pref_store_->NotifyPrefValueChanged(prefs::kUserPref); |
319 Mock::VerifyAndClearExpectations(&pref_notifier_); | 391 CheckAndClearValueChangeNotifications(); |
320 Mock::VerifyAndClearExpectations(sync_associator_.get()); | |
321 | 392 |
322 EXPECT_CALL(pref_notifier_, OnPreferenceChanged(_)).Times(0); | 393 ExpectValueChangeNotifications(prefs::kUserPref); |
323 EXPECT_CALL(*sync_associator_, ProcessPrefChange(_)).Times(0); | 394 recommended_pref_store_->NotifyPrefValueChanged(prefs::kUserPref); |
324 recommended_pref_store_->NotifyPrefValueChanged( | 395 CheckAndClearValueChangeNotifications(); |
325 prefs::kUserPref); | 396 |
326 default_pref_store_->NotifyPrefValueChanged( | 397 ExpectValueChangeNotifications(prefs::kUserPref); |
327 prefs::kUserPref); | 398 default_pref_store_->NotifyPrefValueChanged(prefs::kUserPref); |
328 Mock::VerifyAndClearExpectations(&pref_notifier_); | 399 CheckAndClearValueChangeNotifications(); |
329 Mock::VerifyAndClearExpectations(sync_associator_.get()); | |
330 | 400 |
331 // Check pref controlled by default-pref store. | 401 // Check pref controlled by default-pref store. |
332 EXPECT_CALL(pref_notifier_, OnPreferenceChanged(prefs::kDefaultPref)); | 402 ExpectValueChangeNotifications(prefs::kDefaultPref); |
333 EXPECT_CALL(*sync_associator_, ProcessPrefChange(prefs::kDefaultPref)); | |
334 managed_pref_store_->NotifyPrefValueChanged(prefs::kDefaultPref); | 403 managed_pref_store_->NotifyPrefValueChanged(prefs::kDefaultPref); |
335 Mock::VerifyAndClearExpectations(&pref_notifier_); | 404 CheckAndClearValueChangeNotifications(); |
336 Mock::VerifyAndClearExpectations(sync_associator_.get()); | |
337 | 405 |
338 EXPECT_CALL(pref_notifier_, OnPreferenceChanged(prefs::kDefaultPref)); | 406 ExpectValueChangeNotifications(prefs::kDefaultPref); |
339 EXPECT_CALL(*sync_associator_, ProcessPrefChange(prefs::kDefaultPref)); | |
340 extension_pref_store_->NotifyPrefValueChanged(prefs::kDefaultPref); | 407 extension_pref_store_->NotifyPrefValueChanged(prefs::kDefaultPref); |
341 Mock::VerifyAndClearExpectations(&pref_notifier_); | 408 CheckAndClearValueChangeNotifications(); |
342 Mock::VerifyAndClearExpectations(sync_associator_.get()); | |
343 | 409 |
344 EXPECT_CALL(pref_notifier_, OnPreferenceChanged(prefs::kDefaultPref)); | 410 ExpectValueChangeNotifications(prefs::kDefaultPref); |
345 EXPECT_CALL(*sync_associator_, ProcessPrefChange(prefs::kDefaultPref)); | |
346 command_line_pref_store_->NotifyPrefValueChanged(prefs::kDefaultPref); | 411 command_line_pref_store_->NotifyPrefValueChanged(prefs::kDefaultPref); |
347 Mock::VerifyAndClearExpectations(&pref_notifier_); | 412 CheckAndClearValueChangeNotifications(); |
348 Mock::VerifyAndClearExpectations(sync_associator_.get()); | |
349 | 413 |
350 EXPECT_CALL(pref_notifier_, OnPreferenceChanged(prefs::kDefaultPref)); | 414 ExpectValueChangeNotifications(prefs::kDefaultPref); |
351 EXPECT_CALL(*sync_associator_, ProcessPrefChange(prefs::kDefaultPref)); | |
352 user_pref_store_->NotifyPrefValueChanged(prefs::kDefaultPref); | 415 user_pref_store_->NotifyPrefValueChanged(prefs::kDefaultPref); |
353 Mock::VerifyAndClearExpectations(&pref_notifier_); | 416 CheckAndClearValueChangeNotifications(); |
354 Mock::VerifyAndClearExpectations(sync_associator_.get()); | |
355 | 417 |
356 EXPECT_CALL(pref_notifier_, OnPreferenceChanged(prefs::kDefaultPref)); | 418 ExpectValueChangeNotifications(prefs::kDefaultPref); |
357 EXPECT_CALL(*sync_associator_, ProcessPrefChange(prefs::kDefaultPref)); | |
358 recommended_pref_store_->NotifyPrefValueChanged(prefs::kDefaultPref); | 419 recommended_pref_store_->NotifyPrefValueChanged(prefs::kDefaultPref); |
359 Mock::VerifyAndClearExpectations(&pref_notifier_); | 420 CheckAndClearValueChangeNotifications(); |
360 Mock::VerifyAndClearExpectations(sync_associator_.get()); | |
361 | 421 |
362 EXPECT_CALL(pref_notifier_, OnPreferenceChanged(prefs::kDefaultPref)); | 422 ExpectValueChangeNotifications(prefs::kDefaultPref); |
363 EXPECT_CALL(*sync_associator_, ProcessPrefChange(prefs::kDefaultPref)); | |
364 default_pref_store_->NotifyPrefValueChanged(prefs::kDefaultPref); | 423 default_pref_store_->NotifyPrefValueChanged(prefs::kDefaultPref); |
365 Mock::VerifyAndClearExpectations(&pref_notifier_); | 424 CheckAndClearValueChangeNotifications(); |
366 Mock::VerifyAndClearExpectations(sync_associator_.get()); | |
367 } | 425 } |
368 | 426 |
369 TEST_F(PrefValueStoreTest, OnInitializationCompleted) { | 427 TEST_F(PrefValueStoreTest, OnInitializationCompleted) { |
370 EXPECT_CALL(pref_notifier_, OnInitializationCompleted(true)).Times(0); | 428 EXPECT_CALL(pref_notifier_, OnInitializationCompleted(true)).Times(0); |
371 managed_pref_store_->SetInitializationCompleted(); | 429 managed_pref_store_->SetInitializationCompleted(); |
372 extension_pref_store_->SetInitializationCompleted(); | 430 extension_pref_store_->SetInitializationCompleted(); |
373 command_line_pref_store_->SetInitializationCompleted(); | 431 command_line_pref_store_->SetInitializationCompleted(); |
374 recommended_pref_store_->SetInitializationCompleted(); | 432 recommended_pref_store_->SetInitializationCompleted(); |
375 default_pref_store_->SetInitializationCompleted(); | 433 default_pref_store_->SetInitializationCompleted(); |
376 Mock::VerifyAndClearExpectations(&pref_notifier_); | 434 Mock::VerifyAndClearExpectations(&pref_notifier_); |
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
526 prefs::kCommandLinePref)); | 584 prefs::kCommandLinePref)); |
527 EXPECT_TRUE(pref_value_store_->PrefValueExtensionModifiable( | 585 EXPECT_TRUE(pref_value_store_->PrefValueExtensionModifiable( |
528 prefs::kUserPref)); | 586 prefs::kUserPref)); |
529 EXPECT_TRUE(pref_value_store_->PrefValueExtensionModifiable( | 587 EXPECT_TRUE(pref_value_store_->PrefValueExtensionModifiable( |
530 prefs::kRecommendedPref)); | 588 prefs::kRecommendedPref)); |
531 EXPECT_TRUE(pref_value_store_->PrefValueExtensionModifiable( | 589 EXPECT_TRUE(pref_value_store_->PrefValueExtensionModifiable( |
532 prefs::kDefaultPref)); | 590 prefs::kDefaultPref)); |
533 EXPECT_TRUE(pref_value_store_->PrefValueExtensionModifiable( | 591 EXPECT_TRUE(pref_value_store_->PrefValueExtensionModifiable( |
534 prefs::kMissingPref)); | 592 prefs::kMissingPref)); |
535 } | 593 } |
OLD | NEW |