| 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 7c35ea8e4d3cf5996c9fd9438a7bd7e7ba1cdfb9..3916c689b46b8c8c5e5167140ade7e08b861db5c 100644
|
| --- a/components/offline_pages/offline_page_model_unittest.cc
|
| +++ b/components/offline_pages/offline_page_model_unittest.cc
|
| @@ -172,6 +172,7 @@ class OfflinePageModelTest
|
|
|
| // OfflinePageModel::Observer implementation.
|
| void OfflinePageModelLoaded(OfflinePageModel* model) override;
|
| + void OfflinePageDeleted(int64 bookmark_id) override;
|
|
|
| // OfflinePageModel callbacks.
|
| void OnSavePageDone(SavePageResult result);
|
| @@ -208,6 +209,10 @@ class OfflinePageModelTest
|
| return last_delete_result_;
|
| }
|
|
|
| + int64 last_deleted_bookmark_id() const {
|
| + return last_deleted_bookmark_id_;
|
| + }
|
| +
|
| const base::FilePath& last_archiver_path() { return last_archiver_path_; }
|
| void set_last_archiver_path(const base::FilePath& last_archiver_path) {
|
| last_archiver_path_ = last_archiver_path;
|
| @@ -222,6 +227,7 @@ class OfflinePageModelTest
|
| SavePageResult last_save_result_;
|
| DeletePageResult last_delete_result_;
|
| base::FilePath last_archiver_path_;
|
| + int64 last_deleted_bookmark_id_;
|
| };
|
|
|
| OfflinePageTestArchiver::OfflinePageTestArchiver(
|
| @@ -262,7 +268,8 @@ void OfflinePageTestArchiver::CompleteCreateArchive() {
|
|
|
| OfflinePageModelTest::OfflinePageModelTest()
|
| : last_save_result_(SavePageResult::CANCELLED),
|
| - last_delete_result_(DeletePageResult::CANCELLED) {
|
| + last_delete_result_(DeletePageResult::CANCELLED),
|
| + last_deleted_bookmark_id_(-1) {
|
| }
|
|
|
| OfflinePageModelTest::~OfflinePageModelTest() {
|
| @@ -277,6 +284,8 @@ void OfflinePageModelTest::SetUp() {
|
|
|
| void OfflinePageModelTest::TearDown() {
|
| model_->RemoveObserver(this);
|
| + run_loop_.reset(new base::RunLoop());
|
| + run_loop_->RunUntilIdle();
|
| }
|
|
|
| void OfflinePageModelTest::OfflinePageModelLoaded(OfflinePageModel* model) {
|
| @@ -284,6 +293,11 @@ void OfflinePageModelTest::OfflinePageModelLoaded(OfflinePageModel* model) {
|
| run_loop_->Quit();
|
| }
|
|
|
| +void OfflinePageModelTest::OfflinePageDeleted(int64 bookmark_id) {
|
| + last_deleted_bookmark_id_ = bookmark_id;
|
| + run_loop_->Quit();
|
| +}
|
| +
|
| void OfflinePageModelTest::OnSavePageDone(
|
| OfflinePageModel::SavePageResult result) {
|
| run_loop_->Quit();
|
| @@ -636,6 +650,55 @@ TEST_F(OfflinePageModelTest, DeletePageStoreFailureOnRemove) {
|
| EXPECT_EQ(DeletePageResult::STORE_FAILURE, last_delete_result());
|
| }
|
|
|
| +TEST_F(OfflinePageModelTest, DetectThatOfflineCopyIsMissing) {
|
| + // Save a page.
|
| + scoped_ptr<OfflinePageTestArchiver> archiver(
|
| + BuildArchiver(kTestUrl,
|
| + OfflinePageArchiver::ArchiverResult::SUCCESSFULLY_CREATED)
|
| + .Pass());
|
| + model()->SavePage(
|
| + kTestUrl, kTestPageBookmarkId1, archiver.Pass(),
|
| + base::Bind(&OfflinePageModelTest::OnSavePageDone, AsWeakPtr()));
|
| + PumpLoop();
|
| +
|
| + ResetResults();
|
| +
|
| + const OfflinePageItem* page =
|
| + model()->GetPageByBookmarkId(kTestPageBookmarkId1);
|
| + // Delete the offline copy of the page and check the metadata.
|
| + base::DeleteFile(page->file_path, false);
|
| + model()->CheckForExternalFileDeletion();
|
| + PumpLoop();
|
| +
|
| + EXPECT_EQ(last_deleted_bookmark_id(), kTestPageBookmarkId1);
|
| + EXPECT_EQ(0UL, model()->GetAllPages().size());
|
| +}
|
| +
|
| +TEST_F(OfflinePageModelTest, DetectThatOfflineCopyIsMissingAfterLoad) {
|
| + // Save a page.
|
| + scoped_ptr<OfflinePageTestArchiver> archiver(
|
| + BuildArchiver(kTestUrl,
|
| + OfflinePageArchiver::ArchiverResult::SUCCESSFULLY_CREATED)
|
| + .Pass());
|
| + model()->SavePage(
|
| + kTestUrl, kTestPageBookmarkId1, archiver.Pass(),
|
| + base::Bind(&OfflinePageModelTest::OnSavePageDone, AsWeakPtr()));
|
| + PumpLoop();
|
| +
|
| + ResetResults();
|
| +
|
| + const OfflinePageItem* page =
|
| + model()->GetPageByBookmarkId(kTestPageBookmarkId1);
|
| + // Delete the offline copy of the page and check the metadata.
|
| + base::DeleteFile(page->file_path, false);
|
| + // Reseting the model should trigger the metadata consistency check as well.
|
| + ResetModel();
|
| + PumpLoop();
|
| +
|
| + EXPECT_EQ(last_deleted_bookmark_id(), kTestPageBookmarkId1);
|
| + EXPECT_EQ(0UL, model()->GetAllPages().size());
|
| +}
|
| +
|
| TEST_F(OfflinePageModelTest, GetPageByBookmarkId) {
|
| scoped_ptr<OfflinePageTestArchiver> archiver(
|
| BuildArchiver(kTestUrl,
|
|
|