| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |