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

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: Updates based on the latest code review feedback 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
« no previous file with comments | « components/offline_pages/offline_page_model.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 864da9a5a4a308264271808b917e43fe7b3cc323..5e72c226791cf4360449b9647a5e240ef682487c 100644
--- a/components/offline_pages/offline_page_model_unittest.cc
+++ b/components/offline_pages/offline_page_model_unittest.cc
@@ -173,6 +173,7 @@ class OfflinePageModelTest
// OfflinePageModel::Observer implementation.
void OfflinePageModelLoaded(OfflinePageModel* model) override;
void OfflinePageModelChanged(OfflinePageModel* model) override;
+ void OfflinePageDeleted(int64 bookmark_id) override;
// OfflinePageModel callbacks.
void OnSavePageDone(SavePageResult result);
@@ -209,6 +210,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;
@@ -223,6 +228,7 @@ class OfflinePageModelTest
SavePageResult last_save_result_;
DeletePageResult last_delete_result_;
base::FilePath last_archiver_path_;
+ int64 last_deleted_bookmark_id_;
};
OfflinePageTestArchiver::OfflinePageTestArchiver(
@@ -263,7 +269,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() {
@@ -278,6 +285,7 @@ void OfflinePageModelTest::SetUp() {
void OfflinePageModelTest::TearDown() {
model_->RemoveObserver(this);
+ base::RunLoop().RunUntilIdle();
}
void OfflinePageModelTest::OfflinePageModelLoaded(OfflinePageModel* model) {
@@ -289,6 +297,11 @@ void OfflinePageModelTest::OfflinePageModelChanged(OfflinePageModel* model) {
ASSERT_EQ(model_.get(), model);
}
+void OfflinePageModelTest::OfflinePageDeleted(int64 bookmark_id) {
+ last_deleted_bookmark_id_ = bookmark_id;
+ run_loop_->Quit();
+}
+
void OfflinePageModelTest::OnSavePageDone(
OfflinePageModel::SavePageResult result) {
run_loop_->Quit();
@@ -674,6 +687,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,
« no previous file with comments | « components/offline_pages/offline_page_model.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698