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 3 // found in the LICENSE file. 4 5 #include <string> 6 7 #include "base/bind.h" 8 #include "base/memory/ref_counted.h" 9 #include "base/memory/scoped_ptr.h" 10 #include "base/prefs/pref_notifier.h" 11 #include "base/prefs/pref_value_store.h" 12 #include "base/prefs/testing_pref_store.h" 13 #include "base/values.h" 14 #include "testing/gmock/include/gmock/gmock.h" 15 #include "testing/gtest/include/gtest/gtest.h" 16 17 using testing::Mock; 18 using testing::_; 19 20 namespace { 21 22 // Allows to capture pref notifications through gmock. 23 class MockPrefNotifier : public PrefNotifier { 24 public: 25 MOCK_METHOD1(OnPreferenceChanged, void(const std::string&)); 26 MOCK_METHOD1(OnInitializationCompleted, void(bool)); 27 }; 28 29 // Allows to capture sync model associator interaction. 30 class MockPrefModelAssociator { 31 public: 32 MOCK_METHOD1(ProcessPrefChange, void(const std::string&)); 33 }; 34 35 } // namespace 36 37 // Names of the preferences used in this test. 38 namespace prefs { 39 const char kManagedPref[] = "this.pref.managed"; 40 const char kSupervisedUserPref[] = "this.pref.supervised_user"; 41 const char kCommandLinePref[] = "this.pref.command_line"; 42 const char kExtensionPref[] = "this.pref.extension"; 43 const char kUserPref[] = "this.pref.user"; 44 const char kRecommendedPref[] = "this.pref.recommended"; 45 const char kDefaultPref[] = "this.pref.default"; 46 const char kMissingPref[] = "this.pref.does_not_exist"; 47 } 48 49 // Potentially expected values of all preferences used in this test program. 50 namespace managed_pref { 51 const char kManagedValue[] = "managed:managed"; 52 } 53 54 namespace supervised_user_pref { 55 const char kManagedValue[] = "supervised_user:managed"; 56 const char kSupervisedUserValue[] = "supervised_user:supervised_user"; 57 } 58 59 namespace extension_pref { 60 const char kManagedValue[] = "extension:managed"; 61 const char kSupervisedUserValue[] = "extension:supervised_user"; 62 const char kExtensionValue[] = "extension:extension"; 63 } 64 65 namespace command_line_pref { 66 const char kManagedValue[] = "command_line:managed"; 67 const char kSupervisedUserValue[] = "command_line:supervised_user"; 68 const char kExtensionValue[] = "command_line:extension"; 69 const char kCommandLineValue[] = "command_line:command_line"; 70 } 71 72 namespace user_pref { 73 const char kManagedValue[] = "user:managed"; 74 const char kSupervisedUserValue[] = "supervised_user:supervised_user"; 75 const char kExtensionValue[] = "user:extension"; 76 const char kCommandLineValue[] = "user:command_line"; 77 const char kUserValue[] = "user:user"; 78 } 79 80 namespace recommended_pref { 81 const char kManagedValue[] = "recommended:managed"; 82 const char kSupervisedUserValue[] = "recommended:supervised_user"; 83 const char kExtensionValue[] = "recommended:extension"; 84 const char kCommandLineValue[] = "recommended:command_line"; 85 const char kUserValue[] = "recommended:user"; 86 const char kRecommendedValue[] = "recommended:recommended"; 87 } 88 89 namespace default_pref { 90 const char kManagedValue[] = "default:managed"; 91 const char kSupervisedUserValue[] = "default:supervised_user"; 92 const char kExtensionValue[] = "default:extension"; 93 const char kCommandLineValue[] = "default:command_line"; 94 const char kUserValue[] = "default:user"; 95 const char kRecommendedValue[] = "default:recommended"; 96 const char kDefaultValue[] = "default:default"; 97 } 98 99 class PrefValueStoreTest : public testing::Test { 100 protected: 101 virtual void SetUp() { 102 // Create TestingPrefStores. 103 CreateManagedPrefs(); 104 CreateSupervisedUserPrefs(); 105 CreateExtensionPrefs(); 106 CreateCommandLinePrefs(); 107 CreateUserPrefs(); 108 CreateRecommendedPrefs(); 109 CreateDefaultPrefs(); 110 sync_associator_.reset(new MockPrefModelAssociator()); 111 112 // Create a fresh PrefValueStore. 113 pref_value_store_.reset( 114 new PrefValueStore(managed_pref_store_.get(), 115 supervised_user_pref_store_.get(), 116 extension_pref_store_.get(), 117 command_line_pref_store_.get(), 118 user_pref_store_.get(), 119 recommended_pref_store_.get(), 120 default_pref_store_.get(), 121 &pref_notifier_)); 122 123 pref_value_store_->set_callback( 124 base::Bind(&MockPrefModelAssociator::ProcessPrefChange, 125 base::Unretained(sync_associator_.get()))); 126 } 127 128 void CreateManagedPrefs() { 129 managed_pref_store_ = new TestingPrefStore; 130 managed_pref_store_->SetString( 131 prefs::kManagedPref, 132 managed_pref::kManagedValue); 133 } 134 135 void CreateSupervisedUserPrefs() { 136 supervised_user_pref_store_ = new TestingPrefStore; 137 supervised_user_pref_store_->SetString( 138 prefs::kManagedPref, 139 supervised_user_pref::kManagedValue); 140 supervised_user_pref_store_->SetString( 141 prefs::kSupervisedUserPref, 142 supervised_user_pref::kSupervisedUserValue); 143 } 144 145 void CreateExtensionPrefs() { 146 extension_pref_store_ = new TestingPrefStore; 147 extension_pref_store_->SetString( 148 prefs::kManagedPref, 149 extension_pref::kManagedValue); 150 extension_pref_store_->SetString( 151 prefs::kSupervisedUserPref, 152 extension_pref::kSupervisedUserValue); 153 extension_pref_store_->SetString( 154 prefs::kExtensionPref, 155 extension_pref::kExtensionValue); 156 } 157 158 void CreateCommandLinePrefs() { 159 command_line_pref_store_ = new TestingPrefStore; 160 command_line_pref_store_->SetString( 161 prefs::kManagedPref, 162 command_line_pref::kManagedValue); 163 command_line_pref_store_->SetString( 164 prefs::kSupervisedUserPref, 165 command_line_pref::kSupervisedUserValue); 166 command_line_pref_store_->SetString( 167 prefs::kExtensionPref, 168 command_line_pref::kExtensionValue); 169 command_line_pref_store_->SetString( 170 prefs::kCommandLinePref, 171 command_line_pref::kCommandLineValue); 172 } 173 174 void CreateUserPrefs() { 175 user_pref_store_ = new TestingPrefStore; 176 user_pref_store_->SetString( 177 prefs::kManagedPref, 178 user_pref::kManagedValue); 179 user_pref_store_->SetString( 180 prefs::kSupervisedUserPref, 181 user_pref::kSupervisedUserValue); 182 user_pref_store_->SetString( 183 prefs::kCommandLinePref, 184 user_pref::kCommandLineValue); 185 user_pref_store_->SetString( 186 prefs::kExtensionPref, 187 user_pref::kExtensionValue); 188 user_pref_store_->SetString( 189 prefs::kUserPref, 190 user_pref::kUserValue); 191 } 192 193 void CreateRecommendedPrefs() { 194 recommended_pref_store_ = new TestingPrefStore; 195 recommended_pref_store_->SetString( 196 prefs::kManagedPref, 197 recommended_pref::kManagedValue); 198 recommended_pref_store_->SetString( 199 prefs::kSupervisedUserPref, 200 recommended_pref::kSupervisedUserValue); 201 recommended_pref_store_->SetString( 202 prefs::kCommandLinePref, 203 recommended_pref::kCommandLineValue); 204 recommended_pref_store_->SetString( 205 prefs::kExtensionPref, 206 recommended_pref::kExtensionValue); 207 recommended_pref_store_->SetString( 208 prefs::kUserPref, 209 recommended_pref::kUserValue); 210 recommended_pref_store_->SetString( 211 prefs::kRecommendedPref, 212 recommended_pref::kRecommendedValue); 213 } 214 215 void CreateDefaultPrefs() { 216 default_pref_store_ = new TestingPrefStore; 217 default_pref_store_->SetString( 218 prefs::kSupervisedUserPref, 219 default_pref::kSupervisedUserValue); 220 default_pref_store_->SetString( 221 prefs::kManagedPref, 222 default_pref::kManagedValue); 223 default_pref_store_->SetString( 224 prefs::kCommandLinePref, 225 default_pref::kCommandLineValue); 226 default_pref_store_->SetString( 227 prefs::kExtensionPref, 228 default_pref::kExtensionValue); 229 default_pref_store_->SetString( 230 prefs::kUserPref, 231 default_pref::kUserValue); 232 default_pref_store_->SetString( 233 prefs::kRecommendedPref, 234 default_pref::kRecommendedValue); 235 default_pref_store_->SetString( 236 prefs::kDefaultPref, 237 default_pref::kDefaultValue); 238 } 239 240 void ExpectValueChangeNotifications(const char* name) { 241 EXPECT_CALL(pref_notifier_, OnPreferenceChanged(name)); 242 EXPECT_CALL(*sync_associator_, ProcessPrefChange(name)); 243 } 244 245 void CheckAndClearValueChangeNotifications() { 246 Mock::VerifyAndClearExpectations(&pref_notifier_); 247 Mock::VerifyAndClearExpectations(sync_associator_.get()); 248 } 249 250 MockPrefNotifier pref_notifier_; 251 scoped_ptr<MockPrefModelAssociator> sync_associator_; 252 scoped_ptr<PrefValueStore> pref_value_store_; 253 254 scoped_refptr<TestingPrefStore> managed_pref_store_; 255 scoped_refptr<TestingPrefStore> supervised_user_pref_store_; 256 scoped_refptr<TestingPrefStore> extension_pref_store_; 257 scoped_refptr<TestingPrefStore> command_line_pref_store_; 258 scoped_refptr<TestingPrefStore> user_pref_store_; 259 scoped_refptr<TestingPrefStore> recommended_pref_store_; 260 scoped_refptr<TestingPrefStore> default_pref_store_; 261 }; 262 263 TEST_F(PrefValueStoreTest, GetValue) { 264 const base::Value* value; 265 266 // The following tests read a value from the PrefService. The preferences are 267 // set in a way such that all lower-priority stores have a value and we can 268 // test whether overrides work correctly. 269 270 // Test getting a managed value. 271 value = NULL; 272 ASSERT_TRUE(pref_value_store_->GetValue(prefs::kManagedPref, 273 base::Value::TYPE_STRING, &value)); 274 std::string actual_str_value; 275 EXPECT_TRUE(value->GetAsString(&actual_str_value)); 276 EXPECT_EQ(managed_pref::kManagedValue, actual_str_value); 277 278 // Test getting a supervised user value. 279 value = NULL; 280 ASSERT_TRUE(pref_value_store_->GetValue(prefs::kSupervisedUserPref, 281 base::Value::TYPE_STRING, &value)); 282 EXPECT_TRUE(value->GetAsString(&actual_str_value)); 283 EXPECT_EQ(supervised_user_pref::kSupervisedUserValue, actual_str_value); 284 285 // Test getting an extension value. 286 value = NULL; 287 ASSERT_TRUE(pref_value_store_->GetValue(prefs::kExtensionPref, 288 base::Value::TYPE_STRING, &value)); 289 EXPECT_TRUE(value->GetAsString(&actual_str_value)); 290 EXPECT_EQ(extension_pref::kExtensionValue, actual_str_value); 291 292 // Test getting a command-line value. 293 value = NULL; 294 ASSERT_TRUE(pref_value_store_->GetValue(prefs::kCommandLinePref, 295 base::Value::TYPE_STRING, &value)); 296 EXPECT_TRUE(value->GetAsString(&actual_str_value)); 297 EXPECT_EQ(command_line_pref::kCommandLineValue, actual_str_value); 298 299 // Test getting a user-set value. 300 value = NULL; 301 ASSERT_TRUE(pref_value_store_->GetValue(prefs::kUserPref, 302 base::Value::TYPE_STRING, &value)); 303 EXPECT_TRUE(value->GetAsString(&actual_str_value)); 304 EXPECT_EQ(user_pref::kUserValue, actual_str_value); 305 306 // Test getting a user set value overwriting a recommended value. 307 value = NULL; 308 ASSERT_TRUE(pref_value_store_->GetValue(prefs::kRecommendedPref, 309 base::Value::TYPE_STRING, &value)); 310 EXPECT_TRUE(value->GetAsString(&actual_str_value)); 311 EXPECT_EQ(recommended_pref::kRecommendedValue, 312 actual_str_value); 313 314 // Test getting a default value. 315 value = NULL; 316 ASSERT_TRUE(pref_value_store_->GetValue(prefs::kDefaultPref, 317 base::Value::TYPE_STRING, &value)); 318 EXPECT_TRUE(value->GetAsString(&actual_str_value)); 319 EXPECT_EQ(default_pref::kDefaultValue, actual_str_value); 320 321 // Test getting a preference value that the |PrefValueStore| 322 // does not contain. 323 base::FundamentalValue tmp_dummy_value(true); 324 value = &tmp_dummy_value; 325 ASSERT_FALSE(pref_value_store_->GetValue(prefs::kMissingPref, 326 base::Value::TYPE_STRING, &value)); 327 ASSERT_FALSE(value); 328 } 329 330 TEST_F(PrefValueStoreTest, GetRecommendedValue) { 331 const base::Value* value; 332 333 // The following tests read a value from the PrefService. The preferences are 334 // set in a way such that all lower-priority stores have a value and we can 335 // test whether overrides do not clutter the recommended value. 336 337 // Test getting recommended value when a managed value is present. 338 value = NULL; 339 ASSERT_TRUE(pref_value_store_->GetRecommendedValue( 340 prefs::kManagedPref, 341 base::Value::TYPE_STRING, &value)); 342 std::string actual_str_value; 343 EXPECT_TRUE(value->GetAsString(&actual_str_value)); 344 EXPECT_EQ(recommended_pref::kManagedValue, actual_str_value); 345 346 // Test getting recommended value when a supervised user value is present. 347 value = NULL; 348 ASSERT_TRUE(pref_value_store_->GetRecommendedValue( 349 prefs::kSupervisedUserPref, 350 base::Value::TYPE_STRING, &value)); 351 EXPECT_TRUE(value->GetAsString(&actual_str_value)); 352 EXPECT_EQ(recommended_pref::kSupervisedUserValue, actual_str_value); 353 354 // Test getting recommended value when an extension value is present. 355 value = NULL; 356 ASSERT_TRUE(pref_value_store_->GetRecommendedValue( 357 prefs::kExtensionPref, 358 base::Value::TYPE_STRING, &value)); 359 EXPECT_TRUE(value->GetAsString(&actual_str_value)); 360 EXPECT_EQ(recommended_pref::kExtensionValue, actual_str_value); 361 362 // Test getting recommended value when a command-line value is present. 363 value = NULL; 364 ASSERT_TRUE(pref_value_store_->GetRecommendedValue( 365 prefs::kCommandLinePref, 366 base::Value::TYPE_STRING, &value)); 367 EXPECT_TRUE(value->GetAsString(&actual_str_value)); 368 EXPECT_EQ(recommended_pref::kCommandLineValue, actual_str_value); 369 370 // Test getting recommended value when a user-set value is present. 371 value = NULL; 372 ASSERT_TRUE(pref_value_store_->GetRecommendedValue( 373 prefs::kUserPref, 374 base::Value::TYPE_STRING, &value)); 375 EXPECT_TRUE(value->GetAsString(&actual_str_value)); 376 EXPECT_EQ(recommended_pref::kUserValue, actual_str_value); 377 378 // Test getting recommended value when no higher-priority value is present. 379 value = NULL; 380 ASSERT_TRUE(pref_value_store_->GetRecommendedValue( 381 prefs::kRecommendedPref, 382 base::Value::TYPE_STRING, &value)); 383 EXPECT_TRUE(value->GetAsString(&actual_str_value)); 384 EXPECT_EQ(recommended_pref::kRecommendedValue, 385 actual_str_value); 386 387 // Test getting recommended value when no recommended value is present. 388 base::FundamentalValue tmp_dummy_value(true); 389 value = &tmp_dummy_value; 390 ASSERT_FALSE(pref_value_store_->GetRecommendedValue( 391 prefs::kDefaultPref, 392 base::Value::TYPE_STRING, &value)); 393 ASSERT_FALSE(value); 394 395 // Test getting a preference value that the |PrefValueStore| 396 // does not contain. 397 value = &tmp_dummy_value; 398 ASSERT_FALSE(pref_value_store_->GetRecommendedValue( 399 prefs::kMissingPref, 400 base::Value::TYPE_STRING, &value)); 401 ASSERT_FALSE(value); 402 } 403 404 TEST_F(PrefValueStoreTest, PrefChanges) { 405 // Check pref controlled by highest-priority store. 406 ExpectValueChangeNotifications(prefs::kManagedPref); 407 managed_pref_store_->NotifyPrefValueChanged(prefs::kManagedPref); 408 CheckAndClearValueChangeNotifications(); 409 410 ExpectValueChangeNotifications(prefs::kManagedPref); 411 supervised_user_pref_store_->NotifyPrefValueChanged(prefs::kManagedPref); 412 CheckAndClearValueChangeNotifications(); 413 414 ExpectValueChangeNotifications(prefs::kManagedPref); 415 extension_pref_store_->NotifyPrefValueChanged(prefs::kManagedPref); 416 CheckAndClearValueChangeNotifications(); 417 418 ExpectValueChangeNotifications(prefs::kManagedPref); 419 command_line_pref_store_->NotifyPrefValueChanged(prefs::kManagedPref); 420 CheckAndClearValueChangeNotifications(); 421 422 ExpectValueChangeNotifications(prefs::kManagedPref); 423 user_pref_store_->NotifyPrefValueChanged(prefs::kManagedPref); 424 CheckAndClearValueChangeNotifications(); 425 426 ExpectValueChangeNotifications(prefs::kManagedPref); 427 recommended_pref_store_->NotifyPrefValueChanged(prefs::kManagedPref); 428 CheckAndClearValueChangeNotifications(); 429 430 ExpectValueChangeNotifications(prefs::kManagedPref); 431 default_pref_store_->NotifyPrefValueChanged(prefs::kManagedPref); 432 CheckAndClearValueChangeNotifications(); 433 434 // Check pref controlled by user store. 435 ExpectValueChangeNotifications(prefs::kUserPref); 436 managed_pref_store_->NotifyPrefValueChanged(prefs::kUserPref); 437 CheckAndClearValueChangeNotifications(); 438 439 ExpectValueChangeNotifications(prefs::kUserPref); 440 extension_pref_store_->NotifyPrefValueChanged(prefs::kUserPref); 441 CheckAndClearValueChangeNotifications(); 442 443 ExpectValueChangeNotifications(prefs::kUserPref); 444 command_line_pref_store_->NotifyPrefValueChanged(prefs::kUserPref); 445 CheckAndClearValueChangeNotifications(); 446 447 ExpectValueChangeNotifications(prefs::kUserPref); 448 user_pref_store_->NotifyPrefValueChanged(prefs::kUserPref); 449 CheckAndClearValueChangeNotifications(); 450 451 ExpectValueChangeNotifications(prefs::kUserPref); 452 recommended_pref_store_->NotifyPrefValueChanged(prefs::kUserPref); 453 CheckAndClearValueChangeNotifications(); 454 455 ExpectValueChangeNotifications(prefs::kUserPref); 456 default_pref_store_->NotifyPrefValueChanged(prefs::kUserPref); 457 CheckAndClearValueChangeNotifications(); 458 459 // Check pref controlled by default-pref store. 460 ExpectValueChangeNotifications(prefs::kDefaultPref); 461 managed_pref_store_->NotifyPrefValueChanged(prefs::kDefaultPref); 462 CheckAndClearValueChangeNotifications(); 463 464 ExpectValueChangeNotifications(prefs::kDefaultPref); 465 extension_pref_store_->NotifyPrefValueChanged(prefs::kDefaultPref); 466 CheckAndClearValueChangeNotifications(); 467 468 ExpectValueChangeNotifications(prefs::kDefaultPref); 469 command_line_pref_store_->NotifyPrefValueChanged(prefs::kDefaultPref); 470 CheckAndClearValueChangeNotifications(); 471 472 ExpectValueChangeNotifications(prefs::kDefaultPref); 473 user_pref_store_->NotifyPrefValueChanged(prefs::kDefaultPref); 474 CheckAndClearValueChangeNotifications(); 475 476 ExpectValueChangeNotifications(prefs::kDefaultPref); 477 recommended_pref_store_->NotifyPrefValueChanged(prefs::kDefaultPref); 478 CheckAndClearValueChangeNotifications(); 479 480 ExpectValueChangeNotifications(prefs::kDefaultPref); 481 default_pref_store_->NotifyPrefValueChanged(prefs::kDefaultPref); 482 CheckAndClearValueChangeNotifications(); 483 } 484 485 TEST_F(PrefValueStoreTest, OnInitializationCompleted) { 486 EXPECT_CALL(pref_notifier_, OnInitializationCompleted(true)).Times(0); 487 managed_pref_store_->SetInitializationCompleted(); 488 supervised_user_pref_store_->SetInitializationCompleted(); 489 extension_pref_store_->SetInitializationCompleted(); 490 command_line_pref_store_->SetInitializationCompleted(); 491 recommended_pref_store_->SetInitializationCompleted(); 492 default_pref_store_->SetInitializationCompleted(); 493 Mock::VerifyAndClearExpectations(&pref_notifier_); 494 495 // The notification should only be triggered after the last store is done. 496 EXPECT_CALL(pref_notifier_, OnInitializationCompleted(true)).Times(1); 497 user_pref_store_->SetInitializationCompleted(); 498 Mock::VerifyAndClearExpectations(&pref_notifier_); 499 } 500 501 TEST_F(PrefValueStoreTest, PrefValueInManagedStore) { 502 EXPECT_TRUE(pref_value_store_->PrefValueInManagedStore( 503 prefs::kManagedPref)); 504 EXPECT_FALSE(pref_value_store_->PrefValueInManagedStore( 505 prefs::kSupervisedUserPref)); 506 EXPECT_FALSE(pref_value_store_->PrefValueInManagedStore( 507 prefs::kExtensionPref)); 508 EXPECT_FALSE(pref_value_store_->PrefValueInManagedStore( 509 prefs::kCommandLinePref)); 510 EXPECT_FALSE(pref_value_store_->PrefValueInManagedStore( 511 prefs::kUserPref)); 512 EXPECT_FALSE(pref_value_store_->PrefValueInManagedStore( 513 prefs::kRecommendedPref)); 514 EXPECT_FALSE(pref_value_store_->PrefValueInManagedStore( 515 prefs::kDefaultPref)); 516 EXPECT_FALSE(pref_value_store_->PrefValueInManagedStore( 517 prefs::kMissingPref)); 518 } 519 520 TEST_F(PrefValueStoreTest, PrefValueInExtensionStore) { 521 EXPECT_TRUE(pref_value_store_->PrefValueInExtensionStore( 522 prefs::kManagedPref)); 523 EXPECT_TRUE(pref_value_store_->PrefValueInExtensionStore( 524 prefs::kSupervisedUserPref)); 525 EXPECT_TRUE(pref_value_store_->PrefValueInExtensionStore( 526 prefs::kExtensionPref)); 527 EXPECT_FALSE(pref_value_store_->PrefValueInExtensionStore( 528 prefs::kCommandLinePref)); 529 EXPECT_FALSE(pref_value_store_->PrefValueInExtensionStore( 530 prefs::kUserPref)); 531 EXPECT_FALSE(pref_value_store_->PrefValueInExtensionStore( 532 prefs::kRecommendedPref)); 533 EXPECT_FALSE(pref_value_store_->PrefValueInExtensionStore( 534 prefs::kDefaultPref)); 535 EXPECT_FALSE(pref_value_store_->PrefValueInExtensionStore( 536 prefs::kMissingPref)); 537 } 538 539 TEST_F(PrefValueStoreTest, PrefValueInUserStore) { 540 EXPECT_TRUE(pref_value_store_->PrefValueInUserStore( 541 prefs::kManagedPref)); 542 EXPECT_TRUE(pref_value_store_->PrefValueInUserStore( 543 prefs::kSupervisedUserPref)); 544 EXPECT_TRUE(pref_value_store_->PrefValueInUserStore( 545 prefs::kExtensionPref)); 546 EXPECT_TRUE(pref_value_store_->PrefValueInUserStore( 547 prefs::kCommandLinePref)); 548 EXPECT_TRUE(pref_value_store_->PrefValueInUserStore( 549 prefs::kUserPref)); 550 EXPECT_FALSE(pref_value_store_->PrefValueInUserStore( 551 prefs::kRecommendedPref)); 552 EXPECT_FALSE(pref_value_store_->PrefValueInUserStore( 553 prefs::kDefaultPref)); 554 EXPECT_FALSE(pref_value_store_->PrefValueInUserStore( 555 prefs::kMissingPref)); 556 } 557 558 TEST_F(PrefValueStoreTest, PrefValueFromExtensionStore) { 559 EXPECT_FALSE(pref_value_store_->PrefValueFromExtensionStore( 560 prefs::kManagedPref)); 561 EXPECT_FALSE(pref_value_store_->PrefValueFromExtensionStore( 562 prefs::kSupervisedUserPref)); 563 EXPECT_TRUE(pref_value_store_->PrefValueFromExtensionStore( 564 prefs::kExtensionPref)); 565 EXPECT_FALSE(pref_value_store_->PrefValueFromExtensionStore( 566 prefs::kCommandLinePref)); 567 EXPECT_FALSE(pref_value_store_->PrefValueFromExtensionStore( 568 prefs::kUserPref)); 569 EXPECT_FALSE(pref_value_store_->PrefValueFromExtensionStore( 570 prefs::kRecommendedPref)); 571 EXPECT_FALSE(pref_value_store_->PrefValueFromExtensionStore( 572 prefs::kDefaultPref)); 573 EXPECT_FALSE(pref_value_store_->PrefValueFromExtensionStore( 574 prefs::kMissingPref)); 575 } 576 577 TEST_F(PrefValueStoreTest, PrefValueFromUserStore) { 578 EXPECT_FALSE(pref_value_store_->PrefValueFromUserStore( 579 prefs::kManagedPref)); 580 EXPECT_FALSE(pref_value_store_->PrefValueFromUserStore( 581 prefs::kSupervisedUserPref)); 582 EXPECT_FALSE(pref_value_store_->PrefValueFromUserStore( 583 prefs::kExtensionPref)); 584 EXPECT_FALSE(pref_value_store_->PrefValueFromUserStore( 585 prefs::kCommandLinePref)); 586 EXPECT_TRUE(pref_value_store_->PrefValueFromUserStore( 587 prefs::kUserPref)); 588 EXPECT_FALSE(pref_value_store_->PrefValueFromUserStore( 589 prefs::kRecommendedPref)); 590 EXPECT_FALSE(pref_value_store_->PrefValueFromUserStore( 591 prefs::kDefaultPref)); 592 EXPECT_FALSE(pref_value_store_->PrefValueFromUserStore( 593 prefs::kMissingPref)); 594 } 595 596 TEST_F(PrefValueStoreTest, PrefValueFromRecommendedStore) { 597 EXPECT_FALSE(pref_value_store_->PrefValueFromRecommendedStore( 598 prefs::kManagedPref)); 599 EXPECT_FALSE(pref_value_store_->PrefValueFromRecommendedStore( 600 prefs::kSupervisedUserPref)); 601 EXPECT_FALSE(pref_value_store_->PrefValueFromRecommendedStore( 602 prefs::kExtensionPref)); 603 EXPECT_FALSE(pref_value_store_->PrefValueFromRecommendedStore( 604 prefs::kCommandLinePref)); 605 EXPECT_FALSE(pref_value_store_->PrefValueFromRecommendedStore( 606 prefs::kUserPref)); 607 EXPECT_TRUE(pref_value_store_->PrefValueFromRecommendedStore( 608 prefs::kRecommendedPref)); 609 EXPECT_FALSE(pref_value_store_->PrefValueFromRecommendedStore( 610 prefs::kDefaultPref)); 611 EXPECT_FALSE(pref_value_store_->PrefValueFromRecommendedStore( 612 prefs::kMissingPref)); 613 } 614 615 TEST_F(PrefValueStoreTest, PrefValueFromDefaultStore) { 616 EXPECT_FALSE(pref_value_store_->PrefValueFromDefaultStore( 617 prefs::kManagedPref)); 618 EXPECT_FALSE(pref_value_store_->PrefValueFromDefaultStore( 619 prefs::kSupervisedUserPref)); 620 EXPECT_FALSE(pref_value_store_->PrefValueFromDefaultStore( 621 prefs::kExtensionPref)); 622 EXPECT_FALSE(pref_value_store_->PrefValueFromDefaultStore( 623 prefs::kCommandLinePref)); 624 EXPECT_FALSE(pref_value_store_->PrefValueFromDefaultStore( 625 prefs::kUserPref)); 626 EXPECT_FALSE(pref_value_store_->PrefValueFromDefaultStore( 627 prefs::kRecommendedPref)); 628 EXPECT_TRUE(pref_value_store_->PrefValueFromDefaultStore( 629 prefs::kDefaultPref)); 630 EXPECT_FALSE(pref_value_store_->PrefValueFromDefaultStore( 631 prefs::kMissingPref)); 632 } 633 634 TEST_F(PrefValueStoreTest, PrefValueUserModifiable) { 635 EXPECT_FALSE(pref_value_store_->PrefValueUserModifiable( 636 prefs::kManagedPref)); 637 EXPECT_FALSE(pref_value_store_->PrefValueUserModifiable( 638 prefs::kSupervisedUserPref)); 639 EXPECT_FALSE(pref_value_store_->PrefValueUserModifiable( 640 prefs::kExtensionPref)); 641 EXPECT_FALSE(pref_value_store_->PrefValueUserModifiable( 642 prefs::kCommandLinePref)); 643 EXPECT_TRUE(pref_value_store_->PrefValueUserModifiable( 644 prefs::kUserPref)); 645 EXPECT_TRUE(pref_value_store_->PrefValueUserModifiable( 646 prefs::kRecommendedPref)); 647 EXPECT_TRUE(pref_value_store_->PrefValueUserModifiable( 648 prefs::kDefaultPref)); 649 EXPECT_TRUE(pref_value_store_->PrefValueUserModifiable( 650 prefs::kMissingPref)); 651 } 652 653 TEST_F(PrefValueStoreTest, PrefValueExtensionModifiable) { 654 EXPECT_FALSE(pref_value_store_->PrefValueExtensionModifiable( 655 prefs::kManagedPref)); 656 EXPECT_FALSE(pref_value_store_->PrefValueExtensionModifiable( 657 prefs::kSupervisedUserPref)); 658 EXPECT_TRUE(pref_value_store_->PrefValueExtensionModifiable( 659 prefs::kExtensionPref)); 660 EXPECT_TRUE(pref_value_store_->PrefValueExtensionModifiable( 661 prefs::kCommandLinePref)); 662 EXPECT_TRUE(pref_value_store_->PrefValueExtensionModifiable( 663 prefs::kUserPref)); 664 EXPECT_TRUE(pref_value_store_->PrefValueExtensionModifiable( 665 prefs::kRecommendedPref)); 666 EXPECT_TRUE(pref_value_store_->PrefValueExtensionModifiable( 667 prefs::kDefaultPref)); 668 EXPECT_TRUE(pref_value_store_->PrefValueExtensionModifiable( 669 prefs::kMissingPref)); 670 } 671