| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "components/offline_pages/offline_page_model.h" | 5 #include "components/offline_pages/offline_page_model.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/files/file_util.h" | 10 #include "base/files/file_util.h" |
| (...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 165 public base::SupportsWeakPtr<OfflinePageModelTest> { | 165 public base::SupportsWeakPtr<OfflinePageModelTest> { |
| 166 public: | 166 public: |
| 167 OfflinePageModelTest(); | 167 OfflinePageModelTest(); |
| 168 ~OfflinePageModelTest() override; | 168 ~OfflinePageModelTest() override; |
| 169 | 169 |
| 170 void SetUp() override; | 170 void SetUp() override; |
| 171 void TearDown() override; | 171 void TearDown() override; |
| 172 | 172 |
| 173 // OfflinePageModel::Observer implementation. | 173 // OfflinePageModel::Observer implementation. |
| 174 void OfflinePageModelLoaded(OfflinePageModel* model) override; | 174 void OfflinePageModelLoaded(OfflinePageModel* model) override; |
| 175 void OfflinePageModelChanged(OfflinePageModel* model) override; |
| 175 | 176 |
| 176 // OfflinePageModel callbacks. | 177 // OfflinePageModel callbacks. |
| 177 void OnSavePageDone(SavePageResult result); | 178 void OnSavePageDone(SavePageResult result); |
| 178 void OnDeletePageDone(DeletePageResult result); | 179 void OnDeletePageDone(DeletePageResult result); |
| 179 | 180 |
| 180 // OfflinePageMetadataStore callbacks. | 181 // OfflinePageMetadataStore callbacks. |
| 181 void OnStoreUpdateDone(bool /* success */); | 182 void OnStoreUpdateDone(bool /* success */); |
| 182 | 183 |
| 183 scoped_ptr<OfflinePageTestArchiver> BuildArchiver( | 184 scoped_ptr<OfflinePageTestArchiver> BuildArchiver( |
| 184 const GURL& url, | 185 const GURL& url, |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 277 | 278 |
| 278 void OfflinePageModelTest::TearDown() { | 279 void OfflinePageModelTest::TearDown() { |
| 279 model_->RemoveObserver(this); | 280 model_->RemoveObserver(this); |
| 280 } | 281 } |
| 281 | 282 |
| 282 void OfflinePageModelTest::OfflinePageModelLoaded(OfflinePageModel* model) { | 283 void OfflinePageModelTest::OfflinePageModelLoaded(OfflinePageModel* model) { |
| 283 ASSERT_EQ(model_.get(), model); | 284 ASSERT_EQ(model_.get(), model); |
| 284 run_loop_->Quit(); | 285 run_loop_->Quit(); |
| 285 } | 286 } |
| 286 | 287 |
| 288 void OfflinePageModelTest::OfflinePageModelChanged(OfflinePageModel* model) { |
| 289 ASSERT_EQ(model_.get(), model); |
| 290 } |
| 291 |
| 287 void OfflinePageModelTest::OnSavePageDone( | 292 void OfflinePageModelTest::OnSavePageDone( |
| 288 OfflinePageModel::SavePageResult result) { | 293 OfflinePageModel::SavePageResult result) { |
| 289 run_loop_->Quit(); | 294 run_loop_->Quit(); |
| 290 last_save_result_ = result; | 295 last_save_result_ = result; |
| 291 } | 296 } |
| 292 | 297 |
| 293 void OfflinePageModelTest::OnDeletePageDone(DeletePageResult result) { | 298 void OfflinePageModelTest::OnDeletePageDone(DeletePageResult result) { |
| 294 run_loop_->Quit(); | 299 run_loop_->Quit(); |
| 295 last_delete_result_ = result; | 300 last_delete_result_ = result; |
| 296 } | 301 } |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 364 ResetResults(); | 369 ResetResults(); |
| 365 | 370 |
| 366 const std::vector<OfflinePageItem>& offline_pages = model()->GetAllPages(); | 371 const std::vector<OfflinePageItem>& offline_pages = model()->GetAllPages(); |
| 367 | 372 |
| 368 EXPECT_EQ(1UL, offline_pages.size()); | 373 EXPECT_EQ(1UL, offline_pages.size()); |
| 369 EXPECT_EQ(kTestUrl, offline_pages[0].url); | 374 EXPECT_EQ(kTestUrl, offline_pages[0].url); |
| 370 EXPECT_EQ(kTestPageBookmarkId1, offline_pages[0].bookmark_id); | 375 EXPECT_EQ(kTestPageBookmarkId1, offline_pages[0].bookmark_id); |
| 371 EXPECT_EQ(archiver_path, offline_pages[0].file_path); | 376 EXPECT_EQ(archiver_path, offline_pages[0].file_path); |
| 372 EXPECT_EQ(kTestFileSize, offline_pages[0].file_size); | 377 EXPECT_EQ(kTestFileSize, offline_pages[0].file_size); |
| 373 EXPECT_EQ(0, offline_pages[0].access_count); | 378 EXPECT_EQ(0, offline_pages[0].access_count); |
| 379 EXPECT_EQ(0, offline_pages[0].flags); |
| 374 } | 380 } |
| 375 | 381 |
| 376 TEST_F(OfflinePageModelTest, SavePageOfflineArchiverCancelled) { | 382 TEST_F(OfflinePageModelTest, SavePageOfflineArchiverCancelled) { |
| 377 scoped_ptr<OfflinePageTestArchiver> archiver( | 383 scoped_ptr<OfflinePageTestArchiver> archiver( |
| 378 BuildArchiver(kTestUrl, | 384 BuildArchiver(kTestUrl, |
| 379 OfflinePageArchiver::ArchiverResult::ERROR_CANCELED) | 385 OfflinePageArchiver::ArchiverResult::ERROR_CANCELED) |
| 380 .Pass()); | 386 .Pass()); |
| 381 model()->SavePage( | 387 model()->SavePage( |
| 382 kTestUrl, kTestPageBookmarkId1, archiver.Pass(), | 388 kTestUrl, kTestPageBookmarkId1, archiver.Pass(), |
| 383 base::Bind(&OfflinePageModelTest::OnSavePageDone, AsWeakPtr())); | 389 base::Bind(&OfflinePageModelTest::OnSavePageDone, AsWeakPtr())); |
| (...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 498 ResetResults(); | 504 ResetResults(); |
| 499 | 505 |
| 500 const std::vector<OfflinePageItem>& offline_pages = model()->GetAllPages(); | 506 const std::vector<OfflinePageItem>& offline_pages = model()->GetAllPages(); |
| 501 | 507 |
| 502 EXPECT_EQ(2UL, offline_pages.size()); | 508 EXPECT_EQ(2UL, offline_pages.size()); |
| 503 EXPECT_EQ(kTestUrl, offline_pages[0].url); | 509 EXPECT_EQ(kTestUrl, offline_pages[0].url); |
| 504 EXPECT_EQ(kTestPageBookmarkId1, offline_pages[0].bookmark_id); | 510 EXPECT_EQ(kTestPageBookmarkId1, offline_pages[0].bookmark_id); |
| 505 EXPECT_EQ(archiver_path, offline_pages[0].file_path); | 511 EXPECT_EQ(archiver_path, offline_pages[0].file_path); |
| 506 EXPECT_EQ(kTestFileSize, offline_pages[0].file_size); | 512 EXPECT_EQ(kTestFileSize, offline_pages[0].file_size); |
| 507 EXPECT_EQ(0, offline_pages[0].access_count); | 513 EXPECT_EQ(0, offline_pages[0].access_count); |
| 514 EXPECT_EQ(0, offline_pages[0].flags); |
| 508 EXPECT_EQ(kTestUrl2, offline_pages[1].url); | 515 EXPECT_EQ(kTestUrl2, offline_pages[1].url); |
| 509 EXPECT_EQ(kTestPageBookmarkId2, offline_pages[1].bookmark_id); | 516 EXPECT_EQ(kTestPageBookmarkId2, offline_pages[1].bookmark_id); |
| 510 EXPECT_EQ(archiver_path2, offline_pages[1].file_path); | 517 EXPECT_EQ(archiver_path2, offline_pages[1].file_path); |
| 511 EXPECT_EQ(kTestFileSize, offline_pages[1].file_size); | 518 EXPECT_EQ(kTestFileSize, offline_pages[1].file_size); |
| 512 EXPECT_EQ(0, offline_pages[1].access_count); | 519 EXPECT_EQ(0, offline_pages[1].access_count); |
| 520 EXPECT_EQ(0, offline_pages[1].flags); |
| 513 } | 521 } |
| 514 | 522 |
| 515 TEST_F(OfflinePageModelTest, MarkPageAccessed) { | 523 TEST_F(OfflinePageModelTest, MarkPageAccessed) { |
| 516 scoped_ptr<OfflinePageTestArchiver> archiver( | 524 scoped_ptr<OfflinePageTestArchiver> archiver( |
| 517 BuildArchiver(kTestUrl, | 525 BuildArchiver(kTestUrl, |
| 518 OfflinePageArchiver::ArchiverResult::SUCCESSFULLY_CREATED) | 526 OfflinePageArchiver::ArchiverResult::SUCCESSFULLY_CREATED) |
| 519 .Pass()); | 527 .Pass()); |
| 520 model()->SavePage( | 528 model()->SavePage( |
| 521 kTestUrl, kTestPageBookmarkId1, archiver.Pass(), | 529 kTestUrl, kTestPageBookmarkId1, archiver.Pass(), |
| 522 base::Bind(&OfflinePageModelTest::OnSavePageDone, AsWeakPtr())); | 530 base::Bind(&OfflinePageModelTest::OnSavePageDone, AsWeakPtr())); |
| 523 PumpLoop(); | 531 PumpLoop(); |
| 524 | 532 |
| 525 // This will increase access_count by one. | 533 // This will increase access_count by one. |
| 526 model()->MarkPageAccessed(kTestPageBookmarkId1); | 534 model()->MarkPageAccessed(kTestPageBookmarkId1); |
| 527 base::RunLoop().RunUntilIdle(); | 535 base::RunLoop().RunUntilIdle(); |
| 528 | 536 |
| 529 const std::vector<OfflinePageItem>& offline_pages = model()->GetAllPages(); | 537 const std::vector<OfflinePageItem>& offline_pages = model()->GetAllPages(); |
| 530 | 538 |
| 531 EXPECT_EQ(1UL, offline_pages.size()); | 539 EXPECT_EQ(1UL, offline_pages.size()); |
| 532 EXPECT_EQ(kTestUrl, offline_pages[0].url); | 540 EXPECT_EQ(kTestUrl, offline_pages[0].url); |
| 533 EXPECT_EQ(kTestPageBookmarkId1, offline_pages[0].bookmark_id); | 541 EXPECT_EQ(kTestPageBookmarkId1, offline_pages[0].bookmark_id); |
| 534 EXPECT_EQ(kTestFileSize, offline_pages[0].file_size); | 542 EXPECT_EQ(kTestFileSize, offline_pages[0].file_size); |
| 535 EXPECT_EQ(1, offline_pages[0].access_count); | 543 EXPECT_EQ(1, offline_pages[0].access_count); |
| 536 } | 544 } |
| 537 | 545 |
| 546 TEST_F(OfflinePageModelTest, MarkPageForDeletion) { |
| 547 scoped_ptr<OfflinePageTestArchiver> archiver( |
| 548 BuildArchiver(kTestUrl, |
| 549 OfflinePageArchiver::ArchiverResult::SUCCESSFULLY_CREATED) |
| 550 .Pass()); |
| 551 model()->SavePage( |
| 552 kTestUrl, kTestPageBookmarkId1, archiver.Pass(), |
| 553 base::Bind(&OfflinePageModelTest::OnSavePageDone, AsWeakPtr())); |
| 554 PumpLoop(); |
| 555 |
| 556 // Delete the page with undo tiggerred. |
| 557 model()->MarkPageForDeletion( |
| 558 kTestPageBookmarkId1, |
| 559 base::Bind(&OfflinePageModelTest::OnDeletePageDone, AsWeakPtr())); |
| 560 PumpLoop(); |
| 561 |
| 562 // GetAllPages will not return the page that is marked for deletion. |
| 563 const std::vector<OfflinePageItem>& offline_pages = model()->GetAllPages(); |
| 564 EXPECT_EQ(0UL, offline_pages.size()); |
| 565 |
| 566 // Undo the deletion. |
| 567 model()->UndoPageDeletion(kTestPageBookmarkId1); |
| 568 base::RunLoop().RunUntilIdle(); |
| 569 |
| 570 // GetAllPages will now return the restored page. |
| 571 const std::vector<OfflinePageItem>& offline_pages_after_undo = |
| 572 model()->GetAllPages(); |
| 573 EXPECT_EQ(1UL, offline_pages_after_undo.size()); |
| 574 } |
| 575 |
| 538 TEST_F(OfflinePageModelTest, GetAllPagesStoreEmpty) { | 576 TEST_F(OfflinePageModelTest, GetAllPagesStoreEmpty) { |
| 539 const std::vector<OfflinePageItem>& offline_pages = model()->GetAllPages(); | 577 const std::vector<OfflinePageItem>& offline_pages = model()->GetAllPages(); |
| 540 | 578 |
| 541 EXPECT_EQ(0UL, offline_pages.size()); | 579 EXPECT_EQ(0UL, offline_pages.size()); |
| 542 } | 580 } |
| 543 | 581 |
| 544 TEST_F(OfflinePageModelTest, GetAllPagesStoreFailure) { | 582 TEST_F(OfflinePageModelTest, GetAllPagesStoreFailure) { |
| 545 GetStore()->set_test_scenario( | 583 GetStore()->set_test_scenario( |
| 546 OfflinePageTestStore::TestScenario::LOAD_FAILED); | 584 OfflinePageTestStore::TestScenario::LOAD_FAILED); |
| 547 const std::vector<OfflinePageItem>& offline_pages = model()->GetAllPages(); | 585 const std::vector<OfflinePageItem>& offline_pages = model()->GetAllPages(); |
| (...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 750 // has not been in the store long enough. | 788 // has not been in the store long enough. |
| 751 std::vector<OfflinePageItem> pages_to_clean_up = model()->GetPagesToCleanUp(); | 789 std::vector<OfflinePageItem> pages_to_clean_up = model()->GetPagesToCleanUp(); |
| 752 EXPECT_EQ(2UL, pages_to_clean_up.size()); | 790 EXPECT_EQ(2UL, pages_to_clean_up.size()); |
| 753 EXPECT_EQ(kTestUrl, pages_to_clean_up[0].url); | 791 EXPECT_EQ(kTestUrl, pages_to_clean_up[0].url); |
| 754 EXPECT_EQ(kTestPageBookmarkId1, pages_to_clean_up[0].bookmark_id); | 792 EXPECT_EQ(kTestPageBookmarkId1, pages_to_clean_up[0].bookmark_id); |
| 755 EXPECT_EQ(kTestUrl2, pages_to_clean_up[1].url); | 793 EXPECT_EQ(kTestUrl2, pages_to_clean_up[1].url); |
| 756 EXPECT_EQ(kTestPageBookmarkId2, pages_to_clean_up[1].bookmark_id); | 794 EXPECT_EQ(kTestPageBookmarkId2, pages_to_clean_up[1].bookmark_id); |
| 757 } | 795 } |
| 758 | 796 |
| 759 } // namespace offline_pages | 797 } // namespace offline_pages |
| OLD | NEW |