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

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

Issue 12033093: sync: Implementation of Priority Preferences. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Attempting to parametrize the PSS pref test fixture to also test priority prefs. Created 7 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/prefs/pref_service_syncable.cc
diff --git a/chrome/browser/prefs/pref_service_syncable.cc b/chrome/browser/prefs/pref_service_syncable.cc
index 01db256afaf392f7ff2c12525001f42a724d8a84..bcb3518085ec75b07334e9451be6ac9b39b2c7ce 100644
--- a/chrome/browser/prefs/pref_service_syncable.cc
+++ b/chrome/browser/prefs/pref_service_syncable.cc
@@ -43,21 +43,28 @@ PrefServiceSyncable::PrefServiceSyncable(
user_prefs,
pref_registry,
read_error_callback,
- async) {
+ async),
+ pref_sync_associator_(syncer::PREFERENCES),
+ priority_pref_sync_associator_(syncer::PRIORITY_PREFERENCES) {
pref_sync_associator_.SetPrefService(this);
+ priority_pref_sync_associator_.SetPrefService(this);
// Let PrefModelAssociator know about changes to preference values.
pref_value_store->set_callback(
base::Bind(&PrefModelAssociator::ProcessPrefChange,
base::Unretained(&pref_sync_associator_)));
+ pref_value_store->set_callback(
+ base::Bind(&PrefModelAssociator::ProcessPrefChange,
+ base::Unretained(&priority_pref_sync_associator_)));
// Add already-registered syncable preferences to PrefModelAssociator.
- const std::set<std::string>& syncable_preferences =
+ const PrefRegistrySyncable::PrefToStatus& syncable_preferences =
pref_registry->syncable_preferences();
- for (std::set<std::string>::const_iterator it = syncable_preferences.begin();
+ for (PrefRegistrySyncable::PrefToStatus::const_iterator it =
+ syncable_preferences.begin();
it != syncable_preferences.end();
++it) {
- AddRegisteredSyncablePreference(it->c_str());
+ AddRegisteredSyncablePreference(it->first.c_str(), it->second);
}
// Watch for syncable preferences registered after this point.
@@ -115,8 +122,16 @@ void PrefServiceSyncable::RemoveObserver(
observer_list_.RemoveObserver(observer);
}
-syncer::SyncableService* PrefServiceSyncable::GetSyncableService() {
- return &pref_sync_associator_;
+syncer::SyncableService* PrefServiceSyncable::GetSyncableService(
+ const syncer::ModelType& type) {
+ if (type == syncer::PREFERENCES) {
+ return &pref_sync_associator_;
+ } else if (type == syncer::PRIORITY_PREFERENCES) {
+ return &priority_pref_sync_associator_;
+ } else {
+ NOTREACHED() << "invalid model type: " << type;
+ return NULL;
+ }
}
void PrefServiceSyncable::UpdateCommandLinePrefStore(
@@ -127,12 +142,24 @@ void PrefServiceSyncable::UpdateCommandLinePrefStore(
PrefService::UpdateCommandLinePrefStore(cmd_line_store);
}
-void PrefServiceSyncable::AddRegisteredSyncablePreference(const char* path) {
+void PrefServiceSyncable::AddRegisteredSyncablePreference(
+ const char* path, const PrefRegistrySyncable::PrefSyncStatus sync_status) {
DCHECK(FindPreference(path));
- pref_sync_associator_.RegisterPref(path);
+ if (sync_status == PrefRegistrySyncable::SYNCABLE_PREF) {
+ pref_sync_associator_.RegisterPref(path);
+ } else if (sync_status == PrefRegistrySyncable::SYNCABLE_PRIORITY_PREF) {
+ priority_pref_sync_associator_.RegisterPref(path);
+ } else {
+ NOTREACHED() << "invalid sync_status: " << sync_status;
+ }
}
void PrefServiceSyncable::OnIsSyncingChanged() {
FOR_EACH_OBSERVER(PrefServiceSyncableObserver, observer_list_,
OnIsSyncingChanged());
}
+
+void PrefServiceSyncable::ProcessPrefChange(const std::string& name) {
+ pref_sync_associator_.ProcessPrefChange(name);
+ priority_pref_sync_associator_.ProcessPrefChange(name);
+}

Powered by Google App Engine
This is Rietveld 408576698