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

Unified Diff: chrome/browser/prefs/pref_service.cc

Issue 11570009: Split PrefService into PrefService, PrefServiceSimple and PrefServiceSyncable. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: WIP, latest changes from kaiwang@ Created 8 years 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/prefs/pref_service.cc
diff --git a/chrome/browser/prefs/pref_service.cc b/chrome/browser/prefs/pref_service.cc
index 0f193164cac5a03cf3a9f7b3be512ab144494d24..8d097c5eca189321af52b9ba2fd0ba0da8dd2212 100644
--- a/chrome/browser/prefs/pref_service.cc
+++ b/chrome/browser/prefs/pref_service.cc
@@ -87,53 +87,25 @@ class ReadErrorHandler : public PersistentPrefStore::ReadErrorDelegate {
} // namespace
-PrefService* PrefService::CreateIncognitoPrefService(
- PrefStore* incognito_extension_prefs) {
- pref_service_forked_ = true;
- PrefNotifierImpl* pref_notifier = new PrefNotifierImpl();
- OverlayUserPrefStore* incognito_pref_store =
- new OverlayUserPrefStore(user_pref_store_.get());
- PrefsTabHelper::InitIncognitoUserPrefStore(incognito_pref_store);
- return new PrefService(
- pref_notifier,
- pref_value_store_->CloneAndSpecialize(
- NULL, // managed
- incognito_extension_prefs,
- NULL, // command_line_prefs
- incognito_pref_store,
- NULL, // recommended
- default_store_.get(),
- NULL, // pref_sync_associator
- pref_notifier),
- incognito_pref_store,
- default_store_.get(),
- NULL,
- get_localized_string_method_,
- read_error_callback_,
- false);
+PrefService::PrefService() {
}
-PrefService::PrefService(
+void PrefService::Initialize(
PrefNotifierImpl* pref_notifier,
PrefValueStore* pref_value_store,
PersistentPrefStore* user_prefs,
DefaultPrefStore* default_store,
- PrefModelAssociator* pref_sync_associator,
base::Callback<std::string(int)> get_localized_string_method,
base::Callback<void(PersistentPrefStore::PrefReadError)>
read_error_callback,
- bool async)
- : pref_notifier_(pref_notifier),
- pref_value_store_(pref_value_store),
- user_pref_store_(user_prefs),
- default_store_(default_store),
- pref_sync_associator_(pref_sync_associator),
- get_localized_string_method_(get_localized_string_method),
- read_error_callback_(read_error_callback),
- pref_service_forked_(false) {
+ bool async) {
+ pref_notifier_.reset(pref_notifier);
+ pref_value_store_.reset(pref_value_store);
+ user_pref_store_ = user_prefs;
+ default_store_ = default_store;
+ get_localized_string_method_ = get_localized_string_method;
+ read_error_callback_ = read_error_callback;
pref_notifier_->SetPrefService(this);
- if (pref_sync_associator_.get())
- pref_sync_associator_->SetPrefService(this);
InitFromStorage(async);
}
@@ -144,7 +116,6 @@ PrefService::~PrefService() {
pref_value_store_.reset();
user_pref_store_ = NULL;
default_store_ = NULL;
- pref_sync_associator_.reset();
pref_notifier_.reset();
}
@@ -171,330 +142,6 @@ void PrefService::CommitPendingWrite() {
user_pref_store_->CommitPendingWrite();
}
-void PrefService::AddObserver(PrefServiceObserver* observer) {
- observer_list_.AddObserver(observer);
-}
-
-void PrefService::RemoveObserver(PrefServiceObserver* observer) {
- observer_list_.RemoveObserver(observer);
-}
-
-bool PrefService::IsSyncing() {
- return pref_sync_associator_.get() &&
- pref_sync_associator_->models_associated();
-}
-
-void PrefService::OnIsSyncingChanged() {
- FOR_EACH_OBSERVER(PrefServiceObserver, observer_list_, OnIsSyncingChanged());
-}
-
-namespace {
-
-// If there's no g_browser_process or no local state, return true (for testing).
-bool IsLocalStatePrefService(PrefService* prefs) {
- return (!g_browser_process ||
- !g_browser_process->local_state() ||
- g_browser_process->local_state() == prefs);
-}
-
-// If there's no g_browser_process, return true (for testing).
-bool IsProfilePrefService(PrefService* prefs) {
- // TODO(zea): uncomment this once all preferences are only ever registered
- // with either the local_state's pref service or the profile's pref service.
- // return (!g_browser_process || g_browser_process->local_state() != prefs);
- return true;
-}
-
-} // namespace
-
-// Local State prefs.
-void PrefService::RegisterBooleanPref(const char* path,
- bool default_value) {
- // If this fails, the pref service in use is a profile pref service, so the
- // sync status must be provided (see profile pref registration calls below).
- DCHECK(IsLocalStatePrefService(this));
- RegisterPreference(path,
- Value::CreateBooleanValue(default_value),
- UNSYNCABLE_PREF);
-}
-
-void PrefService::RegisterIntegerPref(const char* path, int default_value) {
- // If this fails, the pref service in use is a profile pref service, so the
- // sync status must be provided (see profile pref registration calls below).
- DCHECK(IsLocalStatePrefService(this));
- RegisterPreference(path,
- Value::CreateIntegerValue(default_value),
- UNSYNCABLE_PREF);
-}
-
-void PrefService::RegisterDoublePref(const char* path, double default_value) {
- // If this fails, the pref service in use is a profile pref service, so the
- // sync status must be provided (see profile pref registration calls below).
- DCHECK(IsLocalStatePrefService(this));
- RegisterPreference(path,
- Value::CreateDoubleValue(default_value),
- UNSYNCABLE_PREF);
-}
-
-void PrefService::RegisterStringPref(const char* path,
- const std::string& default_value) {
- // If this fails, the pref service in use is a profile pref service, so the
- // sync status must be provided (see profile pref registration calls below).
- DCHECK(IsLocalStatePrefService(this));
- RegisterPreference(path,
- Value::CreateStringValue(default_value),
- UNSYNCABLE_PREF);
-}
-
-void PrefService::RegisterFilePathPref(const char* path,
- const FilePath& default_value) {
- // If this fails, the pref service in use is a profile pref service, so the
- // sync status must be provided (see profile pref registration calls below).
- DCHECK(IsLocalStatePrefService(this));
- RegisterPreference(path,
- Value::CreateStringValue(default_value.value()),
- UNSYNCABLE_PREF);
-}
-
-void PrefService::RegisterListPref(const char* path) {
- // If this fails, the pref service in use is a profile pref service, so the
- // sync status must be provided (see profile pref registration calls below).
- DCHECK(IsLocalStatePrefService(this));
- RegisterPreference(path,
- new ListValue(),
- UNSYNCABLE_PREF);
-}
-
-void PrefService::RegisterListPref(const char* path, ListValue* default_value) {
- // If this fails, the pref service in use is a profile pref service, so the
- // sync status must be provided (see profile pref registration calls below).
- DCHECK(IsLocalStatePrefService(this));
- RegisterPreference(path,
- default_value,
- UNSYNCABLE_PREF);
-}
-
-void PrefService::RegisterDictionaryPref(const char* path) {
- // If this fails, the pref service in use is a profile pref service, so the
- // sync status must be provided (see profile pref registration calls below).
- DCHECK(IsLocalStatePrefService(this));
- RegisterPreference(path,
- new DictionaryValue(),
- UNSYNCABLE_PREF);
-}
-
-void PrefService::RegisterDictionaryPref(const char* path,
- DictionaryValue* default_value) {
- // If this fails, the pref service in use is a profile pref service, so the
- // sync status must be provided (see profile pref registration calls below).
- DCHECK(IsLocalStatePrefService(this));
- RegisterPreference(path,
- default_value,
- UNSYNCABLE_PREF);
-}
-
-void PrefService::RegisterLocalizedBooleanPref(const char* path,
- int locale_default_message_id) {
- // If this fails, the pref service in use is a profile pref service, so the
- // sync status must be provided (see profile pref registration calls below).
- DCHECK(IsLocalStatePrefService(this));
- RegisterPreference(
- path,
- CreateLocaleDefaultValue(
- Value::TYPE_BOOLEAN,
- get_localized_string_method_.Run(locale_default_message_id)),
- UNSYNCABLE_PREF);
-}
-
-void PrefService::RegisterLocalizedIntegerPref(const char* path,
- int locale_default_message_id) {
- // If this fails, the pref service in use is a profile pref service, so the
- // sync status must be provided (see profile pref registration calls below).
- DCHECK(IsLocalStatePrefService(this));
- RegisterPreference(
- path,
- CreateLocaleDefaultValue(
- Value::TYPE_INTEGER,
- get_localized_string_method_.Run(locale_default_message_id)),
- UNSYNCABLE_PREF);
-}
-
-void PrefService::RegisterLocalizedDoublePref(const char* path,
- int locale_default_message_id) {
- // If this fails, the pref service in use is a profile pref service, so the
- // sync status must be provided (see profile pref registration calls below).
- DCHECK(IsLocalStatePrefService(this));
- RegisterPreference(
- path,
- CreateLocaleDefaultValue(
- Value::TYPE_DOUBLE,
- get_localized_string_method_.Run(locale_default_message_id)),
- UNSYNCABLE_PREF);
-}
-
-void PrefService::RegisterLocalizedStringPref(const char* path,
- int locale_default_message_id) {
- // If this fails, the pref service in use is a profile pref service, so the
- // sync status must be provided (see profile pref registration calls below).
- DCHECK(IsLocalStatePrefService(this));
- RegisterPreference(
- path,
- CreateLocaleDefaultValue(
- Value::TYPE_STRING,
- get_localized_string_method_.Run(locale_default_message_id)),
- UNSYNCABLE_PREF);
-}
-
-void PrefService::RegisterInt64Pref(const char* path, int64 default_value) {
- // If this fails, the pref service in use is a profile pref service, so the
- // sync status must be provided (see profile pref registration calls below).
- DCHECK(IsLocalStatePrefService(this));
- RegisterPreference(
- path,
- Value::CreateStringValue(base::Int64ToString(default_value)),
- UNSYNCABLE_PREF);
-}
-
-// Profile prefs (must use the sync_status variable).
-void PrefService::RegisterBooleanPref(const char* path,
- bool default_value,
- PrefSyncStatus sync_status) {
- DCHECK(IsProfilePrefService(this));
- RegisterPreference(path,
- Value::CreateBooleanValue(default_value),
- sync_status);
-}
-
-void PrefService::RegisterIntegerPref(const char* path,
- int default_value,
- PrefSyncStatus sync_status) {
- DCHECK(IsProfilePrefService(this));
- RegisterPreference(path,
- Value::CreateIntegerValue(default_value),
- sync_status);
-}
-
-void PrefService::RegisterDoublePref(const char* path,
- double default_value,
- PrefSyncStatus sync_status) {
- DCHECK(IsProfilePrefService(this));
- RegisterPreference(path,
- Value::CreateDoubleValue(default_value),
- sync_status);
-}
-
-void PrefService::RegisterStringPref(const char* path,
- const std::string& default_value,
- PrefSyncStatus sync_status) {
- DCHECK(IsProfilePrefService(this));
- RegisterPreference(path,
- Value::CreateStringValue(default_value),
- sync_status);
-}
-
-void PrefService::RegisterFilePathPref(const char* path,
- const FilePath& default_value,
- PrefSyncStatus sync_status) {
- DCHECK(IsProfilePrefService(this));
- RegisterPreference(path,
- Value::CreateStringValue(default_value.value()),
- sync_status);
-}
-
-void PrefService::RegisterListPref(const char* path,
- PrefSyncStatus sync_status) {
- DCHECK(IsProfilePrefService(this));
- RegisterPreference(path, new ListValue(), sync_status);
-}
-
-void PrefService::RegisterListPref(const char* path,
- ListValue* default_value,
- PrefSyncStatus sync_status) {
- DCHECK(IsProfilePrefService(this));
- RegisterPreference(path, default_value, sync_status);
-}
-
-void PrefService::RegisterDictionaryPref(const char* path,
- PrefSyncStatus sync_status) {
- DCHECK(IsProfilePrefService(this));
- RegisterPreference(path, new DictionaryValue(), sync_status);
-}
-
-void PrefService::RegisterDictionaryPref(const char* path,
- DictionaryValue* default_value,
- PrefSyncStatus sync_status) {
- DCHECK(IsProfilePrefService(this));
- RegisterPreference(path, default_value, sync_status);
-}
-
-void PrefService::RegisterLocalizedBooleanPref(const char* path,
- int locale_default_message_id,
- PrefSyncStatus sync_status) {
- DCHECK(IsProfilePrefService(this));
- RegisterPreference(
- path,
- CreateLocaleDefaultValue(
- Value::TYPE_BOOLEAN,
- get_localized_string_method_.Run(locale_default_message_id)),
- sync_status);
-}
-
-void PrefService::RegisterLocalizedIntegerPref(const char* path,
- int locale_default_message_id,
- PrefSyncStatus sync_status) {
- DCHECK(IsProfilePrefService(this));
- RegisterPreference(
- path,
- CreateLocaleDefaultValue(
- Value::TYPE_INTEGER,
- get_localized_string_method_.Run(locale_default_message_id)),
- sync_status);
-}
-
-void PrefService::RegisterLocalizedDoublePref(const char* path,
- int locale_default_message_id,
- PrefSyncStatus sync_status) {
- DCHECK(IsProfilePrefService(this));
- RegisterPreference(
- path,
- CreateLocaleDefaultValue(
- Value::TYPE_DOUBLE,
- get_localized_string_method_.Run(locale_default_message_id)),
- sync_status);
-}
-
-void PrefService::RegisterLocalizedStringPref(const char* path,
- int locale_default_message_id,
- PrefSyncStatus sync_status) {
- DCHECK(IsProfilePrefService(this));
- RegisterPreference(
- path,
- CreateLocaleDefaultValue(
- Value::TYPE_STRING,
- get_localized_string_method_.Run(locale_default_message_id)),
- sync_status);
-}
-
-void PrefService::RegisterInt64Pref(const char* path,
- int64 default_value,
- PrefSyncStatus sync_status) {
- DCHECK(IsProfilePrefService(this));
- RegisterPreference(
- path,
- Value::CreateStringValue(base::Int64ToString(default_value)),
- sync_status);
-}
-
-void PrefService::RegisterUint64Pref(const char* path,
- uint64 default_value,
- PrefSyncStatus sync_status) {
- DCHECK(IsProfilePrefService(this));
- RegisterPreference(
- path,
- Value::CreateStringValue(base::Uint64ToString(default_value)),
- sync_status);
-}
-
bool PrefService::GetBoolean(const char* path) const {
DCHECK(CalledOnValidThread());
@@ -707,8 +354,7 @@ void PrefService::AddPrefInitObserver(base::Callback<void(bool)> obs) {
}
void PrefService::RegisterPreference(const char* path,
- Value* default_value,
- PrefSyncStatus sync_status) {
+ Value* default_value) {
DCHECK(CalledOnValidThread());
// The main code path takes ownership, but most don't. We'll be safe.
@@ -739,10 +385,6 @@ void PrefService::RegisterPreference(const char* path,
// Hand off ownership.
default_store_->SetDefaultValue(path, scoped_value.release());
-
- // Register with sync if necessary.
- if (sync_status == SYNCABLE_PREF && pref_sync_associator_.get())
- pref_sync_associator_->RegisterPref(path);
}
void PrefService::UnregisterPreference(const char* path) {
@@ -754,10 +396,6 @@ void PrefService::UnregisterPreference(const char* path) {
prefs_map_.erase(it);
default_store_->RemoveDefaultValue(path);
- if (pref_sync_associator_.get() &&
- pref_sync_associator_->IsPrefRegistered(path)) {
- pref_sync_associator_->UnregisterPref(path);
- }
}
void PrefService::ClearPref(const char* path) {
@@ -892,14 +530,7 @@ void PrefService::SetUserPrefValue(const char* path, Value* new_value) {
user_pref_store_->SetValue(path, owned_value.release());
}
-syncer::SyncableService* PrefService::GetSyncableService() {
- return pref_sync_associator_.get();
-}
-
void PrefService::UpdateCommandLinePrefStore(CommandLine* command_line) {
- // If |pref_service_forked_| is true, then this PrefService and the forked
- // copies will be out of sync.
- DCHECK(!pref_service_forked_);
pref_value_store_->UpdateCommandLinePrefStore(
new CommandLinePrefStore(command_line));
}
@@ -997,3 +628,356 @@ const base::Value* PrefService::GetPreferenceValue(
NOTREACHED() << "no valid value found for registered pref " << path;
return NULL;
}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+void PrefServiceSimple::RegisterBooleanPref(const char* path,
+ bool default_value) {
+ RegisterPreference(path, Value::CreateBooleanValue(default_value));
+}
+
+void PrefServiceSimple::RegisterIntegerPref(const char* path,
+ int default_value) {
+ RegisterPreference(path, Value::CreateIntegerValue(default_value));
+}
+
+void PrefServiceSimple::RegisterDoublePref(const char* path,
+ double default_value) {
+ RegisterPreference(path, Value::CreateDoubleValue(default_value));
+}
+
+void PrefServiceSimple::RegisterStringPref(const char* path,
+ const std::string& default_value) {
+ RegisterPreference(path, Value::CreateStringValue(default_value));
+}
+
+void PrefServiceSimple::RegisterFilePathPref(const char* path,
+ const FilePath& default_value) {
+ RegisterPreference(path, Value::CreateStringValue(default_value.value()));
+}
+
+void PrefServiceSimple::RegisterListPref(const char* path) {
+ RegisterPreference(path, new ListValue());
+}
+
+void PrefServiceSimple::RegisterListPref(const char* path,
+ ListValue* default_value) {
+ RegisterPreference(path, default_value);
+}
+
+void PrefServiceSimple::RegisterDictionaryPref(const char* path) {
+ RegisterPreference(path, new DictionaryValue());
+}
+
+void PrefServiceSimple::RegisterDictionaryPref(const char* path,
+ DictionaryValue* default_value) {
+ RegisterPreference(path, default_value);
+}
+
+void PrefServiceSimple::RegisterLocalizedBooleanPref(
+ const char* path, int locale_default_message_id) {
+ RegisterPreference(
+ path,
+ CreateLocaleDefaultValue(
+ Value::TYPE_BOOLEAN,
+ get_localized_string_method_.Run(locale_default_message_id)));
+}
+
+void PrefServiceSimple::RegisterLocalizedIntegerPref(
+ const char* path, int locale_default_message_id) {
+ RegisterPreference(
+ path,
+ CreateLocaleDefaultValue(
+ Value::TYPE_INTEGER,
+ get_localized_string_method_.Run(locale_default_message_id)));
+}
+
+void PrefServiceSimple::RegisterLocalizedDoublePref(
+ const char* path, int locale_default_message_id) {
+ RegisterPreference(
+ path,
+ CreateLocaleDefaultValue(
+ Value::TYPE_DOUBLE,
+ get_localized_string_method_.Run(locale_default_message_id)));
+}
+
+void PrefServiceSimple::RegisterLocalizedStringPref(
+ const char* path, int locale_default_message_id) {
+ RegisterPreference(
+ path,
+ CreateLocaleDefaultValue(
+ Value::TYPE_STRING,
+ get_localized_string_method_.Run(locale_default_message_id)));
+}
+
+void PrefServiceSimple::RegisterInt64Pref(const char* path,
+ int64 default_value) {
+ RegisterPreference(
+ path, Value::CreateStringValue(base::Int64ToString(default_value)));
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+PrefServiceSyncable::PrefServiceSyncable() {
+ pref_sync_associator_.SetPrefService(this);
+}
+
+void PrefServiceSyncable::Initialize(
+ PrefNotifierImpl* pref_notifier,
+ PrefValueStore* pref_value_store,
+ PersistentPrefStore* user_prefs,
+ DefaultPrefStore* default_store,
+ base::Callback<std::string(int)> get_localized_string_method,
+ base::Callback<void(PersistentPrefStore::PrefReadError)>
+ read_error_callback,
+ bool async) {
+ PrefService::Initialize(pref_notifier,
+ pref_value_store,
+ user_prefs,
+ default_store,
+ get_localized_string_method,
+ read_error_callback,
+ async);
+
+ pref_value_store->set_sync_associator(&pref_sync_associator_);
+}
+
+PrefServiceSyncable::~PrefServiceSyncable() {
+}
+
+PrefServiceSyncable* PrefServiceSyncable::CreateIncognitoPrefService(
+ PrefStore* incognito_extension_prefs) {
+ pref_service_forked_ = true;
+ PrefNotifierImpl* pref_notifier = new PrefNotifierImpl();
+ OverlayUserPrefStore* incognito_pref_store =
+ new OverlayUserPrefStore(user_pref_store_.get());
+ PrefsTabHelper::InitIncognitoUserPrefStore(incognito_pref_store);
+ PrefServiceSyncable* incognito_service = new PrefServiceSyncable();
+ incognito_service->Initialize(
+ pref_notifier,
+ pref_value_store_->CloneAndSpecialize(
+ NULL, // managed
+ incognito_extension_prefs,
+ NULL, // command_line_prefs
+ incognito_pref_store,
+ NULL, // recommended
+ default_store_.get(),
+ pref_notifier),
+ incognito_pref_store,
+ default_store_.get(),
+ get_localized_string_method_,
+ read_error_callback_,
+ false);
+ return incognito_service;
+}
+
+bool PrefServiceSyncable::IsSyncing() {
+ return pref_sync_associator_.models_associated();
+}
+
+void PrefServiceSyncable::AddObserver(PrefServiceObserver* observer) {
+ observer_list_.AddObserver(observer);
+}
+
+void PrefServiceSyncable::RemoveObserver(PrefServiceObserver* observer) {
+ observer_list_.RemoveObserver(observer);
+}
+
+void PrefServiceSyncable::UnregisterPreference(const char* path) {
+ PrefService::UnregisterPreference(path);
+ if (pref_sync_associator_.IsPrefRegistered(path)) {
+ pref_sync_associator_.UnregisterPref(path);
+ }
+}
+
+void PrefServiceSyncable::RegisterBooleanPref(const char* path,
+ bool default_value,
+ PrefSyncStatus sync_status) {
+ RegisterSyncablePreference(path,
+ Value::CreateBooleanValue(default_value),
+ sync_status);
+}
+
+void PrefServiceSyncable::RegisterIntegerPref(const char* path,
+ int default_value,
+ PrefSyncStatus sync_status) {
+ RegisterSyncablePreference(path,
+ Value::CreateIntegerValue(default_value),
+ sync_status);
+}
+
+void PrefServiceSyncable::RegisterDoublePref(const char* path,
+ double default_value,
+ PrefSyncStatus sync_status) {
+ RegisterSyncablePreference(path,
+ Value::CreateDoubleValue(default_value),
+ sync_status);
+}
+
+void PrefServiceSyncable::RegisterStringPref(const char* path,
+ const std::string& default_value,
+ PrefSyncStatus sync_status) {
+ RegisterSyncablePreference(path,
+ Value::CreateStringValue(default_value),
+ sync_status);
+}
+
+void PrefServiceSyncable::RegisterFilePathPref(const char* path,
+ const FilePath& default_value,
+ PrefSyncStatus sync_status) {
+ RegisterSyncablePreference(path,
+ Value::CreateStringValue(default_value.value()),
+ sync_status);
+}
+
+void PrefServiceSyncable::RegisterListPref(const char* path,
+ PrefSyncStatus sync_status) {
+ RegisterSyncablePreference(path, new ListValue(), sync_status);
+}
+
+void PrefServiceSyncable::RegisterListPref(const char* path,
+ ListValue* default_value,
+ PrefSyncStatus sync_status) {
+ RegisterSyncablePreference(path, default_value, sync_status);
+}
+
+void PrefServiceSyncable::RegisterDictionaryPref(const char* path,
+ PrefSyncStatus sync_status) {
+ RegisterSyncablePreference(path, new DictionaryValue(), sync_status);
+}
+
+void PrefServiceSyncable::RegisterDictionaryPref(const char* path,
+ DictionaryValue* default_value,
+ PrefSyncStatus sync_status) {
+ RegisterSyncablePreference(path, default_value, sync_status);
+}
+
+void PrefServiceSyncable::RegisterLocalizedBooleanPref(
+ const char* path,
+ int locale_default_message_id,
+ PrefSyncStatus sync_status) {
+ RegisterSyncablePreference(
+ path,
+ CreateLocaleDefaultValue(
+ Value::TYPE_BOOLEAN,
+ get_localized_string_method_.Run(locale_default_message_id)),
+ sync_status);
+}
+
+void PrefServiceSyncable::RegisterLocalizedIntegerPref(
+ const char* path,
+ int locale_default_message_id,
+ PrefSyncStatus sync_status) {
+ RegisterSyncablePreference(
+ path,
+ CreateLocaleDefaultValue(
+ Value::TYPE_INTEGER,
+ get_localized_string_method_.Run(locale_default_message_id)),
+ sync_status);
+}
+
+void PrefServiceSyncable::RegisterLocalizedDoublePref(
+ const char* path,
+ int locale_default_message_id,
+ PrefSyncStatus sync_status) {
+ RegisterSyncablePreference(
+ path,
+ CreateLocaleDefaultValue(
+ Value::TYPE_DOUBLE,
+ get_localized_string_method_.Run(locale_default_message_id)),
+ sync_status);
+}
+
+void PrefServiceSyncable::RegisterLocalizedStringPref(
+ const char* path,
+ int locale_default_message_id,
+ PrefSyncStatus sync_status) {
+ RegisterSyncablePreference(
+ path,
+ CreateLocaleDefaultValue(
+ Value::TYPE_STRING,
+ get_localized_string_method_.Run(locale_default_message_id)),
+ sync_status);
+}
+
+void PrefServiceSyncable::RegisterInt64Pref(
+ const char* path,
+ int64 default_value,
+ PrefSyncStatus sync_status) {
+ RegisterSyncablePreference(
+ path,
+ Value::CreateStringValue(base::Int64ToString(default_value)),
+ sync_status);
+}
+
+void PrefServiceSyncable::RegisterUint64Pref(
+ const char* path,
+ uint64 default_value,
+ PrefSyncStatus sync_status) {
+ RegisterSyncablePreference(
+ path,
+ Value::CreateStringValue(base::Uint64ToString(default_value)),
+ sync_status);
+}
+
+syncer::SyncableService* PrefServiceSyncable::GetSyncableService() {
+ return &pref_sync_associator_;
+}
+
+void PrefServiceSyncable::UpdateCommandLinePrefStore(
+ CommandLine* command_line) {
+ // If |pref_service_forked_| is true, then this PrefService and the forked
+ // copies will be out of sync.
+ DCHECK(!pref_service_forked_);
+ PrefService::UpdateCommandLinePrefStore(command_line);
+}
+
+void PrefServiceSyncable::OnIsSyncingChanged() {
+ FOR_EACH_OBSERVER(PrefServiceObserver, observer_list_, OnIsSyncingChanged());
+}
+
+void PrefServiceSyncable::RegisterSyncablePreference(
+ const char* path, Value* default_value, PrefSyncStatus sync_status) {
+ PrefService::RegisterPreference(path, default_value);
+ // Register with sync if necessary.
+ if (sync_status == SYNCABLE_PREF)
+ pref_sync_associator_.RegisterPref(path);
+}

Powered by Google App Engine
This is Rietveld 408576698