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

Unified Diff: components/offline_pages/offline_page_model_unittest.cc

Issue 1480723002: [Offline pages] Detecting offline pages missing bookmarks (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 1 month 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 cf661f974e11a48589a5ec61ef6b3540392e3d0f..3f9070c694c5be1e832cffdad80433522c124858 100644
--- a/components/offline_pages/offline_page_model_unittest.cc
+++ b/components/offline_pages/offline_page_model_unittest.cc
@@ -15,7 +15,9 @@
#include "base/strings/string16.h"
#include "base/strings/utf_string_conversions.h"
#include "base/time/time.h"
+#include "components/bookmarks/browser/bookmark_model.h"
#include "components/bookmarks/browser/bookmark_node.h"
+#include "components/bookmarks/test/test_bookmark_client.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"
@@ -215,7 +217,7 @@ class OfflinePageModelTest
scoped_ptr<OfflinePageMetadataStore> BuildStore();
scoped_ptr<OfflinePageModel> BuildModel(
scoped_ptr<OfflinePageMetadataStore> store);
- void ResetModel();
+ void ResetModel(bookmarks::BookmarkModel* bookmarks);
// Utility methods.
void PumpLoop();
@@ -360,13 +362,15 @@ scoped_ptr<OfflinePageModel> OfflinePageModelTest::BuildModel(
new OfflinePageModel(store.Pass(), temp_dir_.path(), task_runner()));
}
-void OfflinePageModelTest::ResetModel() {
+void OfflinePageModelTest::ResetModel(bookmarks::BookmarkModel* bookmarks) {
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);
+ if (bookmarks)
+ model_->Start(bookmarks);
PumpLoop();
}
@@ -723,49 +727,97 @@ TEST_F(OfflinePageModelTest, DeletePageStoreFailureOnRemove) {
EXPECT_EQ(DeletePageResult::STORE_FAILURE, last_delete_result());
}
+// Test for case, where offline copy is missing and it is detected by a
+// metadata check called directly.
TEST_F(OfflinePageModelTest, DetectThatOfflineCopyIsMissing) {
+ bookmarks::TestBookmarkClient test_bookmark_client;
+ scoped_ptr<bookmarks::BookmarkModel> bookmarks_model(
+ test_bookmark_client.CreateModel());
+ model()->Start(bookmarks_model.get());
+
+ const bookmarks::BookmarkNode* root = bookmarks_model->bookmark_bar_node();
+ const base::string16 title(base::ASCIIToUTF16("foo"));
+ const bookmarks::BookmarkNode* new_node =
+ bookmarks_model->AddURL(root, 0, title, kTestUrl);
+
// Save a page.
scoped_ptr<OfflinePageTestArchiver> archiver(
BuildArchiver(kTestUrl,
OfflinePageArchiver::ArchiverResult::SUCCESSFULLY_CREATED)
.Pass());
model()->SavePage(
- kTestUrl, kTestPageBookmarkId1, archiver.Pass(),
+ kTestUrl, new_node->id(), archiver.Pass(),
base::Bind(&OfflinePageModelTest::OnSavePageDone, AsWeakPtr()));
PumpLoop();
ResetResults();
- const OfflinePageItem* page =
- model()->GetPageByBookmarkId(kTestPageBookmarkId1);
+ const OfflinePageItem* page = model()->GetPageByBookmarkId(new_node->id());
// Delete the offline copy of the page and check the metadata.
base::DeleteFile(page->file_path, false);
- model()->CheckForExternalFileDeletion();
+ model()->CheckMetadataConsistency(false);
PumpLoop();
- EXPECT_EQ(last_deleted_bookmark_id(), kTestPageBookmarkId1);
+ EXPECT_EQ(last_deleted_bookmark_id(), new_node->id());
EXPECT_EQ(0UL, model()->GetAllPages().size());
}
+// Test for case, where offline copy is missing and it is detected by a
+// metadata check initiated as part of offline page model load.
TEST_F(OfflinePageModelTest, DetectThatOfflineCopyIsMissingAfterLoad) {
+ bookmarks::TestBookmarkClient test_bookmark_client;
+ scoped_ptr<bookmarks::BookmarkModel> bookmarks_model(
+ test_bookmark_client.CreateModel());
+ model()->Start(bookmarks_model.get());
+
+ const bookmarks::BookmarkNode* root = bookmarks_model->bookmark_bar_node();
+ const base::string16 title(base::ASCIIToUTF16("foo"));
+ const bookmarks::BookmarkNode* new_node =
+ bookmarks_model->AddURL(root, 0, title, kTestUrl);
+
// Save a page.
scoped_ptr<OfflinePageTestArchiver> archiver(
BuildArchiver(kTestUrl,
OfflinePageArchiver::ArchiverResult::SUCCESSFULLY_CREATED)
.Pass());
model()->SavePage(
- kTestUrl, kTestPageBookmarkId1, archiver.Pass(),
+ kTestUrl, new_node->id(), archiver.Pass(),
base::Bind(&OfflinePageModelTest::OnSavePageDone, AsWeakPtr()));
PumpLoop();
ResetResults();
- const OfflinePageItem* page =
- model()->GetPageByBookmarkId(kTestPageBookmarkId1);
+ const OfflinePageItem* page = model()->GetPageByBookmarkId(new_node->id());
// Delete the offline copy of the page and check the metadata.
base::DeleteFile(page->file_path, false);
+ ResetModel(bookmarks_model.get());
// Reseting the model should trigger the metadata consistency check as well.
- ResetModel();
+ PumpLoop();
+
+ EXPECT_EQ(last_deleted_bookmark_id(), new_node->id());
+ EXPECT_EQ(0UL, model()->GetAllPages().size());
+}
+
+// Test for offline page missing a bookmark in the bookmarks model.
+TEST_F(OfflinePageModelTest, DetectThatBookmarkIsMissingAfterLoad) {
+ // 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();
+
+ // There will be a bookmark model to check against, where the bookmark ID
+ // cannot be found.
+ bookmarks::TestBookmarkClient test_bookmark_client;
+ scoped_ptr<bookmarks::BookmarkModel> bookmarks_model(
+ test_bookmark_client.CreateModel());
+ ResetModel(bookmarks_model.get());
PumpLoop();
EXPECT_EQ(last_deleted_bookmark_id(), kTestPageBookmarkId1);
@@ -918,7 +970,7 @@ TEST_F(OfflinePageModelTest, GetPagesToCleanUp) {
GetStore()->UpdateLastAccessTime(kTestPageBookmarkId3,
now - base::TimeDelta::FromDays(29));
- ResetModel();
+ ResetModel(nullptr);
// 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.
« 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