| 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 421 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 432 #define MAYBE_GetFileSyncStatus GetFileSyncStatus | 432 #define MAYBE_GetFileSyncStatus GetFileSyncStatus |
| 433 #endif | 433 #endif |
| 434 TEST_F(SyncFileSystemServiceTest, MAYBE_GetFileSyncStatus) { | 434 TEST_F(SyncFileSystemServiceTest, MAYBE_GetFileSyncStatus) { |
| 435 InitializeApp(); | 435 InitializeApp(); |
| 436 | 436 |
| 437 const FileSystemURL kFile(file_system_->URL("foo")); | 437 const FileSystemURL kFile(file_system_->URL("foo")); |
| 438 | 438 |
| 439 SyncStatusCode status; | 439 SyncStatusCode status; |
| 440 SyncFileStatus sync_file_status; | 440 SyncFileStatus sync_file_status; |
| 441 | 441 |
| 442 // 1. The file is not in conflicting nor in pending change state. | 442 // 1. The file is synced state. |
| 443 { | 443 { |
| 444 base::RunLoop run_loop; | 444 base::RunLoop run_loop; |
| 445 EXPECT_CALL(*mock_remote_service(), IsConflicting(kFile)) | |
| 446 .WillOnce(Return(false)); | |
| 447 | |
| 448 status = SYNC_STATUS_UNKNOWN; | 445 status = SYNC_STATUS_UNKNOWN; |
| 449 sync_file_status = SYNC_FILE_STATUS_UNKNOWN; | 446 sync_file_status = SYNC_FILE_STATUS_UNKNOWN; |
| 450 sync_service_->GetFileSyncStatus( | 447 sync_service_->GetFileSyncStatus( |
| 451 kFile, | 448 kFile, |
| 452 base::Bind(&AssignValueAndQuit<SyncFileStatus>, | 449 base::Bind(&AssignValueAndQuit<SyncFileStatus>, |
| 453 &run_loop, &status, &sync_file_status)); | 450 &run_loop, &status, &sync_file_status)); |
| 454 run_loop.Run(); | 451 run_loop.Run(); |
| 455 | 452 |
| 456 EXPECT_EQ(SYNC_STATUS_OK, status); | 453 EXPECT_EQ(SYNC_STATUS_OK, status); |
| 457 EXPECT_EQ(SYNC_FILE_STATUS_SYNCED, sync_file_status); | 454 EXPECT_EQ(SYNC_FILE_STATUS_SYNCED, sync_file_status); |
| 458 } | 455 } |
| 459 | 456 |
| 460 // 2. Conflicting case. | 457 // 2. The file has pending local changes. |
| 461 { | 458 { |
| 462 base::RunLoop run_loop; | 459 base::RunLoop run_loop; |
| 463 EXPECT_CALL(*mock_remote_service(), IsConflicting(kFile)) | 460 EXPECT_EQ(base::File::FILE_OK, file_system_->CreateFile(kFile)); |
| 464 .WillOnce(Return(true)); | |
| 465 | 461 |
| 466 status = SYNC_STATUS_UNKNOWN; | 462 status = SYNC_STATUS_UNKNOWN; |
| 467 sync_file_status = SYNC_FILE_STATUS_UNKNOWN; | 463 sync_file_status = SYNC_FILE_STATUS_UNKNOWN; |
| 468 sync_service_->GetFileSyncStatus( | 464 sync_service_->GetFileSyncStatus( |
| 469 kFile, | |
| 470 base::Bind(&AssignValueAndQuit<SyncFileStatus>, | |
| 471 &run_loop, &status, &sync_file_status)); | |
| 472 run_loop.Run(); | |
| 473 | |
| 474 EXPECT_EQ(SYNC_STATUS_OK, status); | |
| 475 EXPECT_EQ(SYNC_FILE_STATUS_CONFLICTING, sync_file_status); | |
| 476 } | |
| 477 | |
| 478 // 3. The file has pending local changes. | |
| 479 { | |
| 480 EXPECT_EQ(base::File::FILE_OK, file_system_->CreateFile(kFile)); | |
| 481 | |
| 482 base::RunLoop run_loop; | |
| 483 EXPECT_CALL(*mock_remote_service(), IsConflicting(kFile)) | |
| 484 .WillOnce(Return(false)); | |
| 485 | |
| 486 status = SYNC_STATUS_UNKNOWN; | |
| 487 sync_file_status = SYNC_FILE_STATUS_UNKNOWN; | |
| 488 sync_service_->GetFileSyncStatus( | |
| 489 kFile, | 465 kFile, |
| 490 base::Bind(&AssignValueAndQuit<SyncFileStatus>, | 466 base::Bind(&AssignValueAndQuit<SyncFileStatus>, |
| 491 &run_loop, &status, &sync_file_status)); | 467 &run_loop, &status, &sync_file_status)); |
| 492 run_loop.Run(); | 468 run_loop.Run(); |
| 493 | 469 |
| 494 EXPECT_EQ(SYNC_STATUS_OK, status); | 470 EXPECT_EQ(SYNC_STATUS_OK, status); |
| 495 EXPECT_EQ(SYNC_FILE_STATUS_HAS_PENDING_CHANGES, sync_file_status); | 471 EXPECT_EQ(SYNC_FILE_STATUS_HAS_PENDING_CHANGES, sync_file_status); |
| 496 } | 472 } |
| 497 | |
| 498 // 4. The file has a conflict and pending local changes. In this case | |
| 499 // we return SYNC_FILE_STATUS_CONFLICTING. | |
| 500 { | |
| 501 EXPECT_EQ(base::File::FILE_OK, file_system_->TruncateFile(kFile, 1U)); | |
| 502 | |
| 503 base::RunLoop run_loop; | |
| 504 EXPECT_CALL(*mock_remote_service(), IsConflicting(kFile)) | |
| 505 .WillOnce(Return(true)); | |
| 506 | |
| 507 status = SYNC_STATUS_UNKNOWN; | |
| 508 sync_file_status = SYNC_FILE_STATUS_UNKNOWN; | |
| 509 sync_service_->GetFileSyncStatus( | |
| 510 kFile, | |
| 511 base::Bind(&AssignValueAndQuit<SyncFileStatus>, | |
| 512 &run_loop, &status, &sync_file_status)); | |
| 513 run_loop.Run(); | |
| 514 | |
| 515 EXPECT_EQ(SYNC_STATUS_OK, status); | |
| 516 EXPECT_EQ(SYNC_FILE_STATUS_CONFLICTING, sync_file_status); | |
| 517 } | |
| 518 } | 473 } |
| 519 | 474 |
| 520 } // namespace sync_file_system | 475 } // namespace sync_file_system |
| OLD | NEW |