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

Side by Side Diff: chrome/browser/prefs/pref_service.h

Issue 10828345: Extract PrefServiceBase into chrome/browser/api. Use in api and autofill. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merge to head Created 8 years, 4 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) 2012 The Chromium Authors. All rights reserved. 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 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 // This provides a way to access the application's current preferences. 5 // This provides a way to access the application's current preferences.
6 6
7 // Chromium settings and storage represent user-selected preferences and 7 // Chromium settings and storage represent user-selected preferences and
8 // information and MUST not be extracted, overwritten or modified except 8 // information and MUST not be extracted, overwritten or modified except
9 // through Chromium defined APIs. 9 // through Chromium defined APIs.
10 10
11 #ifndef CHROME_BROWSER_PREFS_PREF_SERVICE_H_ 11 #ifndef CHROME_BROWSER_PREFS_PREF_SERVICE_H_
12 #define CHROME_BROWSER_PREFS_PREF_SERVICE_H_ 12 #define CHROME_BROWSER_PREFS_PREF_SERVICE_H_
13 13
14 #include <set> 14 #include <set>
15 #include <string> 15 #include <string>
16 16
17 #include "base/memory/ref_counted.h" 17 #include "base/memory/ref_counted.h"
18 #include "base/memory/scoped_ptr.h" 18 #include "base/memory/scoped_ptr.h"
19 #include "base/threading/non_thread_safe.h" 19 #include "base/threading/non_thread_safe.h"
20 #include "base/values.h" 20 #include "chrome/browser/api/prefs/pref_service_base.h"
21 21
22 class CommandLine; 22 class CommandLine;
23 class DefaultPrefStore; 23 class DefaultPrefStore;
24 class FilePath;
25 class PersistentPrefStore; 24 class PersistentPrefStore;
26 class PrefModelAssociator; 25 class PrefModelAssociator;
27 class PrefNotifier; 26 class PrefNotifier;
28 class PrefNotifierImpl; 27 class PrefNotifierImpl;
29 class PrefStore; 28 class PrefStore;
30 class PrefValueStore; 29 class PrefValueStore;
31 30
32 namespace content {
33 class NotificationObserver;
34 }
35
36 namespace syncer { 31 namespace syncer {
37 class SyncableService; 32 class SyncableService;
38 } 33 }
39 34
40 namespace policy { 35 namespace policy {
41 class PolicyService; 36 class PolicyService;
42 } 37 }
43 38
44 namespace subtle { 39 namespace subtle {
45 class PrefMemberBase;
46 class ScopedUserPrefUpdateBase; 40 class ScopedUserPrefUpdateBase;
47 }; 41 };
48 42
49 class PrefService : public base::NonThreadSafe { 43 class PrefService : public PrefServiceBase, public base::NonThreadSafe {
50 public: 44 public:
51 // Enum used when registering preferences to determine if it should be synced
52 // or not. This is only used for profile prefs, not local state prefs.
53 // See the Register*Pref methods for profile prefs below.
54 enum PrefSyncStatus {
55 UNSYNCABLE_PREF,
56 SYNCABLE_PREF
57 };
58
59 enum PrefInitializationStatus { 45 enum PrefInitializationStatus {
60 INITIALIZATION_STATUS_WAITING, 46 INITIALIZATION_STATUS_WAITING,
61 INITIALIZATION_STATUS_SUCCESS, 47 INITIALIZATION_STATUS_SUCCESS,
62 INITIALIZATION_STATUS_CREATED_NEW_PROFILE, 48 INITIALIZATION_STATUS_CREATED_NEW_PROFILE,
63 INITIALIZATION_STATUS_ERROR 49 INITIALIZATION_STATUS_ERROR
64 }; 50 };
65 51
66 // A helper class to store all the information associated with a preference. 52 // A helper class to store all the information associated with a preference.
67 class Preference { 53 class Preference : public PrefServiceBase::Preference {
68 public: 54 public:
69 // The type of the preference is determined by the type with which it is 55 // The type of the preference is determined by the type with which it is
70 // registered. This type needs to be a boolean, integer, double, string, 56 // registered. This type needs to be a boolean, integer, double, string,
71 // dictionary (a branch), or list. You shouldn't need to construct this on 57 // dictionary (a branch), or list. You shouldn't need to construct this on
72 // your own; use the PrefService::Register*Pref methods instead. 58 // your own; use the PrefService::Register*Pref methods instead.
73 Preference(const PrefService* service, 59 Preference(const PrefService* service,
74 const char* name, 60 const char* name,
75 base::Value::Type type); 61 base::Value::Type type);
76 ~Preference() {} 62 virtual ~Preference() {}
77 63
78 // Returns the name of the Preference (i.e., the key, e.g., 64 // PrefServiceBase::Preference implementation.
79 // browser.window_placement). 65 virtual const std::string name() const OVERRIDE;
80 const std::string name() const { return name_; } 66 virtual base::Value::Type GetType() const OVERRIDE;
81 67 virtual const base::Value* GetValue() const OVERRIDE;
82 // Returns the registered type of the preference. 68 virtual const base::Value* GetRecommendedValue() const OVERRIDE;
83 base::Value::Type GetType() const; 69 virtual bool IsManaged() const OVERRIDE;
84 70 virtual bool IsRecommended() const OVERRIDE;
85 // Returns the value of the Preference, falling back to the registered 71 virtual bool HasExtensionSetting() const OVERRIDE;
86 // default value if no other has been set. 72 virtual bool HasUserSetting() const OVERRIDE;
87 const base::Value* GetValue() const; 73 virtual bool IsExtensionControlled() const OVERRIDE;
88 74 virtual bool IsUserControlled() const OVERRIDE;
89 // Returns the value recommended by the admin, if any. 75 virtual bool IsDefaultValue() const OVERRIDE;
90 const base::Value* GetRecommendedValue() const; 76 virtual bool IsUserModifiable() const OVERRIDE;
91 77 virtual bool IsExtensionModifiable() const OVERRIDE;
92 // Returns true if the Preference is managed, i.e. set by an admin policy.
93 // Since managed prefs have the highest priority, this also indicates
94 // whether the pref is actually being controlled by the policy setting.
95 bool IsManaged() const;
96
97 // Returns true if the Preference is recommended, i.e. set by an admin
98 // policy but the user is allowed to change it.
99 bool IsRecommended() const;
100
101 // Returns true if the Preference has a value set by an extension, even if
102 // that value is being overridden by a higher-priority source.
103 bool HasExtensionSetting() const;
104
105 // Returns true if the Preference has a user setting, even if that value is
106 // being overridden by a higher-priority source.
107 bool HasUserSetting() const;
108
109 // Returns true if the Preference value is currently being controlled by an
110 // extension, and not by any higher-priority source.
111 bool IsExtensionControlled() const;
112
113 // Returns true if the Preference value is currently being controlled by a
114 // user setting, and not by any higher-priority source.
115 bool IsUserControlled() const;
116
117 // Returns true if the Preference is currently using its default value,
118 // and has not been set by any higher-priority source (even with the same
119 // value).
120 bool IsDefaultValue() const;
121
122 // Returns true if the user can change the Preference value, which is the
123 // case if no higher-priority source than the user store controls the
124 // Preference.
125 bool IsUserModifiable() const;
126
127 // Returns true if an extension can change the Preference value, which is
128 // the case if no higher-priority source than the extension store controls
129 // the Preference.
130 bool IsExtensionModifiable() const;
131 78
132 private: 79 private:
133 friend class PrefService; 80 friend class PrefService;
134 81
135 PrefValueStore* pref_value_store() const { 82 PrefValueStore* pref_value_store() const {
136 return pref_service_->pref_value_store_.get(); 83 return pref_service_->pref_value_store_.get();
137 } 84 }
138 85
139 std::string name_; 86 std::string name_;
140 87
(...skipping 29 matching lines...) Expand all
170 // incognito windows). 117 // incognito windows).
171 PrefService* CreateIncognitoPrefService(PrefStore* incognito_extension_prefs); 118 PrefService* CreateIncognitoPrefService(PrefStore* incognito_extension_prefs);
172 119
173 virtual ~PrefService(); 120 virtual ~PrefService();
174 121
175 // Reloads the data from file. This should only be called when the importer 122 // Reloads the data from file. This should only be called when the importer
176 // is running during first run, and the main process may not change pref 123 // is running during first run, and the main process may not change pref
177 // values while the importer process is running. Returns true on success. 124 // values while the importer process is running. Returns true on success.
178 bool ReloadPersistentPrefs(); 125 bool ReloadPersistentPrefs();
179 126
180 // Returns true if the preference for the given preference name is available
181 // and is managed.
182 bool IsManagedPreference(const char* pref_name) const;
183
184 // Returns |true| if a preference with the given name is available and its
185 // value can be changed by the user.
186 bool IsUserModifiablePreference(const char* pref_name) const;
187
188 // Lands pending writes to disk. This should only be used if we need to save 127 // Lands pending writes to disk. This should only be used if we need to save
189 // immediately (basically, during shutdown). 128 // immediately (basically, during shutdown).
190 void CommitPendingWrite(); 129 void CommitPendingWrite();
191 130
192 // Make the PrefService aware of a pref. 131 // PrefServiceBase implementation.
193 // TODO(zea): split local state and profile prefs into their own subclasses. 132 virtual bool IsManagedPreference(const char* pref_name) const OVERRIDE;
194 // ---------- Local state prefs ---------- 133 virtual bool IsUserModifiablePreference(const char* pref_name) const OVERRIDE;
195 void RegisterBooleanPref(const char* path, bool default_value); 134 virtual void RegisterBooleanPref(const char* path,
196 void RegisterIntegerPref(const char* path, int default_value); 135 bool default_value) OVERRIDE;
197 void RegisterDoublePref(const char* path, double default_value); 136 virtual void RegisterIntegerPref(const char* path,
198 void RegisterStringPref(const char* path, const std::string& default_value); 137 int default_value) OVERRIDE;
199 void RegisterFilePathPref(const char* path, const FilePath& default_value); 138 virtual void RegisterDoublePref(const char* path,
200 void RegisterListPref(const char* path); 139 double default_value) OVERRIDE;
201 void RegisterDictionaryPref(const char* path); 140 virtual void RegisterStringPref(const char* path,
202 // These take ownership of the default_value: 141 const std::string& default_value) OVERRIDE;
203 void RegisterListPref(const char* path, 142 virtual void RegisterFilePathPref(const char* path,
204 base::ListValue* default_value); 143 const FilePath& default_value) OVERRIDE;
205 void RegisterDictionaryPref(const char* path, 144 virtual void RegisterListPref(const char* path) OVERRIDE;
206 base::DictionaryValue* default_value); 145 virtual void RegisterDictionaryPref(const char* path) OVERRIDE;
207 // These variants use a default value from the locale dll instead. 146 virtual void RegisterListPref(const char* path,
208 void RegisterLocalizedBooleanPref(const char* path, 147 base::ListValue* default_value) OVERRIDE;
209 int locale_default_message_id); 148 virtual void RegisterDictionaryPref(
210 void RegisterLocalizedIntegerPref(const char* path, 149 const char* path, base::DictionaryValue* default_value) OVERRIDE;
211 int locale_default_message_id); 150 virtual void RegisterLocalizedBooleanPref(
212 void RegisterLocalizedDoublePref(const char* path, 151 const char* path, int locale_default_message_id) OVERRIDE;
213 int locale_default_message_id); 152 virtual void RegisterLocalizedIntegerPref(
214 void RegisterLocalizedStringPref(const char* path, 153 const char* path, int locale_default_message_id) OVERRIDE;
215 int locale_default_message_id); 154 virtual void RegisterLocalizedDoublePref(
216 void RegisterInt64Pref(const char* path, int64 default_value); 155 const char* path, int locale_default_message_id) OVERRIDE;
217 156 virtual void RegisterLocalizedStringPref(
218 // ---------- Profile prefs ---------- 157 const char* path, int locale_default_message_id) OVERRIDE;
219 // Profile prefs must specify whether the pref should be synchronized across 158 virtual void RegisterInt64Pref(const char* path,
220 // machines or not (see PrefSyncStatus enum above). 159 int64 default_value) OVERRIDE;
221 void RegisterBooleanPref(const char* path, 160 virtual void RegisterBooleanPref(const char* path,
222 bool default_value, 161 bool default_value,
223 PrefSyncStatus sync_status); 162 PrefSyncStatus sync_status) OVERRIDE;
224 void RegisterIntegerPref(const char* path, 163 virtual void RegisterIntegerPref(const char* path,
225 int default_value, 164 int default_value,
226 PrefSyncStatus sync_status); 165 PrefSyncStatus sync_status) OVERRIDE;
227 void RegisterDoublePref(const char* path, 166 virtual void RegisterDoublePref(const char* path,
228 double default_value, 167 double default_value,
229 PrefSyncStatus sync_status); 168 PrefSyncStatus sync_status) OVERRIDE;
230 void RegisterStringPref(const char* path, 169 virtual void RegisterStringPref(const char* path,
231 const std::string& default_value, 170 const std::string& default_value,
232 PrefSyncStatus sync_status); 171 PrefSyncStatus sync_status) OVERRIDE;
233 void RegisterFilePathPref(const char* path, 172 virtual void RegisterFilePathPref(const char* path,
234 const FilePath& default_value, 173 const FilePath& default_value,
235 PrefSyncStatus sync_status); 174 PrefSyncStatus sync_status) OVERRIDE;
236 void RegisterListPref(const char* path, PrefSyncStatus sync_status); 175 virtual void RegisterListPref(const char* path,
237 void RegisterDictionaryPref(const char* path, PrefSyncStatus sync_status); 176 PrefSyncStatus sync_status) OVERRIDE;
238 // These take ownership of the default_value: 177 virtual void RegisterDictionaryPref(const char* path,
239 void RegisterListPref(const char* path, 178 PrefSyncStatus sync_status) OVERRIDE;
240 base::ListValue* default_value, 179 virtual void RegisterListPref(const char* path,
241 PrefSyncStatus sync_status); 180 base::ListValue* default_value,
242 void RegisterDictionaryPref(const char* path, 181 PrefSyncStatus sync_status) OVERRIDE;
243 base::DictionaryValue* default_value, 182 virtual void RegisterDictionaryPref(const char* path,
244 PrefSyncStatus sync_status); 183 base::DictionaryValue* default_value,
245 // These variants use a default value from the locale dll instead. 184 PrefSyncStatus sync_status) OVERRIDE;
246 void RegisterLocalizedBooleanPref(const char* path, 185 virtual void RegisterLocalizedBooleanPref(
247 int locale_default_message_id, 186 const char* path,
248 PrefSyncStatus sync_status); 187 int locale_default_message_id,
249 void RegisterLocalizedIntegerPref(const char* path, 188 PrefSyncStatus sync_status) OVERRIDE;
250 int locale_default_message_id, 189 virtual void RegisterLocalizedIntegerPref(
251 PrefSyncStatus sync_status); 190 const char* path,
252 void RegisterLocalizedDoublePref(const char* path, 191 int locale_default_message_id,
253 int locale_default_message_id, 192 PrefSyncStatus sync_status) OVERRIDE;
254 PrefSyncStatus sync_status); 193 virtual void RegisterLocalizedDoublePref(
255 void RegisterLocalizedStringPref(const char* path, 194 const char* path,
256 int locale_default_message_id, 195 int locale_default_message_id,
257 PrefSyncStatus sync_status); 196 PrefSyncStatus sync_status) OVERRIDE;
258 void RegisterInt64Pref(const char* path, 197 virtual void RegisterLocalizedStringPref(
259 int64 default_value, 198 const char* path,
260 PrefSyncStatus sync_status); 199 int locale_default_message_id,
261 void RegisterUint64Pref(const char* path, 200 PrefSyncStatus sync_status) OVERRIDE;
262 uint64 default_value, 201 virtual void RegisterInt64Pref(const char* path,
263 PrefSyncStatus sync_status); 202 int64 default_value,
264 // Unregisters a preference. 203 PrefSyncStatus sync_status) OVERRIDE;
265 void UnregisterPreference(const char* path); 204 virtual void RegisterUint64Pref(const char* path,
266 205 uint64 default_value,
267 // If the path is valid and the value at the end of the path matches the type 206 PrefSyncStatus sync_status) OVERRIDE;
268 // specified, it will return the specified value. Otherwise, the default 207 virtual void UnregisterPreference(const char* path) OVERRIDE;
269 // value (set when the pref was registered) will be returned. 208 virtual const PrefService::Preference* FindPreference(
270 bool GetBoolean(const char* path) const; 209 const char* path) const OVERRIDE;
271 int GetInteger(const char* path) const; 210 virtual bool GetBoolean(const char* path) const OVERRIDE;
272 double GetDouble(const char* path) const; 211 virtual int GetInteger(const char* path) const OVERRIDE;
273 std::string GetString(const char* path) const; 212 virtual double GetDouble(const char* path) const OVERRIDE;
274 FilePath GetFilePath(const char* path) const; 213 virtual std::string GetString(const char* path) const OVERRIDE;
275 214 virtual FilePath GetFilePath(const char* path) const OVERRIDE;
276 // Returns the branch if it exists, or the registered default value otherwise. 215 virtual const base::DictionaryValue* GetDictionary(
277 // Note that |path| must point to a registered preference. In that case, these 216 const char* path) const OVERRIDE;
278 // functions will never return NULL. 217 virtual const base::ListValue* GetList(const char* path) const OVERRIDE;
279 const base::DictionaryValue* GetDictionary(const char* path) const; 218 virtual void ClearPref(const char* path) OVERRIDE;
280 const base::ListValue* GetList(const char* path) const; 219 virtual void Set(const char* path, const base::Value& value) OVERRIDE;
220 virtual void SetBoolean(const char* path, bool value) OVERRIDE;
221 virtual void SetInteger(const char* path, int value) OVERRIDE;
222 virtual void SetDouble(const char* path, double value) OVERRIDE;
223 virtual void SetString(const char* path, const std::string& value) OVERRIDE;
224 virtual void SetFilePath(const char* path, const FilePath& value) OVERRIDE;
225 virtual void SetInt64(const char* path, int64 value) OVERRIDE;
226 virtual int64 GetInt64(const char* path) const OVERRIDE;
227 virtual void SetUint64(const char* path, uint64 value) OVERRIDE;
228 virtual uint64 GetUint64(const char* path) const OVERRIDE;
281 229
282 // Returns the value of the given preference, from the user pref store. If 230 // Returns the value of the given preference, from the user pref store. If
283 // the preference is not set in the user pref store, returns NULL. 231 // the preference is not set in the user pref store, returns NULL.
284 const base::Value* GetUserPrefValue(const char* path) const; 232 const base::Value* GetUserPrefValue(const char* path) const;
285 233
286 // Returns the default value of the given preference. |path| must point to a 234 // Returns the default value of the given preference. |path| must point to a
287 // registered preference. In that case, will never return NULL. 235 // registered preference. In that case, will never return NULL.
288 const base::Value* GetDefaultPrefValue(const char* path) const; 236 const base::Value* GetDefaultPrefValue(const char* path) const;
289 237
290 // Removes a user pref and restores the pref to its default value.
291 void ClearPref(const char* path);
292
293 // If the path is valid (i.e., registered), update the pref value in the user
294 // prefs.
295 // To set the value of dictionary or list values in the pref tree use
296 // Set(), but to modify the value of a dictionary or list use either
297 // ListPrefUpdate or DictionaryPrefUpdate from scoped_user_pref_update.h.
298 void Set(const char* path, const base::Value& value);
299 void SetBoolean(const char* path, bool value);
300 void SetInteger(const char* path, int value);
301 void SetDouble(const char* path, double value);
302 void SetString(const char* path, const std::string& value);
303 void SetFilePath(const char* path, const FilePath& value);
304
305 // Int64 helper methods that actually store the given value as a string.
306 // Note that if obtaining the named value via GetDictionary or GetList, the
307 // Value type will be TYPE_STRING.
308 void SetInt64(const char* path, int64 value);
309 int64 GetInt64(const char* path) const;
310
311 // As above, but for unsigned values.
312 void SetUint64(const char* path, uint64 value);
313 uint64 GetUint64(const char* path) const;
314
315 // Returns true if a value has been set for the specified path. 238 // Returns true if a value has been set for the specified path.
316 // NOTE: this is NOT the same as FindPreference. In particular 239 // NOTE: this is NOT the same as FindPreference. In particular
317 // FindPreference returns whether RegisterXXX has been invoked, where as 240 // FindPreference returns whether RegisterXXX has been invoked, where as
318 // this checks if a value exists for the path. 241 // this checks if a value exists for the path.
319 bool HasPrefPath(const char* path) const; 242 bool HasPrefPath(const char* path) const;
320 243
321 // Returns a dictionary with effective preference values. The ownership 244 // Returns a dictionary with effective preference values. The ownership
322 // is passed to the caller. 245 // is passed to the caller.
323 base::DictionaryValue* GetPreferenceValues() const; 246 base::DictionaryValue* GetPreferenceValues() const;
324 247
325 // A helper method to quickly look up a preference. Returns NULL if the
326 // preference is not registered.
327 const Preference* FindPreference(const char* pref_name) const;
328
329 bool ReadOnly() const; 248 bool ReadOnly() const;
330 249
331 PrefInitializationStatus GetInitializationStatus() const; 250 PrefInitializationStatus GetInitializationStatus() const;
332 251
333 // syncer::SyncableService getter. 252 // syncer::SyncableService getter.
334 // TODO(zea): Have PrefService implement syncer::SyncableService directly. 253 // TODO(zea): Have PrefService implement syncer::SyncableService directly.
335 syncer::SyncableService* GetSyncableService(); 254 syncer::SyncableService* GetSyncableService();
336 255
337 // Tell our PrefValueStore to update itself using |command_line|. 256 // Tell our PrefValueStore to update itself using |command_line|.
338 // Do not call this after having derived an incognito or per tab pref service. 257 // Do not call this after having derived an incognito or per tab pref service.
(...skipping 18 matching lines...) Expand all
357 class PreferencePathComparator { 276 class PreferencePathComparator {
358 public: 277 public:
359 bool operator() (Preference* lhs, Preference* rhs) const { 278 bool operator() (Preference* lhs, Preference* rhs) const {
360 return lhs->name() < rhs->name(); 279 return lhs->name() < rhs->name();
361 } 280 }
362 }; 281 };
363 typedef std::set<Preference*, PreferencePathComparator> PreferenceSet; 282 typedef std::set<Preference*, PreferencePathComparator> PreferenceSet;
364 283
365 friend class PrefServiceMockBuilder; 284 friend class PrefServiceMockBuilder;
366 285
367 // Registration of pref change observers must be done using the
368 // PrefChangeRegistrar, which is declared as a friend here to grant it
369 // access to the otherwise protected members Add/RemovePrefObserver.
370 // PrefMember registers for preferences changes notification directly to
371 // avoid the storage overhead of the registrar, so its base class must be
372 // declared as a friend, too.
373 friend class PrefChangeRegistrar;
374 friend class subtle::PrefMemberBase;
375
376 // Give access to ReportUserPrefChanged() and GetMutableUserPref(). 286 // Give access to ReportUserPrefChanged() and GetMutableUserPref().
377 friend class subtle::ScopedUserPrefUpdateBase; 287 friend class subtle::ScopedUserPrefUpdateBase;
378 288
289 // PrefServiceBase implementation (protected in base, private here).
290 virtual void AddPrefObserver(const char* path,
291 content::NotificationObserver* obs) OVERRIDE;
292 virtual void RemovePrefObserver(const char* path,
293 content::NotificationObserver* obs) OVERRIDE;
294
379 // Sends notification of a changed preference. This needs to be called by 295 // Sends notification of a changed preference. This needs to be called by
380 // a ScopedUserPrefUpdate if a DictionaryValue or ListValue is changed. 296 // a ScopedUserPrefUpdate if a DictionaryValue or ListValue is changed.
381 void ReportUserPrefChanged(const std::string& key); 297 void ReportUserPrefChanged(const std::string& key);
382 298
383 // If the pref at the given path changes, we call the observer's Observe
384 // method with PREF_CHANGED. Note that observers should not call these methods
385 // directly but rather use a PrefChangeRegistrar to make sure the observer
386 // gets cleaned up properly.
387 virtual void AddPrefObserver(const char* path,
388 content::NotificationObserver* obs);
389 virtual void RemovePrefObserver(const char* path,
390 content::NotificationObserver* obs);
391
392 // Registers a new preference at |path|. The |default_value| must not be 299 // Registers a new preference at |path|. The |default_value| must not be
393 // NULL as it determines the preference value's type. 300 // NULL as it determines the preference value's type.
394 // RegisterPreference must not be called twice for the same path. 301 // RegisterPreference must not be called twice for the same path.
395 // This method takes ownership of |default_value|. 302 // This method takes ownership of |default_value|.
396 void RegisterPreference(const char* path, 303 void RegisterPreference(const char* path,
397 base::Value* default_value, 304 base::Value* default_value,
398 PrefSyncStatus sync_status); 305 PrefSyncStatus sync_status);
399 306
400 // Sets the value for this pref path in the user pref store and informs the 307 // Sets the value for this pref path in the user pref store and informs the
401 // PrefNotifier of the change. 308 // PrefNotifier of the change.
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
433 340
434 // Whether CreateIncognitoPrefService() or 341 // Whether CreateIncognitoPrefService() or
435 // CreatePrefServiceWithPerTabPrefStore() have been called to create a 342 // CreatePrefServiceWithPerTabPrefStore() have been called to create a
436 // "forked" PrefService. 343 // "forked" PrefService.
437 bool pref_service_forked_; 344 bool pref_service_forked_;
438 345
439 DISALLOW_COPY_AND_ASSIGN(PrefService); 346 DISALLOW_COPY_AND_ASSIGN(PrefService);
440 }; 347 };
441 348
442 #endif // CHROME_BROWSER_PREFS_PREF_SERVICE_H_ 349 #endif // CHROME_BROWSER_PREFS_PREF_SERVICE_H_
OLDNEW
« no previous file with comments | « chrome/browser/policy/cloud_policy_refresh_scheduler.cc ('k') | chrome/browser/prefs/pref_service.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698