Index: chrome/browser/sync/glue/sync_backend_host.cc |
diff --git a/chrome/browser/sync/glue/sync_backend_host.cc b/chrome/browser/sync/glue/sync_backend_host.cc |
index eb1b5ca1f531e16030aac6381f75cfaa9870dcfd..870c4d565afae6c358e421fb5a921891e89f132b 100644 |
--- a/chrome/browser/sync/glue/sync_backend_host.cc |
+++ b/chrome/browser/sync/glue/sync_backend_host.cc |
@@ -637,9 +637,14 @@ void SyncBackendHost::ConfigureDataTypes( |
GetDataTypesInState(CRYPTO, config_state_map); |
disabled_types.PutAll(fatal_types); |
disabled_types.PutAll(crypto_types); |
+ syncer::ModelTypeSet active_types = |
+ GetDataTypesInState(CONFIGURE_ACTIVE, config_state_map); |
+ syncer::ModelTypeSet clean_first_types = |
+ GetDataTypesInState(CONFIGURE_CLEAN, config_state_map); |
syncer::ModelTypeSet types_to_download = registrar_->ConfigureDataTypes( |
- GetDataTypesInState(CONFIGURE_ACTIVE, config_state_map), |
+ syncer::Union(active_types, clean_first_types), |
disabled_types); |
+ types_to_download.PutAll(clean_first_types); |
types_to_download.RemoveAll(syncer::ProxyTypes()); |
if (!types_to_download.Empty()) |
types_to_download.Put(syncer::NIGORI); |
@@ -699,7 +704,7 @@ void SyncBackendHost::ConfigureDataTypes( |
types_to_download, |
types_to_purge, |
fatal_types, |
- crypto_types, |
+ syncer::Union(crypto_types, clean_first_types), |
inactive_types, |
routing_info, |
ready_task, |