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

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: fixup after manual diff 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
calvinlo 2013/05/21 07:12:26 Do we have a standard way to handle DB migrations?
tzik 2013/05/21 14:08:38 DriveMetadataDB has MigrateDatabaseIfNeeded, and i
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 pending_batch_sync_origins_.erase(origin);
520 !metadata_store_->IsIncrementalSyncOrigin(origin)) { 528 if (!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);
527 metadata_store_->DisableOrigin(origin, callback); 534 metadata_store_->DisableOrigin(origin, callback);
528 } 535 }
529 536
530 void DriveFileSyncService::DoUninstallOrigin( 537 void DriveFileSyncService::DoUninstallOrigin(
531 const GURL& origin, 538 const GURL& origin,
532 const SyncStatusCallback& callback) { 539 const SyncStatusCallback& callback) {
540 // Because origin management is now split between DriveFileSyncService and
541 // DriveMetadataStore, resource_id must be checked for in two places.
533 std::string resource_id = metadata_store_->GetResourceIdForOrigin(origin); 542 std::string resource_id = metadata_store_->GetResourceIdForOrigin(origin);
543 if (resource_id.empty()) {
544 std::map<GURL, std::string>::const_iterator iterator =
545 pending_batch_sync_origins_.find(origin);
546 if (iterator != pending_batch_sync_origins_.end())
547 resource_id = iterator->second;
548 }
534 549
535 // An empty resource_id indicates either one of following two cases: 550 // An empty resource_id indicates either one of following two cases:
536 // 1) origin is not in metadata_store_ because the extension was never 551 // 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 552 // run or it's not managed by this service, and thus no
538 // origin directory on the remote drive was created. 553 // origin directory on the remote drive was created.
539 // 2) origin or sync root folder is deleted on Drive. 554 // 2) origin or sync root folder is deleted on Drive.
540 if (resource_id.empty()) { 555 if (resource_id.empty()) {
541 callback.Run(SYNC_STATUS_UNKNOWN_ORIGIN); 556 callback.Run(SYNC_STATUS_UNKNOWN_ORIGIN);
542 return; 557 return;
543 } 558 }
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
611 running_local_sync_task_.reset(new drive::LocalChangeProcessorDelegate( 626 running_local_sync_task_.reset(new drive::LocalChangeProcessorDelegate(
612 AsWeakPtr(), local_file_change, local_file_path, 627 AsWeakPtr(), local_file_change, local_file_path,
613 local_file_metadata, url)); 628 local_file_metadata, url));
614 running_local_sync_task_->Run(base::Bind( 629 running_local_sync_task_->Run(base::Bind(
615 &DriveFileSyncService::DidApplyLocalChange, AsWeakPtr(), callback)); 630 &DriveFileSyncService::DidApplyLocalChange, AsWeakPtr(), callback));
616 } 631 }
617 632
618 void DriveFileSyncService::UpdateRegisteredOrigins() { 633 void DriveFileSyncService::UpdateRegisteredOrigins() {
619 ExtensionService* extension_service = 634 ExtensionService* extension_service =
620 extensions::ExtensionSystem::Get(profile_)->extension_service(); 635 extensions::ExtensionSystem::Get(profile_)->extension_service();
636 DCHECK(pending_batch_sync_origins_.empty());
637 DCHECK(metadata_store_->batch_sync_origins->empty()));
621 if (!extension_service) 638 if (!extension_service)
622 return; 639 return;
623 640
624 std::vector<GURL> origins; 641 std::vector<GURL> origins;
625 metadata_store_->GetAllOrigins(&origins); 642 metadata_store_->GetAllOrigins(&origins);
643
644 // Update the status of every origin using status from ExtensionService.
626 for (std::vector<GURL>::const_iterator itr = origins.begin(); 645 for (std::vector<GURL>::const_iterator itr = origins.begin();
627 itr != origins.end(); ++itr) { 646 itr != origins.end(); ++itr) {
628 std::string extension_id = itr->host(); 647 std::string extension_id = itr->host();
629 GURL origin = 648 GURL origin =
630 extensions::Extension::GetBaseURLFromExtensionId(extension_id); 649 extensions::Extension::GetBaseURLFromExtensionId(extension_id);
631 650
632 if (!extension_service->GetInstalledExtension(extension_id)) { 651 if (!extension_service->GetInstalledExtension(extension_id)) {
633 // Extension has been uninstalled. 652 // Extension has been uninstalled.
634 UninstallOrigin(origin, base::Bind(&EmptyStatusCallback)); 653 UninstallOrigin(origin, base::Bind(&EmptyStatusCallback));
635 } else if ((metadata_store_->IsBatchSyncOrigin(origin) || 654 } else if (metadata_store_->IsIncrementalSyncOrigin(origin) &&
636 metadata_store_->IsIncrementalSyncOrigin(origin)) &&
637 !extension_service->IsExtensionEnabled(extension_id)) { 655 !extension_service->IsExtensionEnabled(extension_id)) {
638 // Extension has been disabled. 656 // Incremental Extension has been disabled.
639 metadata_store_->DisableOrigin(origin, base::Bind(&EmptyStatusCallback)); 657 metadata_store_->DisableOrigin(origin, base::Bind(&EmptyStatusCallback));
640 } else if (metadata_store_->IsOriginDisabled(origin) && 658 } else if (metadata_store_->IsOriginDisabled(origin) &&
641 extension_service->IsExtensionEnabled(extension_id)) { 659 extension_service->IsExtensionEnabled(extension_id)) {
642 // Extension has been re-enabled. 660 // Extension has been re-enabled.
661 pending_batch_sync_origins_.insert(
662 *metadata_store_->disabled_origins().find(origin));
643 metadata_store_->EnableOrigin(origin, base::Bind(&EmptyStatusCallback)); 663 metadata_store_->EnableOrigin(origin, base::Bind(&EmptyStatusCallback));
644 pending_batch_sync_origins_.insert(origin);
645 } 664 }
646 } 665 }
647 } 666 }
648 667
649 void DriveFileSyncService::StartBatchSync( 668 void DriveFileSyncService::StartBatchSync(
650 const SyncStatusCallback& callback) { 669 const SyncStatusCallback& callback) {
651 DCHECK(GetCurrentState() == REMOTE_SERVICE_OK || may_have_unfetched_changes_); 670 DCHECK(GetCurrentState() == REMOTE_SERVICE_OK || may_have_unfetched_changes_);
671 DCHECK(!pending_batch_sync_origins_.empty());
652 672
653 if (pending_batch_sync_origins_.empty()) { 673 GURL origin = pending_batch_sync_origins_.begin()->first;
654 callback.Run(SYNC_STATUS_OK); 674 std::string resource_id = pending_batch_sync_origins_.begin()->second;
655 return; 675 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()); 676 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 677
663 DCHECK(!metadata_store_->IsOriginDisabled(origin)); 678 DCHECK(!metadata_store_->IsOriginDisabled(origin));
664 679
665 DVLOG(1) << "Start batch sync for:" << origin.spec(); 680 DVLOG(1) << "Start batch sync for:" << origin.spec();
666 681
667 api_util_->GetLargestChangeStamp( 682 api_util_->GetLargestChangeStamp(
668 base::Bind(&DriveFileSyncService::DidGetLargestChangeStampForBatchSync, 683 base::Bind(&DriveFileSyncService::DidGetLargestChangeStampForBatchSync,
669 AsWeakPtr(), 684 AsWeakPtr(),
670 callback, 685 callback,
671 origin, 686 origin,
(...skipping 16 matching lines...) Expand all
688 &DriveFileSyncService::DidGetDriveDirectoryForOrigin, 703 &DriveFileSyncService::DidGetDriveDirectoryForOrigin,
689 AsWeakPtr(), origin, callback)); 704 AsWeakPtr(), origin, callback));
690 return; 705 return;
691 } 706 }
692 707
693 if (status != SYNC_STATUS_OK) { 708 if (status != SYNC_STATUS_OK) {
694 callback.Run(status); 709 callback.Run(status);
695 return; 710 return;
696 } 711 }
697 712
698 // Add this origin to batch sync origin if it hasn't been already. 713 if (!metadata_store_->IsKnownOrigin(origin))
699 if (!metadata_store_->IsKnownOrigin(origin)) { 714 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 715
704 callback.Run(SYNC_STATUS_OK); 716 callback.Run(SYNC_STATUS_OK);
705 } 717 }
706 718
707 void DriveFileSyncService::DidUninstallOrigin( 719 void DriveFileSyncService::DidUninstallOrigin(
708 const GURL& origin, 720 const GURL& origin,
709 const SyncStatusCallback& callback, 721 const SyncStatusCallback& callback,
710 google_apis::GDataErrorCode error) { 722 google_apis::GDataErrorCode error) {
711 SyncStatusCode status = GDataErrorCodeToSyncStatusCodeWrapper(error); 723 SyncStatusCode status = GDataErrorCodeToSyncStatusCodeWrapper(error);
712 if (status != SYNC_STATUS_OK) { 724 if (status != SYNC_STATUS_OK) {
713 callback.Run(status); 725 callback.Run(status);
714 return; 726 return;
715 } 727 }
716 728
717 // Origin directory has been removed so it's now safe to remove the origin 729 // Origin directory has been removed so it's now safe to remove the origin
718 // from the metadata store. 730 // from the metadata store.
719 DoUnregisterOriginForTrackingChanges(origin, callback); 731 DoUnregisterOriginForTrackingChanges(origin, callback);
720 } 732 }
721 733
722 void DriveFileSyncService::DidGetLargestChangeStampForBatchSync( 734 void DriveFileSyncService::DidGetLargestChangeStampForBatchSync(
723 const SyncStatusCallback& callback, 735 const SyncStatusCallback& callback,
724 const GURL& origin, 736 const GURL& origin,
725 const std::string& resource_id, 737 const std::string& resource_id,
726 google_apis::GDataErrorCode error, 738 google_apis::GDataErrorCode error,
727 int64 largest_changestamp) { 739 int64 largest_changestamp) {
728 if (error != google_apis::HTTP_SUCCESS) { 740 if (error != google_apis::HTTP_SUCCESS) {
729 pending_batch_sync_origins_.insert(origin); 741 pending_batch_sync_origins_.insert(std::make_pair(origin, resource_id));
730 callback.Run(GDataErrorCodeToSyncStatusCodeWrapper(error)); 742 callback.Run(GDataErrorCodeToSyncStatusCodeWrapper(error));
731 return; 743 return;
732 } 744 }
733 745
734 if (metadata_store_->incremental_sync_origins().empty()) { 746 if (metadata_store_->incremental_sync_origins().empty()) {
735 largest_fetched_changestamp_ = largest_changestamp; 747 largest_fetched_changestamp_ = largest_changestamp;
736 metadata_store_->SetLargestChangeStamp( 748 metadata_store_->SetLargestChangeStamp(
737 largest_changestamp, 749 largest_changestamp,
738 base::Bind(&EmptyStatusCallback)); 750 base::Bind(&EmptyStatusCallback));
739 } 751 }
740 752
741 api_util_->ListFiles( 753 api_util_->ListFiles(
742 resource_id, 754 resource_id,
743 base::Bind(&DriveFileSyncService::DidGetDirectoryContentForBatchSync, 755 base::Bind(&DriveFileSyncService::DidGetDirectoryContentForBatchSync,
744 AsWeakPtr(), 756 AsWeakPtr(),
745 callback, 757 callback,
746 origin, 758 origin,
759 resource_id,
747 largest_changestamp)); 760 largest_changestamp));
748 } 761 }
749 762
750 void DriveFileSyncService::DidGetDirectoryContentForBatchSync( 763 void DriveFileSyncService::DidGetDirectoryContentForBatchSync(
751 const SyncStatusCallback& callback, 764 const SyncStatusCallback& callback,
752 const GURL& origin, 765 const GURL& origin,
766 const std::string& resource_id,
753 int64 largest_changestamp, 767 int64 largest_changestamp,
754 google_apis::GDataErrorCode error, 768 google_apis::GDataErrorCode error,
755 scoped_ptr<google_apis::ResourceList> feed) { 769 scoped_ptr<google_apis::ResourceList> feed) {
756 if (error != google_apis::HTTP_SUCCESS) { 770 if (error != google_apis::HTTP_SUCCESS) {
757 pending_batch_sync_origins_.insert(origin); 771 pending_batch_sync_origins_.insert(std::make_pair(origin, resource_id));
758 callback.Run(GDataErrorCodeToSyncStatusCodeWrapper(error)); 772 callback.Run(GDataErrorCodeToSyncStatusCodeWrapper(error));
759 return; 773 return;
760 } 774 }
761 775
762 typedef ScopedVector<google_apis::ResourceEntry>::const_iterator iterator; 776 typedef ScopedVector<google_apis::ResourceEntry>::const_iterator iterator;
763 for (iterator itr = feed->entries().begin(); 777 for (iterator itr = feed->entries().begin();
764 itr != feed->entries().end(); ++itr) { 778 itr != feed->entries().end(); ++itr) {
765 AppendRemoteChange(origin, **itr, largest_changestamp, 779 const google_apis::ResourceEntry& entry = **itr;
780 AppendRemoteChange(origin, entry, largest_changestamp,
766 RemoteChangeHandler::REMOTE_SYNC_TYPE_BATCH); 781 RemoteChangeHandler::REMOTE_SYNC_TYPE_BATCH);
782
783 // Save to be fetched file to DB for restore in case of crash.
784 DriveMetadata metadata;
785 metadata.set_resource_id(entry.resource_id());
786 metadata.set_md5_checksum(entry.file_md5());
787 metadata.set_conflicted(false);
788 metadata.set_to_be_fetched(true);
789
790 base::FilePath path = TitleToPath(entry.title());
791 fileapi::FileSystemURL url(CreateSyncableFileSystemURL(
792 origin, kServiceName, path));
793 // TODO(calvinlo): Write metadata and origin data as single batch command
794 // so it's not possible for the DB to contain a DriveMetadata with an
795 // unknown origin.
796 metadata_store_->UpdateEntry(url, metadata,
797 base::Bind(&EmptyStatusCallback));
767 } 798 }
768 799
769 GURL next_feed_url; 800 GURL next_feed_url;
770 if (feed->GetNextFeedURL(&next_feed_url)) { 801 if (feed->GetNextFeedURL(&next_feed_url)) {
771 api_util_->ContinueListing( 802 api_util_->ContinueListing(
772 next_feed_url, 803 next_feed_url,
773 base::Bind(&DriveFileSyncService::DidGetDirectoryContentForBatchSync, 804 base::Bind(&DriveFileSyncService::DidGetDirectoryContentForBatchSync,
774 AsWeakPtr(), 805 AsWeakPtr(),
775 callback, 806 callback,
776 origin, 807 origin,
808 resource_id,
777 largest_changestamp)); 809 largest_changestamp));
778 return; 810 return;
779 } 811 }
780 812
781 // Move |origin| to the incremental sync origin set if the origin has no file. 813 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; 814 may_have_unfetched_changes_ = true;
788 callback.Run(SYNC_STATUS_OK); 815 callback.Run(SYNC_STATUS_OK);
789 } 816 }
790 817
791 // TODO(tzik): Factor out this conflict resolution function. 818 // TODO(tzik): Factor out this conflict resolution function.
792 ConflictResolutionResult DriveFileSyncService::ResolveConflictForLocalSync( 819 ConflictResolutionResult DriveFileSyncService::ResolveConflictForLocalSync(
793 SyncFileType local_file_type, 820 SyncFileType local_file_type,
794 const base::Time& local_updated_time, 821 const base::Time& local_updated_time,
795 SyncFileType remote_file_type, 822 SyncFileType remote_file_type,
796 const base::Time& remote_updated_time) { 823 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() 1386 DVLOG(3) << "Append remote change: " << path.value()
1360 << " (" << normalized_path << ")" 1387 << " (" << normalized_path << ")"
1361 << "@" << changestamp << " " 1388 << "@" << changestamp << " "
1362 << file_change.DebugString(); 1389 << file_change.DebugString();
1363 1390
1364 return true; 1391 return true;
1365 } 1392 }
1366 1393
1367 void DriveFileSyncService::RemoveRemoteChange( 1394 void DriveFileSyncService::RemoveRemoteChange(
1368 const FileSystemURL& url) { 1395 const FileSystemURL& url) {
1369 if (!remote_change_handler_.RemoveChangeForURL(url)) 1396 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 } 1397 }
1376 1398
1377 void DriveFileSyncService::MarkConflict( 1399 void DriveFileSyncService::MarkConflict(
1378 const fileapi::FileSystemURL& url, 1400 const fileapi::FileSystemURL& url,
1379 DriveMetadata* drive_metadata, 1401 DriveMetadata* drive_metadata,
1380 const SyncStatusCallback& callback) { 1402 const SyncStatusCallback& callback) {
1381 DCHECK(drive_metadata); 1403 DCHECK(drive_metadata);
1382 if (drive_metadata->resource_id().empty()) { 1404 if (drive_metadata->resource_id().empty()) {
1383 // If the file does not have valid drive_metadata in the metadata store 1405 // If the file does not have valid drive_metadata in the metadata store
1384 // we must have a pending remote change entry. 1406 // we must have a pending remote change entry.
(...skipping 316 matching lines...) Expand 10 before | Expand all | Expand 10 after
1701 1723
1702 void DriveFileSyncService::DidEnsureOriginRoot( 1724 void DriveFileSyncService::DidEnsureOriginRoot(
1703 const GURL& origin, 1725 const GURL& origin,
1704 const ResourceIdCallback& callback, 1726 const ResourceIdCallback& callback,
1705 google_apis::GDataErrorCode error, 1727 google_apis::GDataErrorCode error,
1706 const std::string& resource_id) { 1728 const std::string& resource_id) {
1707 SyncStatusCode status = GDataErrorCodeToSyncStatusCodeWrapper(error); 1729 SyncStatusCode status = GDataErrorCodeToSyncStatusCodeWrapper(error);
1708 if (status == SYNC_STATUS_OK && 1730 if (status == SYNC_STATUS_OK &&
1709 metadata_store_->IsKnownOrigin(origin)) { 1731 metadata_store_->IsKnownOrigin(origin)) {
1710 metadata_store_->SetOriginRootDirectory(origin, resource_id); 1732 metadata_store_->SetOriginRootDirectory(origin, resource_id);
1711 if (metadata_store_->IsBatchSyncOrigin(origin))
1712 pending_batch_sync_origins_.insert(origin);
1713 } 1733 }
1714 callback.Run(status, resource_id); 1734 callback.Run(status, resource_id);
1715 } 1735 }
1716 1736
1717 std::string DriveFileSyncService::sync_root_resource_id() { 1737 std::string DriveFileSyncService::sync_root_resource_id() {
1718 return metadata_store_->sync_root_directory(); 1738 return metadata_store_->sync_root_directory();
1719 } 1739 }
1720 1740
1721 } // namespace sync_file_system 1741 } // namespace sync_file_system
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698