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

Side by Side Diff: chrome/browser/sync_file_system/drive_file_sync_service.cc

Issue 15023022: Add to be fetched files instead of DriveMetadataStore.batch_sync_origins_ (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: tzik review #4 Created 7 years, 7 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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_file_sync_service.h" 5 #include "chrome/browser/sync_file_system/drive_file_sync_service.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <string> 8 #include <string>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 362 matching lines...) Expand 10 before | Expand all | Expand 10 after
373 373
374 void DriveFileSyncService::DidInitializeMetadataStore( 374 void DriveFileSyncService::DidInitializeMetadataStore(
375 const SyncStatusCallback& callback, 375 const SyncStatusCallback& callback,
376 SyncStatusCode status, 376 SyncStatusCode status,
377 bool created) { 377 bool created) {
378 if (status != SYNC_STATUS_OK) { 378 if (status != SYNC_STATUS_OK) {
379 callback.Run(status); 379 callback.Run(status);
380 return; 380 return;
381 } 381 }
382 382
383 // Guarantee that metadata_store_->batch_sync_origins is not used.
384 std::vector<GURL> batch_origins_to_delete;
385 typedef std::map<GURL, std::string>::const_iterator origin_itr;
386 for (origin_itr itr = metadata_store_->batch_sync_origins().begin();
387 itr != metadata_store_->batch_sync_origins().end(); ++itr) {
388 batch_origins_to_delete.push_back(itr->first);
389 }
390 for (std::vector<GURL>::const_iterator itr = batch_origins_to_delete.begin();
391 itr != batch_origins_to_delete.end(); ++itr) {
392 metadata_store_->RemoveOrigin(*itr, base::Bind(&EmptyStatusCallback));
393 }
394
383 DCHECK(pending_batch_sync_origins_.empty()); 395 DCHECK(pending_batch_sync_origins_.empty());
384 396
385 UpdateRegisteredOrigins(); 397 UpdateRegisteredOrigins();
386 398
387 largest_fetched_changestamp_ = metadata_store_->GetLargestChangeStamp(); 399 largest_fetched_changestamp_ = metadata_store_->GetLargestChangeStamp();
388 400
389 // Mark all the batch sync origins as 'pending' so that we can start
390 // batch sync when we're ready.
391 for (std::map<GURL, std::string>::const_iterator itr =
392 metadata_store_->batch_sync_origins().begin();
393 itr != metadata_store_->batch_sync_origins().end();
394 ++itr) {
395 pending_batch_sync_origins_.insert(itr->first);
396 }
397
398 DriveMetadataStore::URLAndDriveMetadataList to_be_fetched_files; 401 DriveMetadataStore::URLAndDriveMetadataList to_be_fetched_files;
399 status = metadata_store_->GetToBeFetchedFiles(&to_be_fetched_files); 402 status = metadata_store_->GetToBeFetchedFiles(&to_be_fetched_files);
400 DCHECK_EQ(SYNC_STATUS_OK, status); 403 DCHECK_EQ(SYNC_STATUS_OK, status);
401 typedef DriveMetadataStore::URLAndDriveMetadataList::const_iterator iterator; 404 typedef DriveMetadataStore::URLAndDriveMetadataList::const_iterator iterator;
402 for (iterator itr = to_be_fetched_files.begin(); 405 for (iterator itr = to_be_fetched_files.begin();
403 itr != to_be_fetched_files.end(); ++itr) { 406 itr != to_be_fetched_files.end(); ++itr) {
404 const FileSystemURL& url = itr->first; 407 const FileSystemURL& url = itr->first;
405 const DriveMetadata& metadata = itr->second; 408 const DriveMetadata& metadata = itr->second;
406 const std::string& resource_id = metadata.resource_id(); 409 const std::string& resource_id = metadata.resource_id();
407 410
408 SyncFileType file_type = SYNC_FILE_TYPE_FILE; 411 SyncFileType file_type = SYNC_FILE_TYPE_FILE;
409 if (metadata.type() == DriveMetadata::RESOURCE_TYPE_FOLDER) 412 if (metadata.type() == DriveMetadata::RESOURCE_TYPE_FOLDER)
410 file_type = SYNC_FILE_TYPE_DIRECTORY; 413 file_type = SYNC_FILE_TYPE_DIRECTORY;
414 if (!metadata_store_->IsIncrementalSyncOrigin(url.origin())) {
415 metadata_store_->DeleteEntry(url, base::Bind(&EmptyStatusCallback));
416 continue;
417 }
411 AppendFetchChange(url.origin(), url.path(), resource_id, file_type); 418 AppendFetchChange(url.origin(), url.path(), resource_id, file_type);
412 } 419 }
413 420
414 if (!sync_root_resource_id().empty()) 421 if (!sync_root_resource_id().empty())
415 api_util_->EnsureSyncRootIsNotInMyDrive(sync_root_resource_id()); 422 api_util_->EnsureSyncRootIsNotInMyDrive(sync_root_resource_id());
416 423
417 callback.Run(status); 424 callback.Run(status);
418 may_have_unfetched_changes_ = true; 425 may_have_unfetched_changes_ = true;
419 426
420 google_apis::DriveNotificationManager* drive_notification_manager = 427 google_apis::DriveNotificationManager* drive_notification_manager =
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
503 510
504 void DriveFileSyncService::DoEnableOriginForTrackingChanges( 511 void DriveFileSyncService::DoEnableOriginForTrackingChanges(
505 const GURL& origin, 512 const GURL& origin,
506 const SyncStatusCallback& callback) { 513 const SyncStatusCallback& callback) {
507 if (!metadata_store_->IsOriginDisabled(origin)) { 514 if (!metadata_store_->IsOriginDisabled(origin)) {
508 callback.Run(SYNC_STATUS_OK); 515 callback.Run(SYNC_STATUS_OK);
509 return; 516 return;
510 } 517 }
511 518
512 metadata_store_->EnableOrigin(origin, callback); 519 metadata_store_->EnableOrigin(origin, callback);
513 pending_batch_sync_origins_.insert(origin); 520 pending_batch_sync_origins_.insert(
521 *metadata_store_->disabled_origins().find(origin));
514 } 522 }
515 523
516 void DriveFileSyncService::DoDisableOriginForTrackingChanges( 524 void DriveFileSyncService::DoDisableOriginForTrackingChanges(
517 const GURL& origin, 525 const GURL& origin,
518 const SyncStatusCallback& callback) { 526 const SyncStatusCallback& callback) {
519 if (!metadata_store_->IsBatchSyncOrigin(origin) && 527 if (!metadata_store_->IsBatchSyncOrigin(origin) &&
kinuko 2013/05/20 15:31:50 This line could be removed too?
calvinlo 2013/05/21 07:12:26 Done.
520 !metadata_store_->IsIncrementalSyncOrigin(origin)) { 528 !metadata_store_->IsIncrementalSyncOrigin(origin)) {
521 callback.Run(SYNC_STATUS_OK); 529 callback.Run(SYNC_STATUS_OK);
522 return; 530 return;
523 } 531 }
524 532
525 remote_change_handler_.RemoveChangesForOrigin(origin); 533 remote_change_handler_.RemoveChangesForOrigin(origin);
526 pending_batch_sync_origins_.erase(origin); 534 pending_batch_sync_origins_.erase(origin);
527 metadata_store_->DisableOrigin(origin, callback); 535 metadata_store_->DisableOrigin(origin, callback);
528 } 536 }
529 537
530 void DriveFileSyncService::DoUninstallOrigin( 538 void DriveFileSyncService::DoUninstallOrigin(
531 const GURL& origin, 539 const GURL& origin,
532 const SyncStatusCallback& callback) { 540 const SyncStatusCallback& callback) {
541 // Because origin management is now split between DriveFileSyncService and
542 // DriveMetadataStore, it must be checked for in two places.
533 std::string resource_id = metadata_store_->GetResourceIdForOrigin(origin); 543 std::string resource_id = metadata_store_->GetResourceIdForOrigin(origin);
544 if (resource_id.empty()) {
545 std::map<GURL, std::string>::const_iterator iterator =
546 pending_batch_sync_origins_.find(origin);
547 if (iterator != pending_batch_sync_origins_.end())
548 resource_id = iterator->second;
549 }
534 550
535 // An empty resource_id indicates either one of following two cases: 551 // An empty resource_id indicates either one of following two cases:
536 // 1) origin is not in metadata_store_ because the extension was never 552 // 1) origin is not in metadata_store_ because the extension was never
537 // run or it's not managed by this service, and thus no 553 // run or it's not managed by this service, and thus no
538 // origin directory on the remote drive was created. 554 // origin directory on the remote drive was created.
539 // 2) origin or sync root folder is deleted on Drive. 555 // 2) origin or sync root folder is deleted on Drive.
540 if (resource_id.empty()) { 556 if (resource_id.empty()) {
541 callback.Run(SYNC_STATUS_UNKNOWN_ORIGIN); 557 callback.Run(SYNC_STATUS_UNKNOWN_ORIGIN);
542 return; 558 return;
543 } 559 }
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
614 running_local_sync_task_->Run(base::Bind( 630 running_local_sync_task_->Run(base::Bind(
615 &DriveFileSyncService::DidApplyLocalChange, AsWeakPtr(), callback)); 631 &DriveFileSyncService::DidApplyLocalChange, AsWeakPtr(), callback));
616 } 632 }
617 633
618 void DriveFileSyncService::UpdateRegisteredOrigins() { 634 void DriveFileSyncService::UpdateRegisteredOrigins() {
619 ExtensionService* extension_service = 635 ExtensionService* extension_service =
620 extensions::ExtensionSystem::Get(profile_)->extension_service(); 636 extensions::ExtensionSystem::Get(profile_)->extension_service();
621 if (!extension_service) 637 if (!extension_service)
622 return; 638 return;
623 639
640 // Must combine batch sync origins with incremental and disabled origins since
641 // batch origins are tracked in DriveFileSyncService but the others are in
642 // DriveMetaDataStore.
624 std::vector<GURL> origins; 643 std::vector<GURL> origins;
625 metadata_store_->GetAllOrigins(&origins); 644 metadata_store_->GetAllOrigins(&origins);
645 typedef std::map<GURL, std::string>::const_iterator iterator;
646 for (iterator itr = pending_batch_sync_origins_.begin();
647 itr != pending_batch_sync_origins_.end(); ++itr) {
648 DCHECK(!metadata_store_->IsKnownOrigin(itr->first));
649 origins.push_back(itr->first);
650 }
kinuko 2013/05/20 15:31:50 We seem to be checking pending_batch_sync_origins_
calvinlo 2013/05/21 07:12:26 Thanks for catching this. I have removed the error
651
652 // Update the status of every origin using status from ExtensionService.
626 for (std::vector<GURL>::const_iterator itr = origins.begin(); 653 for (std::vector<GURL>::const_iterator itr = origins.begin();
627 itr != origins.end(); ++itr) { 654 itr != origins.end(); ++itr) {
628 std::string extension_id = itr->host(); 655 std::string extension_id = itr->host();
629 GURL origin = 656 GURL origin =
630 extensions::Extension::GetBaseURLFromExtensionId(extension_id); 657 extensions::Extension::GetBaseURLFromExtensionId(extension_id);
658 bool is_pending_batch_sync_origin = (pending_batch_sync_origins_.find(
659 origin) != pending_batch_sync_origins_.end());
631 660
632 if (!extension_service->GetInstalledExtension(extension_id)) { 661 if (!extension_service->GetInstalledExtension(extension_id)) {
633 // Extension has been uninstalled. 662 // Extension has been uninstalled.
663 pending_batch_sync_origins_.erase(origin);
634 UninstallOrigin(origin, base::Bind(&EmptyStatusCallback)); 664 UninstallOrigin(origin, base::Bind(&EmptyStatusCallback));
635 } else if ((metadata_store_->IsBatchSyncOrigin(origin) || 665 } else if ((is_pending_batch_sync_origin ||
636 metadata_store_->IsIncrementalSyncOrigin(origin)) && 666 metadata_store_->IsBatchSyncOrigin(origin)) &&
kinuko 2013/05/20 15:31:50 IsBatchSyncOrigin(origin) is always false, right?
calvinlo 2013/05/21 07:12:26 I have added DCHECKS at the beginning to ensure th
637 !extension_service->IsExtensionEnabled(extension_id)) { 667 !extension_service->IsExtensionEnabled(extension_id)) {
638 // Extension has been disabled. 668 // pending batch sync origin has been disabled
669 pending_batch_sync_origins_.erase(origin);
670 UninstallOrigin(origin, base::Bind(&EmptyStatusCallback));
671 } else if (metadata_store_->IsIncrementalSyncOrigin(origin) &&
672 !extension_service->IsExtensionEnabled(extension_id)) {
673 // Incremental Extension has been disabled.
639 metadata_store_->DisableOrigin(origin, base::Bind(&EmptyStatusCallback)); 674 metadata_store_->DisableOrigin(origin, base::Bind(&EmptyStatusCallback));
640 } else if (metadata_store_->IsOriginDisabled(origin) && 675 } else if (metadata_store_->IsOriginDisabled(origin) &&
641 extension_service->IsExtensionEnabled(extension_id)) { 676 extension_service->IsExtensionEnabled(extension_id)) {
642 // Extension has been re-enabled. 677 // Extension has been re-enabled.
678 pending_batch_sync_origins_.insert(
679 *metadata_store_->disabled_origins().find(origin));
643 metadata_store_->EnableOrigin(origin, base::Bind(&EmptyStatusCallback)); 680 metadata_store_->EnableOrigin(origin, base::Bind(&EmptyStatusCallback));
644 pending_batch_sync_origins_.insert(origin);
645 } 681 }
646 } 682 }
647 } 683 }
648 684
649 void DriveFileSyncService::StartBatchSync( 685 void DriveFileSyncService::StartBatchSync(
650 const SyncStatusCallback& callback) { 686 const SyncStatusCallback& callback) {
651 DCHECK(GetCurrentState() == REMOTE_SERVICE_OK || may_have_unfetched_changes_); 687 DCHECK(GetCurrentState() == REMOTE_SERVICE_OK || may_have_unfetched_changes_);
688 DCHECK(!pending_batch_sync_origins_.empty());
652 689
653 if (pending_batch_sync_origins_.empty()) { 690 GURL origin = pending_batch_sync_origins_.begin()->first;
654 callback.Run(SYNC_STATUS_OK); 691 std::string resource_id = pending_batch_sync_origins_.begin()->second;
655 return; 692 DCHECK(!resource_id.empty());
656 }
657
658 GURL origin = *pending_batch_sync_origins_.begin();
659 pending_batch_sync_origins_.erase(pending_batch_sync_origins_.begin()); 693 pending_batch_sync_origins_.erase(pending_batch_sync_origins_.begin());
660 std::string resource_id = metadata_store_->GetResourceIdForOrigin(origin);
661 DCHECK(!resource_id.empty());
662 694
663 DCHECK(!metadata_store_->IsOriginDisabled(origin)); 695 DCHECK(!metadata_store_->IsOriginDisabled(origin));
664 696
665 DVLOG(1) << "Start batch sync for:" << origin.spec(); 697 DVLOG(1) << "Start batch sync for:" << origin.spec();
666 698
667 api_util_->GetLargestChangeStamp( 699 api_util_->GetLargestChangeStamp(
668 base::Bind(&DriveFileSyncService::DidGetLargestChangeStampForBatchSync, 700 base::Bind(&DriveFileSyncService::DidGetLargestChangeStampForBatchSync,
669 AsWeakPtr(), 701 AsWeakPtr(),
670 callback, 702 callback,
671 origin, 703 origin,
(...skipping 17 matching lines...) Expand all
689 AsWeakPtr(), origin, callback)); 721 AsWeakPtr(), origin, callback));
690 return; 722 return;
691 } 723 }
692 724
693 if (status != SYNC_STATUS_OK) { 725 if (status != SYNC_STATUS_OK) {
694 callback.Run(status); 726 callback.Run(status);
695 return; 727 return;
696 } 728 }
697 729
698 // Add this origin to batch sync origin if it hasn't been already. 730 // Add this origin to batch sync origin if it hasn't been already.
731 // TODO(calvinlo): Added files to file metadata mapping, this can be removed
732 // next when batch_sync_origins is removed from DriveMetadataStore.
699 if (!metadata_store_->IsKnownOrigin(origin)) { 733 if (!metadata_store_->IsKnownOrigin(origin)) {
700 metadata_store_->AddBatchSyncOrigin(origin, resource_id); 734 pending_batch_sync_origins_.insert(std::make_pair(origin, resource_id));
701 pending_batch_sync_origins_.insert(origin);
702 } 735 }
kinuko 2013/05/20 15:31:50 nit: no { } for one-line body
calvinlo 2013/05/21 07:12:26 Done.
703 736
704 callback.Run(SYNC_STATUS_OK); 737 callback.Run(SYNC_STATUS_OK);
705 } 738 }
706 739
707 void DriveFileSyncService::DidUninstallOrigin( 740 void DriveFileSyncService::DidUninstallOrigin(
708 const GURL& origin, 741 const GURL& origin,
709 const SyncStatusCallback& callback, 742 const SyncStatusCallback& callback,
710 google_apis::GDataErrorCode error) { 743 google_apis::GDataErrorCode error) {
711 SyncStatusCode status = GDataErrorCodeToSyncStatusCodeWrapper(error); 744 SyncStatusCode status = GDataErrorCodeToSyncStatusCodeWrapper(error);
712 if (status != SYNC_STATUS_OK) { 745 if (status != SYNC_STATUS_OK) {
713 callback.Run(status); 746 callback.Run(status);
714 return; 747 return;
715 } 748 }
716 749
717 // Origin directory has been removed so it's now safe to remove the origin 750 // Origin directory has been removed so it's now safe to remove the origin
718 // from the metadata store. 751 // from the metadata store.
719 DoUnregisterOriginForTrackingChanges(origin, callback); 752 DoUnregisterOriginForTrackingChanges(origin, callback);
720 } 753 }
721 754
722 void DriveFileSyncService::DidGetLargestChangeStampForBatchSync( 755 void DriveFileSyncService::DidGetLargestChangeStampForBatchSync(
723 const SyncStatusCallback& callback, 756 const SyncStatusCallback& callback,
724 const GURL& origin, 757 const GURL& origin,
725 const std::string& resource_id, 758 const std::string& resource_id,
726 google_apis::GDataErrorCode error, 759 google_apis::GDataErrorCode error,
727 int64 largest_changestamp) { 760 int64 largest_changestamp) {
728 if (error != google_apis::HTTP_SUCCESS) { 761 if (error != google_apis::HTTP_SUCCESS) {
729 pending_batch_sync_origins_.insert(origin); 762 pending_batch_sync_origins_.insert(std::make_pair(origin, resource_id));
730 callback.Run(GDataErrorCodeToSyncStatusCodeWrapper(error)); 763 callback.Run(GDataErrorCodeToSyncStatusCodeWrapper(error));
731 return; 764 return;
732 } 765 }
733 766
734 if (metadata_store_->incremental_sync_origins().empty()) { 767 if (metadata_store_->incremental_sync_origins().empty()) {
735 largest_fetched_changestamp_ = largest_changestamp; 768 largest_fetched_changestamp_ = largest_changestamp;
736 metadata_store_->SetLargestChangeStamp( 769 metadata_store_->SetLargestChangeStamp(
737 largest_changestamp, 770 largest_changestamp,
738 base::Bind(&EmptyStatusCallback)); 771 base::Bind(&EmptyStatusCallback));
739 } 772 }
740 773
741 api_util_->ListFiles( 774 api_util_->ListFiles(
742 resource_id, 775 resource_id,
743 base::Bind(&DriveFileSyncService::DidGetDirectoryContentForBatchSync, 776 base::Bind(&DriveFileSyncService::DidGetDirectoryContentForBatchSync,
744 AsWeakPtr(), 777 AsWeakPtr(),
745 callback, 778 callback,
746 origin, 779 origin,
780 resource_id,
747 largest_changestamp)); 781 largest_changestamp));
748 } 782 }
749 783
750 void DriveFileSyncService::DidGetDirectoryContentForBatchSync( 784 void DriveFileSyncService::DidGetDirectoryContentForBatchSync(
751 const SyncStatusCallback& callback, 785 const SyncStatusCallback& callback,
752 const GURL& origin, 786 const GURL& origin,
787 const std::string& resource_id,
753 int64 largest_changestamp, 788 int64 largest_changestamp,
754 google_apis::GDataErrorCode error, 789 google_apis::GDataErrorCode error,
755 scoped_ptr<google_apis::ResourceList> feed) { 790 scoped_ptr<google_apis::ResourceList> feed) {
756 if (error != google_apis::HTTP_SUCCESS) { 791 if (error != google_apis::HTTP_SUCCESS) {
757 pending_batch_sync_origins_.insert(origin); 792 pending_batch_sync_origins_.insert(std::make_pair(origin, resource_id));
758 callback.Run(GDataErrorCodeToSyncStatusCodeWrapper(error)); 793 callback.Run(GDataErrorCodeToSyncStatusCodeWrapper(error));
759 return; 794 return;
760 } 795 }
761 796
762 typedef ScopedVector<google_apis::ResourceEntry>::const_iterator iterator; 797 typedef ScopedVector<google_apis::ResourceEntry>::const_iterator iterator;
763 for (iterator itr = feed->entries().begin(); 798 for (iterator itr = feed->entries().begin();
764 itr != feed->entries().end(); ++itr) { 799 itr != feed->entries().end(); ++itr) {
765 AppendRemoteChange(origin, **itr, largest_changestamp, 800 const google_apis::ResourceEntry& entry = **itr;
801 AppendRemoteChange(origin, entry, largest_changestamp,
766 RemoteChangeHandler::REMOTE_SYNC_TYPE_BATCH); 802 RemoteChangeHandler::REMOTE_SYNC_TYPE_BATCH);
803
804 // Save to be fetched file to DB for restore in case of crash.
805 DriveMetadata metadata;
806 metadata.set_resource_id(entry.resource_id());
807 metadata.set_md5_checksum(entry.file_md5());
808 metadata.set_conflicted(false);
809 metadata.set_to_be_fetched(true);
810
811 base::FilePath path = TitleToPath(entry.title());
812 fileapi::FileSystemURL url(CreateSyncableFileSystemURL(
813 origin, kServiceName, path));
814 // TODO(calvinlo): Write metadata and origin data as single batch command
815 // so it's not possible for the DB to contain a DriveMetadata with an
816 // unknown origin.
817 metadata_store_->UpdateEntry(url, metadata,
818 base::Bind(&EmptyStatusCallback));
767 } 819 }
768 820
769 GURL next_feed_url; 821 GURL next_feed_url;
770 if (feed->GetNextFeedURL(&next_feed_url)) { 822 if (feed->GetNextFeedURL(&next_feed_url)) {
771 api_util_->ContinueListing( 823 api_util_->ContinueListing(
772 next_feed_url, 824 next_feed_url,
773 base::Bind(&DriveFileSyncService::DidGetDirectoryContentForBatchSync, 825 base::Bind(&DriveFileSyncService::DidGetDirectoryContentForBatchSync,
774 AsWeakPtr(), 826 AsWeakPtr(),
775 callback, 827 callback,
776 origin, 828 origin,
829 resource_id,
777 largest_changestamp)); 830 largest_changestamp));
778 return; 831 return;
779 } 832 }
780 833
781 // Move |origin| to the incremental sync origin set if the origin has no file. 834 // TODO(calvinlo): Eliminate batch_sync_origins so
782 if (metadata_store_->IsBatchSyncOrigin(origin) && 835 // MoveBatchSyncOriginToIncremental() happens directly.
783 !remote_change_handler_.HasChangesForOrigin(origin)) { 836 metadata_store_->AddBatchSyncOrigin(origin, resource_id);
784 metadata_store_->MoveBatchSyncOriginToIncremental(origin); 837 metadata_store_->MoveBatchSyncOriginToIncremental(origin);
785 }
786
787 may_have_unfetched_changes_ = true; 838 may_have_unfetched_changes_ = true;
788 callback.Run(SYNC_STATUS_OK); 839 callback.Run(SYNC_STATUS_OK);
789 } 840 }
790 841
791 // TODO(tzik): Factor out this conflict resolution function. 842 // TODO(tzik): Factor out this conflict resolution function.
792 ConflictResolutionResult DriveFileSyncService::ResolveConflictForLocalSync( 843 ConflictResolutionResult DriveFileSyncService::ResolveConflictForLocalSync(
793 SyncFileType local_file_type, 844 SyncFileType local_file_type,
794 const base::Time& local_updated_time, 845 const base::Time& local_updated_time,
795 SyncFileType remote_file_type, 846 SyncFileType remote_file_type,
796 const base::Time& remote_updated_time) { 847 const base::Time& remote_updated_time) {
(...skipping 567 matching lines...) Expand 10 before | Expand all | Expand 10 after
1364 return true; 1415 return true;
1365 } 1416 }
1366 1417
1367 void DriveFileSyncService::RemoveRemoteChange( 1418 void DriveFileSyncService::RemoveRemoteChange(
1368 const FileSystemURL& url) { 1419 const FileSystemURL& url) {
1369 if (!remote_change_handler_.RemoveChangeForURL(url)) 1420 if (!remote_change_handler_.RemoveChangeForURL(url))
1370 return; 1421 return;
1371 if (metadata_store_->IsBatchSyncOrigin(url.origin()) && 1422 if (metadata_store_->IsBatchSyncOrigin(url.origin()) &&
1372 !remote_change_handler_.HasChangesForOrigin(url.origin())) { 1423 !remote_change_handler_.HasChangesForOrigin(url.origin())) {
1373 metadata_store_->MoveBatchSyncOriginToIncremental(url.origin()); 1424 metadata_store_->MoveBatchSyncOriginToIncremental(url.origin());
1374 } 1425 }
kinuko 2013/05/20 15:31:50 These lines could be removed too?
calvinlo 2013/05/21 07:12:26 Done. I think it's ok to delete these because we m
1375 } 1426 }
1376 1427
1377 void DriveFileSyncService::MarkConflict( 1428 void DriveFileSyncService::MarkConflict(
1378 const fileapi::FileSystemURL& url, 1429 const fileapi::FileSystemURL& url,
1379 DriveMetadata* drive_metadata, 1430 DriveMetadata* drive_metadata,
1380 const SyncStatusCallback& callback) { 1431 const SyncStatusCallback& callback) {
1381 DCHECK(drive_metadata); 1432 DCHECK(drive_metadata);
1382 if (drive_metadata->resource_id().empty()) { 1433 if (drive_metadata->resource_id().empty()) {
1383 // If the file does not have valid drive_metadata in the metadata store 1434 // If the file does not have valid drive_metadata in the metadata store
1384 // we must have a pending remote change entry. 1435 // we must have a pending remote change entry.
(...skipping 317 matching lines...) Expand 10 before | Expand all | Expand 10 after
1702 void DriveFileSyncService::DidEnsureOriginRoot( 1753 void DriveFileSyncService::DidEnsureOriginRoot(
1703 const GURL& origin, 1754 const GURL& origin,
1704 const ResourceIdCallback& callback, 1755 const ResourceIdCallback& callback,
1705 google_apis::GDataErrorCode error, 1756 google_apis::GDataErrorCode error,
1706 const std::string& resource_id) { 1757 const std::string& resource_id) {
1707 SyncStatusCode status = GDataErrorCodeToSyncStatusCodeWrapper(error); 1758 SyncStatusCode status = GDataErrorCodeToSyncStatusCodeWrapper(error);
1708 if (status == SYNC_STATUS_OK && 1759 if (status == SYNC_STATUS_OK &&
1709 metadata_store_->IsKnownOrigin(origin)) { 1760 metadata_store_->IsKnownOrigin(origin)) {
1710 metadata_store_->SetOriginRootDirectory(origin, resource_id); 1761 metadata_store_->SetOriginRootDirectory(origin, resource_id);
1711 if (metadata_store_->IsBatchSyncOrigin(origin)) 1762 if (metadata_store_->IsBatchSyncOrigin(origin))
1712 pending_batch_sync_origins_.insert(origin); 1763 pending_batch_sync_origins_.insert(std::make_pair(origin, resource_id));
kinuko 2013/05/20 15:31:50 These 2 lines are not needed anymore?
calvinlo 2013/05/21 07:12:26 Done.
1713 } 1764 }
1714 callback.Run(status, resource_id); 1765 callback.Run(status, resource_id);
1715 } 1766 }
1716 1767
1717 std::string DriveFileSyncService::sync_root_resource_id() { 1768 std::string DriveFileSyncService::sync_root_resource_id() {
1718 return metadata_store_->sync_root_directory(); 1769 return metadata_store_->sync_root_directory();
1719 } 1770 }
1720 1771
1721 } // namespace sync_file_system 1772 } // namespace sync_file_system
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698