| 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 047c02d179ff571e896870971841b495aaf71bae..973191ef4c388dc877777effed682ff95312a1ec 100644
|
| --- a/components/offline_pages/offline_page_model_unittest.cc
|
| +++ b/components/offline_pages/offline_page_model_unittest.cc
|
| @@ -14,6 +14,7 @@
|
| #include "base/single_thread_task_runner.h"
|
| #include "base/strings/string16.h"
|
| #include "base/strings/utf_string_conversions.h"
|
| +#include "base/time/time.h"
|
| #include "components/offline_pages/offline_page_item.h"
|
| #include "components/offline_pages/offline_page_metadata_store.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| @@ -42,6 +43,7 @@ class OfflinePageTestStore : public OfflinePageMetadataStore {
|
|
|
| explicit OfflinePageTestStore(
|
| const scoped_refptr<base::SingleThreadTaskRunner>& task_runner);
|
| + explicit OfflinePageTestStore(const OfflinePageTestStore& other_store);
|
| ~OfflinePageTestStore() override;
|
|
|
| // OfflinePageMetadataStore overrides:
|
| @@ -65,7 +67,7 @@ class OfflinePageTestStore : public OfflinePageMetadataStore {
|
|
|
| std::vector<OfflinePageItem> offline_pages_;
|
|
|
| - DISALLOW_COPY_AND_ASSIGN(OfflinePageTestStore);
|
| + DISALLOW_ASSIGN(OfflinePageTestStore);
|
| };
|
|
|
| OfflinePageTestStore::OfflinePageTestStore(
|
| @@ -74,6 +76,12 @@ OfflinePageTestStore::OfflinePageTestStore(
|
| scenario_(TestScenario::SUCCESSFUL) {
|
| }
|
|
|
| +OfflinePageTestStore::OfflinePageTestStore(
|
| + const OfflinePageTestStore& other_store)
|
| + : task_runner_(other_store.task_runner_),
|
| + scenario_(other_store.scenario_),
|
| + offline_pages_(other_store.offline_pages_) {}
|
| +
|
| OfflinePageTestStore::~OfflinePageTestStore() {
|
| }
|
|
|
| @@ -169,11 +177,16 @@ class OfflinePageModelTest
|
| void OnSavePageDone(SavePageResult result);
|
| void OnDeletePageDone(DeletePageResult result);
|
|
|
| + // OfflinePageMetadataStore callbacks.
|
| + void OnStoreUpdateDone(bool /* success */);
|
| +
|
| scoped_ptr<OfflinePageTestArchiver> BuildArchiver(
|
| const GURL& url,
|
| OfflinePageArchiver::ArchiverResult result);
|
| scoped_ptr<OfflinePageMetadataStore> BuildStore();
|
| - scoped_ptr<OfflinePageModel> BuildModel();
|
| + scoped_ptr<OfflinePageModel> BuildModel(
|
| + scoped_ptr<OfflinePageMetadataStore> store);
|
| + void ResetModel();
|
|
|
| // Utility methods.
|
| void PumpLoop();
|
| @@ -257,7 +270,7 @@ OfflinePageModelTest::~OfflinePageModelTest() {
|
|
|
| void OfflinePageModelTest::SetUp() {
|
| ASSERT_TRUE(temp_dir_.CreateUniqueTempDir());
|
| - model_ = BuildModel().Pass();
|
| + model_ = BuildModel(BuildStore().Pass()).Pass();
|
| model_->AddObserver(this);
|
| PumpLoop();
|
| }
|
| @@ -282,6 +295,10 @@ void OfflinePageModelTest::OnDeletePageDone(DeletePageResult result) {
|
| last_delete_result_ = result;
|
| }
|
|
|
| +void OfflinePageModelTest::OnStoreUpdateDone(bool /* success - ignored */) {
|
| + run_loop_->Quit();
|
| +}
|
| +
|
| scoped_ptr<OfflinePageTestArchiver> OfflinePageModelTest::BuildArchiver(
|
| const GURL& url,
|
| OfflinePageArchiver::ArchiverResult result) {
|
| @@ -294,9 +311,20 @@ scoped_ptr<OfflinePageMetadataStore> OfflinePageModelTest::BuildStore() {
|
| new OfflinePageTestStore(task_runner()));
|
| }
|
|
|
| -scoped_ptr<OfflinePageModel> OfflinePageModelTest::BuildModel() {
|
| +scoped_ptr<OfflinePageModel> OfflinePageModelTest::BuildModel(
|
| + scoped_ptr<OfflinePageMetadataStore> store) {
|
| return scoped_ptr<OfflinePageModel>(
|
| - new OfflinePageModel(BuildStore().Pass(), task_runner()));
|
| + new OfflinePageModel(store.Pass(), task_runner()));
|
| +}
|
| +
|
| +void OfflinePageModelTest::ResetModel() {
|
| + model_->RemoveObserver(this);
|
| + OfflinePageTestStore* old_store = GetStore();
|
| + scoped_ptr<OfflinePageMetadataStore> new_store(
|
| + new OfflinePageTestStore(*old_store));
|
| + model_ = BuildModel(new_store.Pass()).Pass();
|
| + model_->AddObserver(this);
|
| + PumpLoop();
|
| }
|
|
|
| void OfflinePageModelTest::PumpLoop() {
|
| @@ -653,4 +681,47 @@ TEST_F(OfflinePageModelTest, GetPageByOfflineURL) {
|
| EXPECT_FALSE(page);
|
| }
|
|
|
| +// Test that model returns pages that are older than 30 days as candidates for
|
| +// clean up, hence the numbers in time delta.
|
| +TEST_F(OfflinePageModelTest, GetPagesToCleanUp) {
|
| + base::Time now = base::Time::Now();
|
| + OfflinePageItem page_1(
|
| + GURL(kTestUrl), kTestPageBookmarkId1,
|
| + base::FilePath(FILE_PATH_LITERAL("/test/location/page1.mhtml")),
|
| + kTestFileSize, now - base::TimeDelta::FromDays(40));
|
| + GetStore()->AddOfflinePage(
|
| + page_1,
|
| + base::Bind(&OfflinePageModelTest::OnStoreUpdateDone, AsWeakPtr()));
|
| + PumpLoop();
|
| +
|
| + OfflinePageItem page_2(
|
| + GURL(kTestUrl2), kTestPageBookmarkId2,
|
| + base::FilePath(FILE_PATH_LITERAL("/test/location/page2.mhtml")),
|
| + kTestFileSize, now - base::TimeDelta::FromDays(31));
|
| + GetStore()->AddOfflinePage(
|
| + page_2,
|
| + base::Bind(&OfflinePageModelTest::OnStoreUpdateDone, AsWeakPtr()));
|
| + PumpLoop();
|
| +
|
| + OfflinePageItem page_3(
|
| + GURL("http://test.xyz"), 42,
|
| + base::FilePath(FILE_PATH_LITERAL("/test/location/page3.mhtml")),
|
| + kTestFileSize, now - base::TimeDelta::FromDays(29));
|
| + GetStore()->AddOfflinePage(
|
| + page_3,
|
| + base::Bind(&OfflinePageModelTest::OnStoreUpdateDone, AsWeakPtr()));
|
| + PumpLoop();
|
| +
|
| + ResetModel();
|
| +
|
| + // Only page_1 and page_2 are expected to be picked up by the model as page_3
|
| + // has not been in the store long enough.
|
| + std::vector<OfflinePageItem> pages_to_clean_up = model()->GetPagesToCleanUp();
|
| + EXPECT_EQ(2UL, pages_to_clean_up.size());
|
| + EXPECT_EQ(kTestUrl, pages_to_clean_up[0].url);
|
| + EXPECT_EQ(kTestPageBookmarkId1, pages_to_clean_up[0].bookmark_id);
|
| + EXPECT_EQ(kTestUrl2, pages_to_clean_up[1].url);
|
| + EXPECT_EQ(kTestPageBookmarkId2, pages_to_clean_up[1].bookmark_id);
|
| +}
|
| +
|
| } // namespace offline_pages
|
|
|