Index: chrome/browser/prefs/pref_service.h |
diff --git a/chrome/browser/prefs/pref_service.h b/chrome/browser/prefs/pref_service.h |
index bf904a4cf176d0c06a5120531f2d41c10df1fc9c..3990d5a96e1d9294cac89ca434e67daf41fcc58b 100644 |
--- a/chrome/browser/prefs/pref_service.h |
+++ b/chrome/browser/prefs/pref_service.h |
@@ -21,12 +21,13 @@ class DefaultPrefStore; |
class FilePath; |
class NotificationObserver; |
class PersistentPrefStore; |
-class PrefChangeObserver; |
+class PrefModelAssociator; |
class PrefNotifier; |
class PrefNotifierImpl; |
class PrefStore; |
class PrefValueStore; |
class Profile; |
+class SyncableService; |
namespace subtle { |
class PrefMemberBase; |
@@ -43,6 +44,14 @@ class PrefServiceDelegate { |
class PrefService : public base::NonThreadSafe, |
public JsonPrefStore::Delegate { |
public: |
+ // Enum used when registering preferences to determine if it should be synced |
+ // or not. This is only used for profile prefs, not local state prefs. |
+ // See the Register*Pref methods for profile prefs below. |
+ enum PrefSyncStatus { |
+ UNSYNCABLE_PREF, |
+ SYNCABLE_PREF |
+ }; |
+ |
// A helper class to store all the information associated with a preference. |
class Preference { |
public: |
@@ -172,6 +181,8 @@ class PrefService : public base::NonThreadSafe, |
void CommitPendingWrite(); |
// Make the PrefService aware of a pref. |
+ // TODO(zea): split local state and profile prefs into their own subclasses. |
+ // ---------- Local state prefs ---------- |
void RegisterBooleanPref(const char* path, bool default_value); |
void RegisterIntegerPref(const char* path, int default_value); |
void RegisterDoublePref(const char* path, double default_value); |
@@ -182,7 +193,6 @@ class PrefService : public base::NonThreadSafe, |
// These take ownership of the default_value: |
void RegisterListPref(const char* path, ListValue* default_value); |
void RegisterDictionaryPref(const char* path, DictionaryValue* default_value); |
- |
// These variants use a default value from the locale dll instead. |
void RegisterLocalizedBooleanPref(const char* path, |
int locale_default_message_id); |
@@ -192,6 +202,51 @@ class PrefService : public base::NonThreadSafe, |
int locale_default_message_id); |
void RegisterLocalizedStringPref(const char* path, |
int locale_default_message_id); |
+ void RegisterInt64Pref(const char* path, int64 default_value); |
+ |
+ // ---------- Profile prefs ---------- |
+ // Profile prefs must specify whether the pref should be synchronized across |
+ // machines or not (see PrefSyncStatus enum above). |
+ void RegisterBooleanPref(const char* path, |
+ bool default_value, |
+ PrefSyncStatus sync_status); |
+ void RegisterIntegerPref(const char* path, |
+ int default_value, |
+ PrefSyncStatus sync_status); |
+ void RegisterDoublePref(const char* path, |
+ double default_value, |
+ PrefSyncStatus sync_status); |
+ void RegisterStringPref(const char* path, |
+ const std::string& default_value, |
+ PrefSyncStatus sync_status); |
+ void RegisterFilePathPref(const char* path, |
+ const FilePath& default_value, |
+ PrefSyncStatus sync_status); |
+ void RegisterListPref(const char* path, PrefSyncStatus sync_status); |
+ void RegisterDictionaryPref(const char* path, PrefSyncStatus sync_status); |
+ // These take ownership of the default_value: |
+ void RegisterListPref(const char* path, |
+ ListValue* default_value, |
+ PrefSyncStatus sync_status); |
+ void RegisterDictionaryPref(const char* path, |
+ DictionaryValue* default_value, |
+ PrefSyncStatus sync_status); |
+ // These variants use a default value from the locale dll instead. |
+ void RegisterLocalizedBooleanPref(const char* path, |
+ int locale_default_message_id, |
+ PrefSyncStatus sync_status); |
+ void RegisterLocalizedIntegerPref(const char* path, |
+ int locale_default_message_id, |
+ PrefSyncStatus sync_status); |
+ void RegisterLocalizedDoublePref(const char* path, |
+ int locale_default_message_id, |
+ PrefSyncStatus sync_status); |
+ void RegisterLocalizedStringPref(const char* path, |
+ int locale_default_message_id, |
+ PrefSyncStatus sync_status); |
+ void RegisterInt64Pref(const char* path, |
+ int64 default_value, |
+ PrefSyncStatus sync_status); |
// If the path is valid and the value at the end of the path matches the type |
// specified, it will return the specified value. Otherwise, the default |
@@ -228,7 +283,6 @@ class PrefService : public base::NonThreadSafe, |
// Value type will be TYPE_STRING. |
void SetInt64(const char* path, int64 value); |
int64 GetInt64(const char* path) const; |
- void RegisterInt64Pref(const char* path, int64 default_value); |
// Returns true if a value has been set for the specified path. |
// NOTE: this is NOT the same as FindPreference. In particular |
@@ -246,6 +300,10 @@ class PrefService : public base::NonThreadSafe, |
bool ReadOnly() const; |
+ // SyncableService getter. |
+ // TODO(zea): Have PrefService implement SyncableService directly. |
+ SyncableService* GetSyncableService(); |
+ |
protected: |
// Construct a new pref service, specifying the pref sources as explicit |
// PrefStore pointers. This constructor is what CreatePrefService() ends up |
@@ -308,7 +366,9 @@ class PrefService : public base::NonThreadSafe, |
// 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, Value* default_value); |
+ void RegisterPreference(const char* path, |
+ Value* default_value, |
+ PrefSyncStatus sync_status); |
// Sets the value for this pref path in the user pref store and informs the |
// PrefNotifier of the change. |
@@ -344,6 +404,9 @@ class PrefService : public base::NonThreadSafe, |
// is used. |
PrefServiceDelegate* delegate_; |
+ // The model associator that maintains the links with the sync db. |
+ scoped_ptr<PrefModelAssociator> pref_sync_associator_; |
+ |
DISALLOW_COPY_AND_ASSIGN(PrefService); |
}; |