| 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/chromeos/drive/sync/entry_revert_performer.h" | 5 #include "chrome/browser/chromeos/drive/sync/entry_revert_performer.h" |
| 6 | 6 |
| 7 #include "chrome/browser/chromeos/drive/change_list_processor.h" | 7 #include "chrome/browser/chromeos/drive/change_list_processor.h" |
| 8 #include "chrome/browser/chromeos/drive/drive.pb.h" | 8 #include "chrome/browser/chromeos/drive/drive.pb.h" |
| 9 #include "chrome/browser/chromeos/drive/file_system/operation_observer.h" | 9 #include "chrome/browser/chromeos/drive/file_system/operation_observer.h" |
| 10 #include "chrome/browser/chromeos/drive/job_scheduler.h" | 10 #include "chrome/browser/chromeos/drive/job_scheduler.h" |
| 11 #include "chrome/browser/chromeos/drive/resource_entry_conversion.h" | 11 #include "chrome/browser/chromeos/drive/resource_entry_conversion.h" |
| 12 #include "chrome/browser/chromeos/drive/resource_metadata.h" | 12 #include "chrome/browser/chromeos/drive/resource_metadata.h" |
| 13 #include "chrome/browser/drive/drive_api_util.h" |
| 13 #include "content/public/browser/browser_thread.h" | 14 #include "content/public/browser/browser_thread.h" |
| 15 #include "google_apis/drive/drive_api_parser.h" |
| 14 #include "google_apis/drive/gdata_wapi_parser.h" | 16 #include "google_apis/drive/gdata_wapi_parser.h" |
| 15 | 17 |
| 16 using content::BrowserThread; | 18 using content::BrowserThread; |
| 17 | 19 |
| 18 namespace drive { | 20 namespace drive { |
| 19 namespace internal { | 21 namespace internal { |
| 20 namespace { | 22 namespace { |
| 21 | 23 |
| 22 FileError FinishRevert(ResourceMetadata* metadata, | 24 FileError FinishRevert(ResourceMetadata* metadata, |
| 23 const std::string& local_id, | 25 const std::string& local_id, |
| 24 google_apis::GDataErrorCode status, | 26 google_apis::GDataErrorCode status, |
| 25 scoped_ptr<google_apis::ResourceEntry> resource_entry, | 27 scoped_ptr<google_apis::FileResource> file_resource, |
| 26 std::set<base::FilePath>* changed_directories) { | 28 std::set<base::FilePath>* changed_directories) { |
| 27 ResourceEntry entry; | 29 ResourceEntry entry; |
| 28 std::string parent_resource_id; | 30 std::string parent_resource_id; |
| 29 FileError error = GDataToFileError(status); | 31 FileError error = GDataToFileError(status); |
| 30 switch (error) { | 32 switch (error) { |
| 31 case FILE_ERROR_OK: | 33 case FILE_ERROR_OK: |
| 32 if (!ConvertToResourceEntry(*resource_entry, &entry, &parent_resource_id)) | 34 if (!ConvertToResourceEntry( |
| 35 *util::ConvertFileResourceToResourceEntry(*file_resource), |
| 36 &entry, &parent_resource_id)) |
| 33 return FILE_ERROR_NOT_A_FILE; | 37 return FILE_ERROR_NOT_A_FILE; |
| 34 break; | 38 break; |
| 35 | 39 |
| 36 case FILE_ERROR_NOT_FOUND: | 40 case FILE_ERROR_NOT_FOUND: |
| 37 entry.set_deleted(true); | 41 entry.set_deleted(true); |
| 38 break; | 42 break; |
| 39 | 43 |
| 40 default: | 44 default: |
| 41 return error; | 45 return error; |
| 42 } | 46 } |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 119 DCHECK(!callback.is_null()); | 123 DCHECK(!callback.is_null()); |
| 120 | 124 |
| 121 if (error == FILE_ERROR_OK && entry->resource_id().empty()) | 125 if (error == FILE_ERROR_OK && entry->resource_id().empty()) |
| 122 error = FILE_ERROR_INVALID_OPERATION; | 126 error = FILE_ERROR_INVALID_OPERATION; |
| 123 | 127 |
| 124 if (error != FILE_ERROR_OK) { | 128 if (error != FILE_ERROR_OK) { |
| 125 callback.Run(error); | 129 callback.Run(error); |
| 126 return; | 130 return; |
| 127 } | 131 } |
| 128 | 132 |
| 129 scheduler_->GetResourceEntry( | 133 scheduler_->GetFileResource( |
| 130 entry->resource_id(), | 134 entry->resource_id(), |
| 131 context, | 135 context, |
| 132 base::Bind(&EntryRevertPerformer::RevertEntryAfterGetResourceEntry, | 136 base::Bind(&EntryRevertPerformer::RevertEntryAfterGetFileResource, |
| 133 weak_ptr_factory_.GetWeakPtr(), callback, entry->local_id())); | 137 weak_ptr_factory_.GetWeakPtr(), callback, entry->local_id())); |
| 134 } | 138 } |
| 135 | 139 |
| 136 void EntryRevertPerformer::RevertEntryAfterGetResourceEntry( | 140 void EntryRevertPerformer::RevertEntryAfterGetFileResource( |
| 137 const FileOperationCallback& callback, | 141 const FileOperationCallback& callback, |
| 138 const std::string& local_id, | 142 const std::string& local_id, |
| 139 google_apis::GDataErrorCode status, | 143 google_apis::GDataErrorCode status, |
| 140 scoped_ptr<google_apis::ResourceEntry> resource_entry) { | 144 scoped_ptr<google_apis::FileResource> entry) { |
| 141 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 145 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 142 DCHECK(!callback.is_null()); | 146 DCHECK(!callback.is_null()); |
| 143 | 147 |
| 144 std::set<base::FilePath>* changed_directories = new std::set<base::FilePath>; | 148 std::set<base::FilePath>* changed_directories = new std::set<base::FilePath>; |
| 145 base::PostTaskAndReplyWithResult( | 149 base::PostTaskAndReplyWithResult( |
| 146 blocking_task_runner_.get(), | 150 blocking_task_runner_.get(), |
| 147 FROM_HERE, | 151 FROM_HERE, |
| 148 base::Bind(&FinishRevert, metadata_, local_id, status, | 152 base::Bind(&FinishRevert, metadata_, local_id, status, |
| 149 base::Passed(&resource_entry), changed_directories), | 153 base::Passed(&entry), changed_directories), |
| 150 base::Bind(&EntryRevertPerformer::RevertEntryAfterFinishRevert, | 154 base::Bind(&EntryRevertPerformer::RevertEntryAfterFinishRevert, |
| 151 weak_ptr_factory_.GetWeakPtr(), callback, | 155 weak_ptr_factory_.GetWeakPtr(), callback, |
| 152 base::Owned(changed_directories))); | 156 base::Owned(changed_directories))); |
| 153 } | 157 } |
| 154 | 158 |
| 155 void EntryRevertPerformer::RevertEntryAfterFinishRevert( | 159 void EntryRevertPerformer::RevertEntryAfterFinishRevert( |
| 156 const FileOperationCallback& callback, | 160 const FileOperationCallback& callback, |
| 157 const std::set<base::FilePath>* changed_directories, | 161 const std::set<base::FilePath>* changed_directories, |
| 158 FileError error) { | 162 FileError error) { |
| 159 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 163 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 160 DCHECK(!callback.is_null()); | 164 DCHECK(!callback.is_null()); |
| 161 | 165 |
| 162 for (std::set<base::FilePath>::const_iterator it = | 166 for (std::set<base::FilePath>::const_iterator it = |
| 163 changed_directories->begin(); it != changed_directories->end(); ++it) | 167 changed_directories->begin(); it != changed_directories->end(); ++it) |
| 164 observer_->OnDirectoryChangedByOperation(*it); | 168 observer_->OnDirectoryChangedByOperation(*it); |
| 165 | 169 |
| 166 callback.Run(error); | 170 callback.Run(error); |
| 167 } | 171 } |
| 168 | 172 |
| 169 } // namespace internal | 173 } // namespace internal |
| 170 } // namespace drive | 174 } // namespace drive |
| OLD | NEW |