Index: chrome/browser/sync/engine/apply_updates_command.cc |
diff --git a/chrome/browser/sync/engine/apply_updates_command.cc b/chrome/browser/sync/engine/apply_updates_command.cc |
index 6d1f9583da1db07b210a81b2bc5231cbeba0a035..ba7eed8fe141ae6455f26fb6be6f6768a569fa40 100644 |
--- a/chrome/browser/sync/engine/apply_updates_command.cc |
+++ b/chrome/browser/sync/engine/apply_updates_command.cc |
@@ -34,6 +34,18 @@ void ApplyUpdatesCommand::ModelChangingExecuteImpl(SyncSession* session) { |
handles.begin(), handles.end(), session->routing_info(), |
session->status_controller()->group_restriction()); |
while (applicator.AttemptOneApplication(&trans)) {} |
+ |
+ if (applicator.failed_update()) { |
+ // TODO(lipalani): Pipe in the failed line number from the syncable layer. |
+ |
+ // We could be in any thread here. So set the unrecoverable error in. |
+ // session. ModelChangingSyncerCommand object will send it on the right |
+ // thread. |
+ session->SetUnrecoverableError(FROM_HERE, "Failed to apply update.", |
+ &trans); |
+ return; |
+ } |
+ |
applicator.SaveProgressIntoSessionState( |
session->status_controller()->mutable_conflict_progress(), |
session->status_controller()->mutable_update_progress()); |