Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(198)

Unified Diff: components/offline_pages/offline_page_model_unittest.cc

Issue 1397233002: [Offline pages] Detecting missing offline copy (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Passing only ID and paths for verification Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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,

Powered by Google App Engine
This is Rietveld 408576698