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

Unified Diff: chrome/browser/sync_file_system/drive_backend/remote_to_local_syncer.cc

Issue 59193003: [SyncFS] Add RemoteToLocalSyncer skeleton (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 7 years, 1 month 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: chrome/browser/sync_file_system/drive_backend/remote_to_local_syncer.cc
diff --git a/chrome/browser/sync_file_system/drive_backend/remote_to_local_syncer.cc b/chrome/browser/sync_file_system/drive_backend/remote_to_local_syncer.cc
index b4c560da1fc7e5a8a4503f3a325274b8bed6dea3..6108db7299f0b38e2e1a78d1844bdfcf8a32cb59 100644
--- a/chrome/browser/sync_file_system/drive_backend/remote_to_local_syncer.cc
+++ b/chrome/browser/sync_file_system/drive_backend/remote_to_local_syncer.cc
@@ -4,14 +4,34 @@
#include "chrome/browser/sync_file_system/drive_backend/remote_to_local_syncer.h"
+#include "base/bind.h"
#include "base/callback.h"
+#include "base/location.h"
#include "base/logging.h"
+#include "base/message_loop/message_loop_proxy.h"
+#include "chrome/browser/sync_file_system/drive_backend/metadata_database.h"
+#include "chrome/browser/sync_file_system/drive_backend/sync_engine_context.h"
namespace sync_file_system {
namespace drive_backend {
-RemoteToLocalSyncer::RemoteToLocalSyncer() {
+namespace {
+
+bool BuildFileSystemURLForTracker(
+ MetadataDatabase* metadata_database,
+ int tracker_id,
+ fileapi::FileSystemURL* url) {
NOTIMPLEMENTED();
+ return false;
+}
+
+} // namespace
+
+RemoteToLocalSyncer::RemoteToLocalSyncer(SyncEngineContext* sync_context,
+ int priorities)
+ : sync_context_(sync_context),
+ priorities_(priorities),
+ weak_ptr_factory_(this) {
}
RemoteToLocalSyncer::~RemoteToLocalSyncer() {
@@ -19,9 +39,73 @@ RemoteToLocalSyncer::~RemoteToLocalSyncer() {
}
void RemoteToLocalSyncer::Run(const SyncStatusCallback& callback) {
+ if (priorities_ & PRIORITY_NORMAL) {
+ if (metadata_database()->GetNormalPriorityDirtyTracker(&dirty_tracker_)) {
+ ResolveTrivial(callback);
+ return;
+ }
+ }
+
+ if (priorities_ & PRIORITY_LOW) {
+ if (metadata_database()->GetNormalPriorityDirtyTracker(&dirty_tracker_)) {
kinuko 2013/11/05 13:36:13 GetLowPriorityDirtyTracker?
tzik 2013/11/06 04:56:08 Done.
+ ResolveTrivial(callback);
+ return;
+ }
+ }
+
+ base::MessageLoopProxy::current()->PostTask(
+ FROM_HERE,
+ base::Bind(callback, SYNC_STATUS_NO_CHANGE_TO_SYNC));
+}
+
+void RemoteToLocalSyncer::ResolveTrivial(const SyncStatusCallback& callback) {
+ metadata_database()->ResolveTrivialDirtiness(
+ dirty_tracker_.tracker_id(),
+ base::Bind(&RemoteToLocalSyncer::DidResolveTrivial,
+ weak_ptr_factory_.GetWeakPtr(), callback));
+}
+
+void RemoteToLocalSyncer::DidResolveTrivial(
+ const SyncStatusCallback& callback,
+ SyncStatusCode status) {
+ if (status == SYNC_STATUS_OK) {
+ callback.Run(SYNC_STATUS_OK);
+ return;
+ }
+
+ DCHECK_EQ(SYNC_STATUS_NO_CHANGE_TO_SYNC, status);
+
+ fileapi::FileSystemURL url;
+ BuildFileSystemURLForTracker(metadata_database(),
+ dirty_tracker_.tracker_id(),
+ &url);
+ remote_change_processor()->PrepareForProcessRemoteChange(
+ url,
+ base::Bind(&RemoteToLocalSyncer::DidPrepare,
+ weak_ptr_factory_.GetWeakPtr(),
+ callback));
+}
+
+void RemoteToLocalSyncer::DidPrepare(const SyncStatusCallback& callback,
+ SyncStatusCode status,
+ const SyncFileMetadata& metadata,
+ const FileChangeList& changes) {
NOTIMPLEMENTED();
callback.Run(SYNC_STATUS_FAILED);
}
+drive::DriveServiceInterface* RemoteToLocalSyncer::drive_service() {
+ return sync_context_->GetDriveService();
+}
+
+MetadataDatabase* RemoteToLocalSyncer::metadata_database() {
+ return sync_context_->GetMetadataDatabase();
+}
+
+RemoteChangeProcessor* RemoteToLocalSyncer::remote_change_processor() {
+ DCHECK(sync_context_->GetRemoteChangeProcessor());
+ return sync_context_->GetRemoteChangeProcessor();
+}
+
} // namespace drive_backend
} // namespace sync_file_system

Powered by Google App Engine
This is Rietveld 408576698