| 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);
|
| + 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_));
|
|
|