Index: chrome/browser/sync/glue/sync_backend_host_impl.cc |
diff --git a/chrome/browser/sync/glue/sync_backend_host_impl.cc b/chrome/browser/sync/glue/sync_backend_host_impl.cc |
index 253db617d6b24f2920171bbe8d5af70e20289204..5f38753fb27021e2d81d6930c1a4f9f1c3c45cf2 100644 |
--- a/chrome/browser/sync/glue/sync_backend_host_impl.cc |
+++ b/chrome/browser/sync/glue/sync_backend_host_impl.cc |
@@ -347,8 +347,15 @@ void SyncBackendHostImpl::ConfigureDataTypes( |
GetDataTypesInState(FATAL, config_state_map); |
syncer::ModelTypeSet crypto_types = |
GetDataTypesInState(CRYPTO, config_state_map); |
+ syncer::ModelTypeSet unready_types = |
+ GetDataTypesInState(UNREADY, config_state_map); |
disabled_types.PutAll(fatal_types); |
+ |
+ // TODO(zea): These types won't be fully purged if they are subsequently |
+ // disabled by the user. Fix that. See crbug.com/386778 |
disabled_types.PutAll(crypto_types); |
+ disabled_types.PutAll(unready_types); |
+ |
syncer::ModelTypeSet active_types = |
GetDataTypesInState(CONFIGURE_ACTIVE, config_state_map); |
syncer::ModelTypeSet clean_first_types = |
@@ -392,6 +399,7 @@ void SyncBackendHostImpl::ConfigureDataTypes( |
syncer::ModelTypeSet inactive_types = |
GetDataTypesInState(CONFIGURE_INACTIVE, config_state_map); |
types_to_purge.RemoveAll(inactive_types); |
+ types_to_purge.RemoveAll(unready_types); |
// If a type has already been disabled and unapplied or journaled, it will |
// not be part of the |types_to_purge| set, and therefore does not need |