Chromium Code Reviews| Index: chrome/browser/sync_file_system/drive_file_sync_service_mock_unittest.cc |
| diff --git a/chrome/browser/sync_file_system/drive_file_sync_service_mock_unittest.cc b/chrome/browser/sync_file_system/drive_file_sync_service_mock_unittest.cc |
| index 8448c67b52b8a37acc68e51fdd2f060df8f73457..b9ab45b7ef722af3ffcee978019521388e9e5a27 100644 |
| --- a/chrome/browser/sync_file_system/drive_file_sync_service_mock_unittest.cc |
| +++ b/chrome/browser/sync_file_system/drive_file_sync_service_mock_unittest.cc |
| @@ -30,6 +30,7 @@ |
| #include "net/base/escape.h" |
| #include "testing/gmock/include/gmock/gmock.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| +#include "webkit/fileapi/file_system_util.h" |
| #include "webkit/fileapi/syncable/sync_direction.h" |
| #include "webkit/fileapi/syncable/sync_file_metadata.h" |
| #include "webkit/fileapi/syncable/syncable_file_system_util.h" |
| @@ -79,10 +80,6 @@ void DidInitialize(bool* done, SyncStatusCode status, bool created) { |
| EXPECT_TRUE(created); |
| } |
| -void DidUpdateEntry(SyncStatusCode status) { |
| - EXPECT_EQ(SYNC_STATUS_OK, status); |
| -} |
| - |
| void DidGetSyncRoot(bool* done, |
| SyncStatusCode status, |
| const std::string& resource_id) { |
| @@ -350,10 +347,10 @@ class DriveFileSyncServiceMockTest : public testing::Test { |
| } |
| void VerifySizeOfRegisteredOrigins( |
| - DriveMetadataStore::ResourceIdByOrigin::size_type b_size, |
| + unsigned int b_size, |
| DriveMetadataStore::ResourceIdByOrigin::size_type i_size, |
| DriveMetadataStore::ResourceIdByOrigin::size_type d_size) { |
|
tzik
2013/05/21 04:05:45
these three types can be just size_t.
calvinlo
2013/05/21 07:12:26
Done.
|
| - EXPECT_EQ(b_size, metadata_store()->batch_sync_origins().size()); |
| + EXPECT_EQ(b_size, pending_batch_sync_origins()->size()); |
| EXPECT_EQ(i_size, metadata_store()->incremental_sync_origins().size()); |
| EXPECT_EQ(d_size, metadata_store()->disabled_origins().size()); |
| } |
| @@ -388,6 +385,9 @@ class DriveFileSyncServiceMockTest : public testing::Test { |
| MessageLoop* message_loop() { return &message_loop_; } |
| DriveFileSyncService* sync_service() { return sync_service_.get(); } |
| + std::map<GURL, std::string>* pending_batch_sync_origins() { |
| + return &(sync_service()->pending_batch_sync_origins_); |
| + } |
| const RemoteChangeHandler& remote_change_handler() const { |
| return sync_service_->remote_change_handler_; |
| @@ -523,10 +523,10 @@ class DriveFileSyncServiceMockTest : public testing::Test { |
| *google_apis::AccountMetadata::CreateFrom(*account_metadata_value), |
| kRootResourceId)); |
| EXPECT_CALL(*mock_drive_service(), GetAboutResource(_)) |
| - .WillOnce(InvokeGetAboutResourceCallback0( |
| + .Times(AnyNumber()) |
| + .WillRepeatedly(InvokeGetAboutResourceCallback0( |
| google_apis::HTTP_SUCCESS, |
| - base::Passed(&about_resource))) |
| - .RetiresOnSaturation(); |
| + base::Passed(&about_resource))); |
|
tzik
2013/05/21 04:05:45
Passed scoped_ptr can be used only once. So, secon
calvinlo
2013/05/21 07:12:26
Done.
|
| } |
| void SetUpDriveServiceExpectCallsForDownloadFile( |
| @@ -600,47 +600,6 @@ class DriveFileSyncServiceMockTest : public testing::Test { |
| #if !defined(OS_ANDROID) |
| -TEST_F(DriveFileSyncServiceMockTest, BatchSyncOnInitialization) { |
| - const GURL kOrigin1 = ExtensionNameToGURL(FPL("example1")); |
| - const GURL kOrigin2 = ExtensionNameToGURL(FPL("example2")); |
| - const std::string kDirectoryResourceId1( |
| - "folder:origin_directory_resource_id"); |
| - const std::string kDirectoryResourceId2( |
| - "folder:origin_directory_resource_id2"); |
| - const std::string kSyncRootResourceId("folder:sync_root_resource_id"); |
| - |
| - metadata_store()->SetSyncRootDirectory(kSyncRootResourceId); |
| - metadata_store()->AddBatchSyncOrigin(kOrigin1, kDirectoryResourceId1); |
| - metadata_store()->AddBatchSyncOrigin(kOrigin2, kDirectoryResourceId2); |
| - metadata_store()->MoveBatchSyncOriginToIncremental(kOrigin2); |
| - |
| - Sequence change_queue_seq; |
| - EXPECT_CALL(*mock_remote_observer(), OnRemoteChangeQueueUpdated(0)) |
| - .InSequence(change_queue_seq); |
| - EXPECT_CALL(*mock_remote_observer(), OnRemoteChangeQueueUpdated(1)) |
| - .Times(AnyNumber()) |
| - .InSequence(change_queue_seq); |
| - |
| - SetUpDriveServiceExpectCallsForGetAboutResource(); |
| - SetUpDriveServiceExpectCallsForGetResourceListInDirectory( |
| - "chromeos/sync_file_system/listing_files_in_directory.json", |
| - kDirectoryResourceId1); |
| - |
| - // The service will get called for incremental sync at the end after |
| - // batch sync's done. |
| - SetUpDriveServiceExpectCallsForIncrementalSync(); |
| - |
| - SetUpDriveSyncService(true); |
| - message_loop()->RunUntilIdle(); |
| - |
| - // kOrigin1 should be a batch sync origin and kOrigin2 should be an |
| - // incremental sync origin. |
| - // 4 pending remote changes are from listing_files_in_directory as batch sync |
| - // changes. |
| - VerifySizeOfRegisteredOrigins(1u, 1u, 0u); |
| - EXPECT_EQ(1u, remote_change_handler().ChangesSize()); |
| -} |
| - |
| TEST_F(DriveFileSyncServiceMockTest, RegisterNewOrigin) { |
| const GURL kOrigin("chrome-extension://example"); |
| const std::string kDirectoryResourceId("folder:origin_directory_resource_id"); |
| @@ -726,8 +685,8 @@ TEST_F(DriveFileSyncServiceMockTest, RegisterExistingOrigin) { |
| message_loop()->RunUntilIdle(); |
| EXPECT_TRUE(done); |
| - // The origin should be registered as a batch sync origin. |
| - VerifySizeOfRegisteredOrigins(1u, 0u, 0u); |
| + // The origin should be registered as an incremental sync origin. |
| + VerifySizeOfRegisteredOrigins(0u, 1u, 0u); |
| // |listing_files_in_directory| contains 4 items to sync. |
| EXPECT_EQ(1u, remote_change_handler().ChangesSize()); |
| @@ -750,20 +709,11 @@ TEST_F(DriveFileSyncServiceMockTest, UnregisterOrigin) { |
| EXPECT_CALL(*mock_remote_observer(), OnRemoteChangeQueueUpdated(_)) |
| .Times(AnyNumber()); |
| - InSequence sequence; |
| - |
| - SetUpDriveServiceExpectCallsForGetAboutResource(); |
| - SetUpDriveServiceExpectCallsForGetResourceListInDirectory( |
| - "chromeos/sync_file_system/listing_files_in_directory.json", |
| - kDirectoryResourceId1); |
| - |
| - SetUpDriveServiceExpectCallsForIncrementalSync(); |
| - |
| SetUpDriveSyncService(true); |
| message_loop()->RunUntilIdle(); |
| - VerifySizeOfRegisteredOrigins(1u, 1u, 0u); |
| - EXPECT_EQ(1u, remote_change_handler().ChangesSize()); |
| + VerifySizeOfRegisteredOrigins(0u, 1u, 0u); |
| + EXPECT_EQ(0u, remote_change_handler().ChangesSize()); |
| bool done = false; |
| sync_service()->UnregisterOriginForTrackingChanges( |
| @@ -788,26 +738,18 @@ TEST_F(DriveFileSyncServiceMockTest, UpdateRegisteredOrigins) { |
| const std::string extension_id2 = |
| extensions::id_util::GenerateIdForPath(base::FilePath(FPL("example2"))); |
| - metadata_store()->SetSyncRootDirectory(kSyncRootResourceId); |
| - metadata_store()->AddBatchSyncOrigin(kOrigin1, kDirectoryResourceId1); |
| - metadata_store()->AddBatchSyncOrigin(kOrigin2, kDirectoryResourceId2); |
| - metadata_store()->MoveBatchSyncOriginToIncremental(kOrigin2); |
| - |
| EXPECT_CALL(*mock_remote_observer(), OnRemoteChangeQueueUpdated(_)) |
| .Times(AnyNumber()); |
| - InSequence sequence; |
| - |
| - SetUpDriveServiceExpectCallsForGetAboutResource(); |
| - SetUpDriveServiceExpectCallsForGetResourceListInDirectory( |
| - "chromeos/sync_file_system/listing_files_in_directory.json", |
| - kDirectoryResourceId1); |
| - |
| - SetUpDriveServiceExpectCallsForIncrementalSync(); |
| - |
| SetUpDriveSyncService(true); |
| message_loop()->RunUntilIdle(); |
| + metadata_store()->SetSyncRootDirectory(kSyncRootResourceId); |
| + pending_batch_sync_origins()->insert(std::make_pair( |
| + kOrigin1, kDirectoryResourceId1)); |
| + metadata_store()->AddBatchSyncOrigin(kOrigin2, kDirectoryResourceId2); |
| + metadata_store()->MoveBatchSyncOriginToIncremental(kOrigin2); |
| + |
| // [1] Both extensions and origins are enabled. Nothing to do. |
| VerifySizeOfRegisteredOrigins(1u, 1u, 0u); |
| UpdateRegisteredOrigins(); |
| @@ -817,38 +759,44 @@ TEST_F(DriveFileSyncServiceMockTest, UpdateRegisteredOrigins) { |
| DisableExtension(extension_id2); |
| // [2] Origins should be disabled since extensions were disabled. |
| + // Note that pending batch sync origins that are disabled are dropped and |
| + // do not get moved to disabled origin list. |
| VerifySizeOfRegisteredOrigins(1u, 1u, 0u); |
| UpdateRegisteredOrigins(); |
| - VerifySizeOfRegisteredOrigins(0u, 0u, 2u); |
| + VerifySizeOfRegisteredOrigins(0u, 0u, 1u); |
| - // [3] Both extensions and origins are disabled. Nothing to do. |
| - VerifySizeOfRegisteredOrigins(0u, 0u, 2u); |
| + // [3] Second origin remains disabled. Nothing to do. |
| + VerifySizeOfRegisteredOrigins(0u, 0u, 1u); |
| UpdateRegisteredOrigins(); |
| - VerifySizeOfRegisteredOrigins(0u, 0u, 2u); |
| + VerifySizeOfRegisteredOrigins(0u, 0u, 1u); |
| - EnableExtension(extension_id1); |
| EnableExtension(extension_id2); |
| - // [4] Origins should be re-enabled since extensions were re-enabled. |
| - VerifySizeOfRegisteredOrigins(0u, 0u, 2u); |
| + // [4] Second extension should be re-enabled. |
| + VerifySizeOfRegisteredOrigins(0u, 0u, 1u); |
| UpdateRegisteredOrigins(); |
| - VerifySizeOfRegisteredOrigins(2u, 0u, 0u); |
| + VerifySizeOfRegisteredOrigins(1u, 0u, 0u); |
| - UninstallExtension(extension_id2); |
| + // [5] Add back first extension as incremental sync so there's one of each. |
| + EnableExtension(extension_id1); |
| + metadata_store()->AddBatchSyncOrigin(kOrigin1, kDirectoryResourceId1); |
| + metadata_store()->MoveBatchSyncOriginToIncremental(kOrigin1); |
| + UpdateRegisteredOrigins(); |
| + VerifySizeOfRegisteredOrigins(1u, 1u, 0u); |
| - // Prepare for UninstallOrigin called by UpdateRegisteredOrigins. |
| + // Prepare for UninstallOrigin called by UpdateRegisteredOrigins that |
| + // eventually kick off StartFetchChanges(). |
| + SetUpDriveServiceExpectCallsForGetAboutResource(); |
| EXPECT_CALL(*mock_drive_service(), |
| - DeleteResource(kDirectoryResourceId2, _, _)) |
| + DeleteResource(kDirectoryResourceId1, _, _)) |
| .WillOnce(InvokeEntryActionCallback(google_apis::HTTP_SUCCESS)); |
| - SetUpDriveServiceExpectCallsForGetAboutResource(); |
| - SetUpDriveServiceExpectCallsForGetResourceListInDirectory( |
| - "chromeos/sync_file_system/listing_files_in_directory.json", |
| - kDirectoryResourceId1); |
| + UninstallExtension(extension_id1); |
| + UninstallExtension(extension_id2); |
| - // [5] |kOrigin2| should be unregistered since its extension was uninstalled. |
| - VerifySizeOfRegisteredOrigins(2u, 0u, 0u); |
| + // [6] Uninstall both extensions. |
| + VerifySizeOfRegisteredOrigins(1u, 1u, 0u); |
| UpdateRegisteredOrigins(); |
| - VerifySizeOfRegisteredOrigins(1u, 0u, 0u); |
| + VerifySizeOfRegisteredOrigins(0u, 0u, 0u); |
| } |
| TEST_F(DriveFileSyncServiceMockTest, RemoteChange_NoChange) { |
| @@ -1028,7 +976,7 @@ TEST_F(DriveFileSyncServiceMockTest, RegisterOriginWithSyncDisabled) { |
| // We must not have started batch sync for the newly registered origin, |
| // so it should still be in the batch_sync_origins. |
| - VerifySizeOfRegisteredOrigins(1u, 0u, 0u); |
| + EXPECT_EQ(1u, pending_batch_sync_origins()->size()); |
| EXPECT_TRUE(!remote_change_handler().HasChanges()); |
| } |