Index: sync/internal_api/sync_rollback_manager.cc |
diff --git a/sync/internal_api/sync_rollback_manager.cc b/sync/internal_api/sync_rollback_manager.cc |
index 240218d488f0f00a0b5ad2fb4e05f18a9fa2300a..84367b082b05de7e085b09c50c696c68d4935966 100644 |
--- a/sync/internal_api/sync_rollback_manager.cc |
+++ b/sync/internal_api/sync_rollback_manager.cc |
@@ -67,8 +67,12 @@ void SyncRollbackManager::Init( |
void SyncRollbackManager::StartSyncingNormally( |
const ModelSafeRoutingInfo& routing_info){ |
- std::map<ModelType, syncable::Directory::Metahandles> to_delete; |
+ if (rollback_ready_types_.Empty()) { |
+ NotifyRollbackDone(); |
+ return; |
+ } |
+ std::map<ModelType, syncable::Directory::Metahandles> to_delete; |
{ |
WriteTransaction trans(FROM_HERE, GetUserShare()); |
syncable::Directory::Metahandles unsynced; |
@@ -100,6 +104,8 @@ void SyncRollbackManager::StartSyncingNormally( |
base::Unretained(this), |
it->first, it->second)); |
} |
+ |
+ NotifyRollbackDone(); |
} |
SyncerError SyncRollbackManager::DeleteOnWorkerThread( |
@@ -130,4 +136,11 @@ SyncerError SyncRollbackManager::DeleteOnWorkerThread( |
return SYNCER_OK; |
} |
+void SyncRollbackManager::NotifyRollbackDone() { |
+ SyncProtocolError error; |
+ error.action = ROLLBACK_DONE; |
+ FOR_EACH_OBSERVER(SyncManager::Observer, *GetObservers(), |
+ OnActionableError(error)); |
+} |
+ |
} // namespace syncer |