Index: chrome/browser/prefs/pref_service.h |
diff --git a/chrome/browser/prefs/pref_service.h b/chrome/browser/prefs/pref_service.h |
index 0bc7f77aa8e83a404a5ad15a0db2e2143adfa7b8..0d11873458a5d51c8cf80d3448846c31792941e4 100644 |
--- a/chrome/browser/prefs/pref_service.h |
+++ b/chrome/browser/prefs/pref_service.h |
@@ -15,20 +15,20 @@ |
#include <string> |
#include "base/callback.h" |
+#include "base/hash_tables.h" |
#include "base/memory/ref_counted.h" |
#include "base/memory/scoped_ptr.h" |
-#include "base/hash_tables.h" |
#include "base/observer_list.h" |
#include "base/prefs/persistent_pref_store.h" |
#include "base/prefs/public/pref_service_base.h" |
#include "base/threading/non_thread_safe.h" |
-class DefaultPrefStore; |
class PrefNotifier; |
class PrefNotifierImpl; |
class PrefObserver; |
-class PrefStore; |
+class PrefRegistry; |
class PrefValueStore; |
+class PrefStore; |
namespace subtle { |
class ScopedUserPrefUpdateBase; |
@@ -36,7 +36,7 @@ class ScopedUserPrefUpdateBase; |
// Base class for PrefServices. You can use the base class to read and |
// interact with preferences, but not to register new preferences; for |
-// that see subclasses like PrefServiceSimple. |
+// that see e.g. PrefRegistrySimple. |
class PrefService : public PrefServiceBase, public base::NonThreadSafe { |
public: |
enum PrefInitializationStatus { |
@@ -94,7 +94,7 @@ class PrefService : public PrefServiceBase, public base::NonThreadSafe { |
PrefNotifierImpl* pref_notifier, |
PrefValueStore* pref_value_store, |
PersistentPrefStore* user_prefs, |
- DefaultPrefStore* default_store, |
+ PrefRegistry* pref_registry, |
base::Callback<void(PersistentPrefStore::PrefReadError)> |
read_error_callback, |
bool async); |
@@ -112,7 +112,6 @@ class PrefService : public PrefServiceBase, public base::NonThreadSafe { |
// PrefServiceBase implementation. |
virtual bool IsManagedPreference(const char* pref_name) const OVERRIDE; |
virtual bool IsUserModifiablePreference(const char* pref_name) const OVERRIDE; |
- virtual void UnregisterPreference(const char* path) OVERRIDE; |
virtual const PrefService::Preference* FindPreference( |
const char* path) const OVERRIDE; |
virtual bool GetBoolean(const char* path) const OVERRIDE; |
@@ -167,12 +166,24 @@ class PrefService : public PrefServiceBase, public base::NonThreadSafe { |
// false for unsuccessful. |
void AddPrefInitObserver(base::Callback<void(bool)> callback); |
+ // Returns the PrefRegistry object for this service. You should not |
+ // use this; the intent is for no registrations to take place after |
+ // PrefService has been constructed. |
+ PrefRegistry* DeprecatedGetPrefRegistry(); |
+ |
protected: |
- // Registers a new preference at |path|. The |default_value| must not be |
- // NULL as it determines the preference value's type. |
- // RegisterPreference must not be called twice for the same path. |
- // This method takes ownership of |default_value|. |
- void RegisterPreference(const char* path, base::Value* default_value); |
+ // Adds the registered preferences from the PrefRegistry instance |
+ // passed to us at construction time. |
+ void AddInitialPreferences(); |
+ |
+ // Updates local caches for a preference registered at |path|. The |
+ // |default_value| must not be NULL as it determines the preference |
+ // value's type. AddRegisteredPreference must not be called twice |
+ // for the same path. |
+ void AddRegisteredPreference(const char* path, |
+ base::Value* default_value); |
+ |
+ void RemoveRegisteredPreference(const char* path); |
// The PrefNotifier handles registering and notifying preference observers. |
// It is created and owned by this PrefService. Subclasses may access it for |
@@ -183,9 +194,10 @@ class PrefService : public PrefServiceBase, public base::NonThreadSafe { |
// this PrefService. Subclasses may access it for unit testing. |
scoped_ptr<PrefValueStore> pref_value_store_; |
+ scoped_refptr<PrefRegistry> pref_registry_; |
+ |
// Pref Stores and profile that we passed to the PrefValueStore. |
scoped_refptr<PersistentPrefStore> user_pref_store_; |
- scoped_refptr<DefaultPrefStore> default_store_; |
// Callback to call when a read error occurs. |
base::Callback<void(PersistentPrefStore::PrefReadError)> read_error_callback_; |
@@ -197,9 +209,6 @@ class PrefService : public PrefServiceBase, public base::NonThreadSafe { |
// vs. std::map, and by roughly 180ms vs. std::set of Preference pointers. |
typedef base::hash_map<std::string, Preference> PreferenceMap; |
- // Give access to Initialize(). |
- friend class PrefServiceBuilder; |
- |
// Give access to ReportUserPrefChanged() and GetMutableUserPref(). |
friend class subtle::ScopedUserPrefUpdateBase; |
@@ -238,7 +247,7 @@ class PrefService : public PrefServiceBase, public base::NonThreadSafe { |
// actually get the value.). |
const base::Value* GetPreferenceValue(const std::string& path) const; |
- // Local cache of registered Preference objects. The default_store_ |
+ // Local cache of registered Preference objects. The pref_registry_ |
// is authoritative with respect to what the types and default values |
// of registered preferences are. |
mutable PreferenceMap prefs_map_; |
@@ -249,7 +258,6 @@ class PrefService : public PrefServiceBase, public base::NonThreadSafe { |
// TODO(joi): Remove these forwards. They were placed here temporarily |
// to limit the size of the initial change that split |
// PrefServiceSimple and PrefServiceSyncable out of PrefService. |
-#include "chrome/browser/prefs/pref_service_simple.h" |
#include "chrome/browser/prefs/pref_service_syncable.h" |
#endif // CHROME_BROWSER_PREFS_PREF_SERVICE_H_ |