Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(369)

Side by Side Diff: chrome/browser/prefs/pref_value_store.cc

Issue 6312121: Add initial device policy infrastructure. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix race condition and tests. Created 9 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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
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 }
OLDNEW
« no previous file with comments | « chrome/browser/prefs/pref_value_store.h ('k') | chrome/browser/prefs/pref_value_store_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698