| Index: components/history/core/browser/history_backend_unittest.cc
|
| diff --git a/components/history/core/browser/history_backend_unittest.cc b/components/history/core/browser/history_backend_unittest.cc
|
| index e44b5d5d4a168c9b4baf0015f73e8cd3d17a42c4..eaf5e9c04891a481e5505cdaa9dccb3d24966008 100644
|
| --- a/components/history/core/browser/history_backend_unittest.cc
|
| +++ b/components/history/core/browser/history_backend_unittest.cc
|
| @@ -700,6 +700,59 @@ TEST_F(HistoryBackendTest, DeleteAll) {
|
| EXPECT_FALSE(urls_deleted_notifications()[0].second);
|
| }
|
|
|
| +// Test that clearing all history does not delete bookmark favicons in the
|
| +// special case that the bookmark page URL is no longer present in the History
|
| +// database's urls table.
|
| +TEST_F(HistoryBackendTest, DeleteAllURLPreviouslyDeleted) {
|
| + ASSERT_TRUE(backend_.get());
|
| +
|
| + GURL kPageURL("http://www.google.com");
|
| + GURL kFaviconURL("http://www.google.com/favicon.ico");
|
| +
|
| + // Setup: Add visit for |kPageURL|.
|
| + URLRow row(kPageURL);
|
| + row.set_visit_count(2);
|
| + row.set_typed_count(1);
|
| + row.set_last_visit(base::Time::Now());
|
| + backend_->AddPagesWithDetails(std::vector<URLRow>(1u, row),
|
| + history::SOURCE_BROWSED);
|
| +
|
| + // Setup: Add favicon for |kPageURL|.
|
| + std::vector<unsigned char> data;
|
| + data.push_back('a');
|
| + favicon_base::FaviconID favicon = backend_->thumbnail_db_->AddFavicon(
|
| + kFaviconURL, favicon_base::FAVICON, new base::RefCountedBytes(data),
|
| + base::Time::Now(), kSmallSize);
|
| + backend_->thumbnail_db_->AddIconMapping(row.url(), favicon);
|
| +
|
| + history_client_.AddBookmark(kPageURL);
|
| +
|
| + // Test initial state.
|
| + URLID row_id = backend_->db_->GetRowForURL(kPageURL, NULL);
|
| + ASSERT_NE(0, row_id);
|
| + VisitVector visits;
|
| + backend_->db_->GetVisitsForURL(row_id, &visits);
|
| + ASSERT_EQ(1U, visits.size());
|
| +
|
| + std::vector<IconMapping> icon_mappings;
|
| + ASSERT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL(
|
| + kPageURL, favicon_base::FAVICON, &icon_mappings));
|
| + ASSERT_EQ(1u, icon_mappings.size());
|
| +
|
| + // Delete information for |kPageURL|, then clear all browsing data.
|
| + backend_->DeleteURL(kPageURL);
|
| + backend_->DeleteAllHistory();
|
| +
|
| + // Test that the entry in the url table for the bookmark is gone but that the
|
| + // favicon data for the bookmark is still there.
|
| + ASSERT_EQ(0, backend_->db_->GetRowForURL(kPageURL, NULL));
|
| +
|
| + icon_mappings.clear();
|
| + EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL(
|
| + kPageURL, favicon_base::FAVICON, &icon_mappings));
|
| + EXPECT_EQ(1u, icon_mappings.size());
|
| +}
|
| +
|
| // Checks that adding a visit, then calling DeleteAll, and then trying to add
|
| // data for the visited page works. This can happen when clearing the history
|
| // immediately after visiting a page.
|
|
|