OLD | NEW |
(Empty) | |
| 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 void SetUp() override { |
| 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 std::string& 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 } |
OLD | NEW |