Index: chrome/browser/history/history_backend_unittest.cc |
diff --git a/chrome/browser/history/history_backend_unittest.cc b/chrome/browser/history/history_backend_unittest.cc |
index 20a59d262495a7d58c705fdd8b7d5e78ae58c299..f9f8b362007729ae709bf3dca09f8cfb2cc82209 100644 |
--- a/chrome/browser/history/history_backend_unittest.cc |
+++ b/chrome/browser/history/history_backend_unittest.cc |
@@ -45,6 +45,12 @@ namespace { |
static const unsigned char blob1[] = |
"12346102356120394751634516591348710478123649165419234519234512349134"; |
+const gfx::Size kFaviconRegularSize = gfx::Size(16, 16); |
+const gfx::Size kFaviconLargeSize = gfx::Size(32, 32); |
+ |
+const gfx::Size kFavicon1xSize = gfx::Size(16, 16); |
+const gfx::Size kFavicon2xSize = gfx::Size(32, 32); |
+ |
} // namepace |
namespace history { |
@@ -198,15 +204,38 @@ class HistoryBackendTest : public testing::Test { |
return test_dir_; |
} |
- FaviconID GetFavicon(const GURL& url, IconType icon_type) { |
- IconMapping icon_mapping; |
- if (backend_->thumbnail_db_->GetIconMappingForPageURL(url, icon_type, |
- &icon_mapping)) |
- return icon_mapping.icon_id; |
+ FaviconID GetFaviconIDForPageURL(const GURL& page_url, IconType icon_type) { |
+ std::vector<IconMapping> icon_mappings; |
+ if (backend_->thumbnail_db_->GetIconMappingsForPageURL(page_url, icon_type, |
+ &icon_mappings)) |
+ return icon_mappings[0].icon_id; |
else |
return 0; |
} |
+ FaviconID GetFaviconIDForIconURL(const GURL& icon_url, IconType icon_type) { |
+ std::vector<FaviconIDAndSize> favicon_id_size_listing; |
+ backend_->thumbnail_db_->GetFaviconIDsForFaviconURL( |
+ icon_url, icon_type, &favicon_id_size_listing); |
+ if (favicon_id_size_listing.size() > 0) |
+ return favicon_id_size_listing[0].icon_id; |
+ else |
+ return 0; |
+ } |
+ |
+ bool HasFaviconMapping(const GURL& page_url, |
+ const gfx::Size& pixel_size, |
+ int icon_types) { |
+ std::vector<IconMapping> icon_mappings; |
+ backend_->thumbnail_db_->GetIconMappingsForPageURL(page_url, icon_types, |
+ &icon_mappings); |
+ for (size_t i = 0; i < icon_mappings.size(); ++i) { |
+ if (icon_mappings[i].icon_pixel_size == pixel_size) |
+ return true; |
+ } |
+ return false; |
+ } |
+ |
BookmarkModel bookmark_model_; |
protected: |
@@ -293,10 +322,10 @@ TEST_F(HistoryBackendTest, DeleteAll) { |
// deleted. This way we can test that updating works properly. |
GURL favicon_url1("http://www.google.com/favicon.ico"); |
GURL favicon_url2("http://news.google.com/favicon.ico"); |
- FaviconID favicon2 = backend_->thumbnail_db_->AddFavicon(favicon_url2, |
- FAVICON); |
- FaviconID favicon1 = backend_->thumbnail_db_->AddFavicon(favicon_url1, |
- FAVICON); |
+ FaviconID favicon2 = backend_->thumbnail_db_->AddFavicon( |
+ favicon_url2, kFaviconRegularSize, FAVICON); |
+ FaviconID favicon1 = backend_->thumbnail_db_->AddFavicon( |
+ favicon_url1, kFaviconRegularSize, FAVICON); |
std::vector<unsigned char> data; |
data.push_back('1'); |
@@ -403,16 +432,14 @@ TEST_F(HistoryBackendTest, DeleteAll) { |
// We should have a favicon for the first URL only. We look them up by favicon |
// URL since the IDs may hav changed. |
- FaviconID out_favicon1 = backend_->thumbnail_db_-> |
- GetFaviconIDForFaviconURL(favicon_url1, FAVICON, NULL); |
+ FaviconID out_favicon1 = GetFaviconIDForIconURL(favicon_url1, FAVICON); |
EXPECT_TRUE(out_favicon1); |
- FaviconID out_favicon2 = backend_->thumbnail_db_-> |
- GetFaviconIDForFaviconURL(favicon_url2, FAVICON, NULL); |
+ FaviconID out_favicon2 = GetFaviconIDForIconURL(favicon_url2, FAVICON); |
EXPECT_FALSE(out_favicon2) << "Favicon not deleted"; |
// The remaining URL should still reference the same favicon, even if its |
// ID has changed. |
- EXPECT_EQ(out_favicon1, GetFavicon(outrow1.url(), FAVICON)); |
+ EXPECT_EQ(out_favicon1, GetFaviconIDForPageURL(outrow1.url(), FAVICON)); |
// The first URL should still be bookmarked. |
EXPECT_TRUE(bookmark_model_.IsBookmarked(row1.url())); |
@@ -485,10 +512,10 @@ TEST_F(HistoryBackendTest, DeleteAllThenAddData) { |
TEST_F(HistoryBackendTest, URLsNoLongerBookmarked) { |
GURL favicon_url1("http://www.google.com/favicon.ico"); |
GURL favicon_url2("http://news.google.com/favicon.ico"); |
- FaviconID favicon2 = backend_->thumbnail_db_->AddFavicon(favicon_url2, |
- FAVICON); |
- FaviconID favicon1 = backend_->thumbnail_db_->AddFavicon(favicon_url1, |
- FAVICON); |
+ FaviconID favicon2 = backend_->thumbnail_db_->AddFavicon( |
+ favicon_url2, kFaviconRegularSize, FAVICON); |
+ FaviconID favicon1 = backend_->thumbnail_db_->AddFavicon( |
+ favicon_url1, kFaviconRegularSize, FAVICON); |
std::vector<unsigned char> data; |
data.push_back('1'); |
@@ -534,10 +561,7 @@ TEST_F(HistoryBackendTest, URLsNoLongerBookmarked) { |
backend_->db_->GetVisitsForURL(row2_id, &visits); |
EXPECT_EQ(0U, visits.size()); |
// The favicon should still be valid. |
- EXPECT_EQ(favicon2, |
- backend_->thumbnail_db_->GetFaviconIDForFaviconURL(favicon_url2, |
- FAVICON, |
- NULL)); |
+ EXPECT_EQ(favicon2, GetFaviconIDForIconURL(favicon_url2, FAVICON)); |
// Unstar row2. |
bookmark_utils::RemoveAllBookmarks(&bookmark_model_, row2.url()); |
@@ -551,10 +575,7 @@ TEST_F(HistoryBackendTest, URLsNoLongerBookmarked) { |
// The URL should no longer exist. |
EXPECT_FALSE(backend_->db_->GetRowForURL(row2.url(), &tmp_url_row)); |
// And the favicon should be deleted. |
- EXPECT_EQ(0, |
- backend_->thumbnail_db_->GetFaviconIDForFaviconURL(favicon_url2, |
- FAVICON, |
- NULL)); |
+ EXPECT_EQ(0, GetFaviconIDForIconURL(favicon_url2, FAVICON)); |
// Unstar row 1. |
bookmark_utils::RemoveAllBookmarks(&bookmark_model_, row1.url()); |
@@ -573,10 +594,7 @@ TEST_F(HistoryBackendTest, URLsNoLongerBookmarked) { |
EXPECT_EQ(1U, visits.size()); |
// The favicon should still be valid. |
- EXPECT_EQ(favicon1, |
- backend_->thumbnail_db_->GetFaviconIDForFaviconURL(favicon_url1, |
- FAVICON, |
- NULL)); |
+ EXPECT_EQ(favicon1, GetFaviconIDForIconURL(favicon_url1, FAVICON)); |
} |
// Tests a handful of assertions for a navigation with a type of |
@@ -662,8 +680,8 @@ TEST_F(HistoryBackendTest, ImportedFaviconsTest) { |
// Setup test data - two Urls in the history, one with favicon assigned and |
// one without. |
GURL favicon_url1("http://www.google.com/favicon.ico"); |
- FaviconID favicon1 = backend_->thumbnail_db_->AddFavicon(favicon_url1, |
- FAVICON); |
+ FaviconID favicon1 = backend_->thumbnail_db_->AddFavicon( |
+ favicon_url1, kFaviconRegularSize, FAVICON); |
std::vector<unsigned char> data; |
data.push_back('1'); |
EXPECT_TRUE(backend_->thumbnail_db_->SetFavicon(favicon1, |
@@ -683,8 +701,8 @@ TEST_F(HistoryBackendTest, ImportedFaviconsTest) { |
URLRow url_row1, url_row2; |
EXPECT_FALSE(backend_->db_->GetRowForURL(row1.url(), &url_row1) == 0); |
EXPECT_FALSE(backend_->db_->GetRowForURL(row2.url(), &url_row2) == 0); |
- EXPECT_FALSE(GetFavicon(row1.url(), FAVICON) == 0); |
- EXPECT_TRUE(GetFavicon(row2.url(), FAVICON) == 0); |
+ EXPECT_FALSE(GetFaviconIDForPageURL(row1.url(), FAVICON) == 0); |
+ EXPECT_TRUE(GetFaviconIDForPageURL(row2.url(), FAVICON) == 0); |
// Now provide one imported favicon for both URLs already in the registry. |
// The new favicon should only be used with the URL that doesn't already have |
@@ -699,10 +717,10 @@ TEST_F(HistoryBackendTest, ImportedFaviconsTest) { |
backend_->SetImportedFavicons(favicons); |
EXPECT_FALSE(backend_->db_->GetRowForURL(row1.url(), &url_row1) == 0); |
EXPECT_FALSE(backend_->db_->GetRowForURL(row2.url(), &url_row2) == 0); |
- EXPECT_FALSE(GetFavicon(row1.url(), FAVICON) == 0); |
- EXPECT_FALSE(GetFavicon(row2.url(), FAVICON) == 0); |
- EXPECT_FALSE(GetFavicon(row1.url(), FAVICON) == |
- GetFavicon(row2.url(), FAVICON)); |
+ EXPECT_FALSE(GetFaviconIDForPageURL(row1.url(), FAVICON) == 0); |
+ EXPECT_FALSE(GetFaviconIDForPageURL(row2.url(), FAVICON) == 0); |
+ EXPECT_FALSE(GetFaviconIDForPageURL(row1.url(), FAVICON) == |
+ GetFaviconIDForPageURL(row2.url(), FAVICON)); |
// A URL should not be added to history (to store favicon), if |
// the URL is not bookmarked. |
@@ -1085,62 +1103,99 @@ TEST_F(HistoryBackendTest, SetFaviconMapping) { |
const GURL icon_url("http://www.google.com/icon"); |
std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); |
// Add a favicon |
- backend_->SetFavicon( |
- url1, icon_url, base::RefCountedBytes::TakeVector(&data), FAVICON); |
- EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingForPageURL( |
- url1, FAVICON, NULL)); |
- EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingForPageURL( |
- url2, FAVICON, NULL)); |
+ backend_->SetFavicon(url1, |
+ icon_url, |
+ base::RefCountedBytes::TakeVector(&data), |
+ kFaviconRegularSize, |
+ FAVICON); |
+ EXPECT_TRUE(HasFaviconMapping(url1, kFaviconRegularSize, FAVICON)); |
+ EXPECT_TRUE(HasFaviconMapping(url2, kFaviconRegularSize, FAVICON)); |
// Add a touch_icon |
- backend_->SetFavicon( |
- url1, icon_url, base::RefCountedBytes::TakeVector(&data), TOUCH_ICON); |
- EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingForPageURL( |
- url1, TOUCH_ICON, NULL)); |
- EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingForPageURL( |
- url2, TOUCH_ICON, NULL)); |
- EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingForPageURL( |
- url1, FAVICON, NULL)); |
+ backend_->SetFavicon(url1, |
+ icon_url, |
+ base::RefCountedBytes::TakeVector(&data), |
+ kFaviconRegularSize, |
+ TOUCH_ICON); |
+ EXPECT_TRUE(HasFaviconMapping(url1, kFaviconRegularSize, TOUCH_ICON)); |
+ EXPECT_TRUE(HasFaviconMapping(url2, kFaviconRegularSize, TOUCH_ICON)); |
+ EXPECT_TRUE(HasFaviconMapping(url1, kFaviconRegularSize, FAVICON)); |
+ |
+ // Add a large touch icon |
+ backend_->SetFavicon(url1, |
+ icon_url, |
+ base::RefCountedBytes::TakeVector(&data), |
+ kFaviconLargeSize, |
+ TOUCH_ICON); |
+ EXPECT_TRUE(HasFaviconMapping(url1, kFaviconLargeSize, TOUCH_ICON)); |
+ EXPECT_TRUE(HasFaviconMapping(url2, kFaviconLargeSize, TOUCH_ICON)); |
+ EXPECT_TRUE(HasFaviconMapping(url1, kFaviconRegularSize, TOUCH_ICON)); |
+ EXPECT_TRUE(HasFaviconMapping(url1, kFaviconRegularSize, FAVICON)); |
// Add a TOUCH_PRECOMPOSED_ICON |
backend_->SetFavicon(url1, |
icon_url, |
base::RefCountedBytes::TakeVector(&data), |
+ kFaviconRegularSize, |
TOUCH_PRECOMPOSED_ICON); |
- // The touch_icon was replaced. |
- EXPECT_FALSE(backend_->thumbnail_db_->GetIconMappingForPageURL( |
- url1, TOUCH_ICON, NULL)); |
- EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingForPageURL( |
- url1, FAVICON, NULL)); |
- EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingForPageURL( |
- url1, TOUCH_PRECOMPOSED_ICON, NULL)); |
- EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingForPageURL( |
- url2, TOUCH_PRECOMPOSED_ICON, NULL)); |
+ // The small touch_icon was replaced. |
+ EXPECT_FALSE(HasFaviconMapping(url1, kFaviconRegularSize, TOUCH_ICON)); |
+ EXPECT_TRUE(HasFaviconMapping(url1, kFaviconLargeSize, TOUCH_ICON)); |
+ EXPECT_TRUE(HasFaviconMapping(url1, kFaviconRegularSize, FAVICON)); |
+ EXPECT_TRUE(HasFaviconMapping(url1, kFaviconRegularSize, |
+ TOUCH_PRECOMPOSED_ICON)); |
+ EXPECT_TRUE(HasFaviconMapping(url2, kFaviconRegularSize, |
+ TOUCH_PRECOMPOSED_ICON)); |
// Add a touch_icon |
- backend_->SetFavicon( |
- url1, icon_url, base::RefCountedBytes::TakeVector(&data), TOUCH_ICON); |
- EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingForPageURL( |
- url1, TOUCH_ICON, NULL)); |
- EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingForPageURL( |
- url1, FAVICON, NULL)); |
+ backend_->SetFavicon(url1, |
+ icon_url, |
+ base::RefCountedBytes::TakeVector(&data), |
+ kFaviconRegularSize, |
+ TOUCH_ICON); |
+ EXPECT_TRUE(HasFaviconMapping(url1, kFaviconRegularSize, TOUCH_ICON)); |
+ EXPECT_TRUE(HasFaviconMapping(url1, kFaviconLargeSize, TOUCH_ICON)); |
+ EXPECT_TRUE(HasFaviconMapping(url1, kFaviconRegularSize, FAVICON)); |
// The TOUCH_PRECOMPOSED_ICON was replaced. |
- EXPECT_FALSE(backend_->thumbnail_db_->GetIconMappingForPageURL( |
- url1, TOUCH_PRECOMPOSED_ICON, NULL)); |
+ EXPECT_FALSE(HasFaviconMapping(url1, kFaviconRegularSize, |
+ TOUCH_PRECOMPOSED_ICON)); |
// Add a favicon |
const GURL icon_url2("http://www.google.com/icon2"); |
- backend_->SetFavicon( |
- url1, icon_url2, base::RefCountedBytes::TakeVector(&data), FAVICON); |
- FaviconID icon_id = backend_->thumbnail_db_->GetFaviconIDForFaviconURL( |
- icon_url2, FAVICON, NULL); |
- EXPECT_NE(0, icon_id); |
- std::vector<IconMapping> icon_mapping; |
+ backend_->SetFavicon(url1, |
+ icon_url2, |
+ base::RefCountedBytes::TakeVector(&data), |
+ kFaviconRegularSize, |
+ FAVICON); |
+ FaviconID icon_id2 = GetFaviconIDForIconURL(icon_url2, FAVICON); |
+ EXPECT_NE(icon_id2, 0); |
+ std::vector<IconMapping> icon_mappings; |
EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL( |
- url1, &icon_mapping)); |
- // The old icon was replaced. |
- EXPECT_TRUE(icon_mapping.size() > 1); |
- EXPECT_EQ(icon_id, icon_mapping[1].icon_id); |
+ url1, FAVICON, &icon_mappings)); |
+ EXPECT_EQ(1u, icon_mappings.size()); |
+ EXPECT_EQ(icon_id2, icon_mappings[0].icon_id); |
+} |
+ |
+TEST_F(HistoryBackendTest, ExceedPageFaviconLimit) { |
+ const GURL page_url("http://www.google.com"); |
+ const GURL icon_url("http://www.google.com/icon"); |
+ std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); |
+ |
+ int size = 10; |
+ size_t num_to_insert = kMaxFaviconsPerPage + 1; |
+ for (size_t i = 0; i < num_to_insert; ++i) { |
+ backend_->SetFavicon(page_url, |
+ icon_url, |
+ base::RefCountedBytes::TakeVector(&data), |
+ gfx::Size(size, size), |
+ FAVICON); |
+ size++; |
+ } |
+ |
+ std::vector<IconMapping> icon_mappings; |
+ EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL( |
+ page_url, &icon_mappings)); |
+ EXPECT_EQ(kMaxFaviconsPerPage, icon_mappings.size()); |
} |
TEST_F(HistoryBackendTest, AddOrUpdateIconMapping) { |
@@ -1150,15 +1205,14 @@ TEST_F(HistoryBackendTest, AddOrUpdateIconMapping) { |
const GURL icon_url("http://www.google.com/icon"); |
std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); |
- backend_->SetFavicon( |
- url, icon_url, base::RefCountedBytes::TakeVector(&data), FAVICON); |
- FaviconID icon_id = backend_->thumbnail_db_->GetFaviconIDForFaviconURL( |
- icon_url, FAVICON, NULL); |
+ backend_->SetFavicon(url, icon_url, |
+ base::RefCountedBytes::TakeVector(&data), kFaviconRegularSize, FAVICON); |
+ FaviconID icon_id = GetFaviconIDForIconURL(icon_url, FAVICON); |
// Add the same mapping |
FaviconID replaced; |
EXPECT_FALSE(backend_->AddOrUpdateIconMapping( |
- url, icon_id, FAVICON, &replaced)); |
+ url, icon_id, kFaviconRegularSize, FAVICON, &replaced)); |
EXPECT_EQ(0, replaced); |
std::vector<IconMapping> icon_mapping; |
@@ -1172,44 +1226,77 @@ TEST_F(HistoryBackendTest, GetFaviconForURL) { |
// and check the behaviour of backend's GetFaviconForURL implementation. |
const GURL url("http://www.google.com/"); |
const GURL icon_url("http://www.google.com/icon"); |
+ |
std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); |
- scoped_refptr<base::RefCountedBytes> bytes(new base::RefCountedBytes(data)); |
+ scoped_refptr<base::RefCountedBytes> bytes( |
+ new base::RefCountedBytes(data)); |
// Used for testing the icon data after getting from DB |
std::string blob_data(bytes->front(), |
bytes->front() + bytes->size()); |
// Add a favicon |
backend_->SetFavicon( |
- url, icon_url, bytes.get(), FAVICON); |
- EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingForPageURL( |
- url, FAVICON, NULL)); |
+ url, icon_url, bytes.get(), kFavicon1xSize, FAVICON); |
+ EXPECT_TRUE(HasFaviconMapping(url, kFavicon1xSize, FAVICON)); |
- // Add a touch_icon |
+ // Add a small touch_icon |
+ backend_->SetFavicon( |
+ url, icon_url, bytes.get(), kFavicon1xSize, TOUCH_ICON); |
+ EXPECT_TRUE(HasFaviconMapping(url, kFavicon1xSize, TOUCH_ICON)); |
+ |
+ // Add a large touch icon |
backend_->SetFavicon( |
- url, icon_url, bytes.get(), TOUCH_ICON); |
- EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingForPageURL( |
- url, TOUCH_ICON, NULL)); |
+ url, icon_url, bytes.get(), kFavicon2xSize, TOUCH_ICON); |
+ EXPECT_TRUE(HasFaviconMapping(url, kFavicon2xSize, TOUCH_ICON)); |
- // Test the Fav icon for this URL. |
+ // Test the Fav small icon for this URL. |
FaviconData favicon; |
- ASSERT_TRUE(backend_->GetFaviconFromDB(url, FAVICON, &favicon)); |
- std::string favicon_data( |
- favicon.image_data->front(), |
- favicon.image_data->front() + favicon.image_data->size()); |
+ ASSERT_TRUE(backend_->GetFaviconFromDB(url, kFavicon1xSize, FAVICON, |
+ &favicon)); |
+ std::string favicon_data_1x( |
+ favicon.bitmap_data->front(), |
+ favicon.bitmap_data->front() + favicon.bitmap_data->size()); |
EXPECT_EQ(FAVICON, favicon.icon_type); |
EXPECT_EQ(icon_url, favicon.icon_url); |
- EXPECT_EQ(blob_data, favicon_data); |
+ EXPECT_EQ(blob_data, favicon_data_1x); |
+ EXPECT_EQ(kFavicon1xSize, favicon.requested_size); |
- // Test the touch icon for this URL. |
- ASSERT_TRUE(backend_->GetFaviconFromDB(url, TOUCH_ICON, &favicon)); |
- std::string touchicon_data( |
- favicon.image_data->front(), |
- favicon.image_data->front() + favicon.image_data->size()); |
+ // Test falling back to small icon if the large one is not present. |
+ ASSERT_TRUE(backend_->GetFaviconFromDB(url, kFavicon2xSize, FAVICON, |
+ &favicon)); |
+ std::string favicon_data_2x( |
+ favicon.bitmap_data->front(), |
+ favicon.bitmap_data->front() + favicon.bitmap_data->size()); |
+ |
+ EXPECT_EQ(FAVICON, favicon.icon_type); |
+ EXPECT_EQ(icon_url, favicon.icon_url); |
+ EXPECT_EQ(blob_data, favicon_data_2x); |
+ EXPECT_EQ(kFavicon1xSize, favicon.requested_size); |
+ |
+ // Test the small touch icon for this URL. |
+ ASSERT_TRUE(backend_->GetFaviconFromDB(url, kFavicon1xSize, TOUCH_ICON, |
+ &favicon)); |
+ std::string touchicon_1x_data( |
+ favicon.bitmap_data->front(), |
+ favicon.bitmap_data->front() + favicon.bitmap_data->size()); |
+ |
+ EXPECT_EQ(TOUCH_ICON, favicon.icon_type); |
+ EXPECT_EQ(icon_url, favicon.icon_url); |
+ EXPECT_EQ(blob_data, touchicon_1x_data); |
+ EXPECT_EQ(kFavicon1xSize, favicon.requested_size); |
+ |
+ // Test the large touch icon for this URL. |
+ ASSERT_TRUE(backend_->GetFaviconFromDB(url, kFavicon2xSize, TOUCH_ICON, |
+ &favicon)); |
+ std::string touchicon_2x_data( |
+ favicon.bitmap_data->front(), |
+ favicon.bitmap_data->front() + favicon.bitmap_data->size()); |
EXPECT_EQ(TOUCH_ICON, favicon.icon_type); |
EXPECT_EQ(icon_url, favicon.icon_url); |
- EXPECT_EQ(blob_data, touchicon_data); |
+ EXPECT_EQ(blob_data, touchicon_2x_data); |
+ EXPECT_EQ(kFavicon2xSize, favicon.requested_size); |
} |
TEST_F(HistoryBackendTest, CloneFaviconIsRestrictedToSameDomain) { |
@@ -1222,25 +1309,28 @@ TEST_F(HistoryBackendTest, CloneFaviconIsRestrictedToSameDomain) { |
std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); |
scoped_refptr<base::RefCountedBytes> bytes(new base::RefCountedBytes(data)); |
backend_->SetFavicon( |
- url, icon_url, bytes.get(), FAVICON); |
- EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingForPageURL( |
+ url, icon_url, bytes.get(), kFaviconRegularSize, FAVICON); |
+ EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL( |
url, FAVICON, NULL)); |
// Validate starting state. |
FaviconData favicon; |
- EXPECT_TRUE(backend_->GetFaviconFromDB(url, FAVICON, &favicon)); |
- EXPECT_FALSE(backend_->GetFaviconFromDB(same_domain_url, FAVICON, &favicon)); |
+ EXPECT_TRUE(backend_->GetFaviconFromDB(url, kFaviconRegularSize, FAVICON, |
+ &favicon)); |
+ EXPECT_FALSE(backend_->GetFaviconFromDB(same_domain_url, |
+ kFaviconRegularSize, FAVICON, &favicon)); |
EXPECT_FALSE(backend_->GetFaviconFromDB(foreign_domain_url, |
- FAVICON, &favicon)); |
+ kFaviconRegularSize, FAVICON, &favicon)); |
// Same-domain cloning should work. |
backend_->CloneFavicon(url, same_domain_url); |
- EXPECT_TRUE(backend_->GetFaviconFromDB(same_domain_url, FAVICON, &favicon)); |
+ EXPECT_TRUE(backend_->GetFaviconFromDB(same_domain_url, kFaviconRegularSize, |
+ FAVICON, &favicon)); |
// Foreign-domain cloning is forbidden. |
backend_->CloneFavicon(url, foreign_domain_url); |
EXPECT_FALSE(backend_->GetFaviconFromDB(foreign_domain_url, |
- FAVICON, &favicon)); |
+ kFaviconRegularSize, FAVICON, &favicon)); |
} |
TEST_F(HistoryBackendTest, QueryFilteredURLs) { |