| 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 5c004a7becc9ae4fea2ad292af6736f21b4720b7..88c96400ad74cdb2f1240b4f47da1d4690b2b4a7 100644
|
| --- a/chrome/browser/prefs/pref_model_associator.cc
|
| +++ b/chrome/browser/prefs/pref_model_associator.cc
|
| @@ -116,7 +116,7 @@ void PrefModelAssociator::InitPrefAndAssociate(
|
| return;
|
| }
|
|
|
| -bool PrefModelAssociator::MergeDataAndStartSyncing(
|
| +SyncError PrefModelAssociator::MergeDataAndStartSyncing(
|
| syncable::ModelType type,
|
| const SyncDataList& initial_sync_data,
|
| SyncChangeProcessor* sync_processor) {
|
| @@ -158,9 +158,14 @@ bool PrefModelAssociator::MergeDataAndStartSyncing(
|
| }
|
|
|
| // Push updates to sync.
|
| - sync_processor_->ProcessSyncChanges(FROM_HERE, new_changes);
|
| + SyncError error =
|
| + sync_processor_->ProcessSyncChanges(FROM_HERE, new_changes);
|
| + if (error.IsSet()) {
|
| + return error;
|
| + }
|
| +
|
| models_associated_ = true;
|
| - return true;
|
| + return SyncError();
|
| }
|
|
|
| void PrefModelAssociator::StopSyncing(syncable::ModelType type) {
|
| @@ -306,11 +311,15 @@ SyncDataList PrefModelAssociator::GetAllSyncData(syncable::ModelType type)
|
| return current_data;
|
| }
|
|
|
| -void PrefModelAssociator::ProcessSyncChanges(
|
| +SyncError PrefModelAssociator::ProcessSyncChanges(
|
| const tracked_objects::Location& from_here,
|
| const SyncChangeList& change_list) {
|
| - if (!models_associated_)
|
| - return;
|
| + if (!models_associated_) {
|
| + SyncError error(FROM_HERE,
|
| + "Models not yet associated.",
|
| + PREFERENCES);
|
| + return error;
|
| + }
|
| AutoReset<bool> processing_changes(&processing_syncer_changes_, true);
|
| SyncChangeList::const_iterator iter;
|
| for (iter = change_list.begin(); iter != change_list.end(); ++iter) {
|
| @@ -359,6 +368,7 @@ void PrefModelAssociator::ProcessSyncChanges(
|
|
|
| SendUpdateNotificationsIfNecessary(name);
|
| }
|
| + return SyncError();
|
| }
|
|
|
| Value* PrefModelAssociator::ReadPreferenceSpecifics(
|
| @@ -432,5 +442,9 @@ void PrefModelAssociator::ProcessPrefChange(const std::string& name) {
|
| }
|
| changes.push_back(SyncChange(SyncChange::ACTION_UPDATE, sync_data));
|
| }
|
| - sync_processor_->ProcessSyncChanges(FROM_HERE, changes);
|
| +
|
| + SyncError error =
|
| + sync_processor_->ProcessSyncChanges(FROM_HERE, changes);
|
| + if (error.IsSet())
|
| + StopSyncing(PREFERENCES);
|
| }
|
|
|