Index: chrome/browser/sync/sessions/sync_session.cc |
diff --git a/chrome/browser/sync/sessions/sync_session.cc b/chrome/browser/sync/sessions/sync_session.cc |
index f399d7d7904ed1fee8a5425a8641cfaaab04675e..492abc1e796a9b8ddc53e60c58a609b9881d9a70 100644 |
--- a/chrome/browser/sync/sessions/sync_session.cc |
+++ b/chrome/browser/sync/sessions/sync_session.cc |
@@ -9,6 +9,8 @@ |
#include "chrome/browser/sync/syncable/directory_manager.h" |
#include "chrome/browser/sync/syncable/model_type.h" |
+ |
+#include "chrome/browser/sync/sessions/unrecoverable_error_info.cc" |
namespace browser_sync { |
namespace sessions { |
@@ -21,7 +23,8 @@ SyncSession::SyncSession(SyncSessionContext* context, Delegate* delegate, |
write_transaction_(NULL), |
delegate_(delegate), |
workers_(workers), |
- routing_info_(routing_info) { |
+ routing_info_(routing_info), |
+ unrecoverable_error_(false) { |
status_controller_.reset(new StatusController(routing_info_)); |
std::sort(workers_.begin(), workers_.end()); |
} |
@@ -133,6 +136,18 @@ SyncSourceInfo SyncSession::TestAndSetSource() { |
return old_source; |
} |
+void SyncSession::SetUnrecoverableError( |
+ const tracked_objects::Location& location, |
+ const std::string& message, |
+ syncable::BaseTransaction* trans) { |
+ unrecoverable_error_ = true; |
+ unrecoverable_error_info_.reset(new UnrecoverableErrorInfo(location, |
+ message)); |
+ // If a transaction if provided then make sure it does not check tree |
+ // invariants. We know it is corrupted. |
+ trans->set_unrecoverable_error(); |
+} |
+ |
bool SyncSession::HasMoreToSync() const { |
const StatusController* status = status_controller_.get(); |
return ((status->commit_ids().size() < status->unsynced_handles().size()) && |