Index: components/sync/driver/directory_data_type_controller.cc |
diff --git a/components/sync/driver/directory_data_type_controller.cc b/components/sync/driver/directory_data_type_controller.cc |
index 62a1720ab5ecb0ba115c70a1d80ecd9cfdfd4ac8..cae851d7a70e45fc82fc1d5121887e509f9a2d81 100644 |
--- a/components/sync/driver/directory_data_type_controller.cc |
+++ b/components/sync/driver/directory_data_type_controller.cc |
@@ -4,6 +4,8 @@ |
#include "components/sync/driver/directory_data_type_controller.h" |
+#include "base/memory/ptr_util.h" |
+#include "base/threading/thread_task_runner_handle.h" |
#include "components/sync/core/user_share.h" |
#include "components/sync/driver/backend_data_type_configurer.h" |
#include "components/sync/driver/sync_service.h" |
@@ -33,6 +35,23 @@ void DirectoryDataTypeController::GetAllNodes( |
callback.Run(type(), std::move(node_list)); |
} |
+void DirectoryDataTypeController::GetStatusCounters( |
+ const StatusCountersCallback& callback) { |
+ std::vector<int> num_entries_by_type(syncer::MODEL_TYPE_COUNT, 0); |
+ std::vector<int> num_to_delete_entries_by_type(syncer::MODEL_TYPE_COUNT, 0); |
+ sync_client_->GetSyncService() |
+ ->GetUserShare() |
+ ->directory->CollectMetaHandleCounts(&num_entries_by_type, |
+ &num_to_delete_entries_by_type); |
+ std::unique_ptr<syncer::StatusCounters> counters = |
+ base::MakeUnique<syncer::StatusCounters>(); |
+ counters->num_entries_and_tombstones = num_entries_by_type[type()]; |
+ counters->num_entries = |
+ num_entries_by_type[type()] - num_to_delete_entries_by_type[type()]; |
+ base::ThreadTaskRunnerHandle::Get()->PostTask( |
+ FROM_HERE, base::Bind(callback, type(), base::Passed(&counters))); |
+}; |
+ |
void DirectoryDataTypeController::RegisterWithBackend( |
BackendDataTypeConfigurer* configurer) {} |