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 |