Index: chrome/common/pref_store.h |
diff --git a/chrome/common/pref_store.h b/chrome/common/pref_store.h |
index 7011eba30dcd51ce8dab7657bb036a53b56175c0..808ffbd20d986e369b63148ee03c21bd1f5af304 100644 |
--- a/chrome/common/pref_store.h |
+++ b/chrome/common/pref_store.h |
@@ -6,15 +6,33 @@ |
#define CHROME_COMMON_PREF_STORE_H_ |
#pragma once |
+#include <string> |
+ |
+#include "base/basictypes.h" |
+ |
class DictionaryValue; |
class Value; |
// This is an abstract interface for reading and writing from/to a persistent |
-// preference store, used by |PrefService|. An implementation using a JSON file |
-// can be found in |JsonPrefStore|, while an implementation without any backing |
-// store (currently used for testing) can be found in |DummyPrefStore|. |
+// preference store, used by PrefService. An implementation using a JSON file |
+// can be found in JsonPrefStore, while an implementation without any backing |
+// store for testing can be found in TestingPrefStore. Furthermore, there is |
+// CommandLinePrefStore, which bridges command line options to preferences and |
+// ConfigurationPolicyPrefStore, which is used for hooking up configuration |
+// policy with the preference subsystem. |
class PrefStore { |
public: |
+ // Observer interface for monitoring PrefStore. |
+ class ObserverInterface { |
+ public: |
+ virtual ~ObserverInterface() {} |
+ |
+ // Called when the value for the given |key| in the store changes. |
+ virtual void OnPrefValueChanged(const std::string& key) = 0; |
+ // Notification about the PrefStore being fully initialized. |
+ virtual void OnInitializationCompleted() = 0; |
+ }; |
+ |
// Unique integer code for each type of error so we can report them |
// distinctly in a histogram. |
// NOTE: Don't change the order here as it will change the server's meaning |
@@ -44,12 +62,20 @@ class PrefStore { |
// CreateUseDefaultSentinelValue. |
static bool IsUseDefaultSentinelValue(Value* value); |
- virtual ~PrefStore() { } |
+ PrefStore() {} |
+ virtual ~PrefStore() {} |
+ |
+ // Add and remove observers. |
+ virtual void AddObserver(ObserverInterface* observer) {} |
+ virtual void RemoveObserver(ObserverInterface* observer) {} |
+ |
+ // Whether the store has completed all asynchronous initialization. |
+ virtual bool IsInitializationComplete() { return true; } |
// Whether the store is in a pseudo-read-only mode where changes are not |
// actually persisted to disk. This happens in some cases when there are |
// read errors during startup. |
- virtual bool ReadOnly() { return true; } |
+ virtual bool ReadOnly() const { return true; } |
// TODO(danno): PrefValueStore shouldn't allow direct access to the |
// DictionaryValue. Instead, it should have getters that return a |
@@ -62,6 +88,8 @@ class PrefStore { |
virtual bool WritePrefs() { return true; } |
virtual void ScheduleWritePrefs() { } |
+ |
+ DISALLOW_COPY_AND_ASSIGN(PrefStore); |
}; |
#endif // CHROME_COMMON_PREF_STORE_H_ |