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

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: rebase Created 7 years, 9 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 8f2f8672537940fd4b5d5ec6f5cef34a45715bfe..352879e31599ca91e0187b2fec484fb0dd69ef9d 100644
--- a/chrome/browser/prefs/pref_service_syncable.cc
+++ b/chrome/browser/prefs/pref_service_syncable.cc
@@ -43,21 +43,25 @@ 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.
+ // Let PrefModelAssociators know about changes to preference values.
pref_value_store->set_callback(
- base::Bind(&PrefModelAssociator::ProcessPrefChange,
- base::Unretained(&pref_sync_associator_)));
+ base::Bind(&PrefServiceSyncable::ProcessPrefChange,
+ base::Unretained(this)));
// 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 +119,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 +139,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) {
Mattias Nissler (ping if slow) 2013/03/21 06:50:15 nit: parameter decls on separate lines
albertb 2013/03/21 17:10:33 Done.
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