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

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: another rebase 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 5d26e17e37cd3c428fb6191d5da7816309e2526d..ce583ff18443ae504fd76c0ec2ebfb2f37a03a1f 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.
@@ -119,6 +126,10 @@ syncer::SyncableService* PrefServiceSyncable::GetSyncableService() {
return &pref_sync_associator_;
}
+syncer::SyncableService* PrefServiceSyncable::GetPrioritySyncableService() {
+ return &priority_pref_sync_associator_;
+}
+
void PrefServiceSyncable::UpdateCommandLinePrefStore(
PrefStore* cmd_line_store) {
// If |pref_service_forked_| is true, then this PrefService and the forked
@@ -127,12 +138,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