Chromium Code Reviews| Index: chrome/browser/prefs/pref_model_associator.cc |
| diff --git a/chrome/browser/prefs/pref_model_associator.cc b/chrome/browser/prefs/pref_model_associator.cc |
| index 6773c2c3eb98a06419b67fd99d79e57e77761edf..b05a51af2fb55267b2450abec405dda229960791 100644 |
| --- a/chrome/browser/prefs/pref_model_associator.cc |
| +++ b/chrome/browser/prefs/pref_model_associator.cc |
| @@ -21,12 +21,15 @@ |
| #include "sync/protocol/sync.pb.h" |
| using syncer::PREFERENCES; |
| +using syncer::PRIORITY_PREFERENCES; |
| -PrefModelAssociator::PrefModelAssociator() |
| +PrefModelAssociator::PrefModelAssociator(syncer::ModelType type) |
| : models_associated_(false), |
| processing_syncer_changes_(false), |
| - pref_service_(NULL) { |
| + pref_service_(NULL), |
| + type_(type) { |
| DCHECK(CalledOnValidThread()); |
| + DCHECK(type_ == PREFERENCES || type_ == PRIORITY_PREFERENCES); |
| } |
| PrefModelAssociator::~PrefModelAssociator() { |
| @@ -124,7 +127,7 @@ syncer::SyncMergeResult PrefModelAssociator::MergeDataAndStartSyncing( |
| const syncer::SyncDataList& initial_sync_data, |
| scoped_ptr<syncer::SyncChangeProcessor> sync_processor, |
| scoped_ptr<syncer::SyncErrorFactory> sync_error_factory) { |
| - DCHECK_EQ(type, PREFERENCES); |
| + DCHECK_EQ(type_, type); |
| DCHECK(CalledOnValidThread()); |
| DCHECK(pref_service_); |
| DCHECK(!sync_processor_.get()); |
| @@ -143,7 +146,7 @@ syncer::SyncMergeResult PrefModelAssociator::MergeDataAndStartSyncing( |
| initial_sync_data.begin(); |
| sync_iter != initial_sync_data.end(); |
| ++sync_iter) { |
| - DCHECK_EQ(PREFERENCES, sync_iter->GetDataType()); |
| + DCHECK_EQ(type_, sync_iter->GetDataType()); |
| std::string sync_pref_name = sync_iter->GetSpecifics().preference().name(); |
| if (remaining_preferences.count(sync_pref_name) == 0) { |
| // We're not syncing this preference locally, ignore the sync data. |
| @@ -178,7 +181,7 @@ syncer::SyncMergeResult PrefModelAssociator::MergeDataAndStartSyncing( |
| } |
| void PrefModelAssociator::StopSyncing(syncer::ModelType type) { |
| - DCHECK_EQ(type, PREFERENCES); |
| + DCHECK_EQ(type_, type); |
| models_associated_ = false; |
| sync_processor_.reset(); |
| sync_error_factory_.reset(); |
| @@ -205,7 +208,7 @@ scoped_ptr<Value> PrefModelAssociator::MergePreference( |
| bool PrefModelAssociator::CreatePrefSyncData( |
| const std::string& name, |
| const Value& value, |
| - syncer::SyncData* sync_data) { |
| + syncer::SyncData* sync_data) const { |
| if (value.IsType(Value::TYPE_NULL)) { |
| LOG(ERROR) << "Attempting to sync a null pref value for " << name; |
| return false; |
| @@ -221,9 +224,18 @@ bool PrefModelAssociator::CreatePrefSyncData( |
| } |
| sync_pb::EntitySpecifics specifics; |
| - sync_pb::PreferenceSpecifics* pref_specifics = specifics.mutable_preference(); |
| + sync_pb::PreferenceSpecifics* pref_specifics; |
| + |
| + if (type_ == PREFERENCES) { |
| + pref_specifics = specifics.mutable_preference(); |
| + } else { |
| + pref_specifics = |
| + specifics.mutable_priority_preference()->mutable_preference(); |
| + } |
| + |
| pref_specifics->set_name(name); |
| pref_specifics->set_value(serialized); |
| + |
| *sync_data = syncer::SyncData::CreateLocalData(name, name, specifics); |
| return true; |
| } |
| @@ -293,7 +305,7 @@ Value* PrefModelAssociator::MergeDictionaryValues( |
| syncer::SyncDataList PrefModelAssociator::GetAllSyncData( |
| syncer::ModelType type) |
| const { |
| - DCHECK_EQ(PREFERENCES, type); |
| + DCHECK_EQ(type_, type); |
| syncer::SyncDataList current_data; |
| for (PreferenceSet::const_iterator iter = synced_preferences_.begin(); |
| iter != synced_preferences_.end(); |
| @@ -325,11 +337,15 @@ syncer::SyncError PrefModelAssociator::ProcessSyncChanges( |
| base::AutoReset<bool> processing_changes(&processing_syncer_changes_, true); |
| syncer::SyncChangeList::const_iterator iter; |
| for (iter = change_list.begin(); iter != change_list.end(); ++iter) { |
| - DCHECK_EQ(PREFERENCES, iter->sync_data().GetDataType()); |
| + DCHECK_EQ(type_, iter->sync_data().GetDataType()); |
| std::string name; |
| sync_pb::PreferenceSpecifics pref_specifics = |
|
Nicolas Zea
2013/02/21 23:41:11
nit:prefer an if/else here based on type
albertb
2013/02/22 20:08:47
Done.
|
| iter->sync_data().GetSpecifics().preference(); |
| + if (type_ == PRIORITY_PREFERENCES) { |
| + pref_specifics = |
| + iter->sync_data().GetSpecifics().priority_preference().preference(); |
| + } |
| scoped_ptr<Value> value(ReadPreferenceSpecifics(pref_specifics, |
| &name)); |
| @@ -427,6 +443,7 @@ void PrefModelAssociator::ProcessPrefChange(const std::string& name) { |
| base::AutoReset<bool> processing_changes(&processing_syncer_changes_, true); |
| + LOG(ERROR) << "synced pref(" << type_ << ") change: " << name; |
|
Nicolas Zea
2013/02/21 23:41:11
did you mean to live this?
albertb
2013/02/22 20:08:47
Done.
|
| if (synced_preferences_.count(name) == 0) { |
| // Not in synced_preferences_ means no synced data. InitPrefAndAssociate(..) |
| // will determine if we care about its data (e.g. if it has a default value |