Chromium Code Reviews| Index: components/offline_pages/offline_page_model_unittest.cc |
| diff --git a/components/offline_pages/offline_page_model_unittest.cc b/components/offline_pages/offline_page_model_unittest.cc |
| index ef5ad7f9f89fd491f1dfa1df1504fc79c5dc03d3..d6f02f10fc6cee0868e1b49af659f01a1525da56 100644 |
| --- a/components/offline_pages/offline_page_model_unittest.cc |
| +++ b/components/offline_pages/offline_page_model_unittest.cc |
| @@ -21,8 +21,10 @@ |
| #include "base/test/test_mock_time_task_runner.h" |
| #include "base/thread_task_runner_handle.h" |
| #include "base/time/time.h" |
| +#include "components/offline_pages/client_policy_controller.h" |
| #include "components/offline_pages/offline_page_feature.h" |
| #include "components/offline_pages/offline_page_item.h" |
| +#include "components/offline_pages/offline_page_storage_manager.h" |
| #include "components/offline_pages/offline_page_test_archiver.h" |
| #include "components/offline_pages/offline_page_test_store.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| @@ -94,6 +96,7 @@ class OfflinePageModelTest |
| void OnGetMultipleOfflinePageItemsResult( |
| MultipleOfflinePageItemResult* storage, |
| const MultipleOfflinePageItemResult& result); |
| + void OnClearPageByStorageManager(int pages_cleared, DeletePageResult result); |
| // OfflinePageMetadataStore callbacks. |
| void OnStoreUpdateDone(bool /* success */); |
| @@ -162,6 +165,12 @@ class OfflinePageModelTest |
| const base::FilePath& last_archiver_path() { return last_archiver_path_; } |
| + int last_cleared_pages_count() const { return last_cleared_pages_count_; } |
| + |
| + DeletePageResult last_clear_page_result() const { |
| + return last_clear_page_result_; |
| + } |
| + |
| private: |
| scoped_refptr<base::TestMockTimeTaskRunner> task_runner_; |
| base::ThreadTaskRunnerHandle task_runner_handle_; |
| @@ -176,6 +185,8 @@ class OfflinePageModelTest |
| ClientId last_deleted_client_id_; |
| bool last_has_pages_result_; |
| CheckPagesExistOfflineResult last_pages_exist_result_; |
| + int last_cleared_pages_count_; |
| + DeletePageResult last_clear_page_result_; |
| }; |
| OfflinePageModelTest::OfflinePageModelTest() |
| @@ -289,6 +300,7 @@ void OfflinePageModelTest::ResetResults() { |
| last_delete_result_ = DeletePageResult::CANCELLED; |
| last_archiver_path_.clear(); |
| last_pages_exist_result_.clear(); |
| + last_cleared_pages_count_ = 0; |
| } |
| OfflinePageTestStore* OfflinePageModelTest::GetStore() { |
| @@ -381,6 +393,13 @@ void OfflinePageModelTest::OnGetMultipleOfflinePageItemsResult( |
| *storage = result; |
| } |
| +void OfflinePageModelTest::OnClearPageByStorageManager( |
| + int pages_cleared, |
| + DeletePageResult result) { |
| + last_cleared_pages_count_ = pages_cleared; |
| + last_clear_page_result_ = result; |
| +} |
| + |
| base::Optional<OfflinePageItem> OfflinePageModelTest::GetPagesByOnlineURL( |
| const GURL& online_url) { |
| MultipleOfflinePageItemResult result; |
| @@ -929,6 +948,40 @@ TEST_F(OfflinePageModelTest, SaveRetrieveMultipleClientIds) { |
| EXPECT_TRUE(id_set.find(offline2) != id_set.end()); |
| } |
| +TEST_F(OfflinePageModelTest, ClearPagesFromOneSource) { |
| + base::Time now = base::Time::Now(); |
| + base::TimeDelta expiration_period = model() |
| + ->GetPolicyController() |
| + ->GetPolicy(kTestClientNamespace) |
| + .lifetime_policy.expiration_period; |
| + |
| + SavePage(kTestUrl, kTestClientId1); |
| + GetStore()->UpdateLastAccessTime( |
| + last_save_offline_id(), |
| + now - base::TimeDelta::FromDays(10) - expiration_period); |
| + SavePage(kTestUrl2, kTestClientId2); |
| + GetStore()->UpdateLastAccessTime( |
| + last_save_offline_id(), |
| + now - base::TimeDelta::FromDays(1) - expiration_period); |
| + SavePage(kTestUrl3, kTestClientId3); |
| + GetStore()->UpdateLastAccessTime(last_save_offline_id(), now); |
| + |
| + ResetModel(); |
| + |
| + // Only first two pages are expired. |
| + model()->GetStorageManager()->ClearPagesIfNeeded(base::Bind( |
| + &OfflinePageModelTest::OnClearPageByStorageManager, AsWeakPtr())); |
| + |
| + PumpLoop(); |
| + |
| + std::vector<OfflinePageItem> offline_pages = GetAllPages(); |
| + |
| + EXPECT_EQ(1UL, offline_pages.size()); |
| + EXPECT_EQ(1UL, GetStore()->GetAllPages().size()); |
| + EXPECT_EQ(2, last_cleared_pages_count()); |
| + EXPECT_EQ(DeletePageResult::SUCCESS, last_delete_result()); |
|
fgorski
2016/05/06 05:57:24
last_clear_page_result()
romax
2016/05/07 02:22:42
Done.
|
| +} |
| + |
| TEST(CommandLineFlagsTest, OfflineBookmarks) { |
| // Disabled by default. |
| EXPECT_FALSE(offline_pages::IsOfflineBookmarksEnabled()); |