Chromium Code Reviews| 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 a4455309e88125bb7f0e1809f676581955494a07..c5b715df4a18ba744dc698bd305683cacdae2d82 100644 |
| --- a/chrome/browser/history/thumbnail_database_unittest.cc |
| +++ b/chrome/browser/history/thumbnail_database_unittest.cc |
| @@ -433,6 +433,68 @@ TEST_F(ThumbnailDatabaseTest, HasMappingFor) { |
| EXPECT_FALSE(db.HasMappingFor(id3)); |
| } |
| +TEST_F(ThumbnailDatabaseTest, CloneIconMapping) { |
| + ThumbnailDatabase db; |
| + ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); |
| + db.BeginTransaction(); |
| + |
| + std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); |
| + scoped_refptr<RefCountedBytes> favicon(new RefCountedBytes(data)); |
| + |
| + // Add a favicon which will have icon_mappings |
| + FaviconID id1 = db.AddFavicon(GURL("http://google.com"), FAVICON); |
| + EXPECT_NE(id1, 0); |
|
sky
2011/11/17 04:49:01
assertions should have the format expected, actual
groby-ooo-7-16
2011/11/18 01:11:19
Done.
|
| + base::Time time = base::Time::Now(); |
| + db.SetFavicon(id1, favicon, time); |
| + |
| + // Add another type of favicon |
| + FaviconID id2 = db.AddFavicon(GURL("http://www.google.com/icon"), TOUCH_ICON); |
| + EXPECT_NE(id2, 0); |
| + time = base::Time::Now(); |
| + db.SetFavicon(id2, favicon, time); |
| + |
| + // Add 3rd favicon |
| + FaviconID id3 = db.AddFavicon(GURL("http://www.google.com/icon"), TOUCH_ICON); |
| + EXPECT_NE(id3, 0); |
| + time = base::Time::Now(); |
| + db.SetFavicon(id3, favicon, time); |
| + |
| + GURL page1_url("http://page1.com"); |
| + EXPECT_TRUE(db.AddIconMapping(page1_url, id1)); |
| + EXPECT_TRUE(db.AddIconMapping(page1_url, id2)); |
| + |
| + GURL page2_url("http://page2.com"); |
| + EXPECT_TRUE(db.AddIconMapping(page2_url, id3)); |
| + |
| + // Test we do nothing with existing mappings. |
| + std::vector<IconMapping> icon_mapping; |
| + EXPECT_TRUE(db.GetIconMappingsForPageURL(page2_url, &icon_mapping)); |
| + ASSERT_EQ(1U, icon_mapping.size()); |
| + |
| + EXPECT_TRUE(db.CloneIconMapping(page1_url, page2_url)); |
| + |
| + icon_mapping.clear(); |
| + EXPECT_TRUE(db.GetIconMappingsForPageURL(page2_url, &icon_mapping)); |
| + ASSERT_EQ(1U, icon_mapping.size()); |
| + EXPECT_EQ(page2_url, icon_mapping[0].page_url); |
| + EXPECT_EQ(id3, icon_mapping[0].icon_id); |
| + |
| + // Test we clone if the new page has no mappings. |
| + GURL page3_url("http://page3.com"); |
| + EXPECT_TRUE(db.CloneIconMapping(page1_url, page3_url)); |
| + |
| + icon_mapping.clear(); |
| + EXPECT_TRUE(db.GetIconMappingsForPageURL(page3_url, &icon_mapping)); |
| + |
| + ASSERT_EQ(2U, icon_mapping.size()); |
| + if (icon_mapping[0].icon_id == id2) |
| + std::swap(icon_mapping[0], icon_mapping[1]); |
| + EXPECT_EQ(page3_url, icon_mapping[0].page_url); |
| + EXPECT_EQ(id1, icon_mapping[0].icon_id); |
| + EXPECT_EQ(page3_url, icon_mapping[1].page_url); |
| + EXPECT_EQ(id2, icon_mapping[1].icon_id); |
| +} |
| + |
| TEST_F(IconMappingMigrationTest, TestIconMappingMigration) { |
| HistoryDatabase history_db; |
| ASSERT_TRUE(history_db.db_.Open(history_db_name_)); |