| 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 <vector> | 5 #include <vector> |
| 6 | 6 |
| 7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
| 8 #include "base/bind.h" | 8 #include "base/bind.h" |
| 9 #include "base/run_loop.h" | 9 #include "base/run_loop.h" |
| 10 #include "base/stl_util.h" | 10 #include "base/stl_util.h" |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 98 base::MessageLoopProxy::current()->PostTask( | 98 base::MessageLoopProxy::current()->PostTask( |
| 99 FROM_HERE, base::Bind(arg1, operation_status)); | 99 FROM_HERE, base::Bind(arg1, operation_status)); |
| 100 } | 100 } |
| 101 | 101 |
| 102 ACTION_P(RecordState, states) { | 102 ACTION_P(RecordState, states) { |
| 103 states->push_back(arg1); | 103 states->push_back(arg1); |
| 104 } | 104 } |
| 105 | 105 |
| 106 ACTION_P(MockStatusCallback, status) { | 106 ACTION_P(MockStatusCallback, status) { |
| 107 base::MessageLoopProxy::current()->PostTask( | 107 base::MessageLoopProxy::current()->PostTask( |
| 108 FROM_HERE, base::Bind(arg4, status)); | 108 FROM_HERE, base::Bind(arg3, status)); |
| 109 } | 109 } |
| 110 | 110 |
| 111 ACTION_P3(MockSyncOperationCallback, status, url, operation_type) { | 111 ACTION_P3(MockSyncOperationCallback, status, url, operation_type) { |
| 112 base::MessageLoopProxy::current()->PostTask( | 112 base::MessageLoopProxy::current()->PostTask( |
| 113 FROM_HERE, base::Bind(arg1, status, url, operation_type)); | 113 FROM_HERE, base::Bind(arg1, status, url, operation_type)); |
| 114 } | 114 } |
| 115 | 115 |
| 116 class SyncFileSystemServiceTest : public testing::Test { | 116 class SyncFileSystemServiceTest : public testing::Test { |
| 117 protected: | 117 protected: |
| 118 SyncFileSystemServiceTest() {} | 118 SyncFileSystemServiceTest() {} |
| (...skipping 337 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 456 EXPECT_CALL(*mock_remote_service(), GetCurrentState()) | 456 EXPECT_CALL(*mock_remote_service(), GetCurrentState()) |
| 457 .Times(AtLeast(2)) | 457 .Times(AtLeast(2)) |
| 458 .WillRepeatedly(Return(REMOTE_SERVICE_OK)); | 458 .WillRepeatedly(Return(REMOTE_SERVICE_OK)); |
| 459 EXPECT_CALL(*mock_remote_service(), GetLocalChangeProcessor()) | 459 EXPECT_CALL(*mock_remote_service(), GetLocalChangeProcessor()) |
| 460 .WillRepeatedly(Return(&local_change_processor)); | 460 .WillRepeatedly(Return(&local_change_processor)); |
| 461 | 461 |
| 462 // The local_change_processor's ApplyLocalChange should be called once | 462 // The local_change_processor's ApplyLocalChange should be called once |
| 463 // with ADD_OR_UPDATE change for TYPE_FILE. | 463 // with ADD_OR_UPDATE change for TYPE_FILE. |
| 464 const FileChange change(FileChange::FILE_CHANGE_ADD_OR_UPDATE, | 464 const FileChange change(FileChange::FILE_CHANGE_ADD_OR_UPDATE, |
| 465 fileapi::SYNC_FILE_TYPE_FILE); | 465 fileapi::SYNC_FILE_TYPE_FILE); |
| 466 EXPECT_CALL(local_change_processor, ApplyLocalChange(change, _, _, kFile, _)) | 466 EXPECT_CALL(local_change_processor, ApplyLocalChange(change, _, kFile, _)) |
| 467 .WillOnce(MockStatusCallback(fileapi::SYNC_STATUS_OK)); | 467 .WillOnce(MockStatusCallback(fileapi::SYNC_STATUS_OK)); |
| 468 | 468 |
| 469 EXPECT_EQ(base::PLATFORM_FILE_OK, file_system_->CreateFile(kFile)); | 469 EXPECT_EQ(base::PLATFORM_FILE_OK, file_system_->CreateFile(kFile)); |
| 470 | 470 |
| 471 run_loop.Run(); | 471 run_loop.Run(); |
| 472 } | 472 } |
| 473 | 473 |
| 474 TEST_F(SyncFileSystemServiceTest, SimpleRemoteSyncFlow) { | 474 TEST_F(SyncFileSystemServiceTest, SimpleRemoteSyncFlow) { |
| 475 InitializeApp(); | 475 InitializeApp(); |
| 476 | 476 |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 521 fileapi::SYNC_OPERATION_NONE)); | 521 fileapi::SYNC_OPERATION_NONE)); |
| 522 | 522 |
| 523 // ProcessRemoteChange should be called again when the becomes | 523 // ProcessRemoteChange should be called again when the becomes |
| 524 // not busy. | 524 // not busy. |
| 525 EXPECT_CALL(*mock_remote_service(), ProcessRemoteChange(_, _)) | 525 EXPECT_CALL(*mock_remote_service(), ProcessRemoteChange(_, _)) |
| 526 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)); | 526 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)); |
| 527 } | 527 } |
| 528 | 528 |
| 529 // We might also see an activity for local sync as we're going to make | 529 // We might also see an activity for local sync as we're going to make |
| 530 // a local write operation on kFile. | 530 // a local write operation on kFile. |
| 531 EXPECT_CALL(local_change_processor, ApplyLocalChange(_, _, _, kFile, _)) | 531 EXPECT_CALL(local_change_processor, ApplyLocalChange(_, _, kFile, _)) |
| 532 .Times(AnyNumber()); | 532 .Times(AnyNumber()); |
| 533 | 533 |
| 534 // This should trigger a remote sync. | 534 // This should trigger a remote sync. |
| 535 mock_remote_service()->NotifyRemoteChangeQueueUpdated(1); | 535 mock_remote_service()->NotifyRemoteChangeQueueUpdated(1); |
| 536 | 536 |
| 537 // Start a local operation on the same file (to make it BUSY). | 537 // Start a local operation on the same file (to make it BUSY). |
| 538 base::WaitableEvent event(false, false); | 538 base::WaitableEvent event(false, false); |
| 539 thread_helper_.io_task_runner()->PostTask( | 539 thread_helper_.io_task_runner()->PostTask( |
| 540 FROM_HERE, base::Bind(&fileapi::CannedSyncableFileSystem::DoCreateFile, | 540 FROM_HERE, base::Bind(&fileapi::CannedSyncableFileSystem::DoCreateFile, |
| 541 base::Unretained(file_system_.get()), | 541 base::Unretained(file_system_.get()), |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 628 base::Bind(&AssignValueAndQuit<fileapi::SyncFileStatus>, | 628 base::Bind(&AssignValueAndQuit<fileapi::SyncFileStatus>, |
| 629 &run_loop, &status, &sync_file_status)); | 629 &run_loop, &status, &sync_file_status)); |
| 630 run_loop.Run(); | 630 run_loop.Run(); |
| 631 | 631 |
| 632 EXPECT_EQ(fileapi::SYNC_STATUS_OK, status); | 632 EXPECT_EQ(fileapi::SYNC_STATUS_OK, status); |
| 633 EXPECT_EQ(fileapi::SYNC_FILE_STATUS_CONFLICTING, sync_file_status); | 633 EXPECT_EQ(fileapi::SYNC_FILE_STATUS_CONFLICTING, sync_file_status); |
| 634 } | 634 } |
| 635 } | 635 } |
| 636 | 636 |
| 637 } // namespace sync_file_system | 637 } // namespace sync_file_system |
| OLD | NEW |