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 da6412f7809116448143399aa3b1656ab566d924..888e46ff964241bd07a9b70e4dbc6163d2557b14 100644 |
--- a/chrome/browser/sync/sessions/sync_session.cc |
+++ b/chrome/browser/sync/sessions/sync_session.cc |
@@ -24,6 +24,21 @@ SyncSession::SyncSession(SyncSessionContext* context, Delegate* delegate, |
SyncSession::~SyncSession() {} |
+void SyncSession::Coalesce(const SyncSession* session) { |
+ if (context_ != session->context() || delegate_ != session->delegate_) { |
+ NOTREACHED(); |
+ return; |
+ } |
+ |
+ source_ = SyncSourceInfo(session->source_.first, |
+ source_.second | session->source_.second); |
+ // TODO(tim): Update routing_info_ and workers_. |
+} |
+ |
+void SyncSession::ResetTransientState() { |
+ status_controller_.reset(new StatusController(routing_info_)); |
+} |
+ |
SyncSessionSnapshot SyncSession::TakeSnapshot() const { |
syncable::ScopedDirLookup dir(context_->directory_manager(), |
context_->account_name()); |
@@ -55,7 +70,8 @@ SyncSessionSnapshot SyncSession::TakeSnapshot() const { |
delegate_->IsSyncingCurrentlySilenced(), |
status_controller_->unsynced_handles().size(), |
status_controller_->TotalNumConflictingItems(), |
- status_controller_->did_commit_items()); |
+ status_controller_->did_commit_items(), |
+ source_); |
} |
SyncSourceInfo SyncSession::TestAndSetSource() { |