| 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/command_line.h" | 9 #include "base/command_line.h" |
| 10 #include "base/message_loop.h" | 10 #include "base/message_loop.h" |
| (...skipping 23 matching lines...) Expand all Loading... |
| 34 #include "webkit/fileapi/syncable/sync_file_metadata.h" | 34 #include "webkit/fileapi/syncable/sync_file_metadata.h" |
| 35 #include "webkit/fileapi/syncable/syncable_file_system_util.h" | 35 #include "webkit/fileapi/syncable/syncable_file_system_util.h" |
| 36 | 36 |
| 37 #define FPL(x) FILE_PATH_LITERAL(x) | 37 #define FPL(x) FILE_PATH_LITERAL(x) |
| 38 | 38 |
| 39 using ::testing::AnyNumber; | 39 using ::testing::AnyNumber; |
| 40 using ::testing::AtLeast; | 40 using ::testing::AtLeast; |
| 41 using ::testing::AtMost; | 41 using ::testing::AtMost; |
| 42 using ::testing::InSequence; | 42 using ::testing::InSequence; |
| 43 using ::testing::Return; | 43 using ::testing::Return; |
| 44 using ::testing::NiceMock; |
| 44 using ::testing::Sequence; | 45 using ::testing::Sequence; |
| 45 using ::testing::StrictMock; | 46 using ::testing::StrictMock; |
| 46 using ::testing::_; | 47 using ::testing::_; |
| 47 | 48 |
| 48 using google_apis::ResourceEntry; | 49 using google_apis::ResourceEntry; |
| 49 using google_apis::DriveServiceInterface; | 50 using google_apis::DriveServiceInterface; |
| 50 using google_apis::DriveUploaderInterface; | 51 using google_apis::DriveUploaderInterface; |
| 51 using google_apis::test_util::LoadJSONFile; | 52 using google_apis::test_util::LoadJSONFile; |
| 52 | 53 |
| 53 using extensions::Extension; | 54 using extensions::Extension; |
| (...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 197 ACTION(InvokeDidDownloadFile) { | 198 ACTION(InvokeDidDownloadFile) { |
| 198 base::MessageLoopProxy::current()->PostTask( | 199 base::MessageLoopProxy::current()->PostTask( |
| 199 FROM_HERE, base::Bind(arg3, google_apis::HTTP_SUCCESS, arg1)); | 200 FROM_HERE, base::Bind(arg3, google_apis::HTTP_SUCCESS, arg1)); |
| 200 } | 201 } |
| 201 | 202 |
| 202 ACTION(InvokeDidApplyRemoteChange) { | 203 ACTION(InvokeDidApplyRemoteChange) { |
| 203 base::MessageLoopProxy::current()->PostTask( | 204 base::MessageLoopProxy::current()->PostTask( |
| 204 FROM_HERE, base::Bind(arg3, SYNC_STATUS_OK)); | 205 FROM_HERE, base::Bind(arg3, SYNC_STATUS_OK)); |
| 205 } | 206 } |
| 206 | 207 |
| 207 ACTION(InvokeGetChangeListWithEmptyChange) { | |
| 208 scoped_ptr<google_apis::ResourceList> resource_list( | |
| 209 new google_apis::ResourceList()); | |
| 210 base::MessageLoopProxy::current()->PostTask( | |
| 211 FROM_HERE, base::Bind(arg1, google_apis::HTTP_SUCCESS, | |
| 212 base::Passed(&resource_list))); | |
| 213 } | |
| 214 | |
| 215 } // namespace | 208 } // namespace |
| 216 | 209 |
| 217 class MockRemoteServiceObserver : public RemoteFileSyncService::Observer { | 210 class MockRemoteServiceObserver : public RemoteFileSyncService::Observer { |
| 218 public: | 211 public: |
| 219 MockRemoteServiceObserver() {} | 212 MockRemoteServiceObserver() {} |
| 220 virtual ~MockRemoteServiceObserver() {} | 213 virtual ~MockRemoteServiceObserver() {} |
| 221 | 214 |
| 222 // LocalChangeProcessor override. | 215 // LocalChangeProcessor override. |
| 223 MOCK_METHOD1(OnRemoteChangeQueueUpdated, | 216 MOCK_METHOD1(OnRemoteChangeQueueUpdated, |
| 224 void(int64 pending_changes)); | 217 void(int64 pending_changes)); |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 257 extension_system->CreateExtensionService( | 250 extension_system->CreateExtensionService( |
| 258 CommandLine::ForCurrentProcess(), base::FilePath(), false); | 251 CommandLine::ForCurrentProcess(), base::FilePath(), false); |
| 259 extension_service_ = extension_system->Get( | 252 extension_service_ = extension_system->Get( |
| 260 profile_.get())->extension_service(); | 253 profile_.get())->extension_service(); |
| 261 | 254 |
| 262 AddTestExtension(extension_service_, FPL("example1")); | 255 AddTestExtension(extension_service_, FPL("example1")); |
| 263 AddTestExtension(extension_service_, FPL("example2")); | 256 AddTestExtension(extension_service_, FPL("example2")); |
| 264 | 257 |
| 265 ASSERT_TRUE(RegisterSyncableFileSystem(kServiceName)); | 258 ASSERT_TRUE(RegisterSyncableFileSystem(kServiceName)); |
| 266 | 259 |
| 267 mock_drive_service_ = new StrictMock<google_apis::MockDriveService>; | 260 mock_drive_service_ = new NiceMock<google_apis::MockDriveService>; |
| 268 | 261 |
| 269 EXPECT_CALL(*mock_drive_service(), Initialize(profile_.get())); | 262 EXPECT_CALL(*mock_drive_service(), Initialize(profile_.get())); |
| 270 EXPECT_CALL(*mock_drive_service(), AddObserver(_)); | 263 EXPECT_CALL(*mock_drive_service(), AddObserver(_)); |
| 271 | 264 |
| 272 // Expect to call GetRootResourceId and RemoveResourceFromDirectory to | 265 // Expect to call GetRootResourceId and RemoveResourceFromDirectory to |
| 273 // ensure the sync root directory is not in 'My Drive' directory. | 266 // ensure the sync root directory is not in 'My Drive' directory. |
| 274 EXPECT_CALL(*mock_drive_service(), GetRootResourceId()) | 267 EXPECT_CALL(*mock_drive_service(), GetRootResourceId()) |
| 275 .WillRepeatedly(Return(kRootResourceId)); | 268 .WillRepeatedly(Return(kRootResourceId)); |
| 276 EXPECT_CALL(*mock_drive_service(), | 269 EXPECT_CALL(*mock_drive_service(), |
| 277 RemoveResourceFromDirectory(kRootResourceId, _, _)) | 270 RemoveResourceFromDirectory(kRootResourceId, _, _)) |
| (...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 430 return sync_client_.get(); | 423 return sync_client_.get(); |
| 431 return sync_service_->sync_client_.get(); | 424 return sync_service_->sync_client_.get(); |
| 432 } | 425 } |
| 433 | 426 |
| 434 DriveMetadataStore* metadata_store() { | 427 DriveMetadataStore* metadata_store() { |
| 435 if (metadata_store_) | 428 if (metadata_store_) |
| 436 return metadata_store_.get(); | 429 return metadata_store_.get(); |
| 437 return sync_service_->metadata_store_.get(); | 430 return sync_service_->metadata_store_.get(); |
| 438 } | 431 } |
| 439 | 432 |
| 440 StrictMock<google_apis::MockDriveService>* mock_drive_service() { | 433 NiceMock<google_apis::MockDriveService>* mock_drive_service() { |
| 441 return mock_drive_service_; | 434 return mock_drive_service_; |
| 442 } | 435 } |
| 443 | 436 |
| 444 StrictMock<MockRemoteServiceObserver>* mock_remote_observer() { | 437 StrictMock<MockRemoteServiceObserver>* mock_remote_observer() { |
| 445 return &mock_remote_observer_; | 438 return &mock_remote_observer_; |
| 446 } | 439 } |
| 447 | 440 |
| 448 StrictMock<MockFileStatusObserver>* mock_file_status_observer() { | 441 StrictMock<MockFileStatusObserver>* mock_file_status_observer() { |
| 449 return &mock_file_status_observer_; | 442 return &mock_file_status_observer_; |
| 450 } | 443 } |
| (...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 627 = google_apis::ResourceEntry::ExtractAndParse( | 620 = google_apis::ResourceEntry::ExtractAndParse( |
| 628 *origin_directory_created_value); | 621 *origin_directory_created_value); |
| 629 EXPECT_CALL(*mock_drive_service(), | 622 EXPECT_CALL(*mock_drive_service(), |
| 630 AddNewDirectory(parent_directory, directory_name, _)) | 623 AddNewDirectory(parent_directory, directory_name, _)) |
| 631 .WillOnce(InvokeGetResourceEntryCallback2( | 624 .WillOnce(InvokeGetResourceEntryCallback2( |
| 632 google_apis::HTTP_SUCCESS, | 625 google_apis::HTTP_SUCCESS, |
| 633 base::Passed(&origin_directory_created))) | 626 base::Passed(&origin_directory_created))) |
| 634 .RetiresOnSaturation(); | 627 .RetiresOnSaturation(); |
| 635 } | 628 } |
| 636 | 629 |
| 637 void SetUpDriveServiceExpectCallsForEmptyRemoteChange() { | |
| 638 EXPECT_CALL(*mock_drive_service(), | |
| 639 GetChangeList(_, _)) | |
| 640 .WillOnce(InvokeGetChangeListWithEmptyChange()) | |
| 641 .RetiresOnSaturation(); | |
| 642 } | |
| 643 | |
| 644 // End of mock setup helpers ----------------------------------------------- | 630 // End of mock setup helpers ----------------------------------------------- |
| 645 | 631 |
| 646 private: | 632 private: |
| 647 MessageLoop message_loop_; | 633 MessageLoop message_loop_; |
| 648 content::TestBrowserThread ui_thread_; | 634 content::TestBrowserThread ui_thread_; |
| 649 content::TestBrowserThread file_thread_; | 635 content::TestBrowserThread file_thread_; |
| 650 | 636 |
| 651 base::ScopedTempDir base_dir_; | 637 base::ScopedTempDir base_dir_; |
| 652 scoped_ptr<TestingProfile> profile_; | 638 scoped_ptr<TestingProfile> profile_; |
| 653 | 639 |
| 654 scoped_ptr<DriveFileSyncService> sync_service_; | 640 scoped_ptr<DriveFileSyncService> sync_service_; |
| 655 | 641 |
| 656 // Not owned. | 642 // Not owned. |
| 657 ExtensionService* extension_service_; | 643 ExtensionService* extension_service_; |
| 658 | 644 |
| 659 // Owned by |sync_client_|. | 645 // Owned by |sync_client_|. |
| 660 StrictMock<google_apis::MockDriveService>* mock_drive_service_; | 646 NiceMock<google_apis::MockDriveService>* mock_drive_service_; |
| 661 | 647 |
| 662 StrictMock<MockRemoteServiceObserver> mock_remote_observer_; | 648 StrictMock<MockRemoteServiceObserver> mock_remote_observer_; |
| 663 StrictMock<MockFileStatusObserver> mock_file_status_observer_; | 649 StrictMock<MockFileStatusObserver> mock_file_status_observer_; |
| 664 StrictMock<MockRemoteChangeProcessor> mock_remote_processor_; | 650 StrictMock<MockRemoteChangeProcessor> mock_remote_processor_; |
| 665 | 651 |
| 666 scoped_ptr<DriveFileSyncClient> sync_client_; | 652 scoped_ptr<DriveFileSyncClient> sync_client_; |
| 667 scoped_ptr<DriveMetadataStore> metadata_store_; | 653 scoped_ptr<DriveMetadataStore> metadata_store_; |
| 668 | 654 |
| 669 DISALLOW_COPY_AND_ASSIGN(DriveFileSyncServiceMockTest); | 655 DISALLOW_COPY_AND_ASSIGN(DriveFileSyncServiceMockTest); |
| 670 }; | 656 }; |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 754 DriveFileSyncClient::OriginToDirectoryTitle(kOrigin)); | 740 DriveFileSyncClient::OriginToDirectoryTitle(kOrigin)); |
| 755 | 741 |
| 756 // Once the directory is created GetAboutResource should be called to get | 742 // Once the directory is created GetAboutResource should be called to get |
| 757 // the largest changestamp for the origin as a prepariation of the batch sync. | 743 // the largest changestamp for the origin as a prepariation of the batch sync. |
| 758 SetUpDriveServiceExpectCallsForGetAboutResource(); | 744 SetUpDriveServiceExpectCallsForGetAboutResource(); |
| 759 | 745 |
| 760 SetUpDriveServiceExpectCallsForGetResourceListInDirectory( | 746 SetUpDriveServiceExpectCallsForGetResourceListInDirectory( |
| 761 "chromeos/sync_file_system/listing_files_in_empty_directory.json", | 747 "chromeos/sync_file_system/listing_files_in_empty_directory.json", |
| 762 kDirectoryResourceId); | 748 kDirectoryResourceId); |
| 763 | 749 |
| 764 SetUpDriveServiceExpectCallsForEmptyRemoteChange(); | |
| 765 | |
| 766 SetUpDriveSyncService(true); | 750 SetUpDriveSyncService(true); |
| 767 bool done = false; | 751 bool done = false; |
| 768 sync_service()->RegisterOriginForTrackingChanges( | 752 sync_service()->RegisterOriginForTrackingChanges( |
| 769 kOrigin, base::Bind(&ExpectEqStatus, &done, SYNC_STATUS_OK)); | 753 kOrigin, base::Bind(&ExpectEqStatus, &done, SYNC_STATUS_OK)); |
| 770 message_loop()->RunUntilIdle(); | 754 message_loop()->RunUntilIdle(); |
| 771 EXPECT_TRUE(done); | 755 EXPECT_TRUE(done); |
| 772 | 756 |
| 773 VerifySizeOfRegisteredOrigins(0u, 1u, 0u); | 757 VerifySizeOfRegisteredOrigins(0u, 1u, 0u); |
| 774 EXPECT_TRUE(pending_changes().empty()); | 758 EXPECT_TRUE(pending_changes().empty()); |
| 775 } | 759 } |
| (...skipping 526 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1302 entry->set_kind(google_apis::ENTRY_KIND_FOLDER); | 1286 entry->set_kind(google_apis::ENTRY_KIND_FOLDER); |
| 1303 | 1287 |
| 1304 // Expect to drop this change for file. | 1288 // Expect to drop this change for file. |
| 1305 EXPECT_FALSE(AppendIncrementalRemoteChangeByEntry( | 1289 EXPECT_FALSE(AppendIncrementalRemoteChangeByEntry( |
| 1306 kOrigin, *entry, 1)); | 1290 kOrigin, *entry, 1)); |
| 1307 } | 1291 } |
| 1308 | 1292 |
| 1309 #endif // !defined(OS_ANDROID) | 1293 #endif // !defined(OS_ANDROID) |
| 1310 | 1294 |
| 1311 } // namespace sync_file_system | 1295 } // namespace sync_file_system |
| OLD | NEW |