| 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 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 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 Loading... |
| 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 } |
| OLD | NEW |