| 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 2a4c332c65080980be45b1425dd8f1bdbe41fc7d..823b5f1a546b9292fc84240264ec6d9990be85b6 100644
|
| --- a/components/sync/driver/directory_data_type_controller.cc
|
| +++ b/components/sync/driver/directory_data_type_controller.cc
|
| @@ -4,14 +4,19 @@
|
|
|
| #include "components/sync/driver/directory_data_type_controller.h"
|
|
|
| +#include "components/sync/core/user_share.h"
|
| #include "components/sync/driver/backend_data_type_configurer.h"
|
| +#include "components/sync/driver/sync_service.h"
|
| +#include "components/sync/syncable/syncable_read_transaction.h"
|
|
|
| namespace sync_driver {
|
|
|
| DirectoryDataTypeController::DirectoryDataTypeController(
|
| const scoped_refptr<base::SingleThreadTaskRunner>& ui_thread,
|
| - const base::Closure& error_callback)
|
| - : DataTypeController(ui_thread, error_callback) {}
|
| + const base::Closure& error_callback,
|
| + SyncClient* sync_client)
|
| + : DataTypeController(ui_thread, error_callback),
|
| + sync_client_(sync_client) {}
|
|
|
| DirectoryDataTypeController::~DirectoryDataTypeController() {}
|
|
|
| @@ -22,6 +27,17 @@ bool DirectoryDataTypeController::ShouldLoadModelBeforeConfigure() const {
|
| return false;
|
| }
|
|
|
| +void DirectoryDataTypeController::GetAllNodes(
|
| + const AllNodesCallback& callback) {
|
| + std::unique_ptr<base::ListValue> node_list(new base::ListValue());
|
| + if (state() != DataTypeController::DISABLED) {
|
| + node_list = GetAllNodesForTypeFromDirectory(
|
| + type(),
|
| + sync_client_->GetSyncService()->GetUserShare()->directory.get());
|
| + }
|
| + callback.Run(type(), std::move(node_list));
|
| +}
|
| +
|
| void DirectoryDataTypeController::RegisterWithBackend(
|
| BackendDataTypeConfigurer* configurer) {}
|
|
|
| @@ -38,4 +54,14 @@ void DirectoryDataTypeController::DeactivateDataType(
|
| configurer->DeactivateDirectoryDataType(type());
|
| }
|
|
|
| +// static
|
| +std::unique_ptr<base::ListValue>
|
| +DirectoryDataTypeController::GetAllNodesForTypeFromDirectory(
|
| + syncer::ModelType type,
|
| + syncer::syncable::Directory* directory) {
|
| + DCHECK(directory);
|
| + syncer::syncable::ReadTransaction trans(FROM_HERE, directory);
|
| + return directory->GetNodeDetailsForType(&trans, type);
|
| +}
|
| +
|
| } // namespace sync_driver
|
|
|