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

Unified Diff: chrome/browser/history/thumbnail_database_unittest.cc

Issue 1004373002: Add last_requested field to the favicon_bitmaps table of the favicons database. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 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: chrome/browser/history/thumbnail_database_unittest.cc
diff --git a/chrome/browser/history/thumbnail_database_unittest.cc b/chrome/browser/history/thumbnail_database_unittest.cc
index 0b2c6ab9bd06463515e6698613766555b8b47540..9ff959d8b012f0fb8a4eb87d3d1c010a3d9e0246 100644
--- a/chrome/browser/history/thumbnail_database_unittest.cc
+++ b/chrome/browser/history/thumbnail_database_unittest.cc
@@ -66,7 +66,7 @@ WARN_UNUSED_RESULT bool CreateDatabaseFromSQL(const base::FilePath &db_path,
// negatively with future schema changes.
void VerifyTablesAndColumns(sql::Connection* db) {
// [meta], [favicons], [favicon_bitmaps], and [icon_mapping].
- EXPECT_EQ(4u, sql::test::CountSQLTables(db));
+ EXPECT_EQ(5u, sql::test::CountSQLTables(db));
// Implicit index on [meta], index on [favicons], index on
// [favicon_bitmaps], two indices on [icon_mapping].
@@ -83,6 +83,9 @@ void VerifyTablesAndColumns(sql::Connection* db) {
// [id], [page_url], and [icon_id].
EXPECT_EQ(3u, sql::test::CountTableColumns(db, "icon_mapping"));
+
+ // [bitmap_id], [last_requested].
+ EXPECT_EQ(2u, sql::test::CountTableColumns(db, "favicon_bitmap_usage"));
}
void VerifyDatabaseEmpty(sql::Connection* db) {
@@ -93,6 +96,8 @@ void VerifyDatabaseEmpty(sql::Connection* db) {
EXPECT_EQ(0u, rows);
EXPECT_TRUE(sql::test::CountTableRows(db, "icon_mapping", &rows));
EXPECT_EQ(0u, rows);
+ EXPECT_TRUE(sql::test::CountTableRows(db, "favicon_bitmap_usage", &rows));
+ EXPECT_EQ(0u, rows);
}
// Helper to check that an expected mapping exists.
@@ -156,6 +161,51 @@ WARN_UNUSED_RESULT bool CheckPageHasIcon(
return true;
}
+WARN_UNUSED_RESULT bool CheckBitmapLastRequestTime(
+ ThumbnailDatabase* db,
+ const GURL& page_url,
+ favicon_base::IconType icon_type,
+ const gfx::Size& icon_size,
+ base::Time* request_timestamp) {
+ std::vector<IconMapping> icon_mappings;
+ if (!db->GetIconMappingsForPageURL(page_url, &icon_mappings)) {
+ ADD_FAILURE() << "failed GetIconMappingsForPageURL()";
+ return false;
+ }
+
+ // Scan for the expected type.
+ std::vector<IconMapping>::const_iterator icon_iter = icon_mappings.begin();
+ for (; icon_iter != icon_mappings.end(); ++icon_iter) {
+ if (icon_iter->icon_type == icon_type)
+ break;
+ }
+ if (icon_iter == icon_mappings.end()) {
+ ADD_FAILURE() << "failed to find |icon_type|";
+ return false;
+ }
+
+ std::vector<FaviconBitmap> favicon_bitmaps;
+ if (!db->GetFaviconBitmaps(icon_iter->icon_id, &favicon_bitmaps)) {
+ ADD_FAILURE() << "failed GetFaviconBitmaps()";
+ return false;
+ }
+
+ std::vector<FaviconBitmap>::const_iterator bitmap_iter =
+ favicon_bitmaps.begin();
+ for (; bitmap_iter != favicon_bitmaps.end(); ++bitmap_iter) {
+ if (bitmap_iter->pixel_size == icon_size)
+ break;
+ }
+
+ if (bitmap_iter == favicon_bitmaps.end()) {
+ ADD_FAILURE() << "failed to find |icon_size|";
+ return false;
+ }
+
+ return db->GetFaviconBitmapLastRequestedTime(bitmap_iter->bitmap_id,
+ request_timestamp);
+}
+
} // namespace
class ThumbnailDatabaseTest : public testing::Test {
@@ -766,6 +816,42 @@ TEST_F(ThumbnailDatabaseTest, Version7) {
kBlob2));
}
+// Test loading version 8 database.
+TEST_F(ThumbnailDatabaseTest, Version8) {
+ scoped_ptr<ThumbnailDatabase> db = LoadFromGolden("Favicons.v8.sql");
+ ASSERT_TRUE(db.get() != NULL);
+ VerifyTablesAndColumns(&db->db_);
+
+ EXPECT_TRUE(CheckPageHasIcon(db.get(),
+ kPageUrl1,
+ favicon_base::FAVICON,
+ kIconUrl1,
+ kLargeSize,
+ sizeof(kBlob1),
+ kBlob1));
+ EXPECT_TRUE(CheckPageHasIcon(db.get(),
+ kPageUrl2,
+ favicon_base::FAVICON,
+ kIconUrl2,
+ kLargeSize,
+ sizeof(kBlob2),
+ kBlob2));
+ EXPECT_TRUE(CheckPageHasIcon(db.get(),
+ kPageUrl3,
+ favicon_base::FAVICON,
+ kIconUrl1,
+ kLargeSize,
+ sizeof(kBlob1),
+ kBlob1));
+ EXPECT_TRUE(CheckPageHasIcon(db.get(),
+ kPageUrl3,
+ favicon_base::TOUCH_ICON,
+ kIconUrl3,
+ kLargeSize,
+ sizeof(kBlob2),
+ kBlob2));
+}
+
TEST_F(ThumbnailDatabaseTest, Recovery) {
// This code tests the recovery module in concert with Chromium's
// custom recover virtual table. Under USE_SYSTEM_SQLITE, this is
@@ -778,7 +864,7 @@ TEST_F(ThumbnailDatabaseTest, Recovery) {
// Create an example database.
{
- EXPECT_TRUE(CreateDatabaseFromSQL(file_name_, "Favicons.v7.sql"));
+ EXPECT_TRUE(CreateDatabaseFromSQL(file_name_, "Favicons.v8.sql"));
sql::Connection raw_db;
EXPECT_TRUE(raw_db.Open(file_name_));
« no previous file with comments | « no previous file | chrome/test/data/History/Favicons.v8.sql » ('j') | components/history/core/browser/thumbnail_database.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698