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 c414de2e7f9126c8522b840731a92545aab71fe4..755fceac526cd36cd4c2693d782e3a3ab8f7bf03 100644 |
--- a/components/sync/driver/non_blocking_data_type_controller.cc |
+++ b/components/sync/driver/non_blocking_data_type_controller.cc |
@@ -91,6 +91,23 @@ void NonBlockingDataTypeController::GetAllNodes( |
base::ThreadTaskRunnerHandle::Get(), callback)); |
} |
+void NonBlockingDataTypeController::GetStatusCounters( |
+ const StatusCountersCallback& callback) { |
+ 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(); |
+ if (processor != nullptr) { |
+ RunOnModelThread( |
+ FROM_HERE, |
+ base::Bind(&syncer_v2::SharedModelTypeProcessor::GetStatusCounters, |
+ base::Unretained(processor), |
+ base::ThreadTaskRunnerHandle::Get(), callback)); |
+ } |
+} |
+ |
void NonBlockingDataTypeController::LoadModelsDone( |
ConfigureResult result, |
const syncer::SyncError& error) { |