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

Side by Side Diff: chrome/browser/api/prefs/pref_service_base.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: 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
(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 // This is the base interface for a preference services that provides
6 // a way to access the application's current preferences.
7 //
8 // This base interface assumes all preferences are local. See
9 // SyncablePrefServiceBase for the interface to a preference service
10 // that stores preferences that can be synced.
11 //
12 // Chromium settings and storage represent user-selected preferences and
13 // information and MUST not be extracted, overwritten or modified except
14 // through Chromium defined APIs.
15
16 #ifndef CHROME_BROWSER_API_PREFS_PREF_SERVICE_BASE_H_
17 #define CHROME_BROWSER_API_PREFS_PREF_SERVICE_BASE_H_
18
19 #include "base/values.h"
20
21 namespace content {
22 class NotificationObserver;
23 }
24
25 namespace subtle {
26 class PrefMemberBase;
27 }
28
29 class FilePath;
30 class Profile;
31 class TabContents;
32
33 class PrefServiceBase {
34 public:
35 // Retrieves a PrefServiceBase for the given profile.
erikwright (departed) 2012/08/16 15:12:40 I'm not a big fan of this. Is there a reason why P
Jói 2012/08/16 15:35:56 First off I should note that we want to stop depen
36 static PrefServiceBase* ForProfile(Profile* profile);
37
38 virtual ~PrefServiceBase() {}
39
40 // Enum used when registering preferences to determine if it should be synced
41 // or not. This is only used for profile prefs, not local state prefs.
42 // See the Register*Pref methods for profile prefs below.
43 enum PrefSyncStatus {
44 UNSYNCABLE_PREF,
45 SYNCABLE_PREF
46 };
47
48 // Returns true if the preference for the given preference name is available
49 // and is managed.
50 virtual bool IsManagedPreference(const char* pref_name) const = 0;
51
52 // Returns |true| if a preference with the given name is available and its
53 // value can be changed by the user.
54 virtual bool IsUserModifiablePreference(const char* pref_name) const = 0;
55
56 // Make the PrefService aware of a pref.
57 // TODO(zea): split local state and profile prefs into their own subclasses.
58 // ---------- Local state prefs ----------
59 virtual void RegisterBooleanPref(const char* path,
60 bool default_value) = 0;
61 virtual void RegisterIntegerPref(const char* path,
62 int default_value) = 0;
63 virtual void RegisterDoublePref(const char* path,
64 double default_value) = 0;
65 virtual void RegisterStringPref(const char* path,
66 const std::string& default_value) = 0;
67 virtual void RegisterFilePathPref(const char* path,
68 const FilePath& default_value) = 0;
69 virtual void RegisterListPref(const char* path) = 0;
70 virtual void RegisterDictionaryPref(const char* path) = 0;
71 // These take ownership of the default_value:
72 virtual void RegisterListPref(const char* path,
73 base::ListValue* default_value) = 0;
74 virtual void RegisterDictionaryPref(
75 const char* path, base::DictionaryValue* default_value) = 0;
76 // These variants use a default value from the locale dll instead.
77 virtual void RegisterLocalizedBooleanPref(
78 const char* path, int locale_default_message_id) = 0;
79 virtual void RegisterLocalizedIntegerPref(
80 const char* path, int locale_default_message_id) = 0;
81 virtual void RegisterLocalizedDoublePref(
82 const char* path, int locale_default_message_id) = 0;
83 virtual void RegisterLocalizedStringPref(
84 const char* path, int locale_default_message_id) = 0;
85 virtual void RegisterInt64Pref(const char* path,
86 int64 default_value) = 0;
87
88 // ---------- Profile prefs ----------
89 // Profile prefs must specify whether the pref should be synchronized across
90 // machines or not (see PrefSyncStatus enum above).
91 virtual void RegisterBooleanPref(const char* path,
92 bool default_value,
93 PrefSyncStatus sync_status) = 0;
94 virtual void RegisterIntegerPref(const char* path,
95 int default_value,
96 PrefSyncStatus sync_status) = 0;
97 virtual void RegisterDoublePref(const char* path,
98 double default_value,
99 PrefSyncStatus sync_status) = 0;
100 virtual void RegisterStringPref(const char* path,
101 const std::string& default_value,
102 PrefSyncStatus sync_status) = 0;
103 virtual void RegisterFilePathPref(const char* path,
104 const FilePath& default_value,
105 PrefSyncStatus sync_status) = 0;
106 virtual void RegisterListPref(const char* path,
107 PrefSyncStatus sync_status) = 0;
108 virtual void RegisterDictionaryPref(const char* path,
109 PrefSyncStatus sync_status) = 0;
110 // These take ownership of the default_value:
111 virtual void RegisterListPref(const char* path,
112 base::ListValue* default_value,
113 PrefSyncStatus sync_status) = 0;
114 virtual void RegisterDictionaryPref(const char* path,
115 base::DictionaryValue* default_value,
116 PrefSyncStatus sync_status) = 0;
117 // These variants use a default value from the locale dll instead.
118 virtual void RegisterLocalizedBooleanPref(
119 const char* path,
120 int locale_default_message_id,
121 PrefSyncStatus sync_status) = 0;
122 virtual void RegisterLocalizedIntegerPref(
123 const char* path,
124 int locale_default_message_id,
125 PrefSyncStatus sync_status) = 0;
126 virtual void RegisterLocalizedDoublePref(
127 const char* path,
128 int locale_default_message_id,
129 PrefSyncStatus sync_status) = 0;
130 virtual void RegisterLocalizedStringPref(
131 const char* path,
132 int locale_default_message_id,
133 PrefSyncStatus sync_status) = 0;
134 virtual void RegisterInt64Pref(const char* path,
135 int64 default_value,
136 PrefSyncStatus sync_status) = 0;
137 virtual void RegisterUint64Pref(const char* path,
138 uint64 default_value,
139 PrefSyncStatus sync_status) = 0;
140 // Unregisters a preference.
141 virtual void UnregisterPreference(const char* path) = 0;
142
143 // If the path is valid and the value at the end of the path matches the type
144 // specified, it will return the specified value. Otherwise, the default
145 // value (set when the pref was registered) will be returned.
146 virtual bool GetBoolean(const char* path) const = 0;
147 virtual int GetInteger(const char* path) const = 0;
148 virtual double GetDouble(const char* path) const = 0;
149 virtual std::string GetString(const char* path) const = 0;
150 virtual FilePath GetFilePath(const char* path) const = 0;
151
152 // Returns the branch if it exists, or the registered default value otherwise.
153 // Note that |path| must point to a registered preference. In that case, these
154 // functions will never return NULL.
155 virtual const base::DictionaryValue* GetDictionary(
156 const char* path) const = 0;
157 virtual const base::ListValue* GetList(const char* path) const = 0;
158
159 // Returns the value of the given preference, from the user pref store. If
160 // the preference is not set in the user pref store, returns NULL.
161 virtual const base::Value* GetUserPrefValue(const char* path) const = 0;
162
163 // Returns the default value of the given preference. |path| must point to a
164 // registered preference. In that case, will never return NULL.
165 virtual const base::Value* GetDefaultPrefValue(
166 const char* path) const = 0;
167
168 // Removes a user pref and restores the pref to its default value.
169 virtual void ClearPref(const char* path) = 0;
170
171 // If the path is valid (i.e., registered), update the pref value in the user
172 // prefs.
173 // To set the value of dictionary or list values in the pref tree use
174 // Set(), but to modify the value of a dictionary or list use either
175 // ListPrefUpdate or DictionaryPrefUpdate from scoped_user_pref_update.h.
176 virtual void Set(const char* path, const base::Value& value) = 0;
177 virtual void SetBoolean(const char* path, bool value) = 0;
178 virtual void SetInteger(const char* path, int value) = 0;
179 virtual void SetDouble(const char* path, double value) = 0;
180 virtual void SetString(const char* path, const std::string& value) = 0;
181 virtual void SetFilePath(const char* path, const FilePath& value) = 0;
182
183 // Int64 helper methods that actually store the given value as a string.
184 // Note that if obtaining the named value via GetDictionary or GetList, the
185 // Value type will be TYPE_STRING.
186 virtual void SetInt64(const char* path, int64 value) = 0;
187 virtual int64 GetInt64(const char* path) const = 0;
188
189 // As above, but for unsigned values.
190 virtual void SetUint64(const char* path, uint64 value) = 0;
191 virtual uint64 GetUint64(const char* path) const = 0;
192
193 protected:
194 // Registration of pref change observers must be done using the
195 // PrefChangeRegistrar, which is declared as a friend here to grant it
196 // access to the otherwise protected members Add/RemovePrefObserver.
197 // PrefMember registers for preferences changes notification directly to
198 // avoid the storage overhead of the registrar, so its base class must be
199 // declared as a friend, too.
200 friend class PrefChangeRegistrar;
201 friend class subtle::PrefMemberBase;
202
203 // These are protected so they can only be accessed by the friend
204 // classes listed above.
205 //
206 // If the pref at the given path changes, we call the observer's Observe
207 // method with PREF_CHANGED. Note that observers should not call these methods
208 // directly but rather use a PrefChangeRegistrar to make sure the observer
209 // gets cleaned up properly.
210 virtual void AddPrefObserver(const char* path,
211 content::NotificationObserver* obs) = 0;
212 virtual void RemovePrefObserver(const char* path,
213 content::NotificationObserver* obs) = 0;
214 };
215
216 #endif // CHROME_BROWSER_API_PREFS_PREF_SERVICE_BASE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698