| 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 317 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 328 base::Bind(&LocalToRemoteSyncer::DidDeleteRemoteFile, | 328 base::Bind(&LocalToRemoteSyncer::DidDeleteRemoteFile, |
| 329 weak_ptr_factory_.GetWeakPtr(), | 329 weak_ptr_factory_.GetWeakPtr(), |
| 330 callback)); | 330 callback)); |
| 331 } | 331 } |
| 332 | 332 |
| 333 void LocalToRemoteSyncer::DidDeleteRemoteFile( | 333 void LocalToRemoteSyncer::DidDeleteRemoteFile( |
| 334 const SyncStatusCallback& callback, | 334 const SyncStatusCallback& callback, |
| 335 google_apis::GDataErrorCode error) { | 335 google_apis::GDataErrorCode error) { |
| 336 if (error != google_apis::HTTP_SUCCESS && | 336 if (error != google_apis::HTTP_SUCCESS && |
| 337 error != google_apis::HTTP_NOT_FOUND && | 337 error != google_apis::HTTP_NOT_FOUND && |
| 338 error != google_apis::HTTP_PRECONDITION) { | 338 error != google_apis::HTTP_PRECONDITION && |
| 339 error != google_apis::HTTP_CONFLICT) { |
| 339 callback.Run(GDataErrorCodeToSyncStatusCode(error)); | 340 callback.Run(GDataErrorCodeToSyncStatusCode(error)); |
| 340 return; | 341 return; |
| 341 } | 342 } |
| 342 | 343 |
| 343 // Handle NOT_FOUND case as SUCCESS case. | 344 // Handle NOT_FOUND case as SUCCESS case. |
| 344 // For PRECONDITION case, the remote file is modified since the last sync | 345 // For PRECONDITION / CONFLICT case, the remote file is modified since the |
| 345 // completed. As our policy for deletion-modification conflict resolution, | 346 // last sync completed. As our policy for deletion-modification conflict |
| 346 // ignore the local deletion. | 347 // resolution, ignore the local deletion. |
| 347 callback.Run(SYNC_STATUS_OK); | 348 callback.Run(SYNC_STATUS_OK); |
| 348 } | 349 } |
| 349 | 350 |
| 350 void LocalToRemoteSyncer::UploadExistingFile( | 351 void LocalToRemoteSyncer::UploadExistingFile( |
| 351 const SyncStatusCallback& callback) { | 352 const SyncStatusCallback& callback) { |
| 352 DCHECK(remote_file_tracker_); | 353 DCHECK(remote_file_tracker_); |
| 353 DCHECK(remote_file_tracker_->has_synced_details()); | 354 DCHECK(remote_file_tracker_->has_synced_details()); |
| 354 | 355 |
| 355 base::PostTaskAndReplyWithResult( | 356 base::PostTaskAndReplyWithResult( |
| 356 sync_context_->GetBlockingTaskRunner(), FROM_HERE, | 357 sync_context_->GetBlockingTaskRunner(), FROM_HERE, |
| (...skipping 22 matching lines...) Expand all Loading... |
| 379 weak_ptr_factory_.GetWeakPtr(), | 380 weak_ptr_factory_.GetWeakPtr(), |
| 380 callback), | 381 callback), |
| 381 google_apis::ProgressCallback()); | 382 google_apis::ProgressCallback()); |
| 382 } | 383 } |
| 383 | 384 |
| 384 void LocalToRemoteSyncer::DidUploadExistingFile( | 385 void LocalToRemoteSyncer::DidUploadExistingFile( |
| 385 const SyncStatusCallback& callback, | 386 const SyncStatusCallback& callback, |
| 386 google_apis::GDataErrorCode error, | 387 google_apis::GDataErrorCode error, |
| 387 const GURL&, | 388 const GURL&, |
| 388 scoped_ptr<google_apis::ResourceEntry> entry) { | 389 scoped_ptr<google_apis::ResourceEntry> entry) { |
| 389 if (error == google_apis::HTTP_PRECONDITION) { | 390 if (error == google_apis::HTTP_PRECONDITION || |
| 391 error == google_apis::HTTP_CONFLICT) { |
| 390 // The remote file has unfetched remote change. Fetch latest metadata and | 392 // The remote file has unfetched remote change. Fetch latest metadata and |
| 391 // update database with it. | 393 // update database with it. |
| 392 // TODO(tzik): Consider adding local side low-priority dirtiness handling to | 394 // TODO(tzik): Consider adding local side low-priority dirtiness handling to |
| 393 // handle this as ListChangesTask. | 395 // handle this as ListChangesTask. |
| 394 UpdateRemoteMetadata(callback); | 396 UpdateRemoteMetadata(callback); |
| 395 return; | 397 return; |
| 396 } | 398 } |
| 397 | 399 |
| 398 metadata_database()->UpdateByFileResource( | 400 metadata_database()->UpdateByFileResource( |
| 399 *drive::util::ConvertResourceEntryToFileResource(*entry), | 401 *drive::util::ConvertResourceEntryToFileResource(*entry), |
| (...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 632 set_used_network(true); | 634 set_used_network(true); |
| 633 return sync_context_->GetDriveUploader(); | 635 return sync_context_->GetDriveUploader(); |
| 634 } | 636 } |
| 635 | 637 |
| 636 MetadataDatabase* LocalToRemoteSyncer::metadata_database() { | 638 MetadataDatabase* LocalToRemoteSyncer::metadata_database() { |
| 637 return sync_context_->GetMetadataDatabase(); | 639 return sync_context_->GetMetadataDatabase(); |
| 638 } | 640 } |
| 639 | 641 |
| 640 } // namespace drive_backend | 642 } // namespace drive_backend |
| 641 } // namespace sync_file_system | 643 } // namespace sync_file_system |
| OLD | NEW |