OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "chrome/browser/prefs/pref_value_store.h" | 5 #include "chrome/browser/prefs/pref_value_store.h" |
6 | 6 |
7 #include "chrome/browser/prefs/pref_notifier.h" | 7 #include "chrome/browser/prefs/pref_notifier.h" |
8 | 8 |
9 PrefValueStore::PrefStoreKeeper::PrefStoreKeeper() | 9 PrefValueStore::PrefStoreKeeper::PrefStoreKeeper() |
10 : pref_value_store_(NULL), | 10 : pref_value_store_(NULL), |
(...skipping 24 matching lines...) Expand all Loading... |
35 void PrefValueStore::PrefStoreKeeper::OnPrefValueChanged( | 35 void PrefValueStore::PrefStoreKeeper::OnPrefValueChanged( |
36 const std::string& key) { | 36 const std::string& key) { |
37 pref_value_store_->OnPrefValueChanged(type_, key); | 37 pref_value_store_->OnPrefValueChanged(type_, key); |
38 } | 38 } |
39 | 39 |
40 void PrefValueStore::PrefStoreKeeper::OnInitializationCompleted() { | 40 void PrefValueStore::PrefStoreKeeper::OnInitializationCompleted() { |
41 pref_value_store_->OnInitializationCompleted(type_); | 41 pref_value_store_->OnInitializationCompleted(type_); |
42 } | 42 } |
43 | 43 |
44 PrefValueStore::PrefValueStore(PrefStore* managed_platform_prefs, | 44 PrefValueStore::PrefValueStore(PrefStore* managed_platform_prefs, |
45 PrefStore* device_management_prefs, | 45 PrefStore* managed_cloud_prefs, |
46 PrefStore* extension_prefs, | 46 PrefStore* extension_prefs, |
47 PrefStore* command_line_prefs, | 47 PrefStore* command_line_prefs, |
48 PrefStore* user_prefs, | 48 PrefStore* user_prefs, |
49 PrefStore* recommended_prefs, | 49 PrefStore* recommended_platform_prefs, |
| 50 PrefStore* recommended_cloud_prefs, |
50 PrefStore* default_prefs, | 51 PrefStore* default_prefs, |
51 PrefNotifier* pref_notifier) | 52 PrefNotifier* pref_notifier) |
52 : pref_notifier_(pref_notifier) { | 53 : pref_notifier_(pref_notifier) { |
53 InitPrefStore(MANAGED_PLATFORM_STORE, managed_platform_prefs); | 54 InitPrefStore(MANAGED_PLATFORM_STORE, managed_platform_prefs); |
54 InitPrefStore(DEVICE_MANAGEMENT_STORE, device_management_prefs); | 55 InitPrefStore(MANAGED_CLOUD_STORE, managed_cloud_prefs); |
55 InitPrefStore(EXTENSION_STORE, extension_prefs); | 56 InitPrefStore(EXTENSION_STORE, extension_prefs); |
56 InitPrefStore(COMMAND_LINE_STORE, command_line_prefs); | 57 InitPrefStore(COMMAND_LINE_STORE, command_line_prefs); |
57 InitPrefStore(USER_STORE, user_prefs); | 58 InitPrefStore(USER_STORE, user_prefs); |
58 InitPrefStore(RECOMMENDED_STORE, recommended_prefs); | 59 InitPrefStore(RECOMMENDED_PLATFORM_STORE, recommended_platform_prefs); |
| 60 InitPrefStore(RECOMMENDED_CLOUD_STORE, recommended_cloud_prefs); |
59 InitPrefStore(DEFAULT_STORE, default_prefs); | 61 InitPrefStore(DEFAULT_STORE, default_prefs); |
60 | 62 |
61 CheckInitializationCompleted(); | 63 CheckInitializationCompleted(); |
62 } | 64 } |
63 | 65 |
64 PrefValueStore::~PrefValueStore() {} | 66 PrefValueStore::~PrefValueStore() {} |
65 | 67 |
66 PrefValueStore* PrefValueStore::CloneAndSpecialize( | 68 PrefValueStore* PrefValueStore::CloneAndSpecialize( |
67 PrefStore* managed_platform_prefs, | 69 PrefStore* managed_platform_prefs, |
68 PrefStore* device_management_prefs, | 70 PrefStore* managed_cloud_prefs, |
69 PrefStore* extension_prefs, | 71 PrefStore* extension_prefs, |
70 PrefStore* command_line_prefs, | 72 PrefStore* command_line_prefs, |
71 PrefStore* user_prefs, | 73 PrefStore* user_prefs, |
72 PrefStore* recommended_prefs, | 74 PrefStore* recommended_platform_prefs, |
| 75 PrefStore* recommended_cloud_prefs, |
73 PrefStore* default_prefs, | 76 PrefStore* default_prefs, |
74 PrefNotifier* pref_notifier) { | 77 PrefNotifier* pref_notifier) { |
75 DCHECK(pref_notifier); | 78 DCHECK(pref_notifier); |
76 if (!managed_platform_prefs) | 79 if (!managed_platform_prefs) |
77 managed_platform_prefs = GetPrefStore(MANAGED_PLATFORM_STORE); | 80 managed_platform_prefs = GetPrefStore(MANAGED_PLATFORM_STORE); |
78 if (!device_management_prefs) | 81 if (!managed_cloud_prefs) |
79 device_management_prefs = GetPrefStore(DEVICE_MANAGEMENT_STORE); | 82 managed_cloud_prefs = GetPrefStore(MANAGED_CLOUD_STORE); |
80 if (!extension_prefs) | 83 if (!extension_prefs) |
81 extension_prefs = GetPrefStore(EXTENSION_STORE); | 84 extension_prefs = GetPrefStore(EXTENSION_STORE); |
82 if (!command_line_prefs) | 85 if (!command_line_prefs) |
83 command_line_prefs = GetPrefStore(COMMAND_LINE_STORE); | 86 command_line_prefs = GetPrefStore(COMMAND_LINE_STORE); |
84 if (!user_prefs) | 87 if (!user_prefs) |
85 user_prefs = GetPrefStore(USER_STORE); | 88 user_prefs = GetPrefStore(USER_STORE); |
86 if (!recommended_prefs) | 89 if (!recommended_platform_prefs) |
87 recommended_prefs = GetPrefStore(RECOMMENDED_STORE); | 90 recommended_platform_prefs = GetPrefStore(RECOMMENDED_PLATFORM_STORE); |
| 91 if (!recommended_cloud_prefs) |
| 92 recommended_cloud_prefs = GetPrefStore(RECOMMENDED_CLOUD_STORE); |
88 if (!default_prefs) | 93 if (!default_prefs) |
89 default_prefs = GetPrefStore(DEFAULT_STORE); | 94 default_prefs = GetPrefStore(DEFAULT_STORE); |
90 | 95 |
91 return new PrefValueStore( | 96 return new PrefValueStore( |
92 managed_platform_prefs, device_management_prefs, extension_prefs, | 97 managed_platform_prefs, managed_cloud_prefs, extension_prefs, |
93 command_line_prefs, user_prefs, recommended_prefs, default_prefs, | 98 command_line_prefs, user_prefs, recommended_platform_prefs, |
| 99 recommended_cloud_prefs, default_prefs, |
94 pref_notifier); | 100 pref_notifier); |
95 } | 101 } |
96 | 102 |
97 bool PrefValueStore::GetValue(const std::string& name, | 103 bool PrefValueStore::GetValue(const std::string& name, |
98 Value::ValueType type, | 104 Value::ValueType type, |
99 Value** out_value) const { | 105 Value** out_value) const { |
100 *out_value = NULL; | 106 *out_value = NULL; |
101 // Check the |PrefStore|s in order of their priority from highest to lowest | 107 // Check the |PrefStore|s in order of their priority from highest to lowest |
102 // to find the value of the preference described by the given preference name. | 108 // to find the value of the preference described by the given preference name. |
103 for (size_t i = 0; i <= PREF_STORE_TYPE_MAX; ++i) { | 109 for (size_t i = 0; i <= PREF_STORE_TYPE_MAX; ++i) { |
(...skipping 16 matching lines...) Expand all Loading... |
120 PrefValueStore::PrefStoreType new_store) { | 126 PrefValueStore::PrefStoreType new_store) { |
121 DCHECK(new_store != INVALID_STORE); | 127 DCHECK(new_store != INVALID_STORE); |
122 | 128 |
123 // If the pref is controlled by a higher-priority store, its effective value | 129 // If the pref is controlled by a higher-priority store, its effective value |
124 // cannot have changed. | 130 // cannot have changed. |
125 PrefStoreType controller = ControllingPrefStoreForPref(path); | 131 PrefStoreType controller = ControllingPrefStoreForPref(path); |
126 if (controller == INVALID_STORE || controller >= new_store) | 132 if (controller == INVALID_STORE || controller >= new_store) |
127 pref_notifier_->OnPreferenceChanged(path); | 133 pref_notifier_->OnPreferenceChanged(path); |
128 } | 134 } |
129 | 135 |
130 bool PrefValueStore::PrefValueInManagedPlatformStore(const char* name) const { | 136 bool PrefValueStore::PrefValueInManagedStore(const char* name) const { |
131 return PrefValueInStore(name, MANAGED_PLATFORM_STORE); | 137 return PrefValueInStore(name, MANAGED_PLATFORM_STORE) || |
132 } | 138 PrefValueInStore(name, MANAGED_CLOUD_STORE); |
133 | |
134 bool PrefValueStore::PrefValueInDeviceManagementStore(const char* name) const { | |
135 return PrefValueInStore(name, DEVICE_MANAGEMENT_STORE); | |
136 } | 139 } |
137 | 140 |
138 bool PrefValueStore::PrefValueInExtensionStore(const char* name) const { | 141 bool PrefValueStore::PrefValueInExtensionStore(const char* name) const { |
139 return PrefValueInStore(name, EXTENSION_STORE); | 142 return PrefValueInStore(name, EXTENSION_STORE); |
140 } | 143 } |
141 | 144 |
142 bool PrefValueStore::PrefValueInUserStore(const char* name) const { | 145 bool PrefValueStore::PrefValueInUserStore(const char* name) const { |
143 return PrefValueInStore(name, USER_STORE); | 146 return PrefValueInStore(name, USER_STORE); |
144 } | 147 } |
145 | 148 |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
240 | 243 |
241 void PrefValueStore::CheckInitializationCompleted() { | 244 void PrefValueStore::CheckInitializationCompleted() { |
242 for (size_t i = 0; i <= PREF_STORE_TYPE_MAX; ++i) { | 245 for (size_t i = 0; i <= PREF_STORE_TYPE_MAX; ++i) { |
243 scoped_refptr<PrefStore> store = | 246 scoped_refptr<PrefStore> store = |
244 GetPrefStore(static_cast<PrefStoreType>(i)); | 247 GetPrefStore(static_cast<PrefStoreType>(i)); |
245 if (store && !store->IsInitializationComplete()) | 248 if (store && !store->IsInitializationComplete()) |
246 return; | 249 return; |
247 } | 250 } |
248 pref_notifier_->OnInitializationCompleted(); | 251 pref_notifier_->OnInitializationCompleted(); |
249 } | 252 } |
OLD | NEW |