| OLD | NEW |
| 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 <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/message_loop.h" | 9 #include "base/message_loop.h" |
| 10 #include "base/message_loop_proxy.h" | 10 #include "base/message_loop_proxy.h" |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 67 } | 67 } |
| 68 | 68 |
| 69 } // namespace | 69 } // namespace |
| 70 | 70 |
| 71 class MockRemoteServiceObserver : public RemoteFileSyncService::Observer { | 71 class MockRemoteServiceObserver : public RemoteFileSyncService::Observer { |
| 72 public: | 72 public: |
| 73 MockRemoteServiceObserver() {} | 73 MockRemoteServiceObserver() {} |
| 74 virtual ~MockRemoteServiceObserver() {} | 74 virtual ~MockRemoteServiceObserver() {} |
| 75 | 75 |
| 76 // LocalChangeProcessor override. | 76 // LocalChangeProcessor override. |
| 77 MOCK_METHOD1(OnRemoteChangeAvailable, | 77 MOCK_METHOD1(OnRemoteChangeQueueUpdated, |
| 78 void(int64 pending_changes)); | 78 void(int64 pending_changes)); |
| 79 MOCK_METHOD2(OnRemoteServiceStateUpdated, | 79 MOCK_METHOD2(OnRemoteServiceStateUpdated, |
| 80 void(RemoteServiceState state, | 80 void(RemoteServiceState state, |
| 81 const std::string& description)); | 81 const std::string& description)); |
| 82 }; | 82 }; |
| 83 | 83 |
| 84 class DriveFileSyncServiceTest : public testing::Test { | 84 class DriveFileSyncServiceTest : public testing::Test { |
| 85 public: | 85 public: |
| 86 DriveFileSyncServiceTest() | 86 DriveFileSyncServiceTest() |
| 87 : file_thread_(content::BrowserThread::FILE, &message_loop_), | 87 : file_thread_(content::BrowserThread::FILE, &message_loop_), |
| 88 mock_drive_service_(NULL) { | 88 mock_drive_service_(NULL) { |
| 89 } | 89 } |
| 90 | 90 |
| 91 virtual void SetUp() OVERRIDE { | 91 virtual void SetUp() OVERRIDE { |
| 92 ASSERT_TRUE(fileapi::RegisterSyncableFileSystem( | 92 ASSERT_TRUE(fileapi::RegisterSyncableFileSystem( |
| 93 DriveFileSyncService::kServiceName)); | 93 DriveFileSyncService::kServiceName)); |
| 94 | 94 |
| 95 mock_drive_service_ = new StrictMock<google_apis::MockDriveService>; | 95 mock_drive_service_ = new StrictMock<google_apis::MockDriveService>; |
| 96 | 96 |
| 97 EXPECT_CALL(*mock_drive_service(), Initialize(&profile_)); | 97 EXPECT_CALL(*mock_drive_service(), Initialize(&profile_)); |
| 98 | 98 |
| 99 sync_client_ = DriveFileSyncClient::CreateForTesting( | 99 sync_client_ = DriveFileSyncClient::CreateForTesting( |
| 100 &profile_, | 100 &profile_, |
| 101 GURL(google_apis::GDataWapiUrlGenerator::kBaseUrlForProduction), |
| 101 scoped_ptr<DriveServiceInterface>(mock_drive_service_), | 102 scoped_ptr<DriveServiceInterface>(mock_drive_service_), |
| 102 scoped_ptr<DriveUploaderInterface>()).Pass(); | 103 scoped_ptr<DriveUploaderInterface>()).Pass(); |
| 103 ASSERT_TRUE(base_dir_.CreateUniqueTempDir()); | 104 ASSERT_TRUE(base_dir_.CreateUniqueTempDir()); |
| 104 metadata_store_.reset(new DriveMetadataStore( | 105 metadata_store_.reset(new DriveMetadataStore( |
| 105 base_dir_.path(), base::MessageLoopProxy::current())); | 106 base_dir_.path(), base::MessageLoopProxy::current())); |
| 106 | 107 |
| 107 bool done = false; | 108 bool done = false; |
| 108 metadata_store_->Initialize(base::Bind(&DidInitialize, &done)); | 109 metadata_store_->Initialize(base::Bind(&DidInitialize, &done)); |
| 109 message_loop_.RunUntilIdle(); | 110 message_loop_.RunUntilIdle(); |
| 110 EXPECT_TRUE(done); | 111 EXPECT_TRUE(done); |
| (...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 251 fileapi::SyncOperationType* operation_out, | 252 fileapi::SyncOperationType* operation_out, |
| 252 fileapi::SyncStatusCode status, | 253 fileapi::SyncStatusCode status, |
| 253 const fileapi::FileSystemURL& url, | 254 const fileapi::FileSystemURL& url, |
| 254 fileapi::SyncOperationType operation) { | 255 fileapi::SyncOperationType operation) { |
| 255 *status_out = status; | 256 *status_out = status; |
| 256 *url_out = url; | 257 *url_out = url; |
| 257 *operation_out = operation; | 258 *operation_out = operation; |
| 258 } | 259 } |
| 259 | 260 |
| 260 void AppendIncrementalRemoteChange(const GURL& origin, | 261 void AppendIncrementalRemoteChange(const GURL& origin, |
| 261 google_apis::DocumentEntry* entry, | 262 const google_apis::DocumentEntry& entry, |
| 262 int64 changestamp) { | 263 int64 changestamp) { |
| 263 sync_service_->AppendNewRemoteChange( | 264 sync_service_->AppendNewRemoteChange( |
| 264 origin, entry, changestamp, | 265 origin, entry, changestamp, |
| 265 DriveFileSyncService::REMOTE_SYNC_TYPE_INCREMENTAL); | 266 DriveFileSyncService::REMOTE_SYNC_TYPE_INCREMENTAL); |
| 266 } | 267 } |
| 267 | 268 |
| 268 private: | 269 private: |
| 269 MessageLoop message_loop_; | 270 MessageLoop message_loop_; |
| 270 content::TestBrowserThread file_thread_; | 271 content::TestBrowserThread file_thread_; |
| 271 | 272 |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 364 std::string query = FormatTitleQuery(kSyncRootDirectoryName); | 365 std::string query = FormatTitleQuery(kSyncRootDirectoryName); |
| 365 EXPECT_CALL(*mock_drive_service(), | 366 EXPECT_CALL(*mock_drive_service(), |
| 366 GetDocuments(GURL(), 0, query, false, std::string(), _)) | 367 GetDocuments(GURL(), 0, query, false, std::string(), _)) |
| 367 .WillOnce(InvokeGetDataCallback5( | 368 .WillOnce(InvokeGetDataCallback5( |
| 368 google_apis::HTTP_SUCCESS, | 369 google_apis::HTTP_SUCCESS, |
| 369 base::Passed(&sync_root_found))); | 370 base::Passed(&sync_root_found))); |
| 370 | 371 |
| 371 EXPECT_CALL(*mock_remote_observer(), | 372 EXPECT_CALL(*mock_remote_observer(), |
| 372 OnRemoteServiceStateUpdated(REMOTE_SERVICE_OK, _)) | 373 OnRemoteServiceStateUpdated(REMOTE_SERVICE_OK, _)) |
| 373 .Times(1); | 374 .Times(1); |
| 374 EXPECT_CALL(*mock_remote_observer(), OnRemoteChangeAvailable(0)) | 375 EXPECT_CALL(*mock_remote_observer(), OnRemoteChangeQueueUpdated(0)) |
| 375 .Times(AnyNumber()); | 376 .Times(AnyNumber()); |
| 376 | 377 |
| 377 SetUpDriveSyncService(); | 378 SetUpDriveSyncService(); |
| 378 message_loop()->RunUntilIdle(); | 379 message_loop()->RunUntilIdle(); |
| 379 | 380 |
| 380 EXPECT_EQ("folder:sync_root_resource_id", | 381 EXPECT_EQ("folder:sync_root_resource_id", |
| 381 metadata_store()->sync_root_directory()); | 382 metadata_store()->sync_root_directory()); |
| 382 | 383 |
| 383 EXPECT_EQ(0u, metadata_store()->batch_sync_origins().size()); | 384 EXPECT_EQ(0u, metadata_store()->batch_sync_origins().size()); |
| 384 EXPECT_EQ(0u, metadata_store()->incremental_sync_origins().size()); | 385 EXPECT_EQ(0u, metadata_store()->incremental_sync_origins().size()); |
| 385 EXPECT_EQ(0u, pending_changes().size()); | 386 EXPECT_EQ(0u, pending_changes().size()); |
| 386 } | 387 } |
| 387 | 388 |
| 388 TEST_F(DriveFileSyncServiceTest, BatchSyncOnInitialization) { | 389 TEST_F(DriveFileSyncServiceTest, BatchSyncOnInitialization) { |
| 389 const GURL kOrigin1("chrome-extension://example"); | 390 const GURL kOrigin1("chrome-extension://example"); |
| 390 const GURL kOrigin2("chrome-extension://example2"); | 391 const GURL kOrigin2("chrome-extension://example2"); |
| 391 const std::string kDirectoryResourceId1( | 392 const std::string kDirectoryResourceId1( |
| 392 "folder:origin_directory_resource_id"); | 393 "folder:origin_directory_resource_id"); |
| 393 const std::string kDirectoryResourceId2( | 394 const std::string kDirectoryResourceId2( |
| 394 "folder:origin_directory_resource_id2"); | 395 "folder:origin_directory_resource_id2"); |
| 395 const std::string kSyncRootResourceId("folder:sync_root_resource_id"); | 396 const std::string kSyncRootResourceId("folder:sync_root_resource_id"); |
| 396 | 397 |
| 397 metadata_store()->SetSyncRootDirectory(kSyncRootResourceId); | 398 metadata_store()->SetSyncRootDirectory(kSyncRootResourceId); |
| 398 metadata_store()->AddBatchSyncOrigin(kOrigin1, kDirectoryResourceId1); | 399 metadata_store()->AddBatchSyncOrigin(kOrigin1, kDirectoryResourceId1); |
| 399 metadata_store()->AddBatchSyncOrigin(kOrigin2, kDirectoryResourceId2); | 400 metadata_store()->AddBatchSyncOrigin(kOrigin2, kDirectoryResourceId2); |
| 400 metadata_store()->MoveBatchSyncOriginToIncremental(kOrigin2); | 401 metadata_store()->MoveBatchSyncOriginToIncremental(kOrigin2); |
| 401 | 402 |
| 402 EXPECT_CALL(*mock_remote_observer(), | 403 EXPECT_CALL(*mock_remote_observer(), OnRemoteChangeQueueUpdated(4)) |
| 403 OnRemoteChangeAvailable(4)) | |
| 404 .Times(AnyNumber()); | 404 .Times(AnyNumber()); |
| 405 | 405 |
| 406 InSequence sequence; | 406 InSequence sequence; |
| 407 | 407 |
| 408 scoped_ptr<Value> account_metadata(LoadJSONFile( | 408 scoped_ptr<Value> account_metadata(LoadJSONFile( |
| 409 "gdata/account_metadata.json")); | 409 "gdata/account_metadata.json")); |
| 410 EXPECT_CALL(*mock_drive_service(), | 410 EXPECT_CALL(*mock_drive_service(), |
| 411 GetAccountMetadata(_)) | 411 GetAccountMetadata(_)) |
| 412 .WillOnce(InvokeGetDataCallback0( | 412 .WillOnce(InvokeGetDataCallback0( |
| 413 google_apis::HTTP_SUCCESS, | 413 google_apis::HTTP_SUCCESS, |
| (...skipping 28 matching lines...) Expand all Loading... |
| 442 const GURL kOrigin("chrome-extension://example"); | 442 const GURL kOrigin("chrome-extension://example"); |
| 443 const std::string kDirectoryResourceId("folder:origin_directory_resource_id"); | 443 const std::string kDirectoryResourceId("folder:origin_directory_resource_id"); |
| 444 const std::string kSyncRootResourceId("folder:sync_root_resource_id"); | 444 const std::string kSyncRootResourceId("folder:sync_root_resource_id"); |
| 445 const GURL kSyncRootContentURL("https://sync_root_content_url/"); | 445 const GURL kSyncRootContentURL("https://sync_root_content_url/"); |
| 446 | 446 |
| 447 metadata_store()->SetSyncRootDirectory(kSyncRootResourceId); | 447 metadata_store()->SetSyncRootDirectory(kSyncRootResourceId); |
| 448 | 448 |
| 449 EXPECT_CALL(*mock_remote_observer(), | 449 EXPECT_CALL(*mock_remote_observer(), |
| 450 OnRemoteServiceStateUpdated(REMOTE_SERVICE_OK, _)) | 450 OnRemoteServiceStateUpdated(REMOTE_SERVICE_OK, _)) |
| 451 .Times(AtLeast(1)); | 451 .Times(AtLeast(1)); |
| 452 EXPECT_CALL(*mock_remote_observer(), OnRemoteChangeAvailable(0)) | 452 EXPECT_CALL(*mock_remote_observer(), OnRemoteChangeQueueUpdated(0)) |
| 453 .Times(AnyNumber()); | 453 .Times(AnyNumber()); |
| 454 | 454 |
| 455 InSequence sequence; | 455 InSequence sequence; |
| 456 | 456 |
| 457 scoped_ptr<Value> origin_directory_not_found(LoadJSONFile( | 457 scoped_ptr<Value> origin_directory_not_found(LoadJSONFile( |
| 458 "sync_file_system/origin_directory_not_found.json")); | 458 "sync_file_system/origin_directory_not_found.json")); |
| 459 std::string query = FormatTitleQuery( | 459 std::string query = FormatTitleQuery( |
| 460 DriveFileSyncClient::OriginToDirectoryTitle(kOrigin)); | 460 DriveFileSyncClient::OriginToDirectoryTitle(kOrigin)); |
| 461 | 461 |
| 462 EXPECT_CALL(*mock_drive_service(), | 462 EXPECT_CALL(*mock_drive_service(), |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 523 TEST_F(DriveFileSyncServiceTest, RegisterExistingOrigin) { | 523 TEST_F(DriveFileSyncServiceTest, RegisterExistingOrigin) { |
| 524 const GURL kOrigin("chrome-extension://example"); | 524 const GURL kOrigin("chrome-extension://example"); |
| 525 const std::string kDirectoryResourceId("folder:origin_directory_resource_id"); | 525 const std::string kDirectoryResourceId("folder:origin_directory_resource_id"); |
| 526 const std::string kSyncRootResourceId("folder:sync_root_resource_id"); | 526 const std::string kSyncRootResourceId("folder:sync_root_resource_id"); |
| 527 | 527 |
| 528 metadata_store()->SetSyncRootDirectory(kSyncRootResourceId); | 528 metadata_store()->SetSyncRootDirectory(kSyncRootResourceId); |
| 529 | 529 |
| 530 EXPECT_CALL(*mock_remote_observer(), | 530 EXPECT_CALL(*mock_remote_observer(), |
| 531 OnRemoteServiceStateUpdated(REMOTE_SERVICE_OK, _)) | 531 OnRemoteServiceStateUpdated(REMOTE_SERVICE_OK, _)) |
| 532 .Times(AtLeast(1)); | 532 .Times(AtLeast(1)); |
| 533 EXPECT_CALL(*mock_remote_observer(), OnRemoteChangeAvailable(4)) | 533 EXPECT_CALL(*mock_remote_observer(), OnRemoteChangeQueueUpdated(_)) |
| 534 .Times(AnyNumber()); | 534 .Times(AnyNumber()); |
| 535 | 535 |
| 536 InSequence sequence; | 536 InSequence sequence; |
| 537 | 537 |
| 538 scoped_ptr<Value> origin_directory_found(LoadJSONFile( | 538 scoped_ptr<Value> origin_directory_found(LoadJSONFile( |
| 539 "sync_file_system/origin_directory_found.json")); | 539 "sync_file_system/origin_directory_found.json")); |
| 540 std::string query = FormatTitleQuery( | 540 std::string query = FormatTitleQuery( |
| 541 DriveFileSyncClient::OriginToDirectoryTitle(kOrigin)); | 541 DriveFileSyncClient::OriginToDirectoryTitle(kOrigin)); |
| 542 EXPECT_CALL(*mock_drive_service(), | 542 EXPECT_CALL(*mock_drive_service(), |
| 543 GetDocuments(GURL(), 0, query, false, kSyncRootResourceId, _)) | 543 GetDocuments(GURL(), 0, query, false, kSyncRootResourceId, _)) |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 589 const std::string kSyncRootResourceId("folder:sync_root_resource_id"); | 589 const std::string kSyncRootResourceId("folder:sync_root_resource_id"); |
| 590 | 590 |
| 591 metadata_store()->SetSyncRootDirectory(kSyncRootResourceId); | 591 metadata_store()->SetSyncRootDirectory(kSyncRootResourceId); |
| 592 metadata_store()->AddBatchSyncOrigin(kOrigin1, kDirectoryResourceId1); | 592 metadata_store()->AddBatchSyncOrigin(kOrigin1, kDirectoryResourceId1); |
| 593 metadata_store()->AddBatchSyncOrigin(kOrigin2, kDirectoryResourceId2); | 593 metadata_store()->AddBatchSyncOrigin(kOrigin2, kDirectoryResourceId2); |
| 594 metadata_store()->MoveBatchSyncOriginToIncremental(kOrigin2); | 594 metadata_store()->MoveBatchSyncOriginToIncremental(kOrigin2); |
| 595 | 595 |
| 596 EXPECT_CALL(*mock_remote_observer(), | 596 EXPECT_CALL(*mock_remote_observer(), |
| 597 OnRemoteServiceStateUpdated(REMOTE_SERVICE_OK, _)) | 597 OnRemoteServiceStateUpdated(REMOTE_SERVICE_OK, _)) |
| 598 .Times(AtLeast(1)); | 598 .Times(AtLeast(1)); |
| 599 EXPECT_CALL(*mock_remote_observer(), OnRemoteChangeAvailable(_)) | 599 EXPECT_CALL(*mock_remote_observer(), OnRemoteChangeQueueUpdated(_)) |
| 600 .Times(AnyNumber()); | 600 .Times(AnyNumber()); |
| 601 | 601 |
| 602 InSequence sequence; | 602 InSequence sequence; |
| 603 | 603 |
| 604 scoped_ptr<Value> account_metadata(LoadJSONFile( | 604 scoped_ptr<Value> account_metadata(LoadJSONFile( |
| 605 "gdata/account_metadata.json")); | 605 "gdata/account_metadata.json")); |
| 606 EXPECT_CALL(*mock_drive_service(), | 606 EXPECT_CALL(*mock_drive_service(), |
| 607 GetAccountMetadata(_)) | 607 GetAccountMetadata(_)) |
| 608 .WillOnce(InvokeGetDataCallback0( | 608 .WillOnce(InvokeGetDataCallback0( |
| 609 google_apis::HTTP_SUCCESS, | 609 google_apis::HTTP_SUCCESS, |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 649 std::string query = FormatTitleQuery(kSyncRootDirectoryName); | 649 std::string query = FormatTitleQuery(kSyncRootDirectoryName); |
| 650 EXPECT_CALL(*mock_drive_service(), | 650 EXPECT_CALL(*mock_drive_service(), |
| 651 GetDocuments(GURL(), 0, query, false, std::string(), _)) | 651 GetDocuments(GURL(), 0, query, false, std::string(), _)) |
| 652 .WillOnce(InvokeGetDataCallback5( | 652 .WillOnce(InvokeGetDataCallback5( |
| 653 google_apis::HTTP_SUCCESS, | 653 google_apis::HTTP_SUCCESS, |
| 654 base::Passed(&sync_root_found))); | 654 base::Passed(&sync_root_found))); |
| 655 | 655 |
| 656 EXPECT_CALL(*mock_remote_observer(), | 656 EXPECT_CALL(*mock_remote_observer(), |
| 657 OnRemoteServiceStateUpdated(REMOTE_SERVICE_OK, _)) | 657 OnRemoteServiceStateUpdated(REMOTE_SERVICE_OK, _)) |
| 658 .Times(1); | 658 .Times(1); |
| 659 EXPECT_CALL(*mock_remote_observer(), OnRemoteChangeQueueUpdated(_)) |
| 660 .Times(AnyNumber()); |
| 659 | 661 |
| 660 SetUpDriveSyncService(); | 662 SetUpDriveSyncService(); |
| 661 message_loop()->RunUntilIdle(); | 663 message_loop()->RunUntilIdle(); |
| 662 | 664 |
| 663 const fileapi::FileChange local_add_or_update_change( | 665 const fileapi::FileChange local_add_or_update_change( |
| 664 fileapi::FileChange::FILE_CHANGE_ADD_OR_UPDATE, | 666 fileapi::FileChange::FILE_CHANGE_ADD_OR_UPDATE, |
| 665 fileapi::SYNC_FILE_TYPE_FILE); | 667 fileapi::SYNC_FILE_TYPE_FILE); |
| 666 const fileapi::FileChange local_delete_change( | 668 const fileapi::FileChange local_delete_change( |
| 667 fileapi::FileChange::FILE_CHANGE_DELETE, | 669 fileapi::FileChange::FILE_CHANGE_DELETE, |
| 668 fileapi::SYNC_FILE_TYPE_FILE); | 670 fileapi::SYNC_FILE_TYPE_FILE); |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 715 } | 717 } |
| 716 | 718 |
| 717 TEST_F(DriveFileSyncServiceTest, RemoteChange_NoChange) { | 719 TEST_F(DriveFileSyncServiceTest, RemoteChange_NoChange) { |
| 718 const std::string kSyncRootResourceId("folder:sync_root_resource_id"); | 720 const std::string kSyncRootResourceId("folder:sync_root_resource_id"); |
| 719 | 721 |
| 720 metadata_store()->SetSyncRootDirectory(kSyncRootResourceId); | 722 metadata_store()->SetSyncRootDirectory(kSyncRootResourceId); |
| 721 | 723 |
| 722 EXPECT_CALL(*mock_remote_observer(), | 724 EXPECT_CALL(*mock_remote_observer(), |
| 723 OnRemoteServiceStateUpdated(REMOTE_SERVICE_OK, _)) | 725 OnRemoteServiceStateUpdated(REMOTE_SERVICE_OK, _)) |
| 724 .Times(AnyNumber()); | 726 .Times(AnyNumber()); |
| 725 EXPECT_CALL(*mock_remote_observer(), OnRemoteChangeAvailable(_)) | 727 EXPECT_CALL(*mock_remote_observer(), OnRemoteChangeQueueUpdated(_)) |
| 726 .Times(AnyNumber()); | 728 .Times(AnyNumber()); |
| 727 | 729 |
| 728 SetUpDriveSyncService(); | 730 SetUpDriveSyncService(); |
| 729 | 731 |
| 730 ProcessRemoteChange(fileapi::SYNC_STATUS_NO_CHANGE_TO_SYNC, | 732 ProcessRemoteChange(fileapi::SYNC_STATUS_NO_CHANGE_TO_SYNC, |
| 731 fileapi::FileSystemURL(), | 733 fileapi::FileSystemURL(), |
| 732 fileapi::SYNC_OPERATION_NONE); | 734 fileapi::SYNC_OPERATION_NONE); |
| 733 EXPECT_TRUE(metadata_store()->batch_sync_origins().empty()); | 735 EXPECT_TRUE(metadata_store()->batch_sync_origins().empty()); |
| 734 EXPECT_TRUE(metadata_store()->incremental_sync_origins().empty()); | 736 EXPECT_TRUE(metadata_store()->incremental_sync_origins().empty()); |
| 735 EXPECT_TRUE(pending_changes().empty()); | 737 EXPECT_TRUE(pending_changes().empty()); |
| 736 } | 738 } |
| 737 | 739 |
| 738 TEST_F(DriveFileSyncServiceTest, RemoteChange_Busy) { | 740 TEST_F(DriveFileSyncServiceTest, RemoteChange_Busy) { |
| 739 const GURL kOrigin("chrome-extension://example"); | 741 const GURL kOrigin("chrome-extension://example"); |
| 740 const std::string kDirectoryResourceId("folder:origin_directory_resource_id"); | 742 const std::string kDirectoryResourceId("folder:origin_directory_resource_id"); |
| 741 const std::string kSyncRootResourceId("folder:sync_root_resource_id"); | 743 const std::string kSyncRootResourceId("folder:sync_root_resource_id"); |
| 742 const FilePath::StringType kFileName(FPL("File 1.mp3")); | 744 const FilePath::StringType kFileName(FPL("File 1.mp3")); |
| 743 | 745 |
| 744 metadata_store()->SetSyncRootDirectory(kSyncRootResourceId); | 746 metadata_store()->SetSyncRootDirectory(kSyncRootResourceId); |
| 745 metadata_store()->AddBatchSyncOrigin(kOrigin, kDirectoryResourceId); | 747 metadata_store()->AddBatchSyncOrigin(kOrigin, kDirectoryResourceId); |
| 746 metadata_store()->MoveBatchSyncOriginToIncremental(kOrigin); | 748 metadata_store()->MoveBatchSyncOriginToIncremental(kOrigin); |
| 747 | 749 |
| 748 EXPECT_CALL(*mock_remote_observer(), | 750 EXPECT_CALL(*mock_remote_observer(), |
| 749 OnRemoteServiceStateUpdated(REMOTE_SERVICE_OK, _)) | 751 OnRemoteServiceStateUpdated(REMOTE_SERVICE_OK, _)) |
| 750 .Times(AnyNumber()); | 752 .Times(AnyNumber()); |
| 751 EXPECT_CALL(*mock_remote_observer(), OnRemoteChangeAvailable(_)) | 753 EXPECT_CALL(*mock_remote_observer(), OnRemoteChangeQueueUpdated(_)) |
| 752 .Times(AnyNumber()); | 754 .Times(AnyNumber()); |
| 753 | 755 |
| 754 EXPECT_CALL(*mock_remote_processor(), | 756 EXPECT_CALL(*mock_remote_processor(), |
| 755 PrepareForProcessRemoteChange(CreateURL(kOrigin, kFileName), _)) | 757 PrepareForProcessRemoteChange(CreateURL(kOrigin, kFileName), _)) |
| 756 .WillOnce(PrepareForRemoteChange_Busy()); | 758 .WillOnce(PrepareForRemoteChange_Busy()); |
| 757 | 759 |
| 758 SetUpDriveSyncService(); | 760 SetUpDriveSyncService(); |
| 759 | 761 |
| 760 scoped_ptr<DocumentEntry> entry(DocumentEntry::ExtractAndParse( | 762 scoped_ptr<DocumentEntry> entry(DocumentEntry::ExtractAndParse( |
| 761 *LoadJSONFile("gdata/file_entry.json"))); | 763 *LoadJSONFile("gdata/file_entry.json"))); |
| 762 AppendIncrementalRemoteChange(kOrigin, entry.get(), 12345); | 764 AppendIncrementalRemoteChange(kOrigin, *entry, 12345); |
| 763 | 765 |
| 764 ProcessRemoteChange(fileapi::SYNC_STATUS_FILE_BUSY, | 766 ProcessRemoteChange(fileapi::SYNC_STATUS_FILE_BUSY, |
| 765 CreateURL(kOrigin, kFileName), | 767 CreateURL(kOrigin, kFileName), |
| 766 fileapi::SYNC_OPERATION_NONE); | 768 fileapi::SYNC_OPERATION_NONE); |
| 767 } | 769 } |
| 768 | 770 |
| 769 TEST_F(DriveFileSyncServiceTest, RemoteChange_NewFile) { | 771 TEST_F(DriveFileSyncServiceTest, RemoteChange_NewFile) { |
| 770 const GURL kOrigin("chrome-extension://example"); | 772 const GURL kOrigin("chrome-extension://example"); |
| 771 const std::string kDirectoryResourceId("folder:origin_directory_resource_id"); | 773 const std::string kDirectoryResourceId("folder:origin_directory_resource_id"); |
| 772 const std::string kSyncRootResourceId("folder:sync_root_resource_id"); | 774 const std::string kSyncRootResourceId("folder:sync_root_resource_id"); |
| 773 const FilePath::StringType kFileName(FPL("File 1.mp3")); | 775 const FilePath::StringType kFileName(FPL("File 1.mp3")); |
| 774 const std::string kFileResourceId("file:2_file_resource_id"); | 776 const std::string kFileResourceId("file:2_file_resource_id"); |
| 775 | 777 |
| 776 metadata_store()->SetSyncRootDirectory(kSyncRootResourceId); | 778 metadata_store()->SetSyncRootDirectory(kSyncRootResourceId); |
| 777 metadata_store()->AddBatchSyncOrigin(kOrigin, kDirectoryResourceId); | 779 metadata_store()->AddBatchSyncOrigin(kOrigin, kDirectoryResourceId); |
| 778 metadata_store()->MoveBatchSyncOriginToIncremental(kOrigin); | 780 metadata_store()->MoveBatchSyncOriginToIncremental(kOrigin); |
| 779 | 781 |
| 780 EXPECT_CALL(*mock_remote_observer(), | 782 EXPECT_CALL(*mock_remote_observer(), |
| 781 OnRemoteServiceStateUpdated(REMOTE_SERVICE_OK, _)) | 783 OnRemoteServiceStateUpdated(REMOTE_SERVICE_OK, _)) |
| 782 .Times(AnyNumber()); | 784 .Times(AnyNumber()); |
| 783 EXPECT_CALL(*mock_remote_observer(), OnRemoteChangeAvailable(_)) | 785 EXPECT_CALL(*mock_remote_observer(), OnRemoteChangeQueueUpdated(_)) |
| 784 .Times(AnyNumber()); | 786 .Times(AnyNumber()); |
| 785 | 787 |
| 786 EXPECT_CALL(*mock_remote_processor(), | 788 EXPECT_CALL(*mock_remote_processor(), |
| 787 PrepareForProcessRemoteChange(CreateURL(kOrigin, kFileName), _)) | 789 PrepareForProcessRemoteChange(CreateURL(kOrigin, kFileName), _)) |
| 788 .WillOnce(PrepareForRemoteChange_NotFound()); | 790 .WillOnce(PrepareForRemoteChange_NotFound()); |
| 789 | 791 |
| 790 scoped_ptr<Value> file_entry(LoadJSONFile("gdata/file_entry.json").Pass()); | 792 scoped_ptr<Value> file_entry(LoadJSONFile("gdata/file_entry.json").Pass()); |
| 791 EXPECT_CALL(*mock_drive_service(), | 793 EXPECT_CALL(*mock_drive_service(), |
| 792 GetDocumentEntry(kFileResourceId, _)) | 794 GetDocumentEntry(kFileResourceId, _)) |
| 793 .WillOnce(InvokeGetDataCallback1(google_apis::HTTP_SUCCESS, | 795 .WillOnce(InvokeGetDataCallback1(google_apis::HTTP_SUCCESS, |
| 794 base::Passed(&file_entry))); | 796 base::Passed(&file_entry))); |
| 795 | 797 |
| 796 EXPECT_CALL(*mock_drive_service(), | 798 EXPECT_CALL(*mock_drive_service(), |
| 797 DownloadFile(_, _, GURL("https://file_content_url"), _, _)) | 799 DownloadFile(_, _, GURL("https://file_content_url"), _, _)) |
| 798 .WillOnce(InvokeDidDownloadFile()); | 800 .WillOnce(InvokeDidDownloadFile()); |
| 799 | 801 |
| 800 EXPECT_CALL(*mock_remote_processor(), | 802 EXPECT_CALL(*mock_remote_processor(), |
| 801 ApplyRemoteChange(_, _, CreateURL(kOrigin, kFileName), _)) | 803 ApplyRemoteChange(_, _, CreateURL(kOrigin, kFileName), _)) |
| 802 .WillOnce(InvokeDidApplyRemoteChange()); | 804 .WillOnce(InvokeDidApplyRemoteChange()); |
| 803 | 805 |
| 804 SetUpDriveSyncService(); | 806 SetUpDriveSyncService(); |
| 805 | 807 |
| 806 scoped_ptr<DocumentEntry> entry(DocumentEntry::ExtractAndParse( | 808 scoped_ptr<DocumentEntry> entry(DocumentEntry::ExtractAndParse( |
| 807 *LoadJSONFile("gdata/file_entry.json"))); | 809 *LoadJSONFile("gdata/file_entry.json"))); |
| 808 AppendIncrementalRemoteChange(kOrigin, entry.get(), 12345); | 810 AppendIncrementalRemoteChange(kOrigin, *entry, 12345); |
| 809 | 811 |
| 810 ProcessRemoteChange(fileapi::SYNC_STATUS_OK, | 812 ProcessRemoteChange(fileapi::SYNC_STATUS_OK, |
| 811 CreateURL(kOrigin, kFileName), | 813 CreateURL(kOrigin, kFileName), |
| 812 fileapi::SYNC_OPERATION_ADD); | 814 fileapi::SYNC_OPERATION_ADD); |
| 813 } | 815 } |
| 814 | 816 |
| 815 TEST_F(DriveFileSyncServiceTest, RemoteChange_UpdateFile) { | 817 TEST_F(DriveFileSyncServiceTest, RemoteChange_UpdateFile) { |
| 816 const GURL kOrigin("chrome-extension://example"); | 818 const GURL kOrigin("chrome-extension://example"); |
| 817 const std::string kDirectoryResourceId("folder:origin_directory_resource_id"); | 819 const std::string kDirectoryResourceId("folder:origin_directory_resource_id"); |
| 818 const std::string kSyncRootResourceId("folder:sync_root_resource_id"); | 820 const std::string kSyncRootResourceId("folder:sync_root_resource_id"); |
| 819 const FilePath::StringType kFileName(FPL("File 1.mp3")); | 821 const FilePath::StringType kFileName(FPL("File 1.mp3")); |
| 820 const std::string kFileResourceId("file:2_file_resource_id"); | 822 const std::string kFileResourceId("file:2_file_resource_id"); |
| 821 | 823 |
| 822 metadata_store()->SetSyncRootDirectory(kSyncRootResourceId); | 824 metadata_store()->SetSyncRootDirectory(kSyncRootResourceId); |
| 823 metadata_store()->AddBatchSyncOrigin(kOrigin, kDirectoryResourceId); | 825 metadata_store()->AddBatchSyncOrigin(kOrigin, kDirectoryResourceId); |
| 824 metadata_store()->MoveBatchSyncOriginToIncremental(kOrigin); | 826 metadata_store()->MoveBatchSyncOriginToIncremental(kOrigin); |
| 825 | 827 |
| 826 EXPECT_CALL(*mock_remote_observer(), | 828 EXPECT_CALL(*mock_remote_observer(), |
| 827 OnRemoteServiceStateUpdated(REMOTE_SERVICE_OK, _)) | 829 OnRemoteServiceStateUpdated(REMOTE_SERVICE_OK, _)) |
| 828 .Times(AnyNumber()); | 830 .Times(AnyNumber()); |
| 829 EXPECT_CALL(*mock_remote_observer(), OnRemoteChangeAvailable(_)) | 831 EXPECT_CALL(*mock_remote_observer(), OnRemoteChangeQueueUpdated(_)) |
| 830 .Times(AnyNumber()); | 832 .Times(AnyNumber()); |
| 831 | 833 |
| 832 EXPECT_CALL(*mock_remote_processor(), | 834 EXPECT_CALL(*mock_remote_processor(), |
| 833 PrepareForProcessRemoteChange(CreateURL(kOrigin, kFileName), _)) | 835 PrepareForProcessRemoteChange(CreateURL(kOrigin, kFileName), _)) |
| 834 .WillOnce(PrepareForRemoteChange_NotModified()); | 836 .WillOnce(PrepareForRemoteChange_NotModified()); |
| 835 | 837 |
| 836 scoped_ptr<Value> file_entry(LoadJSONFile("gdata/file_entry.json").Pass()); | 838 scoped_ptr<Value> file_entry(LoadJSONFile("gdata/file_entry.json").Pass()); |
| 837 EXPECT_CALL(*mock_drive_service(), | 839 EXPECT_CALL(*mock_drive_service(), |
| 838 GetDocumentEntry(kFileResourceId, _)) | 840 GetDocumentEntry(kFileResourceId, _)) |
| 839 .WillOnce(InvokeGetDataCallback1(google_apis::HTTP_SUCCESS, | 841 .WillOnce(InvokeGetDataCallback1(google_apis::HTTP_SUCCESS, |
| 840 base::Passed(&file_entry))); | 842 base::Passed(&file_entry))); |
| 841 | 843 |
| 842 EXPECT_CALL(*mock_drive_service(), | 844 EXPECT_CALL(*mock_drive_service(), |
| 843 DownloadFile(_, _, GURL("https://file_content_url"), _, _)) | 845 DownloadFile(_, _, GURL("https://file_content_url"), _, _)) |
| 844 .WillOnce(InvokeDidDownloadFile()); | 846 .WillOnce(InvokeDidDownloadFile()); |
| 845 | 847 |
| 846 EXPECT_CALL(*mock_remote_processor(), | 848 EXPECT_CALL(*mock_remote_processor(), |
| 847 ApplyRemoteChange(_, _, CreateURL(kOrigin, kFileName), _)) | 849 ApplyRemoteChange(_, _, CreateURL(kOrigin, kFileName), _)) |
| 848 .WillOnce(InvokeDidApplyRemoteChange()); | 850 .WillOnce(InvokeDidApplyRemoteChange()); |
| 849 | 851 |
| 850 SetUpDriveSyncService(); | 852 SetUpDriveSyncService(); |
| 851 | 853 |
| 852 scoped_ptr<DocumentEntry> entry(DocumentEntry::ExtractAndParse( | 854 scoped_ptr<DocumentEntry> entry(DocumentEntry::ExtractAndParse( |
| 853 *LoadJSONFile("gdata/file_entry.json"))); | 855 *LoadJSONFile("gdata/file_entry.json"))); |
| 854 AppendIncrementalRemoteChange(kOrigin, entry.get(), 12345); | 856 AppendIncrementalRemoteChange(kOrigin, *entry, 12345); |
| 855 ProcessRemoteChange(fileapi::SYNC_STATUS_OK, | 857 ProcessRemoteChange(fileapi::SYNC_STATUS_OK, |
| 856 CreateURL(kOrigin, kFileName), | 858 CreateURL(kOrigin, kFileName), |
| 857 fileapi::SYNC_OPERATION_UPDATE); | 859 fileapi::SYNC_OPERATION_UPDATE); |
| 858 } | 860 } |
| 859 | 861 |
| 860 #endif // !defined(OS_ANDROID) | 862 #endif // !defined(OS_ANDROID) |
| 861 | 863 |
| 862 } // namespace sync_file_system | 864 } // namespace sync_file_system |
| OLD | NEW |