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

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, test revisions 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 // TODO(calvinlo): Move the code to delete legacy batch_sync_origin keys from
384 // DB into DriveMetadataStore.InitializeDBOnFileThread.
385 std::vector<GURL> batch_origins_to_delete;
386 typedef std::map<GURL, std::string>::const_iterator origin_itr;
387 for (origin_itr itr = metadata_store_->batch_sync_origins().begin();
388 itr != metadata_store_->batch_sync_origins().end(); ++itr) {
389 batch_origins_to_delete.push_back(itr->first);
390 }
391 for (std::vector<GURL>::const_iterator itr = batch_origins_to_delete.begin();
392 itr != batch_origins_to_delete.end(); ++itr) {
393 metadata_store_->RemoveOrigin(*itr, base::Bind(&EmptyStatusCallback));
394 }
395
383 DCHECK(pending_batch_sync_origins_.empty()); 396 DCHECK(pending_batch_sync_origins_.empty());
384 397
385 UpdateRegisteredOrigins(); 398 UpdateRegisteredOrigins();
386 399
387 largest_fetched_changestamp_ = metadata_store_->GetLargestChangeStamp(); 400 largest_fetched_changestamp_ = metadata_store_->GetLargestChangeStamp();
388 401
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; 402 DriveMetadataStore::URLAndDriveMetadataList to_be_fetched_files;
399 status = metadata_store_->GetToBeFetchedFiles(&to_be_fetched_files); 403 status = metadata_store_->GetToBeFetchedFiles(&to_be_fetched_files);
400 DCHECK_EQ(SYNC_STATUS_OK, status); 404 DCHECK_EQ(SYNC_STATUS_OK, status);
401 typedef DriveMetadataStore::URLAndDriveMetadataList::const_iterator iterator; 405 typedef DriveMetadataStore::URLAndDriveMetadataList::const_iterator iterator;
402 for (iterator itr = to_be_fetched_files.begin(); 406 for (iterator itr = to_be_fetched_files.begin();
403 itr != to_be_fetched_files.end(); ++itr) { 407 itr != to_be_fetched_files.end(); ++itr) {
404 const FileSystemURL& url = itr->first; 408 const FileSystemURL& url = itr->first;
405 const DriveMetadata& metadata = itr->second; 409 const DriveMetadata& metadata = itr->second;
406 const std::string& resource_id = metadata.resource_id(); 410 const std::string& resource_id = metadata.resource_id();
407 411
408 SyncFileType file_type = SYNC_FILE_TYPE_FILE; 412 SyncFileType file_type = SYNC_FILE_TYPE_FILE;
409 if (metadata.type() == DriveMetadata::RESOURCE_TYPE_FOLDER) 413 if (metadata.type() == DriveMetadata::RESOURCE_TYPE_FOLDER)
410 file_type = SYNC_FILE_TYPE_DIRECTORY; 414 file_type = SYNC_FILE_TYPE_DIRECTORY;
415 if (!metadata_store_->IsIncrementalSyncOrigin(url.origin())) {
416 metadata_store_->DeleteEntry(url, base::Bind(&EmptyStatusCallback));
417 continue;
418 }
411 AppendFetchChange(url.origin(), url.path(), resource_id, file_type); 419 AppendFetchChange(url.origin(), url.path(), resource_id, file_type);
412 } 420 }
413 421
414 if (!sync_root_resource_id().empty()) 422 if (!sync_root_resource_id().empty())
415 api_util_->EnsureSyncRootIsNotInMyDrive(sync_root_resource_id()); 423 api_util_->EnsureSyncRootIsNotInMyDrive(sync_root_resource_id());
416 424
417 callback.Run(status); 425 callback.Run(status);
418 may_have_unfetched_changes_ = true; 426 may_have_unfetched_changes_ = true;
419 427
420 google_apis::DriveNotificationManager* drive_notification_manager = 428 google_apis::DriveNotificationManager* drive_notification_manager =
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
503 511
504 void DriveFileSyncService::DoEnableOriginForTrackingChanges( 512 void DriveFileSyncService::DoEnableOriginForTrackingChanges(
505 const GURL& origin, 513 const GURL& origin,
506 const SyncStatusCallback& callback) { 514 const SyncStatusCallback& callback) {
507 if (!metadata_store_->IsOriginDisabled(origin)) { 515 if (!metadata_store_->IsOriginDisabled(origin)) {
508 callback.Run(SYNC_STATUS_OK); 516 callback.Run(SYNC_STATUS_OK);
509 return; 517 return;
510 } 518 }
511 519
512 metadata_store_->EnableOrigin(origin, callback); 520 metadata_store_->EnableOrigin(origin, callback);
513 pending_batch_sync_origins_.insert(origin); 521 pending_batch_sync_origins_.insert(
522 *metadata_store_->disabled_origins().find(origin));
514 } 523 }
515 524
516 void DriveFileSyncService::DoDisableOriginForTrackingChanges( 525 void DriveFileSyncService::DoDisableOriginForTrackingChanges(
517 const GURL& origin, 526 const GURL& origin,
518 const SyncStatusCallback& callback) { 527 const SyncStatusCallback& callback) {
519 if (!metadata_store_->IsBatchSyncOrigin(origin) && 528 pending_batch_sync_origins_.erase(origin);
520 !metadata_store_->IsIncrementalSyncOrigin(origin)) { 529 if (!metadata_store_->IsIncrementalSyncOrigin(origin)) {
521 callback.Run(SYNC_STATUS_OK); 530 callback.Run(SYNC_STATUS_OK);
522 return; 531 return;
523 } 532 }
524 533
525 remote_change_handler_.RemoveChangesForOrigin(origin); 534 remote_change_handler_.RemoveChangesForOrigin(origin);
526 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, resource_id 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 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
611 running_local_sync_task_.reset(new drive::LocalChangeProcessorDelegate( 627 running_local_sync_task_.reset(new drive::LocalChangeProcessorDelegate(
612 AsWeakPtr(), local_file_change, local_file_path, 628 AsWeakPtr(), local_file_change, local_file_path,
613 local_file_metadata, url)); 629 local_file_metadata, url));
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();
637 DCHECK(pending_batch_sync_origins_.empty());
638 DCHECK(metadata_store_->batch_sync_origins().empty());
621 if (!extension_service) 639 if (!extension_service)
622 return; 640 return;
623 641
624 std::vector<GURL> origins; 642 std::vector<GURL> origins;
625 metadata_store_->GetAllOrigins(&origins); 643 metadata_store_->GetAllOrigins(&origins);
644
645 // Update the status of every origin using status from ExtensionService.
626 for (std::vector<GURL>::const_iterator itr = origins.begin(); 646 for (std::vector<GURL>::const_iterator itr = origins.begin();
627 itr != origins.end(); ++itr) { 647 itr != origins.end(); ++itr) {
628 std::string extension_id = itr->host(); 648 std::string extension_id = itr->host();
629 GURL origin = 649 GURL origin =
630 extensions::Extension::GetBaseURLFromExtensionId(extension_id); 650 extensions::Extension::GetBaseURLFromExtensionId(extension_id);
631 651
632 if (!extension_service->GetInstalledExtension(extension_id)) { 652 if (!extension_service->GetInstalledExtension(extension_id)) {
633 // Extension has been uninstalled. 653 // Extension has been uninstalled.
634 UninstallOrigin(origin, base::Bind(&EmptyStatusCallback)); 654 UninstallOrigin(origin, base::Bind(&EmptyStatusCallback));
635 } else if ((metadata_store_->IsBatchSyncOrigin(origin) || 655 } else if (metadata_store_->IsIncrementalSyncOrigin(origin) &&
636 metadata_store_->IsIncrementalSyncOrigin(origin)) &&
637 !extension_service->IsExtensionEnabled(extension_id)) { 656 !extension_service->IsExtensionEnabled(extension_id)) {
638 // Extension has been disabled. 657 // Incremental Extension has been disabled.
639 metadata_store_->DisableOrigin(origin, base::Bind(&EmptyStatusCallback)); 658 metadata_store_->DisableOrigin(origin, base::Bind(&EmptyStatusCallback));
640 } else if (metadata_store_->IsOriginDisabled(origin) && 659 } else if (metadata_store_->IsOriginDisabled(origin) &&
641 extension_service->IsExtensionEnabled(extension_id)) { 660 extension_service->IsExtensionEnabled(extension_id)) {
642 // Extension has been re-enabled. 661 // Extension has been re-enabled.
662 pending_batch_sync_origins_.insert(
663 *metadata_store_->disabled_origins().find(origin));
643 metadata_store_->EnableOrigin(origin, base::Bind(&EmptyStatusCallback)); 664 metadata_store_->EnableOrigin(origin, base::Bind(&EmptyStatusCallback));
644 pending_batch_sync_origins_.insert(origin);
645 } 665 }
646 } 666 }
647 } 667 }
648 668
649 void DriveFileSyncService::StartBatchSync( 669 void DriveFileSyncService::StartBatchSync(
650 const SyncStatusCallback& callback) { 670 const SyncStatusCallback& callback) {
651 DCHECK(GetCurrentState() == REMOTE_SERVICE_OK || may_have_unfetched_changes_); 671 DCHECK(GetCurrentState() == REMOTE_SERVICE_OK || may_have_unfetched_changes_);
672 DCHECK(!pending_batch_sync_origins_.empty());
652 673
653 if (pending_batch_sync_origins_.empty()) { 674 GURL origin = pending_batch_sync_origins_.begin()->first;
654 callback.Run(SYNC_STATUS_OK); 675 std::string resource_id = pending_batch_sync_origins_.begin()->second;
655 return; 676 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()); 677 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 678
663 DCHECK(!metadata_store_->IsOriginDisabled(origin)); 679 DCHECK(!metadata_store_->IsOriginDisabled(origin));
664 680
665 DVLOG(1) << "Start batch sync for:" << origin.spec(); 681 DVLOG(1) << "Start batch sync for:" << origin.spec();
666 682
667 api_util_->GetLargestChangeStamp( 683 api_util_->GetLargestChangeStamp(
668 base::Bind(&DriveFileSyncService::DidGetLargestChangeStampForBatchSync, 684 base::Bind(&DriveFileSyncService::DidGetLargestChangeStampForBatchSync,
669 AsWeakPtr(), 685 AsWeakPtr(),
670 callback, 686 callback,
671 origin, 687 origin,
(...skipping 16 matching lines...) Expand all
688 &DriveFileSyncService::DidGetDriveDirectoryForOrigin, 704 &DriveFileSyncService::DidGetDriveDirectoryForOrigin,
689 AsWeakPtr(), origin, callback)); 705 AsWeakPtr(), origin, callback));
690 return; 706 return;
691 } 707 }
692 708
693 if (status != SYNC_STATUS_OK) { 709 if (status != SYNC_STATUS_OK) {
694 callback.Run(status); 710 callback.Run(status);
695 return; 711 return;
696 } 712 }
697 713
698 // Add this origin to batch sync origin if it hasn't been already. 714 if (!metadata_store_->IsKnownOrigin(origin))
699 if (!metadata_store_->IsKnownOrigin(origin)) { 715 pending_batch_sync_origins_.insert(std::make_pair(origin, resource_id));
700 metadata_store_->AddBatchSyncOrigin(origin, resource_id);
701 pending_batch_sync_origins_.insert(origin);
702 }
703 716
704 callback.Run(SYNC_STATUS_OK); 717 callback.Run(SYNC_STATUS_OK);
705 } 718 }
706 719
707 void DriveFileSyncService::DidUninstallOrigin( 720 void DriveFileSyncService::DidUninstallOrigin(
708 const GURL& origin, 721 const GURL& origin,
709 const SyncStatusCallback& callback, 722 const SyncStatusCallback& callback,
710 google_apis::GDataErrorCode error) { 723 google_apis::GDataErrorCode error) {
711 SyncStatusCode status = GDataErrorCodeToSyncStatusCodeWrapper(error); 724 SyncStatusCode status = GDataErrorCodeToSyncStatusCodeWrapper(error);
712 if (status != SYNC_STATUS_OK) { 725 if (status != SYNC_STATUS_OK) {
713 callback.Run(status); 726 callback.Run(status);
714 return; 727 return;
715 } 728 }
716 729
717 // Origin directory has been removed so it's now safe to remove the origin 730 // Origin directory has been removed so it's now safe to remove the origin
718 // from the metadata store. 731 // from the metadata store.
719 DoUnregisterOriginForTrackingChanges(origin, callback); 732 DoUnregisterOriginForTrackingChanges(origin, callback);
720 } 733 }
721 734
722 void DriveFileSyncService::DidGetLargestChangeStampForBatchSync( 735 void DriveFileSyncService::DidGetLargestChangeStampForBatchSync(
723 const SyncStatusCallback& callback, 736 const SyncStatusCallback& callback,
724 const GURL& origin, 737 const GURL& origin,
725 const std::string& resource_id, 738 const std::string& resource_id,
726 google_apis::GDataErrorCode error, 739 google_apis::GDataErrorCode error,
727 int64 largest_changestamp) { 740 int64 largest_changestamp) {
728 if (error != google_apis::HTTP_SUCCESS) { 741 if (error != google_apis::HTTP_SUCCESS) {
729 pending_batch_sync_origins_.insert(origin); 742 pending_batch_sync_origins_.insert(std::make_pair(origin, resource_id));
730 callback.Run(GDataErrorCodeToSyncStatusCodeWrapper(error)); 743 callback.Run(GDataErrorCodeToSyncStatusCodeWrapper(error));
731 return; 744 return;
732 } 745 }
733 746
734 if (metadata_store_->incremental_sync_origins().empty()) { 747 if (metadata_store_->incremental_sync_origins().empty()) {
735 largest_fetched_changestamp_ = largest_changestamp; 748 largest_fetched_changestamp_ = largest_changestamp;
736 metadata_store_->SetLargestChangeStamp( 749 metadata_store_->SetLargestChangeStamp(
737 largest_changestamp, 750 largest_changestamp,
738 base::Bind(&EmptyStatusCallback)); 751 base::Bind(&EmptyStatusCallback));
739 } 752 }
740 753
741 api_util_->ListFiles( 754 api_util_->ListFiles(
742 resource_id, 755 resource_id,
743 base::Bind(&DriveFileSyncService::DidGetDirectoryContentForBatchSync, 756 base::Bind(&DriveFileSyncService::DidGetDirectoryContentForBatchSync,
744 AsWeakPtr(), 757 AsWeakPtr(),
745 callback, 758 callback,
746 origin, 759 origin,
760 resource_id,
747 largest_changestamp)); 761 largest_changestamp));
748 } 762 }
749 763
750 void DriveFileSyncService::DidGetDirectoryContentForBatchSync( 764 void DriveFileSyncService::DidGetDirectoryContentForBatchSync(
751 const SyncStatusCallback& callback, 765 const SyncStatusCallback& callback,
752 const GURL& origin, 766 const GURL& origin,
767 const std::string& resource_id,
753 int64 largest_changestamp, 768 int64 largest_changestamp,
754 google_apis::GDataErrorCode error, 769 google_apis::GDataErrorCode error,
755 scoped_ptr<google_apis::ResourceList> feed) { 770 scoped_ptr<google_apis::ResourceList> feed) {
756 if (error != google_apis::HTTP_SUCCESS) { 771 if (error != google_apis::HTTP_SUCCESS) {
757 pending_batch_sync_origins_.insert(origin); 772 pending_batch_sync_origins_.insert(std::make_pair(origin, resource_id));
758 callback.Run(GDataErrorCodeToSyncStatusCodeWrapper(error)); 773 callback.Run(GDataErrorCodeToSyncStatusCodeWrapper(error));
759 return; 774 return;
760 } 775 }
761 776
762 typedef ScopedVector<google_apis::ResourceEntry>::const_iterator iterator; 777 typedef ScopedVector<google_apis::ResourceEntry>::const_iterator iterator;
763 for (iterator itr = feed->entries().begin(); 778 for (iterator itr = feed->entries().begin();
764 itr != feed->entries().end(); ++itr) { 779 itr != feed->entries().end(); ++itr) {
765 AppendRemoteChange(origin, **itr, largest_changestamp, 780 const google_apis::ResourceEntry& entry = **itr;
781 AppendRemoteChange(origin, entry, largest_changestamp,
766 RemoteChangeHandler::REMOTE_SYNC_TYPE_BATCH); 782 RemoteChangeHandler::REMOTE_SYNC_TYPE_BATCH);
783
784 // Save to be fetched file to DB for restore in case of crash.
785 DriveMetadata metadata;
786 metadata.set_resource_id(entry.resource_id());
787 metadata.set_md5_checksum(entry.file_md5());
788 metadata.set_conflicted(false);
789 metadata.set_to_be_fetched(true);
790
791 base::FilePath path = TitleToPath(entry.title());
792 fileapi::FileSystemURL url(CreateSyncableFileSystemURL(
793 origin, kServiceName, path));
794 // TODO(calvinlo): Write metadata and origin data as single batch command
795 // so it's not possible for the DB to contain a DriveMetadata with an
796 // unknown origin.
797 metadata_store_->UpdateEntry(url, metadata,
798 base::Bind(&EmptyStatusCallback));
767 } 799 }
768 800
769 GURL next_feed_url; 801 GURL next_feed_url;
770 if (feed->GetNextFeedURL(&next_feed_url)) { 802 if (feed->GetNextFeedURL(&next_feed_url)) {
771 api_util_->ContinueListing( 803 api_util_->ContinueListing(
772 next_feed_url, 804 next_feed_url,
773 base::Bind(&DriveFileSyncService::DidGetDirectoryContentForBatchSync, 805 base::Bind(&DriveFileSyncService::DidGetDirectoryContentForBatchSync,
774 AsWeakPtr(), 806 AsWeakPtr(),
775 callback, 807 callback,
776 origin, 808 origin,
809 resource_id,
777 largest_changestamp)); 810 largest_changestamp));
778 return; 811 return;
779 } 812 }
780 813
781 // Move |origin| to the incremental sync origin set if the origin has no file. 814 metadata_store_->AddIncrementalSyncOrigin(origin, resource_id);
782 if (metadata_store_->IsBatchSyncOrigin(origin) &&
783 !remote_change_handler_.HasChangesForOrigin(origin)) {
784 metadata_store_->MoveBatchSyncOriginToIncremental(origin);
785 }
786
787 may_have_unfetched_changes_ = true; 815 may_have_unfetched_changes_ = true;
788 callback.Run(SYNC_STATUS_OK); 816 callback.Run(SYNC_STATUS_OK);
789 } 817 }
790 818
791 // TODO(tzik): Factor out this conflict resolution function. 819 // TODO(tzik): Factor out this conflict resolution function.
792 ConflictResolutionResult DriveFileSyncService::ResolveConflictForLocalSync( 820 ConflictResolutionResult DriveFileSyncService::ResolveConflictForLocalSync(
793 SyncFileType local_file_type, 821 SyncFileType local_file_type,
794 const base::Time& local_updated_time, 822 const base::Time& local_updated_time,
795 SyncFileType remote_file_type, 823 SyncFileType remote_file_type,
796 const base::Time& remote_updated_time) { 824 const base::Time& remote_updated_time) {
(...skipping 562 matching lines...) Expand 10 before | Expand all | Expand 10 after
1359 DVLOG(3) << "Append remote change: " << path.value() 1387 DVLOG(3) << "Append remote change: " << path.value()
1360 << " (" << normalized_path << ")" 1388 << " (" << normalized_path << ")"
1361 << "@" << changestamp << " " 1389 << "@" << changestamp << " "
1362 << file_change.DebugString(); 1390 << file_change.DebugString();
1363 1391
1364 return true; 1392 return true;
1365 } 1393 }
1366 1394
1367 void DriveFileSyncService::RemoveRemoteChange( 1395 void DriveFileSyncService::RemoveRemoteChange(
1368 const FileSystemURL& url) { 1396 const FileSystemURL& url) {
1369 if (!remote_change_handler_.RemoveChangeForURL(url)) 1397 remote_change_handler_.RemoveChangeForURL(url);
1370 return;
1371 if (metadata_store_->IsBatchSyncOrigin(url.origin()) &&
1372 !remote_change_handler_.HasChangesForOrigin(url.origin())) {
1373 metadata_store_->MoveBatchSyncOriginToIncremental(url.origin());
1374 }
1375 } 1398 }
1376 1399
1377 void DriveFileSyncService::MarkConflict( 1400 void DriveFileSyncService::MarkConflict(
1378 const fileapi::FileSystemURL& url, 1401 const fileapi::FileSystemURL& url,
1379 DriveMetadata* drive_metadata, 1402 DriveMetadata* drive_metadata,
1380 const SyncStatusCallback& callback) { 1403 const SyncStatusCallback& callback) {
1381 DCHECK(drive_metadata); 1404 DCHECK(drive_metadata);
1382 if (drive_metadata->resource_id().empty()) { 1405 if (drive_metadata->resource_id().empty()) {
1383 // If the file does not have valid drive_metadata in the metadata store 1406 // If the file does not have valid drive_metadata in the metadata store
1384 // we must have a pending remote change entry. 1407 // we must have a pending remote change entry.
(...skipping 316 matching lines...) Expand 10 before | Expand all | Expand 10 after
1701 1724
1702 void DriveFileSyncService::DidEnsureOriginRoot( 1725 void DriveFileSyncService::DidEnsureOriginRoot(
1703 const GURL& origin, 1726 const GURL& origin,
1704 const ResourceIdCallback& callback, 1727 const ResourceIdCallback& callback,
1705 google_apis::GDataErrorCode error, 1728 google_apis::GDataErrorCode error,
1706 const std::string& resource_id) { 1729 const std::string& resource_id) {
1707 SyncStatusCode status = GDataErrorCodeToSyncStatusCodeWrapper(error); 1730 SyncStatusCode status = GDataErrorCodeToSyncStatusCodeWrapper(error);
1708 if (status == SYNC_STATUS_OK && 1731 if (status == SYNC_STATUS_OK &&
1709 metadata_store_->IsKnownOrigin(origin)) { 1732 metadata_store_->IsKnownOrigin(origin)) {
1710 metadata_store_->SetOriginRootDirectory(origin, resource_id); 1733 metadata_store_->SetOriginRootDirectory(origin, resource_id);
1711 if (metadata_store_->IsBatchSyncOrigin(origin))
1712 pending_batch_sync_origins_.insert(origin);
1713 } 1734 }
1714 callback.Run(status, resource_id); 1735 callback.Run(status, resource_id);
1715 } 1736 }
1716 1737
1717 std::string DriveFileSyncService::sync_root_resource_id() { 1738 std::string DriveFileSyncService::sync_root_resource_id() {
1718 return metadata_store_->sync_root_directory(); 1739 return metadata_store_->sync_root_directory();
1719 } 1740 }
1720 1741
1721 } // namespace sync_file_system 1742 } // namespace sync_file_system
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698