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

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

Issue 442383002: Move storage-related files from webkit/ to new top-level directory storage/ (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 6 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 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 11 matching lines...) Expand all
22 #include "chrome/browser/sync_file_system/drive_backend/drive_backend_util.h" 22 #include "chrome/browser/sync_file_system/drive_backend/drive_backend_util.h"
23 #include "chrome/browser/sync_file_system/drive_backend/folder_creator.h" 23 #include "chrome/browser/sync_file_system/drive_backend/folder_creator.h"
24 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.h" 24 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.h"
25 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.pb.h" 25 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.pb.h"
26 #include "chrome/browser/sync_file_system/drive_backend/sync_engine_context.h" 26 #include "chrome/browser/sync_file_system/drive_backend/sync_engine_context.h"
27 #include "chrome/browser/sync_file_system/drive_backend/sync_task_manager.h" 27 #include "chrome/browser/sync_file_system/drive_backend/sync_task_manager.h"
28 #include "chrome/browser/sync_file_system/drive_backend/sync_task_token.h" 28 #include "chrome/browser/sync_file_system/drive_backend/sync_task_token.h"
29 #include "chrome/browser/sync_file_system/logger.h" 29 #include "chrome/browser/sync_file_system/logger.h"
30 #include "google_apis/drive/drive_api_parser.h" 30 #include "google_apis/drive/drive_api_parser.h"
31 #include "net/base/mime_util.h" 31 #include "net/base/mime_util.h"
32 #include "webkit/common/fileapi/file_system_util.h" 32 #include "storage/common/fileapi/file_system_util.h"
33 33
34 namespace sync_file_system { 34 namespace sync_file_system {
35 namespace drive_backend { 35 namespace drive_backend {
36 36
37 namespace { 37 namespace {
38 38
39 scoped_ptr<FileTracker> FindTrackerByID(MetadataDatabase* metadata_database, 39 scoped_ptr<FileTracker> FindTrackerByID(MetadataDatabase* metadata_database,
40 int64 tracker_id) { 40 int64 tracker_id) {
41 scoped_ptr<FileTracker> tracker(new FileTracker); 41 scoped_ptr<FileTracker> tracker(new FileTracker);
42 if (metadata_database->FindTrackerByTrackerID(tracker_id, tracker.get())) 42 if (metadata_database->FindTrackerByTrackerID(tracker_id, tracker.get()))
(...skipping 25 matching lines...) Expand all
68 return kMimeTypeOctetStream; 68 return kMimeTypeOctetStream;
69 return mime_type; 69 return mime_type;
70 } 70 }
71 71
72 } // namespace 72 } // namespace
73 73
74 LocalToRemoteSyncer::LocalToRemoteSyncer(SyncEngineContext* sync_context, 74 LocalToRemoteSyncer::LocalToRemoteSyncer(SyncEngineContext* sync_context,
75 const SyncFileMetadata& local_metadata, 75 const SyncFileMetadata& local_metadata,
76 const FileChange& local_change, 76 const FileChange& local_change,
77 const base::FilePath& local_path, 77 const base::FilePath& local_path,
78 const fileapi::FileSystemURL& url) 78 const storage::FileSystemURL& url)
79 : sync_context_(sync_context), 79 : sync_context_(sync_context),
80 local_change_(local_change), 80 local_change_(local_change),
81 local_is_missing_(IsLocalFileMissing(local_metadata, local_change)), 81 local_is_missing_(IsLocalFileMissing(local_metadata, local_change)),
82 local_path_(local_path), 82 local_path_(local_path),
83 url_(url), 83 url_(url),
84 sync_action_(SYNC_ACTION_NONE), 84 sync_action_(SYNC_ACTION_NONE),
85 remote_file_change_id_(0), 85 remote_file_change_id_(0),
86 retry_on_success_(false), 86 retry_on_success_(false),
87 needs_remote_change_listing_(false), 87 needs_remote_change_listing_(false),
88 weak_ptr_factory_(this) { 88 weak_ptr_factory_(this) {
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
149 NOTREACHED(); 149 NOTREACHED();
150 token->RecordLog(base::StringPrintf( 150 token->RecordLog(base::StringPrintf(
151 "Detected invalid ancestor: %s", 151 "Detected invalid ancestor: %s",
152 active_ancestor_path.value().c_str())); 152 active_ancestor_path.value().c_str()));
153 SyncTaskManager::NotifyTaskDone(token.Pass(), SYNC_STATUS_FAILED); 153 SyncTaskManager::NotifyTaskDone(token.Pass(), SYNC_STATUS_FAILED);
154 return; 154 return;
155 } 155 }
156 } 156 }
157 157
158 std::vector<base::FilePath::StringType> missing_components; 158 std::vector<base::FilePath::StringType> missing_components;
159 fileapi::VirtualPath::GetComponents(missing_entries, &missing_components); 159 storage::VirtualPath::GetComponents(missing_entries, &missing_components);
160 160
161 if (!missing_components.empty()) { 161 if (!missing_components.empty()) {
162 if (local_is_missing_) { 162 if (local_is_missing_) {
163 token->RecordLog("Both local and remote are marked missing"); 163 token->RecordLog("Both local and remote are marked missing");
164 // !IsDelete() but SYNC_FILE_TYPE_UNKNOWN could happen when a file is 164 // !IsDelete() but SYNC_FILE_TYPE_UNKNOWN could happen when a file is
165 // deleted by recursive deletion (which is not recorded by tracker) 165 // deleted by recursive deletion (which is not recorded by tracker)
166 // but there're remaining changes for the same file in the tracker. 166 // but there're remaining changes for the same file in the tracker.
167 167
168 // Local file is deleted and remote file is missing, already deleted or 168 // Local file is deleted and remote file is missing, already deleted or
169 // not yet synced. There is nothing to do for the file. 169 // not yet synced. There is nothing to do for the file.
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
357 if (!metadata_database()->FindFileByFileID( 357 if (!metadata_database()->FindFileByFileID(
358 remote_file_tracker_->file_id(), &remote_file_metadata)) { 358 remote_file_tracker_->file_id(), &remote_file_metadata)) {
359 NOTREACHED(); 359 NOTREACHED();
360 MoveToBackground(base::Bind(&LocalToRemoteSyncer::CreateRemoteFolder, 360 MoveToBackground(base::Bind(&LocalToRemoteSyncer::CreateRemoteFolder,
361 weak_ptr_factory_.GetWeakPtr()), 361 weak_ptr_factory_.GetWeakPtr()),
362 token.Pass()); 362 token.Pass());
363 return; 363 return;
364 } 364 }
365 365
366 const FileDetails& remote_details = remote_file_metadata.details(); 366 const FileDetails& remote_details = remote_file_metadata.details();
367 base::FilePath title = fileapi::VirtualPath::BaseName(target_path_); 367 base::FilePath title = storage::VirtualPath::BaseName(target_path_);
368 if (!remote_details.missing() && 368 if (!remote_details.missing() &&
369 remote_details.file_kind() == FILE_KIND_FOLDER && 369 remote_details.file_kind() == FILE_KIND_FOLDER &&
370 remote_details.title() == title.AsUTF8Unsafe() && 370 remote_details.title() == title.AsUTF8Unsafe() &&
371 HasFileAsParent(remote_details, 371 HasFileAsParent(remote_details,
372 remote_parent_folder_tracker_->file_id())) { 372 remote_parent_folder_tracker_->file_id())) {
373 373
374 MoveToBackground( 374 MoveToBackground(
375 base::Bind(&LocalToRemoteSyncer::UpdateTrackerForReusedFolder, 375 base::Bind(&LocalToRemoteSyncer::UpdateTrackerForReusedFolder,
376 weak_ptr_factory_.GetWeakPtr(), 376 weak_ptr_factory_.GetWeakPtr(),
377 remote_details), 377 remote_details),
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after
568 568
569 FileMetadata file; 569 FileMetadata file;
570 if (!metadata_database()->FindFileByFileID( 570 if (!metadata_database()->FindFileByFileID(
571 remote_file_tracker_->file_id(), &file)) { 571 remote_file_tracker_->file_id(), &file)) {
572 NOTREACHED(); 572 NOTREACHED();
573 SyncCompleted(token.Pass(), SYNC_STATUS_FAILED); 573 SyncCompleted(token.Pass(), SYNC_STATUS_FAILED);
574 return; 574 return;
575 } 575 }
576 576
577 const FileDetails& details = file.details(); 577 const FileDetails& details = file.details();
578 base::FilePath title = fileapi::VirtualPath::BaseName(target_path_); 578 base::FilePath title = storage::VirtualPath::BaseName(target_path_);
579 if (!details.missing() && 579 if (!details.missing() &&
580 details.file_kind() == FILE_KIND_FILE && 580 details.file_kind() == FILE_KIND_FILE &&
581 details.title() == title.AsUTF8Unsafe() && 581 details.title() == title.AsUTF8Unsafe() &&
582 HasFileAsParent(details, 582 HasFileAsParent(details,
583 remote_parent_folder_tracker_->file_id())) { 583 remote_parent_folder_tracker_->file_id())) {
584 metadata_database()->UpdateTracker( 584 metadata_database()->UpdateTracker(
585 remote_file_tracker_->tracker_id(), 585 remote_file_tracker_->tracker_id(),
586 file.details(), 586 file.details(),
587 base::Bind(&LocalToRemoteSyncer::SyncCompleted, 587 base::Bind(&LocalToRemoteSyncer::SyncCompleted,
588 weak_ptr_factory_.GetWeakPtr(), 588 weak_ptr_factory_.GetWeakPtr(),
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
639 *entry, 639 *entry,
640 base::Bind(&LocalToRemoteSyncer::SyncCompleted, 640 base::Bind(&LocalToRemoteSyncer::SyncCompleted,
641 weak_ptr_factory_.GetWeakPtr(), 641 weak_ptr_factory_.GetWeakPtr(),
642 base::Passed(&token))); 642 base::Passed(&token)));
643 } 643 }
644 644
645 void LocalToRemoteSyncer::UploadNewFile(scoped_ptr<SyncTaskToken> token) { 645 void LocalToRemoteSyncer::UploadNewFile(scoped_ptr<SyncTaskToken> token) {
646 DCHECK(remote_parent_folder_tracker_); 646 DCHECK(remote_parent_folder_tracker_);
647 647
648 sync_action_ = SYNC_ACTION_ADDED; 648 sync_action_ = SYNC_ACTION_ADDED;
649 base::FilePath title = fileapi::VirtualPath::BaseName(target_path_); 649 base::FilePath title = storage::VirtualPath::BaseName(target_path_);
650 drive_uploader()->UploadNewFile( 650 drive_uploader()->UploadNewFile(
651 remote_parent_folder_tracker_->file_id(), 651 remote_parent_folder_tracker_->file_id(),
652 local_path_, 652 local_path_,
653 title.AsUTF8Unsafe(), 653 title.AsUTF8Unsafe(),
654 GetMimeTypeFromTitle(title), 654 GetMimeTypeFromTitle(title),
655 drive::DriveUploader::UploadNewFileOptions(), 655 drive::DriveUploader::UploadNewFileOptions(),
656 base::Bind(&LocalToRemoteSyncer::DidUploadNewFile, 656 base::Bind(&LocalToRemoteSyncer::DidUploadNewFile,
657 weak_ptr_factory_.GetWeakPtr(), 657 weak_ptr_factory_.GetWeakPtr(),
658 base::Passed(&token)), 658 base::Passed(&token)),
659 google_apis::ProgressCallback()); 659 google_apis::ProgressCallback());
(...skipping 23 matching lines...) Expand all
683 remote_parent_folder_tracker_->tracker_id(), *entry, 683 remote_parent_folder_tracker_->tracker_id(), *entry,
684 base::Bind(&LocalToRemoteSyncer::SyncCompleted, 684 base::Bind(&LocalToRemoteSyncer::SyncCompleted,
685 weak_ptr_factory_.GetWeakPtr(), 685 weak_ptr_factory_.GetWeakPtr(),
686 base::Passed(&token))); 686 base::Passed(&token)));
687 } 687 }
688 688
689 void LocalToRemoteSyncer::CreateRemoteFolder( 689 void LocalToRemoteSyncer::CreateRemoteFolder(
690 scoped_ptr<SyncTaskToken> token) { 690 scoped_ptr<SyncTaskToken> token) {
691 DCHECK(remote_parent_folder_tracker_); 691 DCHECK(remote_parent_folder_tracker_);
692 692
693 base::FilePath title = fileapi::VirtualPath::BaseName(target_path_); 693 base::FilePath title = storage::VirtualPath::BaseName(target_path_);
694 sync_action_ = SYNC_ACTION_ADDED; 694 sync_action_ = SYNC_ACTION_ADDED;
695 695
696 DCHECK(!folder_creator_); 696 DCHECK(!folder_creator_);
697 folder_creator_.reset(new FolderCreator( 697 folder_creator_.reset(new FolderCreator(
698 drive_service(), metadata_database(), 698 drive_service(), metadata_database(),
699 remote_parent_folder_tracker_->file_id(), 699 remote_parent_folder_tracker_->file_id(),
700 title.AsUTF8Unsafe())); 700 title.AsUTF8Unsafe()));
701 folder_creator_->Run(base::Bind( 701 folder_creator_->Run(base::Bind(
702 &LocalToRemoteSyncer::DidCreateRemoteFolder, 702 &LocalToRemoteSyncer::DidCreateRemoteFolder,
703 weak_ptr_factory_.GetWeakPtr(), 703 weak_ptr_factory_.GetWeakPtr(),
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
772 set_used_network(true); 772 set_used_network(true);
773 return sync_context_->GetDriveUploader(); 773 return sync_context_->GetDriveUploader();
774 } 774 }
775 775
776 MetadataDatabase* LocalToRemoteSyncer::metadata_database() { 776 MetadataDatabase* LocalToRemoteSyncer::metadata_database() {
777 return sync_context_->GetMetadataDatabase(); 777 return sync_context_->GetMetadataDatabase();
778 } 778 }
779 779
780 } // namespace drive_backend 780 } // namespace drive_backend
781 } // namespace sync_file_system 781 } // namespace sync_file_system
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698