| 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) {
|
|
|