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

Side by Side Diff: chrome/browser/sync_file_system/drive_backend/local_to_remote_syncer.cc

Issue 336713003: [SyncFS] Replace callback with token in LocalToRemoteSyncer::DidDeleteForCreateFolder (1) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 6 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/sync_file_system/drive_backend/local_to_remote_syncer.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/sync_file_system/drive_backend/local_to_remote_syncer.h " 5 #include "chrome/browser/sync_file_system/drive_backend/local_to_remote_syncer.h "
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/callback.h" 10 #include "base/callback.h"
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
179 return; 179 return;
180 } 180 }
181 181
182 DCHECK(active_ancestor_details.file_kind() == FILE_KIND_FILE); 182 DCHECK(active_ancestor_details.file_kind() == FILE_KIND_FILE);
183 remote_parent_folder_tracker_ = 183 remote_parent_folder_tracker_ =
184 FindTrackerByID(metadata_database(), 184 FindTrackerByID(metadata_database(),
185 active_ancestor_tracker->parent_tracker_id()); 185 active_ancestor_tracker->parent_tracker_id());
186 remote_file_tracker_ = active_ancestor_tracker.Pass(); 186 remote_file_tracker_ = active_ancestor_tracker.Pass();
187 target_path_ = active_ancestor_path; 187 target_path_ = active_ancestor_path;
188 token->RecordLog("Detected non-folder file in its path."); 188 token->RecordLog("Detected non-folder file in its path.");
189 DeleteRemoteFile(base::Bind( 189 DeleteRemoteFile(base::Bind(&LocalToRemoteSyncer::DidDeleteForCreateFolder,
190 &LocalToRemoteSyncer::DidDeleteForCreateFolder, 190 weak_ptr_factory_.GetWeakPtr(),
191 weak_ptr_factory_.GetWeakPtr(), 191 base::Passed(&token)));
192 base::Bind(&LocalToRemoteSyncer::SyncCompleted,
193 weak_ptr_factory_.GetWeakPtr(), base::Passed(&token))));
194 return; 192 return;
195 } 193 }
196 194
197 if (missing_components.empty()) { 195 if (missing_components.empty()) {
198 // The original target has remote active file/folder. 196 // The original target has remote active file/folder.
199 remote_parent_folder_tracker_ = 197 remote_parent_folder_tracker_ =
200 FindTrackerByID(metadata_database(), 198 FindTrackerByID(metadata_database(),
201 active_ancestor_tracker->parent_tracker_id()); 199 active_ancestor_tracker->parent_tracker_id());
202 remote_file_tracker_ = active_ancestor_tracker.Pass(); 200 remote_file_tracker_ = active_ancestor_tracker.Pass();
203 target_path_ = url_.path(); 201 target_path_ = url_.path();
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
350 return; 348 return;
351 } 349 }
352 350
353 DCHECK(local_change_.IsDirectory()); 351 DCHECK(local_change_.IsDirectory());
354 if (synced_details.file_kind() == FILE_KIND_FILE) { 352 if (synced_details.file_kind() == FILE_KIND_FILE) {
355 // Non-conflicting local folder creation to existing remote *file*. 353 // Non-conflicting local folder creation to existing remote *file*.
356 // Assuming this case as local file deletion + local folder creation, delete 354 // Assuming this case as local file deletion + local folder creation, delete
357 // the remote file and create a remote folder. 355 // the remote file and create a remote folder.
358 DeleteRemoteFile(base::Bind(&LocalToRemoteSyncer::DidDeleteForCreateFolder, 356 DeleteRemoteFile(base::Bind(&LocalToRemoteSyncer::DidDeleteForCreateFolder,
359 weak_ptr_factory_.GetWeakPtr(), 357 weak_ptr_factory_.GetWeakPtr(),
360 base::Bind(&LocalToRemoteSyncer::SyncCompleted, 358 base::Passed(&token)));
361 weak_ptr_factory_.GetWeakPtr(),
362 base::Passed(&token))));
363 return; 359 return;
364 } 360 }
365 361
366 // Non-conflicting local folder creation to existing remote folder. 362 // Non-conflicting local folder creation to existing remote folder.
367 DCHECK_EQ(FILE_KIND_FOLDER, synced_details.file_kind()); 363 DCHECK_EQ(FILE_KIND_FOLDER, synced_details.file_kind());
368 SyncCompleted(token.Pass(), SYNC_STATUS_OK); 364 SyncCompleted(token.Pass(), SYNC_STATUS_OK);
369 } 365 }
370 366
371 void LocalToRemoteSyncer::DeleteRemoteFile( 367 void LocalToRemoteSyncer::DeleteRemoteFile(
372 const SyncStatusCallback& callback) { 368 const SyncStatusCallback& callback) {
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
571 567
572 if (status != SYNC_STATUS_OK) { 568 if (status != SYNC_STATUS_OK) {
573 callback.Run(status); 569 callback.Run(status);
574 return; 570 return;
575 } 571 }
576 572
577 UploadNewFile(callback); 573 UploadNewFile(callback);
578 } 574 }
579 575
580 void LocalToRemoteSyncer::DidDeleteForCreateFolder( 576 void LocalToRemoteSyncer::DidDeleteForCreateFolder(
581 const SyncStatusCallback& callback, 577 scoped_ptr<SyncTaskToken> token,
582 SyncStatusCode status) { 578 SyncStatusCode status) {
583 if (status == SYNC_STATUS_HAS_CONFLICT) { 579 if (status == SYNC_STATUS_HAS_CONFLICT) {
584 UpdateRemoteMetadata(remote_file_tracker_->file_id(), 580 UpdateRemoteMetadata(
585 base::Bind(&ReturnRetryOnSuccess, callback)); 581 remote_file_tracker_->file_id(),
582 base::Bind(&ReturnRetryOnSuccess,
583 base::Bind(&LocalToRemoteSyncer::SyncCompleted,
584 weak_ptr_factory_.GetWeakPtr(),
585 base::Passed(&token))));
586 return; 586 return;
587 } 587 }
588 588
589 if (status != SYNC_STATUS_OK) { 589 if (status != SYNC_STATUS_OK) {
590 callback.Run(status); 590 SyncCompleted(token.Pass(), status);
591 return; 591 return;
592 } 592 }
593 593
594 CreateRemoteFolder(callback); 594 CreateRemoteFolder(base::Bind(&LocalToRemoteSyncer::SyncCompleted,
595 weak_ptr_factory_.GetWeakPtr(),
596 base::Passed(&token)));
595 } 597 }
596 598
597 void LocalToRemoteSyncer::UploadNewFile(const SyncStatusCallback& callback) { 599 void LocalToRemoteSyncer::UploadNewFile(const SyncStatusCallback& callback) {
598 DCHECK(remote_parent_folder_tracker_); 600 DCHECK(remote_parent_folder_tracker_);
599 601
600 sync_action_ = SYNC_ACTION_ADDED; 602 sync_action_ = SYNC_ACTION_ADDED;
601 base::FilePath title = fileapi::VirtualPath::BaseName(target_path_); 603 base::FilePath title = fileapi::VirtualPath::BaseName(target_path_);
602 drive_uploader()->UploadNewFile( 604 drive_uploader()->UploadNewFile(
603 remote_parent_folder_tracker_->file_id(), 605 remote_parent_folder_tracker_->file_id(),
604 local_path_, 606 local_path_,
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
718 set_used_network(true); 720 set_used_network(true);
719 return sync_context_->GetDriveUploader(); 721 return sync_context_->GetDriveUploader();
720 } 722 }
721 723
722 MetadataDatabase* LocalToRemoteSyncer::metadata_database() { 724 MetadataDatabase* LocalToRemoteSyncer::metadata_database() {
723 return sync_context_->GetMetadataDatabase(); 725 return sync_context_->GetMetadataDatabase();
724 } 726 }
725 727
726 } // namespace drive_backend 728 } // namespace drive_backend
727 } // namespace sync_file_system 729 } // namespace sync_file_system
OLDNEW
« no previous file with comments | « chrome/browser/sync_file_system/drive_backend/local_to_remote_syncer.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698