Index: components/sync/driver/non_blocking_data_type_controller.cc |
diff --git a/components/sync/driver/non_blocking_data_type_controller.cc b/components/sync/driver/non_blocking_data_type_controller.cc |
index 9cbf62ba74572151965194094227e54ec0f49cf0..aef3e9d63907a4b588d1b7ef6101cf56f7350738 100644 |
--- a/components/sync/driver/non_blocking_data_type_controller.cc |
+++ b/components/sync/driver/non_blocking_data_type_controller.cc |
@@ -79,7 +79,16 @@ void NonBlockingDataTypeController::LoadModels( |
void NonBlockingDataTypeController::GetAllNodes( |
const AllNodesCallback& callback) { |
- callback.Run(type(), base::WrapUnique(new base::ListValue())); |
+ base::WeakPtr<syncer_v2::ModelTypeService> service = |
+ sync_client_->GetModelTypeServiceForType(type()); |
+ // TODO(gangwu): Casting should happen "near" where the processor factory has |
+ // code that instantiates a new processor. |
+ syncer_v2::SharedModelTypeProcessor* processor = |
+ (syncer_v2::SharedModelTypeProcessor*)service->change_processor(); |
+ RunOnModelThread(FROM_HERE, |
+ base::Bind(&syncer_v2::SharedModelTypeProcessor::GetAllNodes, |
+ base::Unretained(processor), |
+ base::ThreadTaskRunnerHandle::Get(), callback)); |
} |
void NonBlockingDataTypeController::LoadModelsDone( |