Index: chrome/browser/sync/sessions/sync_session.h |
diff --git a/chrome/browser/sync/sessions/sync_session.h b/chrome/browser/sync/sessions/sync_session.h |
index 04b1a1a15b06104e0106e7f2cc8d1307aba2b85b..8fd949567e6df9c87c4452e5a762c7a759771ddf 100644 |
--- a/chrome/browser/sync/sessions/sync_session.h |
+++ b/chrome/browser/sync/sessions/sync_session.h |
@@ -22,12 +22,14 @@ |
#include "base/basictypes.h" |
#include "base/memory/scoped_ptr.h" |
+#include "base/location.h" |
#include "base/time.h" |
#include "chrome/browser/sync/engine/model_safe_worker.h" |
#include "chrome/browser/sync/sessions/ordered_commit_set.h" |
#include "chrome/browser/sync/sessions/session_state.h" |
#include "chrome/browser/sync/sessions/status_controller.h" |
#include "chrome/browser/sync/sessions/sync_session_context.h" |
+#include "chrome/browser/sync/sessions/unrecoverable_error_info.h" |
#include "chrome/browser/sync/syncable/model_type.h" |
#include "chrome/browser/sync/util/extensions_activity_monitor.h" |
@@ -90,6 +92,11 @@ class SyncSession { |
virtual void OnSyncProtocolError( |
const sessions::SyncSessionSnapshot& snapshot) = 0; |
+ // Called when the syncer encounters an unrecoverable error. |
+ virtual void OnUnrecoverableError( |
+ const tracked_objects::Location& from_here, |
+ const std::string& message) = 0; |
+ |
protected: |
virtual ~Delegate() {} |
}; |
@@ -146,6 +153,18 @@ class SyncSession { |
const ModelSafeRoutingInfo& routing_info() const { return routing_info_; } |
const SyncSourceInfo& source() const { return source_; } |
+ // This can be called from any thread. We just cache the value of |
+ // unrecoverable error info. When on the correct thread using this info |
+ // delegate's OnUnrecoverableError method should be called. |
+ void SetUnrecoverableError(const tracked_objects::Location& location, |
+ const std::string& message, |
+ syncable::BaseTransaction* trans); |
+ |
+ bool unrecoverable_error() const { return unrecoverable_error_; } |
+ UnrecoverableErrorInfo* unrecoverable_error_info() { |
+ return unrecoverable_error_info_.get(); |
+ } |
+ |
private: |
// Extend the encapsulation boundary to utilities for internal member |
// assignments. This way, the scope of these actions is explicit, they can't |
@@ -179,6 +198,9 @@ class SyncSession { |
// on those datatypes. |
ModelSafeRoutingInfo routing_info_; |
+ scoped_ptr<UnrecoverableErrorInfo> unrecoverable_error_info_; |
+ bool unrecoverable_error_; |
+ |
DISALLOW_COPY_AND_ASSIGN(SyncSession); |
}; |