| 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 a54d6074678e4ddae405fb147316c9d884b06f26..9d84275c41346aaffcfed9eb5215c840da59cd23 100644
|
| --- a/chrome/browser/history/history_backend_unittest.cc
|
| +++ b/chrome/browser/history/history_backend_unittest.cc
|
| @@ -1287,33 +1287,29 @@ TEST_F(HistoryBackendTest, SetFaviconMappingsForPageAndRedirects) {
|
| const GURL icon_url1("http://www.google.com/icon");
|
| const GURL icon_url2("http://www.google.com/icon2");
|
|
|
| - // Create mapping for a page with two favicons.
|
| - IconURLSizesMap two_icon_url_sizes;
|
| - two_icon_url_sizes[icon_url1] = GetSizesSmallAndLarge();
|
| - two_icon_url_sizes[icon_url2] = GetSizesSmallAndLarge();
|
| + // Generate bitmap data for a page with two favicons.
|
| + std::vector<FaviconBitmapData> two_favicon_bitmap_data;
|
| + GenerateFaviconBitmapData(icon_url1, GetSizesSmallAndLarge(),
|
| + icon_url2, GetSizesSmallAndLarge(), &two_favicon_bitmap_data);
|
|
|
| - // Create a mapping for a page with a single favicon.
|
| - IconURLSizesMap one_icon_url_sizes;
|
| - one_icon_url_sizes[icon_url1] = GetSizesSmallAndLarge();
|
| -
|
| - std::vector<FaviconBitmapData> favicon_bitmap_data;
|
| + // Generate bitmap data for a page with a single favicon.
|
| + std::vector<FaviconBitmapData> one_favicon_bitmap_data;
|
| + GenerateFaviconBitmapData(icon_url1, GetSizesSmallAndLarge(),
|
| + &one_favicon_bitmap_data);
|
|
|
| // Add two favicons
|
| - backend_->SetFavicons(url1, FAVICON, favicon_bitmap_data,
|
| - two_icon_url_sizes);
|
| + backend_->SetFavicons(url1, FAVICON, two_favicon_bitmap_data);
|
| EXPECT_EQ(2u, NumIconMappingsForPageURL(url1, FAVICON));
|
| EXPECT_EQ(2u, NumIconMappingsForPageURL(url2, FAVICON));
|
|
|
| // Add one touch_icon
|
| - backend_->SetFavicons(url1, TOUCH_ICON, favicon_bitmap_data,
|
| - one_icon_url_sizes);
|
| + backend_->SetFavicons(url1, TOUCH_ICON, one_favicon_bitmap_data);
|
| EXPECT_EQ(1u, NumIconMappingsForPageURL(url1, TOUCH_ICON));
|
| EXPECT_EQ(1u, NumIconMappingsForPageURL(url2, TOUCH_ICON));
|
| EXPECT_EQ(2u, NumIconMappingsForPageURL(url1, FAVICON));
|
|
|
| // Add one TOUCH_PRECOMPOSED_ICON
|
| - backend_->SetFavicons(url1, TOUCH_PRECOMPOSED_ICON, favicon_bitmap_data,
|
| - one_icon_url_sizes);
|
| + backend_->SetFavicons(url1, TOUCH_PRECOMPOSED_ICON, one_favicon_bitmap_data);
|
| // The touch_icon was replaced.
|
| EXPECT_EQ(0u, NumIconMappingsForPageURL(url1, TOUCH_ICON));
|
| EXPECT_EQ(2u, NumIconMappingsForPageURL(url1, FAVICON));
|
| @@ -1321,38 +1317,35 @@ TEST_F(HistoryBackendTest, SetFaviconMappingsForPageAndRedirects) {
|
| EXPECT_EQ(1u, NumIconMappingsForPageURL(url2, TOUCH_PRECOMPOSED_ICON));
|
|
|
| // Add a touch_icon.
|
| - backend_->SetFavicons(url1, TOUCH_ICON, favicon_bitmap_data,
|
| - one_icon_url_sizes);
|
| + backend_->SetFavicons(url1, TOUCH_ICON, one_favicon_bitmap_data);
|
| EXPECT_EQ(1u, NumIconMappingsForPageURL(url1, TOUCH_ICON));
|
| EXPECT_EQ(2u, NumIconMappingsForPageURL(url1, FAVICON));
|
| // The TOUCH_PRECOMPOSED_ICON was replaced.
|
| EXPECT_EQ(0u, NumIconMappingsForPageURL(url1, TOUCH_PRECOMPOSED_ICON));
|
|
|
| // Add a single favicon.
|
| - backend_->SetFavicons(url1, FAVICON, favicon_bitmap_data,
|
| - one_icon_url_sizes);
|
| + backend_->SetFavicons(url1, FAVICON, one_favicon_bitmap_data);
|
| EXPECT_EQ(1u, NumIconMappingsForPageURL(url1, TOUCH_ICON));
|
| EXPECT_EQ(1u, NumIconMappingsForPageURL(url1, FAVICON));
|
| EXPECT_EQ(1u, NumIconMappingsForPageURL(url2, FAVICON));
|
|
|
| // Add two favicons.
|
| - backend_->SetFavicons(url1, FAVICON, favicon_bitmap_data,
|
| - two_icon_url_sizes);
|
| + backend_->SetFavicons(url1, FAVICON, two_favicon_bitmap_data);
|
| EXPECT_EQ(1u, NumIconMappingsForPageURL(url1, TOUCH_ICON));
|
| EXPECT_EQ(2u, NumIconMappingsForPageURL(url1, FAVICON));
|
| }
|
|
|
| // Test that there is no churn in icon mappings from calling
|
| -// SetFavicons() twice with the same |icon_url_sizes| parameter.
|
| +// SetFavicons() twice with the same |favicon_bitmap_data| parameter.
|
| TEST_F(HistoryBackendTest, SetFaviconMappingsForPageDuplicates) {
|
| const GURL url("http://www.google.com/");
|
| const GURL icon_url("http://www.google.com/icon");
|
| - std::vector<FaviconBitmapData> favicon_bitmap_data;
|
|
|
| - IconURLSizesMap icon_url_sizes;
|
| - icon_url_sizes[icon_url] = GetSizesSmallAndLarge();
|
| + std::vector<FaviconBitmapData> favicon_bitmap_data;
|
| + GenerateFaviconBitmapData(icon_url, GetSizesSmallAndLarge(),
|
| + &favicon_bitmap_data);
|
|
|
| - backend_->SetFavicons(url, FAVICON, favicon_bitmap_data, icon_url_sizes);
|
| + backend_->SetFavicons(url, FAVICON, favicon_bitmap_data);
|
|
|
| std::vector<IconMapping> icon_mappings;
|
| EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL(
|
| @@ -1360,7 +1353,7 @@ TEST_F(HistoryBackendTest, SetFaviconMappingsForPageDuplicates) {
|
| EXPECT_EQ(1u, icon_mappings.size());
|
| IconMappingID mapping_id = icon_mappings[0].mapping_id;
|
|
|
| - backend_->SetFavicons(url, FAVICON, favicon_bitmap_data, icon_url_sizes);
|
| + backend_->SetFavicons(url, FAVICON, favicon_bitmap_data);
|
|
|
| icon_mappings.clear();
|
| EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL(
|
| @@ -1372,183 +1365,77 @@ TEST_F(HistoryBackendTest, SetFaviconMappingsForPageDuplicates) {
|
| EXPECT_EQ(mapping_id, icon_mappings[0].mapping_id);
|
| }
|
|
|
| -// Test that setting favicons for a page which already has data does the
|
| -// right thing.
|
| -TEST_F(HistoryBackendTest, SetFavicons) {
|
| +// Test that calling SetFavicons() with FaviconBitmapData of different pixel
|
| +// sizes than the initially passed in FaviconBitmapData deletes the no longer
|
| +// used favicon bitmaps.
|
| +TEST_F(HistoryBackendTest, SetFaviconsDeleteBitmaps) {
|
| const GURL page_url("http://www.google.com/");
|
| - std::vector<FaviconBitmapData> favicon_bitmap_data;
|
| - IconURLSizesMap icon_url_sizes;
|
| -
|
| - // Set |page_url| as having two favicons each available from the web at two
|
| - // sizes.
|
| - const GURL icon_url1("http://www.google.com/icon1");
|
| - const GURL icon_url2("http://www.google.com/icon2");
|
| -
|
| - icon_url_sizes[icon_url1] = GetSizesSmallAndLarge();
|
| - icon_url_sizes[icon_url2] = GetSizesSmallAndLarge();
|
| -
|
| - // Set only sizes info for the favicons.
|
| - backend_->SetFavicons(page_url, FAVICON, favicon_bitmap_data,
|
| - icon_url_sizes);
|
| -
|
| - std::vector<IconMapping> icon_mappings;
|
| - EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL(
|
| - page_url, &icon_mappings));
|
| - EXPECT_EQ(2u, icon_mappings.size());
|
| - for (size_t i = 0; i < icon_mappings.size(); ++i) {
|
| - EXPECT_FALSE(backend_->thumbnail_db_->GetFaviconBitmaps(
|
| - icon_mappings[i].icon_id, NULL));
|
| - }
|
| + const GURL icon_url("http://www.google.com/icon");
|
|
|
| - // Add bitmap data to the favicons.
|
| - GenerateFaviconBitmapData(icon_url1,
|
| - GetSizesSmall(),
|
| - icon_url2,
|
| - GetSizesSmallAndLarge(),
|
| + std::vector<FaviconBitmapData> favicon_bitmap_data;
|
| + GenerateFaviconBitmapData(icon_url, GetSizesSmallAndLarge(),
|
| &favicon_bitmap_data);
|
| + backend_->SetFavicons(page_url, FAVICON, favicon_bitmap_data);
|
|
|
| - backend_->SetFavicons(page_url, FAVICON, favicon_bitmap_data,
|
| - icon_url_sizes);
|
| -
|
| - icon_mappings.clear();
|
| + // Test initial state.
|
| + std::vector<IconMapping> icon_mappings;
|
| EXPECT_TRUE(GetSortedIconMappingsForPageURL(page_url, &icon_mappings));
|
| - EXPECT_EQ(2u, icon_mappings.size());
|
| -
|
| - GURL icon_url;
|
| - IconType icon_type;
|
| - FaviconSizes favicon_sizes;
|
| - EXPECT_TRUE(backend_->thumbnail_db_->GetFaviconHeader(
|
| - icon_mappings[0].icon_id, &icon_url, &icon_type, &favicon_sizes));
|
| - EXPECT_EQ(icon_url1, icon_url);
|
| - EXPECT_EQ(FAVICON, icon_type);
|
| - EXPECT_EQ(GetSizesSmallAndLarge(), favicon_sizes);
|
| + EXPECT_EQ(1u, icon_mappings.size());
|
| + EXPECT_EQ(icon_url, icon_mappings[0].icon_url);
|
| + EXPECT_EQ(FAVICON, icon_mappings[0].icon_type);
|
| + FaviconID favicon_id = icon_mappings[0].icon_id;
|
|
|
| std::vector<FaviconBitmap> favicon_bitmaps;
|
| - EXPECT_TRUE(backend_->thumbnail_db_->GetFaviconBitmaps(
|
| - icon_mappings[0].icon_id, &favicon_bitmaps));
|
| - EXPECT_EQ(1u, favicon_bitmaps.size());
|
| - EXPECT_TRUE(BitmapDataEqual('a', favicon_bitmaps[0].bitmap_data));
|
| - EXPECT_EQ(kSmallSize, favicon_bitmaps[0].pixel_size);
|
| -
|
| - favicon_sizes.clear();
|
| - EXPECT_TRUE(backend_->thumbnail_db_->GetFaviconHeader(
|
| - icon_mappings[1].icon_id, &icon_url, &icon_type, &favicon_sizes));
|
| - EXPECT_EQ(icon_url2, icon_url);
|
| - EXPECT_EQ(FAVICON, icon_type);
|
| - EXPECT_EQ(GetSizesSmallAndLarge(), favicon_sizes);
|
| -
|
| - favicon_bitmaps.clear();
|
| - EXPECT_TRUE(GetSortedFaviconBitmaps(icon_mappings[1].icon_id,
|
| - &favicon_bitmaps));
|
| -
|
| + EXPECT_TRUE(GetSortedFaviconBitmaps(favicon_id, &favicon_bitmaps));
|
| EXPECT_EQ(2u, favicon_bitmaps.size());
|
| - EXPECT_TRUE(BitmapDataEqual('b', favicon_bitmaps[0].bitmap_data));
|
| + FaviconBitmapID small_bitmap_id = favicon_bitmaps[0].bitmap_id;
|
| + EXPECT_NE(0, small_bitmap_id);
|
| + EXPECT_TRUE(BitmapDataEqual('a', favicon_bitmaps[0].bitmap_data));
|
| EXPECT_EQ(kSmallSize, favicon_bitmaps[0].pixel_size);
|
| - EXPECT_TRUE(BitmapDataEqual('c', favicon_bitmaps[1].bitmap_data));
|
| + FaviconBitmapID large_bitmap_id = favicon_bitmaps[1].bitmap_id;
|
| + EXPECT_NE(0, large_bitmap_id);
|
| + EXPECT_TRUE(BitmapDataEqual('b', favicon_bitmaps[1].bitmap_data));
|
| EXPECT_EQ(kLargeSize, favicon_bitmaps[1].pixel_size);
|
|
|
| - // Notifications should have been broadcast for each call to SetFavicons().
|
| - EXPECT_EQ(2, num_broadcasted_notifications());
|
| + // Call SetFavicons() with bitmap data for only the large bitmap. Check that
|
| + // the small bitmap is in fact deleted.
|
| + GenerateFaviconBitmapData(icon_url, GetSizesLarge(), &favicon_bitmap_data);
|
| + backend_->SetFavicons(page_url, FAVICON, favicon_bitmap_data);
|
|
|
| - // Change the sizes for which the favicon at icon_url1 is available at from
|
| - // the web. Verify that all the data remains valid.
|
| - icon_url_sizes[icon_url1] = GetSizesTinySmallAndLarge();
|
| - favicon_bitmap_data.clear();
|
| - backend_->SetFavicons(page_url, FAVICON, favicon_bitmap_data,
|
| - icon_url_sizes);
|
| + scoped_refptr<base::RefCountedMemory> bitmap_data_out;
|
| + gfx::Size pixel_size_out;
|
| + EXPECT_FALSE(backend_->thumbnail_db_->GetFaviconBitmap(small_bitmap_id,
|
| + NULL, &bitmap_data_out, &pixel_size_out));
|
| + EXPECT_TRUE(backend_->thumbnail_db_->GetFaviconBitmap(large_bitmap_id,
|
| + NULL, &bitmap_data_out, &pixel_size_out));
|
| + EXPECT_TRUE(BitmapDataEqual('a', bitmap_data_out));
|
| + EXPECT_EQ(kLargeSize, pixel_size_out);
|
|
|
| icon_mappings.clear();
|
| - EXPECT_TRUE(GetSortedIconMappingsForPageURL(page_url, &icon_mappings));
|
| - EXPECT_EQ(2u, icon_mappings.size());
|
| -
|
| - favicon_sizes.clear();
|
| - EXPECT_TRUE(backend_->thumbnail_db_->GetFaviconHeader(
|
| - icon_mappings[0].icon_id, &icon_url, &icon_type, &favicon_sizes));
|
| - EXPECT_EQ(icon_url1, icon_url);
|
| - EXPECT_EQ(FAVICON, icon_type);
|
| - EXPECT_EQ(GetSizesTinySmallAndLarge(), favicon_sizes);
|
| -
|
| - favicon_bitmaps.clear();
|
| - EXPECT_TRUE(backend_->thumbnail_db_->GetFaviconBitmaps(
|
| - icon_mappings[0].icon_id, &favicon_bitmaps));
|
| - EXPECT_EQ(1u, favicon_bitmaps.size());
|
| -
|
| - favicon_sizes.clear();
|
| - EXPECT_TRUE(backend_->thumbnail_db_->GetFaviconHeader(
|
| - icon_mappings[1].icon_id, &icon_url, &icon_type, &favicon_sizes));
|
| - EXPECT_EQ(icon_url2, icon_url);
|
| - EXPECT_EQ(FAVICON, icon_type);
|
| - EXPECT_EQ(GetSizesSmallAndLarge(), favicon_sizes);
|
| -
|
| - favicon_bitmaps.clear();
|
| - EXPECT_TRUE(backend_->thumbnail_db_->GetFaviconBitmaps(
|
| - icon_mappings[1].icon_id, &favicon_bitmaps));
|
| - EXPECT_EQ(2u, favicon_bitmaps.size());
|
| -
|
| - // No notifications should have been sent because changing the favicon sizes
|
| - // did not result in deleting any favicon bitmaps.
|
| - EXPECT_EQ(2, num_broadcasted_notifications());
|
| -}
|
| -
|
| -// Test that changing the sizes that a favicon is available at from the web
|
| -// deletes stale favicons and favicon bitmaps.
|
| -TEST_F(HistoryBackendTest, SetFaviconsDeleteBitmaps) {
|
| - const GURL page_url("http://www.google.com/");
|
| - const GURL icon_url("http://www.google.com/icon");
|
| -
|
| - // Set |page_url| as having one favicon with two different sizes.
|
| - IconURLSizesMap icon_url_sizes;
|
| - icon_url_sizes[icon_url] = GetSizesSmallAndLarge();
|
| -
|
| - std::vector<FaviconBitmapData> favicon_bitmap_data;
|
| - GenerateFaviconBitmapData(icon_url, GetSizesSmallAndLarge(),
|
| - &favicon_bitmap_data);
|
| -
|
| - // Add bitmap data and sizes information to the database.
|
| - backend_->SetFavicons(page_url, FAVICON, favicon_bitmap_data,
|
| - icon_url_sizes);
|
| -
|
| - FaviconID favicon_id = backend_->thumbnail_db_->GetFaviconIDForFaviconURL(
|
| - icon_url, FAVICON, NULL);
|
| - EXPECT_NE(0, favicon_id);
|
| -
|
| - std::vector<FaviconBitmap> favicon_bitmaps;
|
| - EXPECT_TRUE(backend_->thumbnail_db_->GetFaviconBitmaps(favicon_id,
|
| - &favicon_bitmaps));
|
| - EXPECT_EQ(2u, favicon_bitmaps.size());
|
| + EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL(page_url,
|
| + &icon_mappings));
|
| + EXPECT_EQ(1u, icon_mappings.size());
|
| + EXPECT_EQ(favicon_id, icon_mappings[0].icon_id);
|
|
|
| - // Change the bitmap sizes available from the web only to the small size only.
|
| - icon_url_sizes[icon_url] = GetSizesSmall();
|
| + // Call SetFavicons() with no bitmap data. Check that the bitmaps and icon
|
| + // mappings are deleted.
|
| favicon_bitmap_data.clear();
|
| - backend_->SetFavicons(page_url, FAVICON, favicon_bitmap_data,
|
| - icon_url_sizes);
|
| -
|
| - favicon_id = backend_->thumbnail_db_->GetFaviconIDForFaviconURL(
|
| - icon_url, FAVICON, NULL);
|
| - EXPECT_NE(0, favicon_id);
|
| + backend_->SetFavicons(page_url, FAVICON, favicon_bitmap_data);
|
|
|
| - favicon_bitmaps.clear();
|
| - EXPECT_TRUE(backend_->thumbnail_db_->GetFaviconBitmaps(favicon_id,
|
| - &favicon_bitmaps));
|
| - EXPECT_EQ(1u, favicon_bitmaps.size());
|
| - EXPECT_EQ(kSmallSize, favicon_bitmaps[0].pixel_size);
|
| + EXPECT_FALSE(backend_->thumbnail_db_->GetFaviconBitmap(large_bitmap_id, NULL,
|
| + NULL, NULL));
|
| + icon_mappings.clear();
|
| + EXPECT_FALSE(backend_->thumbnail_db_->GetIconMappingsForPageURL(page_url,
|
| + &icon_mappings));
|
|
|
| - // Clear |icon_url_sizes|. SetFavicons() should delete the remaining favicon
|
| - // and its favicon bitmap.
|
| - icon_url_sizes.clear();
|
| - backend_->SetFavicons(page_url, FAVICON, favicon_bitmap_data, icon_url_sizes);
|
| - EXPECT_EQ(0, backend_->thumbnail_db_->GetFaviconIDForFaviconURL(
|
| - icon_url, FAVICON, NULL));
|
| - EXPECT_FALSE(backend_->thumbnail_db_->GetFaviconBitmaps(favicon_id, NULL));
|
| + // Notifications should have been broadcast for each call to SetFavicons().
|
| + EXPECT_EQ(3, num_broadcasted_notifications());
|
| }
|
|
|
| // Test updating a single favicon bitmap's data via SetFavicons.
|
| TEST_F(HistoryBackendTest, SetFaviconsReplaceBitmapData) {
|
| -
|
| const GURL page_url("http://www.google.com/");
|
| const GURL icon_url("http://www.google.com/icon");
|
| - IconURLSizesMap icon_url_sizes;
|
| - icon_url_sizes[icon_url] = GetSizesSmall();
|
|
|
| std::vector<unsigned char> data_initial;
|
| data_initial.push_back('a');
|
| @@ -1562,8 +1449,7 @@ TEST_F(HistoryBackendTest, SetFaviconsReplaceBitmapData) {
|
| favicon_bitmap_data.push_back(bitmap_data_element);
|
|
|
| // Add bitmap to the database.
|
| - backend_->SetFavicons(page_url, FAVICON, favicon_bitmap_data,
|
| - icon_url_sizes);
|
| + backend_->SetFavicons(page_url, FAVICON, favicon_bitmap_data);
|
|
|
| FaviconID original_favicon_id =
|
| backend_->thumbnail_db_->GetFaviconIDForFaviconURL(icon_url, FAVICON,
|
| @@ -1580,8 +1466,7 @@ TEST_F(HistoryBackendTest, SetFaviconsReplaceBitmapData) {
|
| std::vector<unsigned char> updated_data;
|
| updated_data.push_back('a');
|
| favicon_bitmap_data[0].bitmap_data = new base::RefCountedBytes(updated_data);
|
| - backend_->SetFavicons(page_url, FAVICON, favicon_bitmap_data,
|
| - icon_url_sizes);
|
| + backend_->SetFavicons(page_url, FAVICON, favicon_bitmap_data);
|
|
|
| FaviconID updated_favicon_id =
|
| backend_->thumbnail_db_->GetFaviconIDForFaviconURL(icon_url, FAVICON,
|
| @@ -1599,8 +1484,7 @@ TEST_F(HistoryBackendTest, SetFaviconsReplaceBitmapData) {
|
| // Call SetFavicons() with identical data but a different bitmap.
|
| updated_data[0] = 'b';
|
| favicon_bitmap_data[0].bitmap_data = new base::RefCountedBytes(updated_data);
|
| - backend_->SetFavicons(page_url, FAVICON, favicon_bitmap_data,
|
| - icon_url_sizes);
|
| + backend_->SetFavicons(page_url, FAVICON, favicon_bitmap_data);
|
|
|
| updated_favicon_id =
|
| backend_->thumbnail_db_->GetFaviconIDForFaviconURL(icon_url, FAVICON,
|
| @@ -1629,23 +1513,19 @@ TEST_F(HistoryBackendTest, SetFaviconsSameFaviconURLForTwoPages) {
|
| GURL page_url1("http://www.google.com");
|
| GURL page_url2("http://www.google.ca");
|
|
|
| - IconURLSizesMap icon_url_sizes;
|
| - icon_url_sizes[icon_url] = GetSizesSmallAndLarge();
|
| -
|
| std::vector<FaviconBitmapData> favicon_bitmap_data;
|
| GenerateFaviconBitmapData(icon_url, GetSizesSmallAndLarge(),
|
| &favicon_bitmap_data);
|
|
|
| - backend_->SetFavicons(page_url1, FAVICON, favicon_bitmap_data,
|
| - icon_url_sizes);
|
| + backend_->SetFavicons(page_url1, FAVICON, favicon_bitmap_data);
|
|
|
| std::vector<GURL> icon_urls;
|
| icon_urls.push_back(icon_url);
|
|
|
| - HistoryBackend::FaviconResults results;
|
| + std::vector<FaviconBitmapResult> bitmap_results;
|
| backend_->UpdateFaviconMappingsAndFetch(
|
| page_url2, icon_urls, FAVICON, kSmallSize.width(),
|
| - GetScaleFactors1x2x(), &results);
|
| + GetScaleFactors1x2x(), &bitmap_results);
|
|
|
| // Check that the same FaviconID is mapped to both page URLs.
|
| std::vector<IconMapping> icon_mappings;
|
| @@ -1662,12 +1542,9 @@ TEST_F(HistoryBackendTest, SetFaviconsSameFaviconURLForTwoPages) {
|
| EXPECT_EQ(favicon_id, icon_mappings[0].icon_id);
|
|
|
| // Change the icon URL that |page_url1| is mapped to.
|
| - icon_url_sizes.clear();
|
| - icon_url_sizes[icon_url_new] = GetSizesSmall();
|
| GenerateFaviconBitmapData(icon_url_new, GetSizesSmall(),
|
| &favicon_bitmap_data);
|
| - backend_->SetFavicons(page_url1, FAVICON, favicon_bitmap_data,
|
| - icon_url_sizes);
|
| + backend_->SetFavicons(page_url1, FAVICON, favicon_bitmap_data);
|
|
|
| // |page_url1| should map to a new FaviconID and have valid bitmap data.
|
| icon_mappings.clear();
|
| @@ -1700,18 +1577,16 @@ TEST_F(HistoryBackendTest, SetFaviconsSameFaviconURLForTwoPages) {
|
| EXPECT_EQ(3, num_broadcasted_notifications());
|
| }
|
|
|
| -// Test that there is no churn from calling UpdateFaviconMappingsAndFetch()
|
| -// for an icon URL which is already mapped to the passed in page URL.
|
| +// Test that no notifications are broadcast as a result of calling
|
| +// UpdateFaviconMappingsAndFetch() for an icon URL which is already
|
| +// mapped to the passed in page URL.
|
| TEST_F(HistoryBackendTest, UpdateFaviconMappingsAndFetchNoChange) {
|
| GURL page_url("http://www.google.com");
|
| GURL icon_url("http://www.google.com/favicon.ico");
|
| std::vector<FaviconBitmapData> favicon_bitmap_data;
|
| + GenerateFaviconBitmapData(icon_url, GetSizesSmall(), &favicon_bitmap_data);
|
|
|
| - IconURLSizesMap icon_url_sizes;
|
| - icon_url_sizes[icon_url] = GetSizesSmall();
|
| -
|
| - backend_->SetFavicons(page_url, FAVICON, favicon_bitmap_data,
|
| - icon_url_sizes);
|
| + backend_->SetFavicons(page_url, FAVICON, favicon_bitmap_data);
|
|
|
| FaviconID icon_id = backend_->thumbnail_db_->GetFaviconIDForFaviconURL(
|
| icon_url, FAVICON, NULL);
|
| @@ -1721,10 +1596,10 @@ TEST_F(HistoryBackendTest, UpdateFaviconMappingsAndFetchNoChange) {
|
| std::vector<GURL> icon_urls;
|
| icon_urls.push_back(icon_url);
|
|
|
| - HistoryBackend::FaviconResults results;
|
| + std::vector<FaviconBitmapResult> bitmap_results;
|
| backend_->UpdateFaviconMappingsAndFetch(
|
| page_url, icon_urls, FAVICON, kSmallSize.width(),
|
| - GetScaleFactors1x2x(), &results);
|
| + GetScaleFactors1x2x(), &bitmap_results);
|
|
|
| EXPECT_EQ(icon_id, backend_->thumbnail_db_->GetFaviconIDForFaviconURL(
|
| icon_url, FAVICON, NULL));
|
| @@ -1747,21 +1622,17 @@ TEST_F(HistoryBackendTest, MergeFaviconPageURLNotInDB) {
|
|
|
| backend_->MergeFavicon(page_url, icon_url, FAVICON, bitmap_data, kSmallSize);
|
|
|
| - // |page_url| should now be mapped to |icon_url| and sizes should be set
|
| - // to GetDefaultFaviconSizes().
|
| + // |page_url| should now be mapped to |icon_url| and the favicon bitmap should
|
| + // not be expired.
|
| std::vector<IconMapping> icon_mappings;
|
| EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL(page_url,
|
| &icon_mappings));
|
| EXPECT_EQ(1u, icon_mappings.size());
|
| EXPECT_EQ(icon_url, icon_mappings[0].icon_url);
|
|
|
| - FaviconSizes favicon_sizes;
|
| - EXPECT_TRUE(backend_->thumbnail_db_->GetFaviconHeader(
|
| - icon_mappings[0].icon_id, NULL, NULL, &favicon_sizes));
|
| - EXPECT_EQ(GetDefaultFaviconSizes(), favicon_sizes);
|
| -
|
| FaviconBitmap favicon_bitmap;
|
| EXPECT_TRUE(GetOnlyFaviconBitmap(icon_mappings[0].icon_id, &favicon_bitmap));
|
| + EXPECT_NE(base::Time(), favicon_bitmap.last_updated);
|
| EXPECT_TRUE(BitmapDataEqual('a', favicon_bitmap.bitmap_data));
|
| EXPECT_EQ(kSmallSize, favicon_bitmap.pixel_size);
|
|
|
| @@ -1777,12 +1648,8 @@ TEST_F(HistoryBackendTest, MergeFaviconPageURLNotInDB) {
|
| EXPECT_EQ(1u, icon_mappings.size());
|
| EXPECT_EQ(icon_url, icon_mappings[0].icon_url);
|
|
|
| - favicon_sizes.clear();
|
| - EXPECT_TRUE(backend_->thumbnail_db_->GetFaviconHeader(
|
| - icon_mappings[0].icon_id, NULL, NULL, &favicon_sizes));
|
| - EXPECT_EQ(GetDefaultFaviconSizes(), favicon_sizes);
|
| -
|
| EXPECT_TRUE(GetOnlyFaviconBitmap(icon_mappings[0].icon_id, &favicon_bitmap));
|
| + EXPECT_NE(base::Time(), favicon_bitmap.last_updated);
|
| EXPECT_TRUE(BitmapDataEqual('b', favicon_bitmap.bitmap_data));
|
| EXPECT_EQ(kSmallSize, favicon_bitmap.pixel_size);
|
| }
|
| @@ -1793,15 +1660,11 @@ TEST_F(HistoryBackendTest, MergeFaviconPageURLInDB) {
|
| GURL icon_url1("http:/www.google.com/favicon.ico");
|
| GURL icon_url2("http://www.google.com/favicon2.ico");
|
|
|
| - IconURLSizesMap icon_url_sizes;
|
| - icon_url_sizes[icon_url1] = GetSizesSmallAndLarge();
|
| -
|
| std::vector<FaviconBitmapData> favicon_bitmap_data;
|
| GenerateFaviconBitmapData(icon_url1, GetSizesSmall(),
|
| &favicon_bitmap_data);
|
|
|
| - backend_->SetFavicons(page_url, FAVICON, favicon_bitmap_data,
|
| - icon_url_sizes);
|
| + backend_->SetFavicons(page_url, FAVICON, favicon_bitmap_data);
|
|
|
| // Test initial state.
|
| std::vector<IconMapping> icon_mappings;
|
| @@ -1810,13 +1673,9 @@ TEST_F(HistoryBackendTest, MergeFaviconPageURLInDB) {
|
| EXPECT_EQ(1u, icon_mappings.size());
|
| EXPECT_EQ(icon_url1, icon_mappings[0].icon_url);
|
|
|
| - FaviconSizes favicon_sizes;
|
| - EXPECT_TRUE(backend_->thumbnail_db_->GetFaviconHeader(
|
| - icon_mappings[0].icon_id, NULL, NULL, &favicon_sizes));
|
| - EXPECT_EQ(GetSizesSmallAndLarge(), favicon_sizes);
|
| -
|
| FaviconBitmap favicon_bitmap;
|
| EXPECT_TRUE(GetOnlyFaviconBitmap(icon_mappings[0].icon_id, &favicon_bitmap));
|
| + EXPECT_NE(base::Time(), favicon_bitmap.last_updated);
|
| EXPECT_TRUE(BitmapDataEqual('a', favicon_bitmap.bitmap_data));
|
| EXPECT_EQ(kSmallSize, favicon_bitmap.pixel_size);
|
|
|
| @@ -1837,12 +1696,8 @@ TEST_F(HistoryBackendTest, MergeFaviconPageURLInDB) {
|
| EXPECT_EQ(1u, icon_mappings.size());
|
| EXPECT_EQ(icon_url1, icon_mappings[0].icon_url);
|
|
|
| - favicon_sizes.clear();
|
| - EXPECT_TRUE(backend_->thumbnail_db_->GetFaviconHeader(
|
| - icon_mappings[0].icon_id, NULL, NULL, &favicon_sizes));
|
| - EXPECT_EQ(GetSizesSmallAndLarge(), favicon_sizes);
|
| -
|
| EXPECT_TRUE(GetOnlyFaviconBitmap(icon_mappings[0].icon_id, &favicon_bitmap));
|
| + EXPECT_NE(base::Time(), favicon_bitmap.last_updated);
|
| EXPECT_TRUE(BitmapDataEqual('a', favicon_bitmap.bitmap_data));
|
| EXPECT_EQ(kSmallSize, favicon_bitmap.pixel_size);
|
|
|
| @@ -1861,12 +1716,8 @@ TEST_F(HistoryBackendTest, MergeFaviconPageURLInDB) {
|
| EXPECT_EQ(1u, icon_mappings.size());
|
| EXPECT_EQ(icon_url1, icon_mappings[0].icon_url);
|
|
|
| - favicon_sizes.clear();
|
| - EXPECT_TRUE(backend_->thumbnail_db_->GetFaviconHeader(
|
| - icon_mappings[0].icon_id, NULL, NULL, &favicon_sizes));
|
| - EXPECT_EQ(GetSizesSmallAndLarge(), favicon_sizes);
|
| -
|
| EXPECT_TRUE(GetOnlyFaviconBitmap(icon_mappings[0].icon_id, &favicon_bitmap));
|
| + EXPECT_NE(base::Time(), favicon_bitmap.last_updated);
|
| EXPECT_TRUE(BitmapDataEqual('b', favicon_bitmap.bitmap_data));
|
| EXPECT_EQ(kSmallSize, favicon_bitmap.pixel_size);
|
|
|
| @@ -1878,24 +1729,21 @@ TEST_F(HistoryBackendTest, MergeFaviconPageURLInDB) {
|
| bitmap_data = new base::RefCountedBytes(data);
|
| backend_->MergeFavicon(page_url, icon_url1, FAVICON, bitmap_data, kTinySize);
|
|
|
| - // A new favicon bitmap should be created and favicon sizes should be set to
|
| - // the default.
|
| + // A new favicon bitmap should be created and the preexisting favicon bitmap
|
| + // ('b') should be expired.
|
| icon_mappings.clear();
|
| EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL(page_url,
|
| &icon_mappings));
|
| EXPECT_EQ(1u, icon_mappings.size());
|
| EXPECT_EQ(icon_url1, icon_mappings[0].icon_url);
|
|
|
| - favicon_sizes.clear();
|
| - EXPECT_TRUE(backend_->thumbnail_db_->GetFaviconHeader(
|
| - icon_mappings[0].icon_id, NULL, NULL, &favicon_sizes));
|
| - EXPECT_EQ(GetDefaultFaviconSizes(), favicon_sizes);
|
| -
|
| std::vector<FaviconBitmap> favicon_bitmaps;
|
| EXPECT_TRUE(GetSortedFaviconBitmaps(icon_mappings[0].icon_id,
|
| &favicon_bitmaps));
|
| + EXPECT_NE(base::Time(), favicon_bitmaps[0].last_updated);
|
| EXPECT_TRUE(BitmapDataEqual('c', favicon_bitmaps[0].bitmap_data));
|
| EXPECT_EQ(kTinySize, favicon_bitmaps[0].pixel_size);
|
| + EXPECT_EQ(base::Time(), favicon_bitmaps[1].last_updated);
|
| EXPECT_TRUE(BitmapDataEqual('b', favicon_bitmaps[1].bitmap_data));
|
| EXPECT_EQ(kSmallSize, favicon_bitmaps[1].pixel_size);
|
|
|
| @@ -1913,18 +1761,15 @@ TEST_F(HistoryBackendTest, MergeFaviconPageURLInDB) {
|
| EXPECT_EQ(1u, icon_mappings.size());
|
| EXPECT_EQ(icon_url2, icon_mappings[0].icon_url);
|
|
|
| - favicon_sizes.clear();
|
| - EXPECT_TRUE(backend_->thumbnail_db_->GetFaviconHeader(
|
| - icon_mappings[0].icon_id, NULL, NULL, &favicon_sizes));
|
| - EXPECT_EQ(GetDefaultFaviconSizes(), favicon_sizes);
|
| -
|
| favicon_bitmaps.clear();
|
| EXPECT_TRUE(GetSortedFaviconBitmaps(icon_mappings[0].icon_id,
|
| &favicon_bitmaps));
|
| + EXPECT_EQ(base::Time(), favicon_bitmaps[0].last_updated);
|
| EXPECT_TRUE(BitmapDataEqual('c', favicon_bitmaps[0].bitmap_data));
|
| EXPECT_EQ(kTinySize, favicon_bitmaps[0].pixel_size);
|
| // The favicon being merged should take precedence over the preexisting
|
| // favicon bitmaps.
|
| + EXPECT_NE(base::Time(), favicon_bitmaps[1].last_updated);
|
| EXPECT_TRUE(BitmapDataEqual('d', favicon_bitmaps[1].bitmap_data));
|
| EXPECT_EQ(kSmallSize, favicon_bitmaps[1].pixel_size);
|
|
|
| @@ -1940,15 +1785,11 @@ TEST_F(HistoryBackendTest, MergeFaviconIconURLMappedToDifferentPageURL) {
|
| GURL page_url2("http://news.google.com");
|
| GURL icon_url("http:/www.google.com/favicon.ico");
|
|
|
| - IconURLSizesMap icon_url_sizes;
|
| - icon_url_sizes[icon_url] = GetSizesSmallAndLarge();
|
| -
|
| std::vector<FaviconBitmapData> favicon_bitmap_data;
|
| GenerateFaviconBitmapData(icon_url, GetSizesSmall(),
|
| &favicon_bitmap_data);
|
|
|
| - backend_->SetFavicons(page_url1, FAVICON, favicon_bitmap_data,
|
| - icon_url_sizes);
|
| + backend_->SetFavicons(page_url1, FAVICON, favicon_bitmap_data);
|
|
|
| // Test initial state.
|
| std::vector<IconMapping> icon_mappings;
|
| @@ -1957,13 +1798,9 @@ TEST_F(HistoryBackendTest, MergeFaviconIconURLMappedToDifferentPageURL) {
|
| EXPECT_EQ(1u, icon_mappings.size());
|
| EXPECT_EQ(icon_url, icon_mappings[0].icon_url);
|
|
|
| - FaviconSizes favicon_sizes;
|
| - EXPECT_TRUE(backend_->thumbnail_db_->GetFaviconHeader(
|
| - icon_mappings[0].icon_id, NULL, NULL, &favicon_sizes));
|
| - EXPECT_EQ(GetSizesSmallAndLarge(), favicon_sizes);
|
| -
|
| FaviconBitmap favicon_bitmap;
|
| EXPECT_TRUE(GetOnlyFaviconBitmap(icon_mappings[0].icon_id, &favicon_bitmap));
|
| + EXPECT_NE(base::Time(), favicon_bitmap.last_updated);
|
| EXPECT_TRUE(BitmapDataEqual('a', favicon_bitmap.bitmap_data));
|
| EXPECT_EQ(kSmallSize, favicon_bitmap.pixel_size);
|
|
|
| @@ -1994,6 +1831,7 @@ TEST_F(HistoryBackendTest, MergeFaviconIconURLMappedToDifferentPageURL) {
|
| EXPECT_EQ(icon_url, icon_url_in_db);
|
|
|
| EXPECT_TRUE(GetOnlyFaviconBitmap(favicon_id, &favicon_bitmap));
|
| + EXPECT_NE(base::Time(), favicon_bitmap.last_updated);
|
| EXPECT_TRUE(BitmapDataEqual('b', favicon_bitmap.bitmap_data));
|
| EXPECT_EQ(kSmallSize, favicon_bitmap.pixel_size);
|
| }
|
| @@ -2039,16 +1877,12 @@ TEST_F(HistoryBackendTest, MergeFaviconShowsUpInGetFaviconsForURLResult) {
|
| GURL icon_url("http://www.google.com/favicon.ico");
|
| GURL merged_icon_url("http://wwww.google.com/favicon2.ico");
|
|
|
| - IconURLSizesMap icon_url_sizes;
|
| - icon_url_sizes[icon_url] = GetSizesSmallAndLarge();
|
| -
|
| std::vector<FaviconBitmapData> favicon_bitmap_data;
|
| GenerateFaviconBitmapData(icon_url, GetSizesSmallAndLarge(),
|
| &favicon_bitmap_data);
|
|
|
| // Set some preexisting favicons for |page_url|.
|
| - backend_->SetFavicons(page_url, FAVICON, favicon_bitmap_data,
|
| - icon_url_sizes);
|
| + backend_->SetFavicons(page_url, FAVICON, favicon_bitmap_data);
|
|
|
| // Merge small favicon.
|
| std::vector<unsigned char> data;
|
| @@ -2060,15 +1894,15 @@ TEST_F(HistoryBackendTest, MergeFaviconShowsUpInGetFaviconsForURLResult) {
|
|
|
| // Request favicon bitmaps for both 1x and 2x to simulate request done by
|
| // BookmarkModel::GetFavicon().
|
| - HistoryBackend::FaviconResults results;
|
| + std::vector<FaviconBitmapResult> bitmap_results;
|
| backend_->GetFaviconsForURL(page_url, FAVICON, kSmallSize.width(),
|
| - GetScaleFactors1x2x(), &results);
|
| + GetScaleFactors1x2x(), &bitmap_results);
|
|
|
| - EXPECT_EQ(2u, results.bitmap_results.size());
|
| - const FaviconBitmapResult& first_result = results.bitmap_results[0];
|
| + EXPECT_EQ(2u, bitmap_results.size());
|
| + const FaviconBitmapResult& first_result = bitmap_results[0];
|
| const FaviconBitmapResult& result =
|
| (first_result.pixel_size == kSmallSize) ? first_result
|
| - : results.bitmap_results[1];
|
| + : bitmap_results[1];
|
| EXPECT_TRUE(BitmapDataEqual('c', result.bitmap_data));
|
| }
|
|
|
| @@ -2082,33 +1916,25 @@ TEST_F(HistoryBackendTest, UpdateFaviconMappingsAndFetchMultipleIconTypes) {
|
| GURL icon_urlc("http://www.google.com/favicon3.ico");
|
|
|
| // |page_url1| is mapped to |icon_urla| which if of type TOUCH_ICON.
|
| - IconURLSizesMap icon_url_sizes;
|
| - icon_url_sizes[icon_urla] = GetSizesSmall();
|
| -
|
| std::vector<FaviconBitmapData> favicon_bitmap_data;
|
| GenerateFaviconBitmapData(icon_urla, GetSizesSmall(), &favicon_bitmap_data);
|
| - backend_->SetFavicons(page_url1, TOUCH_ICON, favicon_bitmap_data,
|
| - icon_url_sizes);
|
| + backend_->SetFavicons(page_url1, TOUCH_ICON, favicon_bitmap_data);
|
|
|
| // |page_url2| is mapped to |icon_urlb| and |icon_urlc| which are of type
|
| // TOUCH_PRECOMPOSED_ICON.
|
| - icon_url_sizes.clear();
|
| - icon_url_sizes[icon_urlb] = GetSizesSmall();
|
| - icon_url_sizes[icon_urlc] = GetSizesSmall();
|
| GenerateFaviconBitmapData(icon_urlb, GetSizesSmall(), icon_urlc,
|
| GetSizesSmall(), &favicon_bitmap_data);
|
| - backend_->SetFavicons(page_url2, TOUCH_PRECOMPOSED_ICON, favicon_bitmap_data,
|
| - icon_url_sizes);
|
| + backend_->SetFavicons(page_url2, TOUCH_PRECOMPOSED_ICON, favicon_bitmap_data);
|
|
|
| std::vector<GURL> icon_urls;
|
| icon_urls.push_back(icon_urla);
|
| icon_urls.push_back(icon_urlb);
|
| icon_urls.push_back(icon_urlc);
|
|
|
| - HistoryBackend::FaviconResults results;
|
| + std::vector<FaviconBitmapResult> bitmap_results;
|
| backend_->UpdateFaviconMappingsAndFetch(
|
| page_url3, icon_urls, (TOUCH_ICON | TOUCH_PRECOMPOSED_ICON),
|
| - kSmallSize.width(), GetScaleFactors1x2x(), &results);
|
| + kSmallSize.width(), GetScaleFactors1x2x(), &bitmap_results);
|
|
|
| // |page_url1| and |page_url2| should still be mapped to the same icon URLs.
|
| std::vector<IconMapping> icon_mappings;
|
| @@ -2143,12 +1969,9 @@ TEST_F(HistoryBackendTest, GetFaviconsFromDBEmpty) {
|
| const GURL page_url("http://www.google.com/");
|
|
|
| std::vector<FaviconBitmapResult> bitmap_results;
|
| - IconURLSizesMap icon_url_sizes;
|
| EXPECT_FALSE(backend_->GetFaviconsFromDB(page_url, FAVICON,
|
| - kSmallSize.width(), GetScaleFactors1x2x(), &bitmap_results,
|
| - &icon_url_sizes));
|
| + kSmallSize.width(), GetScaleFactors1x2x(), &bitmap_results));
|
| EXPECT_TRUE(bitmap_results.empty());
|
| - EXPECT_TRUE(icon_url_sizes.empty());
|
| }
|
|
|
| // Test the results of GetFaviconsFromDB() when there are matching favicons
|
| @@ -2157,47 +1980,35 @@ TEST_F(HistoryBackendTest, GetFaviconsFromDBNoFaviconBitmaps) {
|
| const GURL page_url("http://www.google.com/");
|
| const GURL icon_url("http://www.google.com/icon1");
|
|
|
| - IconURLSizesMap icon_url_sizes;
|
| - icon_url_sizes[icon_url] = GetSizesSmallAndLarge();
|
| -
|
| - // No favicon bitmaps.
|
| - std::vector<FaviconBitmapData> favicon_bitmap_data;
|
| -
|
| - backend_->SetFavicons(page_url, FAVICON, favicon_bitmap_data,
|
| - icon_url_sizes);
|
| + FaviconID icon_id = backend_->thumbnail_db_->AddFavicon(icon_url, FAVICON,
|
| + GetSizesSmallAndLarge());
|
| + EXPECT_NE(0, icon_id);
|
| + EXPECT_NE(0, backend_->thumbnail_db_->AddIconMapping(page_url, icon_id));
|
|
|
| std::vector<FaviconBitmapResult> bitmap_results_out;
|
| - IconURLSizesMap icon_url_sizes_out;
|
| - EXPECT_TRUE(backend_->GetFaviconsFromDB(page_url, FAVICON, kSmallSize.width(),
|
| - GetScaleFactors1x2x(), &bitmap_results_out, &icon_url_sizes_out));
|
| + EXPECT_FALSE(backend_->GetFaviconsFromDB(page_url, FAVICON,
|
| + kSmallSize.width(), GetScaleFactors1x2x(), &bitmap_results_out));
|
| EXPECT_TRUE(bitmap_results_out.empty());
|
| - EXPECT_EQ(icon_url_sizes, icon_url_sizes_out);
|
| }
|
|
|
| // Test that GetFaviconsFromDB() returns results for the bitmaps which most
|
| // closely match the passed in desired size and scale factors.
|
| TEST_F(HistoryBackendTest, GetFaviconsFromDBSelectClosestMatch) {
|
| const GURL page_url("http://www.google.com/");
|
| -
|
| const GURL icon_url("http://www.google.com/icon1");
|
| - IconURLSizesMap icon_url_sizes;
|
| - icon_url_sizes[icon_url] = GetSizesTinySmallAndLarge();
|
|
|
| std::vector<FaviconBitmapData> favicon_bitmap_data;
|
| GenerateFaviconBitmapData(icon_url, GetSizesTinySmallAndLarge(),
|
| &favicon_bitmap_data);
|
|
|
| - backend_->SetFavicons(page_url, FAVICON, favicon_bitmap_data,
|
| - icon_url_sizes);
|
| + backend_->SetFavicons(page_url, FAVICON, favicon_bitmap_data);
|
|
|
| std::vector<FaviconBitmapResult> bitmap_results_out;
|
| - IconURLSizesMap icon_url_sizes_out;
|
| EXPECT_TRUE(backend_->GetFaviconsFromDB(page_url, FAVICON, kSmallSize.width(),
|
| - GetScaleFactors1x2x(), &bitmap_results_out, &icon_url_sizes_out));
|
| -
|
| - // The bitmap data for the 1x and 2x bitmaps should be returned as their sizes
|
| - // match exactly.
|
| + GetScaleFactors1x2x(), &bitmap_results_out));
|
|
|
| + // The bitmap data for the small and large bitmaps should be returned as their
|
| + // sizes match exactly.
|
| EXPECT_EQ(2u, bitmap_results_out.size());
|
| // No required order for results.
|
| if (bitmap_results_out[0].pixel_size == kLargeSize) {
|
| @@ -2217,8 +2028,6 @@ TEST_F(HistoryBackendTest, GetFaviconsFromDBSelectClosestMatch) {
|
| EXPECT_EQ(kLargeSize, bitmap_results_out[1].pixel_size);
|
| EXPECT_EQ(icon_url, bitmap_results_out[1].icon_url);
|
| EXPECT_EQ(FAVICON, bitmap_results_out[1].icon_type);
|
| -
|
| - EXPECT_EQ(icon_url_sizes, icon_url_sizes_out);
|
| }
|
|
|
| // Test that GetFaviconsFromDB() returns results from the icon URL whose
|
| @@ -2228,29 +2037,22 @@ TEST_F(HistoryBackendTest, GetFaviconsFromDBSingleIconURL) {
|
|
|
| const GURL icon_url1("http://www.google.com/icon1");
|
| const GURL icon_url2("http://www.google.com/icon2");
|
| - IconURLSizesMap icon_url_sizes;
|
| - icon_url_sizes[icon_url1] = GetSizesSmall();
|
| - icon_url_sizes[icon_url2] = GetSizesSmallAndLarge();
|
|
|
| std::vector<FaviconBitmapData> favicon_bitmap_data;
|
| GenerateFaviconBitmapData(icon_url1, GetSizesSmall(), icon_url2,
|
| GetSizesLarge(), &favicon_bitmap_data);
|
|
|
| - backend_->SetFavicons(page_url, FAVICON, favicon_bitmap_data,
|
| - icon_url_sizes);
|
| + backend_->SetFavicons(page_url, FAVICON, favicon_bitmap_data);
|
|
|
| std::vector<FaviconBitmapResult> bitmap_results_out;
|
| - IconURLSizesMap icon_url_sizes_out;
|
| EXPECT_TRUE(backend_->GetFaviconsFromDB(page_url, FAVICON, kSmallSize.width(),
|
| - GetScaleFactors1x2x(), &bitmap_results_out, &icon_url_sizes_out));
|
| + GetScaleFactors1x2x(), &bitmap_results_out));
|
|
|
| // The results should have results for the icon URL with the large bitmap as
|
| // downscaling is preferred to upscaling.
|
| EXPECT_EQ(1u, bitmap_results_out.size());
|
| EXPECT_EQ(kLargeSize, bitmap_results_out[0].pixel_size);
|
| EXPECT_EQ(icon_url2, bitmap_results_out[0].icon_url);
|
| -
|
| - EXPECT_EQ(icon_url_sizes, icon_url_sizes_out);
|
| }
|
|
|
| // Test the results of GetFaviconsFromDB() when called with different
|
| @@ -2260,39 +2062,28 @@ TEST_F(HistoryBackendTest, GetFaviconsFromDBIconType) {
|
| const GURL icon_url1("http://www.google.com/icon1.png");
|
| const GURL icon_url2("http://www.google.com/icon2.png");
|
|
|
| - IconURLSizesMap icon_url_sizes;
|
| - icon_url_sizes[icon_url1] = GetSizesSmall();
|
| -
|
| std::vector<FaviconBitmapData> favicon_bitmap_data;
|
| GenerateFaviconBitmapData(icon_url1, GetSizesSmall(), &favicon_bitmap_data);
|
| - backend_->SetFavicons(page_url, FAVICON, favicon_bitmap_data,
|
| - icon_url_sizes);
|
| + backend_->SetFavicons(page_url, FAVICON, favicon_bitmap_data);
|
|
|
| - IconURLSizesMap touch_icon_url_sizes;
|
| - touch_icon_url_sizes[icon_url2] = GetSizesSmall();
|
| GenerateFaviconBitmapData(icon_url2, GetSizesSmall(), &favicon_bitmap_data);
|
| - backend_->SetFavicons(page_url, TOUCH_ICON, favicon_bitmap_data,
|
| - touch_icon_url_sizes);
|
| + backend_->SetFavicons(page_url, TOUCH_ICON, favicon_bitmap_data);
|
|
|
| std::vector<FaviconBitmapResult> bitmap_results_out;
|
| - IconURLSizesMap icon_url_sizes_out;
|
| EXPECT_TRUE(backend_->GetFaviconsFromDB(page_url, FAVICON,
|
| - kSmallSize.width(), GetScaleFactors1x2x(), &bitmap_results_out,
|
| - &icon_url_sizes_out));
|
| + kSmallSize.width(), GetScaleFactors1x2x(), &bitmap_results_out));
|
|
|
| EXPECT_EQ(1u, bitmap_results_out.size());
|
| EXPECT_EQ(FAVICON, bitmap_results_out[0].icon_type);
|
| - EXPECT_EQ(icon_url_sizes, icon_url_sizes_out);
|
| + EXPECT_EQ(icon_url1, bitmap_results_out[0].icon_url);
|
|
|
| bitmap_results_out.clear();
|
| - icon_url_sizes_out.clear();
|
| EXPECT_TRUE(backend_->GetFaviconsFromDB(page_url, TOUCH_ICON,
|
| - kSmallSize.width(), GetScaleFactors1x2x(), &bitmap_results_out,
|
| - &icon_url_sizes_out));
|
| + kSmallSize.width(), GetScaleFactors1x2x(), &bitmap_results_out));
|
|
|
| EXPECT_EQ(1u, bitmap_results_out.size());
|
| EXPECT_EQ(TOUCH_ICON, bitmap_results_out[0].icon_type);
|
| - EXPECT_EQ(touch_icon_url_sizes, icon_url_sizes_out);
|
| + EXPECT_EQ(icon_url2, bitmap_results_out[0].icon_url);
|
| }
|
|
|
| // Test that GetFaviconsFromDB() correctly sets the expired flag for bitmap
|
| @@ -2312,10 +2103,8 @@ TEST_F(HistoryBackendTest, GetFaviconsFromDBExpired) {
|
| EXPECT_NE(0, backend_->thumbnail_db_->AddIconMapping(page_url, icon_id));
|
|
|
| std::vector<FaviconBitmapResult> bitmap_results_out;
|
| - IconURLSizesMap icon_url_sizes_out;
|
| EXPECT_TRUE(backend_->GetFaviconsFromDB(page_url, FAVICON,
|
| - kSmallSize.width(), GetScaleFactors1x2x(), &bitmap_results_out,
|
| - &icon_url_sizes_out));
|
| + kSmallSize.width(), GetScaleFactors1x2x(), &bitmap_results_out));
|
|
|
| EXPECT_EQ(1u, bitmap_results_out.size());
|
| EXPECT_TRUE(bitmap_results_out[0].expired);
|
| @@ -2327,16 +2116,13 @@ TEST_F(HistoryBackendTest, UpdateFaviconMappingsAndFetchNoDB) {
|
| // Make the thumbnail database invalid.
|
| backend_->thumbnail_db_.reset();
|
|
|
| - HistoryBackend::FaviconResults results;
|
| - results.bitmap_results.push_back(FaviconBitmapResult());
|
| - results.size_map[GURL()] = FaviconSizes();
|
| + std::vector<FaviconBitmapResult> bitmap_results;
|
|
|
| backend_->UpdateFaviconMappingsAndFetch(
|
| GURL(), std::vector<GURL>(), FAVICON, kSmallSize.width(),
|
| - GetScaleFactors1x2x(), &results);
|
| + GetScaleFactors1x2x(), &bitmap_results);
|
|
|
| - EXPECT_TRUE(results.bitmap_results.empty());
|
| - EXPECT_TRUE(results.size_map.empty());
|
| + EXPECT_TRUE(bitmap_results.empty());
|
| }
|
|
|
| TEST_F(HistoryBackendTest, CloneFaviconIsRestrictedToSameDomain) {
|
| @@ -2346,39 +2132,30 @@ TEST_F(HistoryBackendTest, CloneFaviconIsRestrictedToSameDomain) {
|
| const GURL icon_url("http://www.google.com/icon.png");
|
|
|
| // Add a favicon
|
| - IconURLSizesMap icon_url_sizes;
|
| - icon_url_sizes[icon_url] = GetSizesSmall();
|
| -
|
| std::vector<FaviconBitmapData> favicon_bitmap_data;
|
| GenerateFaviconBitmapData(icon_url, GetSizesSmall(), &favicon_bitmap_data);
|
| - backend_->SetFavicons(url, FAVICON, favicon_bitmap_data, icon_url_sizes);
|
| + backend_->SetFavicons(url, FAVICON, favicon_bitmap_data);
|
| EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL(
|
| url, FAVICON, NULL));
|
|
|
| // Validate starting state.
|
| std::vector<FaviconBitmapResult> bitmap_results_out;
|
| - IconURLSizesMap icon_url_sizes_out;
|
| EXPECT_TRUE(backend_->GetFaviconsFromDB(url, FAVICON,
|
| - kSmallSize.width(), GetScaleFactors1x2x(), &bitmap_results_out,
|
| - &icon_url_sizes_out));
|
| + kSmallSize.width(), GetScaleFactors1x2x(), &bitmap_results_out));
|
| EXPECT_FALSE(backend_->GetFaviconsFromDB(same_domain_url, FAVICON,
|
| - kSmallSize.width(), GetScaleFactors1x2x(), &bitmap_results_out,
|
| - &icon_url_sizes_out));
|
| + kSmallSize.width(), GetScaleFactors1x2x(), &bitmap_results_out));
|
| EXPECT_FALSE(backend_->GetFaviconsFromDB(foreign_domain_url, FAVICON,
|
| - kSmallSize.width(), GetScaleFactors1x2x(), &bitmap_results_out,
|
| - &icon_url_sizes_out));
|
| + kSmallSize.width(), GetScaleFactors1x2x(), &bitmap_results_out));
|
|
|
| // Same-domain cloning should work.
|
| backend_->CloneFavicons(url, same_domain_url);
|
| EXPECT_TRUE(backend_->GetFaviconsFromDB(same_domain_url, FAVICON,
|
| - kSmallSize.width(), GetScaleFactors1x2x(), &bitmap_results_out,
|
| - &icon_url_sizes_out));
|
| + kSmallSize.width(), GetScaleFactors1x2x(), &bitmap_results_out));
|
|
|
| // Foreign-domain cloning is forbidden.
|
| backend_->CloneFavicons(url, foreign_domain_url);
|
| EXPECT_FALSE(backend_->GetFaviconsFromDB(foreign_domain_url, FAVICON,
|
| - kSmallSize.width(), GetScaleFactors1x2x(), &bitmap_results_out,
|
| - &icon_url_sizes_out));
|
| + kSmallSize.width(), GetScaleFactors1x2x(), &bitmap_results_out));
|
| }
|
|
|
| TEST_F(HistoryBackendTest, QueryFilteredURLs) {
|
|
|