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.
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"
22 // Allows to capture pref notifications through gmock.
23 class MockPrefNotifier
: public PrefNotifier
{
25 MOCK_METHOD1(OnPreferenceChanged
, void(const std::string
&));
26 MOCK_METHOD1(OnInitializationCompleted
, void(bool));
29 // Allows to capture sync model associator interaction.
30 class MockPrefModelAssociator
{
32 MOCK_METHOD1(ProcessPrefChange
, void(const std::string
&));
37 // Names of the preferences used in this test.
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";
49 // Potentially expected values of all preferences used in this test program.
50 namespace managed_pref
{
51 const char kManagedValue
[] = "managed:managed";
54 namespace supervised_user_pref
{
55 const char kManagedValue
[] = "supervised_user:managed";
56 const char kSupervisedUserValue
[] = "supervised_user:supervised_user";
59 namespace extension_pref
{
60 const char kManagedValue
[] = "extension:managed";
61 const char kSupervisedUserValue
[] = "extension:supervised_user";
62 const char kExtensionValue
[] = "extension:extension";
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";
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";
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";
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";
99 class PrefValueStoreTest
: public testing::Test
{
101 void SetUp() override
{
102 // Create TestingPrefStores.
103 CreateManagedPrefs();
104 CreateSupervisedUserPrefs();
105 CreateExtensionPrefs();
106 CreateCommandLinePrefs();
108 CreateRecommendedPrefs();
109 CreateDefaultPrefs();
110 sync_associator_
.reset(new MockPrefModelAssociator());
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(),
123 pref_value_store_
->set_callback(
124 base::Bind(&MockPrefModelAssociator::ProcessPrefChange
,
125 base::Unretained(sync_associator_
.get())));
128 void CreateManagedPrefs() {
129 managed_pref_store_
= new TestingPrefStore
;
130 managed_pref_store_
->SetString(
132 managed_pref::kManagedValue
);
135 void CreateSupervisedUserPrefs() {
136 supervised_user_pref_store_
= new TestingPrefStore
;
137 supervised_user_pref_store_
->SetString(
139 supervised_user_pref::kManagedValue
);
140 supervised_user_pref_store_
->SetString(
141 prefs::kSupervisedUserPref
,
142 supervised_user_pref::kSupervisedUserValue
);
145 void CreateExtensionPrefs() {
146 extension_pref_store_
= new TestingPrefStore
;
147 extension_pref_store_
->SetString(
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
);
158 void CreateCommandLinePrefs() {
159 command_line_pref_store_
= new TestingPrefStore
;
160 command_line_pref_store_
->SetString(
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
);
174 void CreateUserPrefs() {
175 user_pref_store_
= new TestingPrefStore
;
176 user_pref_store_
->SetString(
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(
190 user_pref::kUserValue
);
193 void CreateRecommendedPrefs() {
194 recommended_pref_store_
= new TestingPrefStore
;
195 recommended_pref_store_
->SetString(
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(
209 recommended_pref::kUserValue
);
210 recommended_pref_store_
->SetString(
211 prefs::kRecommendedPref
,
212 recommended_pref::kRecommendedValue
);
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(
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(
231 default_pref::kUserValue
);
232 default_pref_store_
->SetString(
233 prefs::kRecommendedPref
,
234 default_pref::kRecommendedValue
);
235 default_pref_store_
->SetString(
237 default_pref::kDefaultValue
);
240 void ExpectValueChangeNotifications(const std::string
& name
) {
241 EXPECT_CALL(pref_notifier_
, OnPreferenceChanged(name
));
242 EXPECT_CALL(*sync_associator_
, ProcessPrefChange(name
));
245 void CheckAndClearValueChangeNotifications() {
246 Mock::VerifyAndClearExpectations(&pref_notifier_
);
247 Mock::VerifyAndClearExpectations(sync_associator_
.get());
250 MockPrefNotifier pref_notifier_
;
251 scoped_ptr
<MockPrefModelAssociator
> sync_associator_
;
252 scoped_ptr
<PrefValueStore
> pref_value_store_
;
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_
;
263 TEST_F(PrefValueStoreTest
, GetValue
) {
264 const base::Value
* value
;
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.
270 // Test getting a managed value.
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
);
278 // Test getting a supervised user value.
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
);
285 // Test getting an extension value.
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
);
292 // Test getting a command-line value.
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
);
299 // Test getting a user-set value.
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
);
306 // Test getting a user set value overwriting a recommended value.
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
,
314 // Test getting a default value.
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
);
321 // Test getting a preference value that the |PrefValueStore|
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
));
330 TEST_F(PrefValueStoreTest
, GetRecommendedValue
) {
331 const base::Value
* value
;
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.
337 // Test getting recommended value when a managed value is present.
339 ASSERT_TRUE(pref_value_store_
->GetRecommendedValue(
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
);
346 // Test getting recommended value when a supervised user value is present.
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
);
354 // Test getting recommended value when an extension value is present.
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
);
362 // Test getting recommended value when a command-line value is present.
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
);
370 // Test getting recommended value when a user-set value is present.
372 ASSERT_TRUE(pref_value_store_
->GetRecommendedValue(
374 base::Value::TYPE_STRING
, &value
));
375 EXPECT_TRUE(value
->GetAsString(&actual_str_value
));
376 EXPECT_EQ(recommended_pref::kUserValue
, actual_str_value
);
378 // Test getting recommended value when no higher-priority value is present.
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
,
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(
392 base::Value::TYPE_STRING
, &value
));
395 // Test getting a preference value that the |PrefValueStore|
397 value
= &tmp_dummy_value
;
398 ASSERT_FALSE(pref_value_store_
->GetRecommendedValue(
400 base::Value::TYPE_STRING
, &value
));
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();
410 ExpectValueChangeNotifications(prefs::kManagedPref
);
411 supervised_user_pref_store_
->NotifyPrefValueChanged(prefs::kManagedPref
);
412 CheckAndClearValueChangeNotifications();
414 ExpectValueChangeNotifications(prefs::kManagedPref
);
415 extension_pref_store_
->NotifyPrefValueChanged(prefs::kManagedPref
);
416 CheckAndClearValueChangeNotifications();
418 ExpectValueChangeNotifications(prefs::kManagedPref
);
419 command_line_pref_store_
->NotifyPrefValueChanged(prefs::kManagedPref
);
420 CheckAndClearValueChangeNotifications();
422 ExpectValueChangeNotifications(prefs::kManagedPref
);
423 user_pref_store_
->NotifyPrefValueChanged(prefs::kManagedPref
);
424 CheckAndClearValueChangeNotifications();
426 ExpectValueChangeNotifications(prefs::kManagedPref
);
427 recommended_pref_store_
->NotifyPrefValueChanged(prefs::kManagedPref
);
428 CheckAndClearValueChangeNotifications();
430 ExpectValueChangeNotifications(prefs::kManagedPref
);
431 default_pref_store_
->NotifyPrefValueChanged(prefs::kManagedPref
);
432 CheckAndClearValueChangeNotifications();
434 // Check pref controlled by user store.
435 ExpectValueChangeNotifications(prefs::kUserPref
);
436 managed_pref_store_
->NotifyPrefValueChanged(prefs::kUserPref
);
437 CheckAndClearValueChangeNotifications();
439 ExpectValueChangeNotifications(prefs::kUserPref
);
440 extension_pref_store_
->NotifyPrefValueChanged(prefs::kUserPref
);
441 CheckAndClearValueChangeNotifications();
443 ExpectValueChangeNotifications(prefs::kUserPref
);
444 command_line_pref_store_
->NotifyPrefValueChanged(prefs::kUserPref
);
445 CheckAndClearValueChangeNotifications();
447 ExpectValueChangeNotifications(prefs::kUserPref
);
448 user_pref_store_
->NotifyPrefValueChanged(prefs::kUserPref
);
449 CheckAndClearValueChangeNotifications();
451 ExpectValueChangeNotifications(prefs::kUserPref
);
452 recommended_pref_store_
->NotifyPrefValueChanged(prefs::kUserPref
);
453 CheckAndClearValueChangeNotifications();
455 ExpectValueChangeNotifications(prefs::kUserPref
);
456 default_pref_store_
->NotifyPrefValueChanged(prefs::kUserPref
);
457 CheckAndClearValueChangeNotifications();
459 // Check pref controlled by default-pref store.
460 ExpectValueChangeNotifications(prefs::kDefaultPref
);
461 managed_pref_store_
->NotifyPrefValueChanged(prefs::kDefaultPref
);
462 CheckAndClearValueChangeNotifications();
464 ExpectValueChangeNotifications(prefs::kDefaultPref
);
465 extension_pref_store_
->NotifyPrefValueChanged(prefs::kDefaultPref
);
466 CheckAndClearValueChangeNotifications();
468 ExpectValueChangeNotifications(prefs::kDefaultPref
);
469 command_line_pref_store_
->NotifyPrefValueChanged(prefs::kDefaultPref
);
470 CheckAndClearValueChangeNotifications();
472 ExpectValueChangeNotifications(prefs::kDefaultPref
);
473 user_pref_store_
->NotifyPrefValueChanged(prefs::kDefaultPref
);
474 CheckAndClearValueChangeNotifications();
476 ExpectValueChangeNotifications(prefs::kDefaultPref
);
477 recommended_pref_store_
->NotifyPrefValueChanged(prefs::kDefaultPref
);
478 CheckAndClearValueChangeNotifications();
480 ExpectValueChangeNotifications(prefs::kDefaultPref
);
481 default_pref_store_
->NotifyPrefValueChanged(prefs::kDefaultPref
);
482 CheckAndClearValueChangeNotifications();
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_
);
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_
);
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(
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
));
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(
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
));
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(
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
));
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(
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
));
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(
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
));
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(
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
));
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(
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
));
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(
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
));
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(
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
));