Index: chrome/browser/sync/glue/sync_backend_host_core.cc |
diff --git a/chrome/browser/sync/glue/sync_backend_host_core.cc b/chrome/browser/sync/glue/sync_backend_host_core.cc |
index c49171a5404e2cd338542e4baeccd17a86f193af..c744f9893ce3cb96bb1fd8a793f2db2ce951867e 100644 |
--- a/chrome/browser/sync/glue/sync_backend_host_core.cc |
+++ b/chrome/browser/sync/glue/sync_backend_host_core.cc |
@@ -640,6 +640,33 @@ void SyncBackendHostCore::DeleteSyncDataFolder() { |
} |
} |
+void SyncBackendHostCore::GetAllNodesForTypes( |
+ syncer::ModelTypeSet types, |
+ scoped_refptr<base::SequencedTaskRunner> task_runner, |
+ base::Callback<void(const std::vector<syncer::ModelType>& type, |
+ ScopedVector<base::ListValue>)> callback) { |
+ std::vector<syncer::ModelType> types_vector; |
+ ScopedVector<base::ListValue> node_lists; |
+ |
+ syncer::ModelSafeRoutingInfo routes; |
+ registrar_->GetModelSafeRoutingInfo(&routes); |
+ syncer::ModelTypeSet enabled_types = GetRoutingInfoTypes(routes); |
+ |
+ for (syncer::ModelTypeSet::Iterator it = types.First(); it.Good(); it.Inc()) { |
+ types_vector.push_back(it.Get()); |
+ if (!enabled_types.Has(it.Get())) { |
+ node_lists.push_back(new base::ListValue()); |
+ } else { |
+ node_lists.push_back( |
+ sync_manager_->GetAllNodesForType(it.Get()).release()); |
+ } |
+ } |
+ |
+ task_runner->PostTask( |
+ FROM_HERE, |
+ base::Bind(callback, types_vector, base::Passed(&node_lists))); |
+} |
+ |
void SyncBackendHostCore::StartSavingChanges() { |
// We may already be shut down. |
if (!sync_loop_) |