| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/file_util.h" | 9 #include "base/file_util.h" |
| 10 #include "base/location.h" | 10 #include "base/location.h" |
| (...skipping 303 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 314 file_system2.TearDown(); | 314 file_system2.TearDown(); |
| 315 } | 315 } |
| 316 | 316 |
| 317 TEST_F(LocalFileSyncServiceTest, ProcessLocalChange_CreateFile) { | 317 TEST_F(LocalFileSyncServiceTest, ProcessLocalChange_CreateFile) { |
| 318 const FileSystemURL kFile(file_system_->URL("foo")); | 318 const FileSystemURL kFile(file_system_->URL("foo")); |
| 319 const char kTestFileData[] = "0123456789"; | 319 const char kTestFileData[] = "0123456789"; |
| 320 const int kTestFileDataSize = static_cast<int>(arraysize(kTestFileData) - 1); | 320 const int kTestFileDataSize = static_cast<int>(arraysize(kTestFileData) - 1); |
| 321 | 321 |
| 322 base::RunLoop run_loop; | 322 base::RunLoop run_loop; |
| 323 | 323 |
| 324 // We should get called OnSyncEnabled on kFile. | 324 // We should get called OnSyncEnabled and OnWriteEnabled on kFile. |
| 325 // (OnWriteEnabled is called because we release lock before returning |
| 326 // from ApplyLocalChange) |
| 325 StrictMock<MockSyncStatusObserver> status_observer; | 327 StrictMock<MockSyncStatusObserver> status_observer; |
| 326 EXPECT_CALL(status_observer, OnSyncEnabled(kFile)) | 328 EXPECT_CALL(status_observer, OnSyncEnabled(kFile)).Times(AtLeast(1)); |
| 327 .Times(AtLeast(1)); | 329 EXPECT_CALL(status_observer, OnWriteEnabled(kFile)).Times(AtLeast(1)); |
| 328 file_system_->AddSyncStatusObserver(&status_observer); | 330 file_system_->AddSyncStatusObserver(&status_observer); |
| 329 | 331 |
| 330 // Creates and writes into a file. | 332 // Creates and writes into a file. |
| 331 EXPECT_EQ(base::PLATFORM_FILE_OK, file_system_->CreateFile(kFile)); | 333 EXPECT_EQ(base::PLATFORM_FILE_OK, file_system_->CreateFile(kFile)); |
| 332 EXPECT_EQ(kTestFileDataSize, | 334 EXPECT_EQ(kTestFileDataSize, |
| 333 file_system_->WriteString(kFile, std::string(kTestFileData))); | 335 file_system_->WriteString(kFile, std::string(kTestFileData))); |
| 334 | 336 |
| 335 // Retrieve the expected platform_path. | 337 // Retrieve the expected file info. |
| 336 base::PlatformFileInfo info; | 338 base::PlatformFileInfo info; |
| 337 base::FilePath platform_path; | 339 base::FilePath platform_path; |
| 338 EXPECT_EQ(base::PLATFORM_FILE_OK, | 340 EXPECT_EQ(base::PLATFORM_FILE_OK, |
| 339 file_system_->GetMetadataAndPlatformPath( | 341 file_system_->GetMetadataAndPlatformPath( |
| 340 kFile, &info, &platform_path)); | 342 kFile, &info, &platform_path)); |
| 341 | 343 |
| 342 ASSERT_FALSE(info.is_directory); | 344 ASSERT_FALSE(info.is_directory); |
| 343 ASSERT_EQ(kTestFileDataSize, info.size); | 345 ASSERT_EQ(kTestFileDataSize, info.size); |
| 344 | 346 |
| 345 SyncFileMetadata metadata; | 347 SyncFileMetadata metadata; |
| 346 metadata.file_type = SYNC_FILE_TYPE_FILE; | 348 metadata.file_type = SYNC_FILE_TYPE_FILE; |
| 347 metadata.size = info.size; | 349 metadata.size = info.size; |
| 348 metadata.last_modified = info.last_modified; | 350 metadata.last_modified = info.last_modified; |
| 349 | 351 |
| 350 // The local_change_processor's ApplyLocalChange should be called once | 352 // The local_change_processor's ApplyLocalChange should be called once |
| 351 // with ADD_OR_UPDATE change for TYPE_FILE. | 353 // with ADD_OR_UPDATE change for TYPE_FILE. |
| 352 StrictMock<MockLocalChangeProcessor> local_change_processor; | 354 StrictMock<MockLocalChangeProcessor> local_change_processor; |
| 353 const FileChange change(FileChange::FILE_CHANGE_ADD_OR_UPDATE, | 355 const FileChange change(FileChange::FILE_CHANGE_ADD_OR_UPDATE, |
| 354 SYNC_FILE_TYPE_FILE); | 356 SYNC_FILE_TYPE_FILE); |
| 355 EXPECT_CALL(local_change_processor, | 357 EXPECT_CALL(local_change_processor, |
| 356 ApplyLocalChange(change, platform_path, metadata, kFile, _)) | 358 ApplyLocalChange(change, _, metadata, kFile, _)) |
| 357 .WillOnce(MockStatusCallback(SYNC_STATUS_OK)); | 359 .WillOnce(MockStatusCallback(SYNC_STATUS_OK)); |
| 358 | 360 |
| 359 local_service_->SetLocalChangeProcessor(&local_change_processor); | 361 local_service_->SetLocalChangeProcessor(&local_change_processor); |
| 360 local_service_->ProcessLocalChange( | 362 local_service_->ProcessLocalChange( |
| 361 base::Bind(&OnSyncCompleted, FROM_HERE, run_loop.QuitClosure(), | 363 base::Bind(&OnSyncCompleted, FROM_HERE, run_loop.QuitClosure(), |
| 362 SYNC_STATUS_OK, kFile)); | 364 SYNC_STATUS_OK, kFile)); |
| 363 | 365 |
| 364 run_loop.Run(); | 366 run_loop.Run(); |
| 365 | 367 |
| 366 file_system_->RemoveSyncStatusObserver(&status_observer); | 368 file_system_->RemoveSyncStatusObserver(&status_observer); |
| 367 | 369 |
| 368 EXPECT_EQ(0, GetNumChangesInTracker()); | 370 EXPECT_EQ(0, GetNumChangesInTracker()); |
| 369 } | 371 } |
| 370 | 372 |
| 371 TEST_F(LocalFileSyncServiceTest, ProcessLocalChange_CreateAndRemoveFile) { | 373 TEST_F(LocalFileSyncServiceTest, ProcessLocalChange_CreateAndRemoveFile) { |
| 372 const FileSystemURL kFile(file_system_->URL("foo")); | 374 const FileSystemURL kFile(file_system_->URL("foo")); |
| 373 | 375 |
| 374 base::RunLoop run_loop; | 376 base::RunLoop run_loop; |
| 375 | 377 |
| 376 // We should get called OnSyncEnabled and OnWriteEnabled on kFile. | 378 // We should get called OnSyncEnabled and OnWriteEnabled on kFile. |
| 377 StrictMock<MockSyncStatusObserver> status_observer; | 379 StrictMock<MockSyncStatusObserver> status_observer; |
| 378 EXPECT_CALL(status_observer, OnSyncEnabled(kFile)) | 380 EXPECT_CALL(status_observer, OnSyncEnabled(kFile)).Times(AtLeast(1)); |
| 379 .Times(AtLeast(1)); | 381 EXPECT_CALL(status_observer, OnWriteEnabled(kFile)).Times(AtLeast(1)); |
| 380 file_system_->AddSyncStatusObserver(&status_observer); | 382 file_system_->AddSyncStatusObserver(&status_observer); |
| 381 | 383 |
| 382 // Creates and then deletes a file. | 384 // Creates and then deletes a file. |
| 383 EXPECT_EQ(base::PLATFORM_FILE_OK, file_system_->CreateFile(kFile)); | 385 EXPECT_EQ(base::PLATFORM_FILE_OK, file_system_->CreateFile(kFile)); |
| 384 EXPECT_EQ(base::PLATFORM_FILE_OK, file_system_->Remove(kFile, false)); | 386 EXPECT_EQ(base::PLATFORM_FILE_OK, file_system_->Remove(kFile, false)); |
| 385 | 387 |
| 386 // The local_change_processor's ApplyLocalChange should be called once | 388 // The local_change_processor's ApplyLocalChange should be called once |
| 387 // with DELETE change for TYPE_FILE. | 389 // with DELETE change for TYPE_FILE. |
| 388 // The file will NOT exist in the remote side and the processor might | 390 // The file will NOT exist in the remote side and the processor might |
| 389 // return SYNC_FILE_ERROR_NOT_FOUND (as mocked). | 391 // return SYNC_FILE_ERROR_NOT_FOUND (as mocked). |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 458 | 460 |
| 459 // The local_change_processor's ApplyLocalChange will be called | 461 // The local_change_processor's ApplyLocalChange will be called |
| 460 // twice for FILE_TYPE and FILE_DIRECTORY. | 462 // twice for FILE_TYPE and FILE_DIRECTORY. |
| 461 StrictMock<MockLocalChangeProcessor> local_change_processor; | 463 StrictMock<MockLocalChangeProcessor> local_change_processor; |
| 462 std::vector<FileChange> changes; | 464 std::vector<FileChange> changes; |
| 463 EXPECT_CALL(local_change_processor, ApplyLocalChange(_, _, _, kPath, _)) | 465 EXPECT_CALL(local_change_processor, ApplyLocalChange(_, _, _, kPath, _)) |
| 464 .Times(2) | 466 .Times(2) |
| 465 .WillOnce(MockStatusCallbackAndRecordChange(SYNC_STATUS_OK, &changes)) | 467 .WillOnce(MockStatusCallbackAndRecordChange(SYNC_STATUS_OK, &changes)) |
| 466 .WillOnce(MockStatusCallbackAndRecordChange(SYNC_STATUS_OK, &changes)); | 468 .WillOnce(MockStatusCallbackAndRecordChange(SYNC_STATUS_OK, &changes)); |
| 467 local_service_->SetLocalChangeProcessor(&local_change_processor); | 469 local_service_->SetLocalChangeProcessor(&local_change_processor); |
| 470 |
| 471 // OnWriteEnabled will be notified on kPath. |
| 472 EXPECT_CALL(status_observer, OnWriteEnabled(kPath)).Times(AtLeast(1)); |
| 473 |
| 468 local_service_->ProcessLocalChange( | 474 local_service_->ProcessLocalChange( |
| 469 base::Bind(&OnSyncCompleted, FROM_HERE, run_loop.QuitClosure(), | 475 base::Bind(&OnSyncCompleted, FROM_HERE, run_loop.QuitClosure(), |
| 470 SYNC_STATUS_OK, kPath)); | 476 SYNC_STATUS_OK, kPath)); |
| 471 | 477 |
| 472 run_loop.Run(); | 478 run_loop.Run(); |
| 473 | 479 |
| 474 EXPECT_EQ(2U, changes.size()); | 480 EXPECT_EQ(2U, changes.size()); |
| 475 EXPECT_EQ(FileChange(FileChange::FILE_CHANGE_DELETE, SYNC_FILE_TYPE_FILE), | 481 EXPECT_EQ(FileChange(FileChange::FILE_CHANGE_DELETE, SYNC_FILE_TYPE_FILE), |
| 476 changes[0]); | 482 changes[0]); |
| 477 EXPECT_EQ(FileChange(FileChange::FILE_CHANGE_ADD_OR_UPDATE, | 483 EXPECT_EQ(FileChange(FileChange::FILE_CHANGE_ADD_OR_UPDATE, |
| (...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 703 all_origins.insert(kOrigin2); | 709 all_origins.insert(kOrigin2); |
| 704 all_origins.insert(kOrigin3); | 710 all_origins.insert(kOrigin3); |
| 705 while (!all_origins.empty()) { | 711 while (!all_origins.empty()) { |
| 706 ASSERT_TRUE(NextOriginToProcess(&origin)); | 712 ASSERT_TRUE(NextOriginToProcess(&origin)); |
| 707 ASSERT_TRUE(ContainsKey(all_origins, origin)); | 713 ASSERT_TRUE(ContainsKey(all_origins, origin)); |
| 708 all_origins.erase(origin); | 714 all_origins.erase(origin); |
| 709 } | 715 } |
| 710 } | 716 } |
| 711 | 717 |
| 712 } // namespace sync_file_system | 718 } // namespace sync_file_system |
| OLD | NEW |