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

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

Issue 148483009: [SyncFS] Force activate folder tracker on folder creation conflict case (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 10 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
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 611 matching lines...) Expand 10 before | Expand all | Expand 10 after
622 if (status == SYNC_FILE_ERROR_NOT_FOUND) 622 if (status == SYNC_FILE_ERROR_NOT_FOUND)
623 needs_remote_change_listing_ = true; 623 needs_remote_change_listing_ = true;
624 624
625 scoped_ptr<FolderCreator> deleter = folder_creator_.Pass(); 625 scoped_ptr<FolderCreator> deleter = folder_creator_.Pass();
626 if (status != SYNC_STATUS_OK) { 626 if (status != SYNC_STATUS_OK) {
627 callback.Run(status); 627 callback.Run(status);
628 return; 628 return;
629 } 629 }
630 630
631 MetadataDatabase::ActivationStatus activation_status = 631 MetadataDatabase::ActivationStatus activation_status =
632 metadata_database()->TryNoSideEffectActivation( 632 metadata_database()->TryActivateTracker(
633 remote_parent_folder_tracker_->tracker_id(), 633 remote_parent_folder_tracker_->tracker_id(),
634 file_id, callback); 634 file_id, callback);
635 switch (activation_status) { 635 switch (activation_status) {
636 case MetadataDatabase::ACTIVATION_PENDING: 636 case MetadataDatabase::ACTIVATION_PENDING:
637 // |callback| will be invoked by MetadataDatabase later in this case. 637 // |callback| will be invoked by MetadataDatabase later in this case.
638 return; 638 return;
639 case MetadataDatabase::ACTIVATION_FAILED_ANOTHER_ACTIVE_TRACKER: 639 case MetadataDatabase::ACTIVATION_FAILED_ANOTHER_ACTIVE_TRACKER:
640 // The activation failed due to another tracker that has another parent. 640 // The activation failed due to another tracker that has another parent.
641 // Detach the folder from the current parent to avoid using this folder as 641 // Detach the folder from the current parent to avoid using this folder as
642 // active folder. 642 // active folder.
643 drive_service()->RemoveResourceFromDirectory( 643 drive_service()->RemoveResourceFromDirectory(
644 remote_parent_folder_tracker_->file_id(), file_id, 644 remote_parent_folder_tracker_->file_id(), file_id,
645 base::Bind(&LocalToRemoteSyncer::DidDetachResourceForCreationConflict, 645 base::Bind(&LocalToRemoteSyncer::DidDetachResourceForCreationConflict,
646 weak_ptr_factory_.GetWeakPtr(), 646 weak_ptr_factory_.GetWeakPtr(),
647 callback)); 647 callback));
648 return; 648 return;
649 case MetadataDatabase::ACTIVATION_FAILED_SAME_PATH_TRACKER:
650 callback.Run(SYNC_STATUS_FILE_BUSY);
651 return;
652 } 649 }
653 650
654 NOTREACHED(); 651 NOTREACHED();
655 callback.Run(SYNC_STATUS_FAILED); 652 callback.Run(SYNC_STATUS_FAILED);
656 return; 653 return;
657 } 654 }
658 655
659 void LocalToRemoteSyncer::DidDetachResourceForCreationConflict( 656 void LocalToRemoteSyncer::DidDetachResourceForCreationConflict(
660 const SyncStatusCallback& callback, 657 const SyncStatusCallback& callback,
661 google_apis::GDataErrorCode error) { 658 google_apis::GDataErrorCode error) {
(...skipping 21 matching lines...) Expand all
683 set_used_network(true); 680 set_used_network(true);
684 return sync_context_->GetDriveUploader(); 681 return sync_context_->GetDriveUploader();
685 } 682 }
686 683
687 MetadataDatabase* LocalToRemoteSyncer::metadata_database() { 684 MetadataDatabase* LocalToRemoteSyncer::metadata_database() {
688 return sync_context_->GetMetadataDatabase(); 685 return sync_context_->GetMetadataDatabase();
689 } 686 }
690 687
691 } // namespace drive_backend 688 } // namespace drive_backend
692 } // namespace sync_file_system 689 } // namespace sync_file_system
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698