| 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 <stdint.h> | 7 #include <stdint.h> |
| 8 #include <algorithm> | 8 #include <algorithm> |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| (...skipping 450 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 461 | 461 |
| 462 const std::vector<OfflinePageItem>& offline_pages = GetAllPages(); | 462 const std::vector<OfflinePageItem>& offline_pages = GetAllPages(); |
| 463 | 463 |
| 464 EXPECT_EQ(1UL, offline_pages.size()); | 464 EXPECT_EQ(1UL, offline_pages.size()); |
| 465 EXPECT_EQ(kTestUrl, offline_pages[0].url); | 465 EXPECT_EQ(kTestUrl, offline_pages[0].url); |
| 466 EXPECT_EQ(kTestClientId1, offline_pages[0].client_id); | 466 EXPECT_EQ(kTestClientId1, offline_pages[0].client_id); |
| 467 EXPECT_EQ(kTestFileSize, offline_pages[0].file_size); | 467 EXPECT_EQ(kTestFileSize, offline_pages[0].file_size); |
| 468 EXPECT_EQ(1, offline_pages[0].access_count); | 468 EXPECT_EQ(1, offline_pages[0].access_count); |
| 469 } | 469 } |
| 470 | 470 |
| 471 TEST_F(OfflinePageModelTest, MarkPageForDeletion) { | |
| 472 SavePage(kTestUrl, kTestClientId1); | |
| 473 | |
| 474 GURL offline_url = GetAllPages().begin()->GetOfflineURL(); | |
| 475 | |
| 476 // Delete the page with undo tiggerred. | |
| 477 model()->MarkPageForDeletion( | |
| 478 last_save_offline_id(), | |
| 479 base::Bind(&OfflinePageModelTest::OnDeletePageDone, AsWeakPtr())); | |
| 480 PumpLoop(); | |
| 481 | |
| 482 // GetAllPages will not return the page that is marked for deletion. | |
| 483 const std::vector<OfflinePageItem>& offline_pages = GetAllPages(); | |
| 484 EXPECT_EQ(0UL, offline_pages.size()); | |
| 485 | |
| 486 EXPECT_FALSE(HasPages(kTestClientNamespace)); | |
| 487 EXPECT_EQ(nullptr, model()->GetPageByOnlineURL(kTestUrl)); | |
| 488 EXPECT_EQ(nullptr, model()->GetPageByOfflineId(last_save_offline_id())); | |
| 489 EXPECT_EQ(nullptr, model()->GetPageByOfflineURL(offline_url)); | |
| 490 | |
| 491 // Undo the deletion. | |
| 492 model()->UndoPageDeletion(last_save_offline_id()); | |
| 493 PumpLoop(); | |
| 494 | |
| 495 // GetAllPages will now return the restored page. | |
| 496 const std::vector<OfflinePageItem>& offline_pages_after_undo = GetAllPages(); | |
| 497 EXPECT_EQ(1UL, offline_pages_after_undo.size()); | |
| 498 } | |
| 499 | |
| 500 TEST_F(OfflinePageModelTest, FinalizePageDeletion) { | |
| 501 scoped_ptr<OfflinePageTestArchiver> archiver(BuildArchiver( | |
| 502 kTestUrl, OfflinePageArchiver::ArchiverResult::SUCCESSFULLY_CREATED)); | |
| 503 model()->SavePage( | |
| 504 kTestUrl, kTestClientId1, std::move(archiver), | |
| 505 base::Bind(&OfflinePageModelTest::OnSavePageDone, AsWeakPtr())); | |
| 506 PumpLoop(); | |
| 507 | |
| 508 // Mark the page for deletion. | |
| 509 model()->MarkPageForDeletion( | |
| 510 last_save_offline_id(), | |
| 511 base::Bind(&OfflinePageModelTest::OnDeletePageDone, AsWeakPtr())); | |
| 512 PumpLoop(); | |
| 513 | |
| 514 EXPECT_EQ(1UL, GetStore()->GetAllPages().size()); | |
| 515 | |
| 516 // Fast forward to trigger the page deletion. | |
| 517 FastForwardBy(OfflinePageModel::GetFinalDeletionDelayForTesting()); | |
| 518 | |
| 519 EXPECT_EQ(0UL, GetStore()->GetAllPages().size()); | |
| 520 } | |
| 521 | |
| 522 TEST_F(OfflinePageModelTest, SavePageAfterMarkingPageForDeletion) { | |
| 523 scoped_ptr<OfflinePageTestArchiver> archiver(BuildArchiver( | |
| 524 kTestUrl, OfflinePageArchiver::ArchiverResult::SUCCESSFULLY_CREATED)); | |
| 525 model()->SavePage( | |
| 526 kTestUrl, kTestClientId1, std::move(archiver), | |
| 527 base::Bind(&OfflinePageModelTest::OnSavePageDone, AsWeakPtr())); | |
| 528 PumpLoop(); | |
| 529 | |
| 530 // Mark the page for deletion. | |
| 531 model()->MarkPageForDeletion( | |
| 532 last_save_offline_id(), | |
| 533 base::Bind(&OfflinePageModelTest::OnDeletePageDone, AsWeakPtr())); | |
| 534 PumpLoop(); | |
| 535 | |
| 536 EXPECT_EQ(1UL, GetStore()->GetAllPages().size()); | |
| 537 | |
| 538 // Re-save the same page. | |
| 539 scoped_ptr<OfflinePageTestArchiver> archiver2(BuildArchiver( | |
| 540 kTestUrl, OfflinePageArchiver::ArchiverResult::SUCCESSFULLY_CREATED)); | |
| 541 model()->SavePage( | |
| 542 kTestUrl, kTestClientId1, std::move(archiver2), | |
| 543 base::Bind(&OfflinePageModelTest::OnSavePageDone, AsWeakPtr())); | |
| 544 | |
| 545 // Fast forward to trigger the page cleanup. | |
| 546 FastForwardBy(OfflinePageModel::GetFinalDeletionDelayForTesting()); | |
| 547 | |
| 548 // The re-saved page should still exist. | |
| 549 const std::vector<OfflinePageItem>& offline_pages = GetAllPages(); | |
| 550 ASSERT_EQ(1UL, offline_pages.size()); | |
| 551 EXPECT_EQ(kTestUrl, offline_pages[0].url); | |
| 552 EXPECT_EQ(kTestClientId1, offline_pages[0].client_id); | |
| 553 EXPECT_EQ(kTestFileSize, offline_pages[0].file_size); | |
| 554 EXPECT_EQ(0, offline_pages[0].access_count); | |
| 555 } | |
| 556 | |
| 557 TEST_F(OfflinePageModelTest, GetAllPagesStoreEmpty) { | 471 TEST_F(OfflinePageModelTest, GetAllPagesStoreEmpty) { |
| 558 const std::vector<OfflinePageItem>& offline_pages = GetAllPages(); | 472 const std::vector<OfflinePageItem>& offline_pages = GetAllPages(); |
| 559 | 473 |
| 560 EXPECT_EQ(0UL, offline_pages.size()); | 474 EXPECT_EQ(0UL, offline_pages.size()); |
| 561 } | 475 } |
| 562 | 476 |
| 563 TEST_F(OfflinePageModelTest, GetAllPagesStoreFailure) { | 477 TEST_F(OfflinePageModelTest, GetAllPagesStoreFailure) { |
| 564 GetStore()->set_test_scenario( | 478 GetStore()->set_test_scenario( |
| 565 OfflinePageTestStore::TestScenario::LOAD_FAILED); | 479 OfflinePageTestStore::TestScenario::LOAD_FAILED); |
| 566 const std::vector<OfflinePageItem>& offline_pages = GetAllPages(); | 480 const std::vector<OfflinePageItem>& offline_pages = GetAllPages(); |
| (...skipping 396 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 963 // Check if feature is correctly enabled by command-line flag. | 877 // Check if feature is correctly enabled by command-line flag. |
| 964 base::FeatureList::ClearInstanceForTesting(); | 878 base::FeatureList::ClearInstanceForTesting(); |
| 965 scoped_ptr<base::FeatureList> feature_list(new base::FeatureList); | 879 scoped_ptr<base::FeatureList> feature_list(new base::FeatureList); |
| 966 feature_list->InitializeFromCommandLine( | 880 feature_list->InitializeFromCommandLine( |
| 967 offline_pages::kOfflinePagesBackgroundLoadingFeature.name, ""); | 881 offline_pages::kOfflinePagesBackgroundLoadingFeature.name, ""); |
| 968 base::FeatureList::SetInstance(std::move(feature_list)); | 882 base::FeatureList::SetInstance(std::move(feature_list)); |
| 969 EXPECT_TRUE(offline_pages::IsOfflinePagesBackgroundLoadingEnabled()); | 883 EXPECT_TRUE(offline_pages::IsOfflinePagesBackgroundLoadingEnabled()); |
| 970 } | 884 } |
| 971 | 885 |
| 972 } // namespace offline_pages | 886 } // namespace offline_pages |
| OLD | NEW |