Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(21)

Unified Diff: components/sync/driver/directory_data_type_controller.cc

Issue 2276943006: [USS] Move GetAllNodes from backend to controller (Closed)
Patch Set: Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..a6a98e2d7bc9cb7b9745bcbb135aaa3d2a2a70d1 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,25 @@ bool DirectoryDataTypeController::ShouldLoadModelBeforeConfigure() const {
return false;
}
+void DirectoryDataTypeController::GetAllNodes(
+ scoped_refptr<base::SequencedTaskRunner> task_runner,
+ const AllNodesCallback& callback) {
+ ScopedVector<base::ListValue> node_lists;
+ std::vector<syncer::ModelType> types_vector;
+ types_vector.push_back(type());
+ if (state() == DataTypeController::DISABLED) {
+ node_lists.push_back(new base::ListValue());
+ } else {
+ node_lists.push_back(
+ GetAllNodesForTypeFromDirectory(
+ type(),
+ sync_client_->GetSyncService()->GetUserShare()->directory.get())
+ .release());
+ }
+ task_runner->PostTask(
+ FROM_HERE, base::Bind(callback, types_vector, base::Passed(&node_lists)));
+}
+
void DirectoryDataTypeController::RegisterWithBackend(
BackendDataTypeConfigurer* configurer) {}
@@ -38,4 +62,16 @@ 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);
+ std::unique_ptr<base::ListValue> nodes(
+ directory->GetNodeDetailsForType(&trans, type));
+ return nodes;
maxbogue 2016/08/25 23:38:59 nit: you could probably just do "return base::Wrap
Gang Wu 2016/08/26 16:48:04 Done.
+}
+
} // namespace sync_driver

Powered by Google App Engine
This is Rietveld 408576698