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/conflict_resolver.h" | 5 #include "chrome/browser/sync_file_system/drive_backend/conflict_resolver.h" |
6 | 6 |
7 #include "base/callback.h" | 7 #include "base/callback.h" |
8 #include "base/format_macros.h" | 8 #include "base/format_macros.h" |
9 #include "base/location.h" | 9 #include "base/location.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
137 "Detach %s from %s", | 137 "Detach %s from %s", |
138 target_file_id_.c_str(), parent_folder_id.c_str())); | 138 target_file_id_.c_str(), parent_folder_id.c_str())); |
139 | 139 |
140 drive_service()->RemoveResourceFromDirectory( | 140 drive_service()->RemoveResourceFromDirectory( |
141 parent_folder_id, target_file_id_, | 141 parent_folder_id, target_file_id_, |
142 base::Bind(&ConflictResolver::DidDetachFromParent, | 142 base::Bind(&ConflictResolver::DidDetachFromParent, |
143 weak_ptr_factory_.GetWeakPtr(), | 143 weak_ptr_factory_.GetWeakPtr(), |
144 base::Passed(&token))); | 144 base::Passed(&token))); |
145 } | 145 } |
146 | 146 |
147 void ConflictResolver::DidDetachFromParent(scoped_ptr<SyncTaskToken> token, | 147 void ConflictResolver::DidDetachFromParent( |
148 google_apis::GDataErrorCode error) { | 148 scoped_ptr<SyncTaskToken> token, |
149 SyncStatusCode status = GDataErrorCodeToSyncStatusCode(error); | 149 google_apis::DriveApiErrorCode error) { |
| 150 SyncStatusCode status = DriveApiErrorCodeToSyncStatusCode(error); |
150 if (status != SYNC_STATUS_OK) { | 151 if (status != SYNC_STATUS_OK) { |
151 SyncTaskManager::NotifyTaskDone(token.Pass(), status); | 152 SyncTaskManager::NotifyTaskDone(token.Pass(), status); |
152 return; | 153 return; |
153 } | 154 } |
154 | 155 |
155 if (!parents_to_remove_.empty()) { | 156 if (!parents_to_remove_.empty()) { |
156 DetachFromNonPrimaryParents(token.Pass()); | 157 DetachFromNonPrimaryParents(token.Pass()); |
157 return; | 158 return; |
158 } | 159 } |
159 | 160 |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
241 // the folder identified by |target_file_id_|. | 242 // the folder identified by |target_file_id_|. |
242 drive_service()->DeleteResource( | 243 drive_service()->DeleteResource( |
243 file_id, etag, | 244 file_id, etag, |
244 base::Bind(&ConflictResolver::DidRemoveFile, | 245 base::Bind(&ConflictResolver::DidRemoveFile, |
245 weak_ptr_factory_.GetWeakPtr(), | 246 weak_ptr_factory_.GetWeakPtr(), |
246 base::Passed(&token), file_id)); | 247 base::Passed(&token), file_id)); |
247 } | 248 } |
248 | 249 |
249 void ConflictResolver::DidRemoveFile(scoped_ptr<SyncTaskToken> token, | 250 void ConflictResolver::DidRemoveFile(scoped_ptr<SyncTaskToken> token, |
250 const std::string& file_id, | 251 const std::string& file_id, |
251 google_apis::GDataErrorCode error) { | 252 google_apis::DriveApiErrorCode error) { |
252 if (error == google_apis::HTTP_PRECONDITION || | 253 if (error == google_apis::HTTP_PRECONDITION || |
253 error == google_apis::HTTP_CONFLICT) { | 254 error == google_apis::HTTP_CONFLICT) { |
254 UpdateFileMetadata(file_id, token.Pass()); | 255 UpdateFileMetadata(file_id, token.Pass()); |
255 return; | 256 return; |
256 } | 257 } |
257 | 258 |
258 SyncStatusCode status = GDataErrorCodeToSyncStatusCode(error); | 259 SyncStatusCode status = DriveApiErrorCodeToSyncStatusCode(error); |
259 if (status != SYNC_STATUS_OK && error != google_apis::HTTP_NOT_FOUND) { | 260 if (status != SYNC_STATUS_OK && error != google_apis::HTTP_NOT_FOUND) { |
260 SyncTaskManager::NotifyTaskDone(token.Pass(), status); | 261 SyncTaskManager::NotifyTaskDone(token.Pass(), status); |
261 return; | 262 return; |
262 } | 263 } |
263 | 264 |
264 deleted_file_ids_.push_back(file_id); | 265 deleted_file_ids_.push_back(file_id); |
265 if (!non_primary_file_ids_.empty()) { | 266 if (!non_primary_file_ids_.empty()) { |
266 RemoveNonPrimaryFiles(token.Pass()); | 267 RemoveNonPrimaryFiles(token.Pass()); |
267 return; | 268 return; |
268 } | 269 } |
(...skipping 14 matching lines...) Expand all Loading... |
283 drive_service()->GetFileResource( | 284 drive_service()->GetFileResource( |
284 file_id, | 285 file_id, |
285 base::Bind(&ConflictResolver::DidGetRemoteMetadata, | 286 base::Bind(&ConflictResolver::DidGetRemoteMetadata, |
286 weak_ptr_factory_.GetWeakPtr(), file_id, | 287 weak_ptr_factory_.GetWeakPtr(), file_id, |
287 base::Passed(&token))); | 288 base::Passed(&token))); |
288 } | 289 } |
289 | 290 |
290 void ConflictResolver::DidGetRemoteMetadata( | 291 void ConflictResolver::DidGetRemoteMetadata( |
291 const std::string& file_id, | 292 const std::string& file_id, |
292 scoped_ptr<SyncTaskToken> token, | 293 scoped_ptr<SyncTaskToken> token, |
293 google_apis::GDataErrorCode error, | 294 google_apis::DriveApiErrorCode error, |
294 scoped_ptr<google_apis::FileResource> entry) { | 295 scoped_ptr<google_apis::FileResource> entry) { |
295 SyncStatusCode status = GDataErrorCodeToSyncStatusCode(error); | 296 SyncStatusCode status = DriveApiErrorCodeToSyncStatusCode(error); |
296 if (status != SYNC_STATUS_OK && error != google_apis::HTTP_NOT_FOUND) { | 297 if (status != SYNC_STATUS_OK && error != google_apis::HTTP_NOT_FOUND) { |
297 SyncTaskManager::NotifyTaskDone(token.Pass(), status); | 298 SyncTaskManager::NotifyTaskDone(token.Pass(), status); |
298 return; | 299 return; |
299 } | 300 } |
300 | 301 |
301 if (error != google_apis::HTTP_NOT_FOUND) { | 302 if (error != google_apis::HTTP_NOT_FOUND) { |
302 status = metadata_database()->UpdateByDeletedRemoteFile(file_id); | 303 status = metadata_database()->UpdateByDeletedRemoteFile(file_id); |
303 SyncTaskManager::NotifyTaskDone(token.Pass(), status); | 304 SyncTaskManager::NotifyTaskDone(token.Pass(), status); |
304 return; | 305 return; |
305 } | 306 } |
(...skipping 12 matching lines...) Expand all Loading... |
318 set_used_network(true); | 319 set_used_network(true); |
319 return sync_context_->GetDriveService(); | 320 return sync_context_->GetDriveService(); |
320 } | 321 } |
321 | 322 |
322 MetadataDatabase* ConflictResolver::metadata_database() { | 323 MetadataDatabase* ConflictResolver::metadata_database() { |
323 return sync_context_->GetMetadataDatabase(); | 324 return sync_context_->GetMetadataDatabase(); |
324 } | 325 } |
325 | 326 |
326 } // namespace drive_backend | 327 } // namespace drive_backend |
327 } // namespace sync_file_system | 328 } // namespace sync_file_system |
OLD | NEW |