summaryrefslogtreecommitdiffstats
path: root/sync/engine/non_blocking_type_processor.cc
diff options
context:
space:
mode:
Diffstat (limited to 'sync/engine/non_blocking_type_processor.cc')
-rw-r--r--sync/engine/non_blocking_type_processor.cc20
1 files changed, 20 insertions, 0 deletions
diff --git a/sync/engine/non_blocking_type_processor.cc b/sync/engine/non_blocking_type_processor.cc
index c1982b3..9b80543 100644
--- a/sync/engine/non_blocking_type_processor.cc
+++ b/sync/engine/non_blocking_type_processor.cc
@@ -62,6 +62,8 @@ void NonBlockingTypeProcessor::Disable() {
DCHECK(CalledOnValidThread());
is_preferred_ = false;
Disconnect();
+
+ ClearSyncState();
}
void NonBlockingTypeProcessor::Disconnect() {
@@ -76,6 +78,8 @@ void NonBlockingTypeProcessor::Disconnect() {
weak_ptr_factory_for_sync_.InvalidateWeakPtrs();
core_interface_.reset();
+
+ ClearTransientSyncState();
}
base::WeakPtr<NonBlockingTypeProcessor>
@@ -227,4 +231,20 @@ void NonBlockingTypeProcessor::OnUpdateReceived(
// TODO: Inform the model of the new or updated data.
}
+void NonBlockingTypeProcessor::ClearTransientSyncState() {
+ for (EntityMap::iterator it = entities_.begin(); it != entities_.end();
+ ++it) {
+ it->second->ClearTransientSyncState();
+ }
+}
+
+void NonBlockingTypeProcessor::ClearSyncState() {
+ for (EntityMap::iterator it = entities_.begin(); it != entities_.end();
+ ++it) {
+ it->second->ClearSyncState();
+ }
+
+ data_type_state_ = DataTypeState();
+}
+
} // namespace syncer