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 |