| 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 fa5f962d73328b5d7b7bb1853b731ea31c9dbf1a..010e8f51c2abb4eb2aae29ba9020c3cf2db1f141 100644
|
| --- a/chrome/browser/history/history_backend_unittest.cc
|
| +++ b/chrome/browser/history/history_backend_unittest.cc
|
| @@ -38,6 +38,8 @@
|
| #include "content/public/test/test_browser_thread.h"
|
| #include "testing/gmock/include/gmock/gmock.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| +#include "third_party/skia/include/core/SkBitmap.h"
|
| +#include "ui/gfx/codec/png_codec.h"
|
| #include "url/gurl.h"
|
|
|
| using base::Time;
|
| @@ -266,20 +268,6 @@ class HistoryBackendTest : public HistoryBackendTestBase {
|
| return visits[0].transition;
|
| }
|
|
|
| - // Returns a vector with the small edge size.
|
| - const std::vector<int> GetEdgeSizesSmall() {
|
| - std::vector<int> sizes_small;
|
| - sizes_small.push_back(kSmallEdgeSize);
|
| - return sizes_small;
|
| - }
|
| -
|
| - // Returns a vector with the large edge size.
|
| - const std::vector<int> GetEdgeSizesLarge() {
|
| - std::vector<int> sizes_large;
|
| - sizes_large.push_back(kLargeEdgeSize);
|
| - return sizes_large;
|
| - }
|
| -
|
| // Returns a vector with the small and large edge sizes.
|
| const std::vector<int> GetEdgeSizesSmallAndLarge() {
|
| std::vector<int> sizes_small_and_large;
|
| @@ -288,15 +276,6 @@ class HistoryBackendTest : public HistoryBackendTestBase {
|
| return sizes_small_and_large;
|
| }
|
|
|
| - // Returns a vector with the tiny, small, and large edge sizes.
|
| - const std::vector<int> GetEdgeSizesTinySmallAndLarge() {
|
| - std::vector<int> sizes_tiny_small_and_large;
|
| - sizes_tiny_small_and_large.push_back(kTinyEdgeSize);
|
| - sizes_tiny_small_and_large.push_back(kSmallEdgeSize);
|
| - sizes_tiny_small_and_large.push_back(kLargeEdgeSize);
|
| - return sizes_tiny_small_and_large;
|
| - }
|
| -
|
| // Returns the number of icon mappings of |icon_type| to |page_url|.
|
| size_t NumIconMappingsForPageURL(const GURL& page_url,
|
| favicon_base::IconType icon_type) {
|
| @@ -345,53 +324,12 @@ class HistoryBackendTest : public HistoryBackendTestBase {
|
| return true;
|
| }
|
|
|
| - // Generates |favicon_bitmap_data| with entries for the icon_urls and sizes
|
| - // specified. The bitmap_data for entries are lowercase letters of the
|
| - // alphabet starting at 'a' for the entry at index 0.
|
| - void GenerateFaviconBitmapData(
|
| - const GURL& icon_url1,
|
| - const std::vector<int>& icon_url1_sizes,
|
| - std::vector<favicon_base::FaviconRawBitmapData>* favicon_bitmap_data) {
|
| - GenerateFaviconBitmapData(icon_url1, icon_url1_sizes, GURL(),
|
| - std::vector<int>(), favicon_bitmap_data);
|
| - }
|
| -
|
| - void GenerateFaviconBitmapData(
|
| - const GURL& icon_url1,
|
| - const std::vector<int>& icon_url1_sizes,
|
| - const GURL& icon_url2,
|
| - const std::vector<int>& icon_url2_sizes,
|
| - std::vector<favicon_base::FaviconRawBitmapData>* favicon_bitmap_data) {
|
| - favicon_bitmap_data->clear();
|
| -
|
| - char bitmap_char = 'a';
|
| - for (size_t i = 0; i < icon_url1_sizes.size(); ++i) {
|
| - std::vector<unsigned char> data;
|
| - data.push_back(bitmap_char);
|
| - favicon_base::FaviconRawBitmapData bitmap_data_element;
|
| - bitmap_data_element.bitmap_data =
|
| - base::RefCountedBytes::TakeVector(&data);
|
| - bitmap_data_element.pixel_size =
|
| - gfx::Size(icon_url1_sizes[i], icon_url1_sizes[i]);
|
| - bitmap_data_element.icon_url = icon_url1;
|
| - favicon_bitmap_data->push_back(bitmap_data_element);
|
| -
|
| - ++bitmap_char;
|
| - }
|
| -
|
| - for (size_t i = 0; i < icon_url2_sizes.size(); ++i) {
|
| - std::vector<unsigned char> data;
|
| - data.push_back(bitmap_char);
|
| - favicon_base::FaviconRawBitmapData bitmap_data_element;
|
| - bitmap_data_element.bitmap_data =
|
| - base::RefCountedBytes::TakeVector(&data);
|
| - bitmap_data_element.pixel_size =
|
| - gfx::Size(icon_url2_sizes[i], icon_url2_sizes[i]);
|
| - bitmap_data_element.icon_url = icon_url2;
|
| - favicon_bitmap_data->push_back(bitmap_data_element);
|
| -
|
| - ++bitmap_char;
|
| - }
|
| + // Creates an |edge_size|x|edge_size| bitmap of |color|.
|
| + SkBitmap CreateBitmap(SkColor color, int edge_size) {
|
| + SkBitmap bitmap;
|
| + bitmap.allocN32Pixels(edge_size, edge_size);
|
| + bitmap.eraseColor(color);
|
| + return bitmap;
|
| }
|
|
|
| // Returns true if |bitmap_data| is equal to |expected_data|.
|
| @@ -402,6 +340,17 @@ class HistoryBackendTest : public HistoryBackendTestBase {
|
| *bitmap_data->front() == expected_data;
|
| }
|
|
|
| + // Returns true if |bitmap_data| is of |color|.
|
| + bool BitmapColorEqual(SkColor expected_color,
|
| + scoped_refptr<base::RefCountedMemory> bitmap_data) {
|
| + SkBitmap bitmap;
|
| + if (!gfx::PNGCodec::Decode(
|
| + bitmap_data->front(), bitmap_data->size(), &bitmap))
|
| + return false;
|
| + SkAutoLockPixels bitmap_lock(bitmap);
|
| + return expected_color == bitmap.getColor(0, 0);
|
| + }
|
| +
|
| private:
|
| DISALLOW_COPY_AND_ASSIGN(HistoryBackendTest);
|
| };
|
| @@ -1571,35 +1520,27 @@ TEST_F(HistoryBackendTest, SetFaviconMappingsForPageAndRedirects) {
|
|
|
| const GURL icon_url1("http://www.google.com/icon");
|
| const GURL icon_url2("http://www.google.com/icon2");
|
| + std::vector<SkBitmap> bitmaps;
|
| + bitmaps.push_back(CreateBitmap(SK_ColorBLUE, kSmallEdgeSize));
|
| + bitmaps.push_back(CreateBitmap(SK_ColorRED, kLargeEdgeSize));
|
|
|
| - // Generate bitmap data for a page with two favicons.
|
| - std::vector<favicon_base::FaviconRawBitmapData> two_favicon_bitmap_data;
|
| - GenerateFaviconBitmapData(icon_url1, GetEdgeSizesSmallAndLarge(),
|
| - icon_url2, GetEdgeSizesSmallAndLarge(), &two_favicon_bitmap_data);
|
| -
|
| - // Generate bitmap data for a page with a single favicon.
|
| - std::vector<favicon_base::FaviconRawBitmapData> one_favicon_bitmap_data;
|
| - GenerateFaviconBitmapData(icon_url1, GetEdgeSizesSmallAndLarge(),
|
| - &one_favicon_bitmap_data);
|
| -
|
| - // Add two favicons
|
| - backend_->SetFavicons(url1, favicon_base::FAVICON, two_favicon_bitmap_data);
|
| - EXPECT_EQ(2u, NumIconMappingsForPageURL(url1, favicon_base::FAVICON));
|
| - EXPECT_EQ(2u, NumIconMappingsForPageURL(url2, favicon_base::FAVICON));
|
| + // Add a favicon.
|
| + backend_->SetFavicon(url1, favicon_base::FAVICON, icon_url1, bitmaps);
|
| + EXPECT_EQ(1u, NumIconMappingsForPageURL(url1, favicon_base::FAVICON));
|
| + EXPECT_EQ(1u, NumIconMappingsForPageURL(url2, favicon_base::FAVICON));
|
|
|
| // Add one touch_icon
|
| - backend_->SetFavicons(
|
| - url1, favicon_base::TOUCH_ICON, one_favicon_bitmap_data);
|
| + backend_->SetFavicon(url1, favicon_base::TOUCH_ICON, icon_url1, bitmaps);
|
| EXPECT_EQ(1u, NumIconMappingsForPageURL(url1, favicon_base::TOUCH_ICON));
|
| EXPECT_EQ(1u, NumIconMappingsForPageURL(url2, favicon_base::TOUCH_ICON));
|
| - EXPECT_EQ(2u, NumIconMappingsForPageURL(url1, favicon_base::FAVICON));
|
| + EXPECT_EQ(1u, NumIconMappingsForPageURL(url1, favicon_base::FAVICON));
|
|
|
| // Add one TOUCH_PRECOMPOSED_ICON
|
| - backend_->SetFavicons(
|
| - url1, favicon_base::TOUCH_PRECOMPOSED_ICON, one_favicon_bitmap_data);
|
| + backend_->SetFavicon(
|
| + url1, favicon_base::TOUCH_PRECOMPOSED_ICON, icon_url1, bitmaps);
|
| // The touch_icon was replaced.
|
| EXPECT_EQ(0u, NumIconMappingsForPageURL(url1, favicon_base::TOUCH_ICON));
|
| - EXPECT_EQ(2u, NumIconMappingsForPageURL(url1, favicon_base::FAVICON));
|
| + EXPECT_EQ(1u, NumIconMappingsForPageURL(url1, favicon_base::FAVICON));
|
| EXPECT_EQ(
|
| 1u,
|
| NumIconMappingsForPageURL(url1, favicon_base::TOUCH_PRECOMPOSED_ICON));
|
| @@ -1608,38 +1549,32 @@ TEST_F(HistoryBackendTest, SetFaviconMappingsForPageAndRedirects) {
|
| NumIconMappingsForPageURL(url2, favicon_base::TOUCH_PRECOMPOSED_ICON));
|
|
|
| // Add a touch_icon.
|
| - backend_->SetFavicons(
|
| - url1, favicon_base::TOUCH_ICON, one_favicon_bitmap_data);
|
| + backend_->SetFavicon(url1, favicon_base::TOUCH_ICON, icon_url1, bitmaps);
|
| EXPECT_EQ(1u, NumIconMappingsForPageURL(url1, favicon_base::TOUCH_ICON));
|
| - EXPECT_EQ(2u, NumIconMappingsForPageURL(url1, favicon_base::FAVICON));
|
| + EXPECT_EQ(1u, NumIconMappingsForPageURL(url1, favicon_base::FAVICON));
|
| // The TOUCH_PRECOMPOSED_ICON was replaced.
|
| EXPECT_EQ(
|
| 0u,
|
| NumIconMappingsForPageURL(url1, favicon_base::TOUCH_PRECOMPOSED_ICON));
|
|
|
| - // Add a single favicon.
|
| - backend_->SetFavicons(url1, favicon_base::FAVICON, one_favicon_bitmap_data);
|
| + // Add a different favicon.
|
| + backend_->SetFavicon(url1, favicon_base::FAVICON, icon_url2, bitmaps);
|
| EXPECT_EQ(1u, NumIconMappingsForPageURL(url1, favicon_base::TOUCH_ICON));
|
| EXPECT_EQ(1u, NumIconMappingsForPageURL(url1, favicon_base::FAVICON));
|
| EXPECT_EQ(1u, NumIconMappingsForPageURL(url2, favicon_base::FAVICON));
|
| -
|
| - // Add two favicons.
|
| - backend_->SetFavicons(url1, favicon_base::FAVICON, two_favicon_bitmap_data);
|
| - EXPECT_EQ(1u, NumIconMappingsForPageURL(url1, favicon_base::TOUCH_ICON));
|
| - EXPECT_EQ(2u, NumIconMappingsForPageURL(url1, favicon_base::FAVICON));
|
| }
|
|
|
| // Test that there is no churn in icon mappings from calling
|
| -// SetFavicons() twice with the same |favicon_bitmap_data| parameter.
|
| +// SetFavicon() twice with the same |bitmaps| parameter.
|
| TEST_F(HistoryBackendTest, SetFaviconMappingsForPageDuplicates) {
|
| const GURL url("http://www.google.com/");
|
| const GURL icon_url("http://www.google.com/icon");
|
|
|
| - std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data;
|
| - GenerateFaviconBitmapData(icon_url, GetEdgeSizesSmallAndLarge(),
|
| - &favicon_bitmap_data);
|
| + std::vector<SkBitmap> bitmaps;
|
| + bitmaps.push_back(CreateBitmap(SK_ColorBLUE, kSmallEdgeSize));
|
| + bitmaps.push_back(CreateBitmap(SK_ColorRED, kLargeEdgeSize));
|
|
|
| - backend_->SetFavicons(url, favicon_base::FAVICON, favicon_bitmap_data);
|
| + backend_->SetFavicon(url, favicon_base::FAVICON, icon_url, bitmaps);
|
|
|
| std::vector<IconMapping> icon_mappings;
|
| EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL(
|
| @@ -1647,7 +1582,7 @@ TEST_F(HistoryBackendTest, SetFaviconMappingsForPageDuplicates) {
|
| EXPECT_EQ(1u, icon_mappings.size());
|
| IconMappingID mapping_id = icon_mappings[0].mapping_id;
|
|
|
| - backend_->SetFavicons(url, favicon_base::FAVICON, favicon_bitmap_data);
|
| + backend_->SetFavicon(url, favicon_base::FAVICON, icon_url, bitmaps);
|
|
|
| icon_mappings.clear();
|
| EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL(
|
| @@ -1659,17 +1594,17 @@ TEST_F(HistoryBackendTest, SetFaviconMappingsForPageDuplicates) {
|
| EXPECT_EQ(mapping_id, icon_mappings[0].mapping_id);
|
| }
|
|
|
| -// Test that calling SetFavicons() with FaviconBitmapData of different pixel
|
| +// Test that calling SetFavicon() with FaviconBitmapData of different pixel
|
| // sizes than the initially passed in FaviconBitmapData deletes the no longer
|
| // used favicon bitmaps.
|
| -TEST_F(HistoryBackendTest, SetFaviconsDeleteBitmaps) {
|
| +TEST_F(HistoryBackendTest, SetFaviconDeleteBitmaps) {
|
| const GURL page_url("http://www.google.com/");
|
| const GURL icon_url("http://www.google.com/icon");
|
|
|
| - std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data;
|
| - GenerateFaviconBitmapData(icon_url, GetEdgeSizesSmallAndLarge(),
|
| - &favicon_bitmap_data);
|
| - backend_->SetFavicons(page_url, favicon_base::FAVICON, favicon_bitmap_data);
|
| + std::vector<SkBitmap> bitmaps;
|
| + bitmaps.push_back(CreateBitmap(SK_ColorBLUE, kSmallEdgeSize));
|
| + bitmaps.push_back(CreateBitmap(SK_ColorRED, kLargeEdgeSize));
|
| + backend_->SetFavicon(page_url, favicon_base::FAVICON, icon_url, bitmaps);
|
|
|
| // Test initial state.
|
| std::vector<IconMapping> icon_mappings;
|
| @@ -1684,18 +1619,18 @@ TEST_F(HistoryBackendTest, SetFaviconsDeleteBitmaps) {
|
| EXPECT_EQ(2u, favicon_bitmaps.size());
|
| 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_TRUE(BitmapColorEqual(SK_ColorBLUE, favicon_bitmaps[0].bitmap_data));
|
| EXPECT_EQ(kSmallSize, favicon_bitmaps[0].pixel_size);
|
| 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_TRUE(BitmapColorEqual(SK_ColorRED, favicon_bitmaps[1].bitmap_data));
|
| EXPECT_EQ(kLargeSize, favicon_bitmaps[1].pixel_size);
|
|
|
| - // Call SetFavicons() with bitmap data for only the large bitmap. Check that
|
| + // Call SetFavicon() with bitmap data for only the large bitmap. Check that
|
| // the small bitmap is in fact deleted.
|
| - GenerateFaviconBitmapData(icon_url, GetEdgeSizesLarge(),
|
| - &favicon_bitmap_data);
|
| - backend_->SetFavicons(page_url, favicon_base::FAVICON, favicon_bitmap_data);
|
| + bitmaps.clear();
|
| + bitmaps.push_back(CreateBitmap(SK_ColorWHITE, kLargeEdgeSize));
|
| + backend_->SetFavicon(page_url, favicon_base::FAVICON, icon_url, bitmaps);
|
|
|
| scoped_refptr<base::RefCountedMemory> bitmap_data_out;
|
| gfx::Size pixel_size_out;
|
| @@ -1703,7 +1638,7 @@ TEST_F(HistoryBackendTest, SetFaviconsDeleteBitmaps) {
|
| 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_TRUE(BitmapColorEqual(SK_ColorWHITE, bitmap_data_out));
|
| EXPECT_EQ(kLargeSize, pixel_size_out);
|
|
|
| icon_mappings.clear();
|
| @@ -1712,39 +1647,19 @@ TEST_F(HistoryBackendTest, SetFaviconsDeleteBitmaps) {
|
| EXPECT_EQ(1u, icon_mappings.size());
|
| EXPECT_EQ(favicon_id, icon_mappings[0].icon_id);
|
|
|
| - // Call SetFavicons() with no bitmap data. Check that the bitmaps and icon
|
| - // mappings are deleted.
|
| - favicon_bitmap_data.clear();
|
| - backend_->SetFavicons(page_url, favicon_base::FAVICON, favicon_bitmap_data);
|
| -
|
| - 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));
|
| -
|
| - // Notifications should have been broadcast for each call to SetFavicons().
|
| - EXPECT_EQ(3, num_broadcasted_notifications());
|
| + // Notifications should have been broadcast for each call to SetFavicon().
|
| + EXPECT_EQ(2, num_broadcasted_notifications());
|
| }
|
|
|
| -// Test updating a single favicon bitmap's data via SetFavicons.
|
| -TEST_F(HistoryBackendTest, SetFaviconsReplaceBitmapData) {
|
| +// Test updating a single favicon bitmap's data via SetFavicon.
|
| +TEST_F(HistoryBackendTest, SetFaviconReplaceBitmapData) {
|
| const GURL page_url("http://www.google.com/");
|
| const GURL icon_url("http://www.google.com/icon");
|
| -
|
| - std::vector<unsigned char> data_initial;
|
| - data_initial.push_back('a');
|
| -
|
| - favicon_base::FaviconRawBitmapData bitmap_data_element;
|
| - bitmap_data_element.bitmap_data =
|
| - base::RefCountedBytes::TakeVector(&data_initial);
|
| - bitmap_data_element.pixel_size = kSmallSize;
|
| - bitmap_data_element.icon_url = icon_url;
|
| - std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data;
|
| - favicon_bitmap_data.push_back(bitmap_data_element);
|
| + std::vector<SkBitmap> bitmaps;
|
| + bitmaps.push_back(CreateBitmap(SK_ColorBLUE, kSmallEdgeSize));
|
|
|
| // Add bitmap to the database.
|
| - backend_->SetFavicons(page_url, favicon_base::FAVICON, favicon_bitmap_data);
|
| + backend_->SetFavicon(page_url, favicon_base::FAVICON, icon_url, bitmaps);
|
|
|
| favicon_base::FaviconID original_favicon_id =
|
| backend_->thumbnail_db_->GetFaviconIDForFaviconURL(
|
| @@ -1753,15 +1668,14 @@ TEST_F(HistoryBackendTest, SetFaviconsReplaceBitmapData) {
|
| FaviconBitmap original_favicon_bitmap;
|
| EXPECT_TRUE(
|
| GetOnlyFaviconBitmap(original_favicon_id, &original_favicon_bitmap));
|
| - EXPECT_TRUE(BitmapDataEqual('a', original_favicon_bitmap.bitmap_data));
|
| + EXPECT_TRUE(
|
| + BitmapColorEqual(SK_ColorBLUE, original_favicon_bitmap.bitmap_data));
|
|
|
| EXPECT_EQ(1, num_broadcasted_notifications());
|
|
|
| - // Call SetFavicons() with completely identical data.
|
| - 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_base::FAVICON, favicon_bitmap_data);
|
| + // Call SetFavicon() with completely identical data.
|
| + bitmaps[0] = CreateBitmap(SK_ColorBLUE, kSmallEdgeSize);
|
| + backend_->SetFavicon(page_url, favicon_base::FAVICON, icon_url, bitmaps);
|
|
|
| favicon_base::FaviconID updated_favicon_id =
|
| backend_->thumbnail_db_->GetFaviconIDForFaviconURL(
|
| @@ -1770,23 +1684,24 @@ TEST_F(HistoryBackendTest, SetFaviconsReplaceBitmapData) {
|
| FaviconBitmap updated_favicon_bitmap;
|
| EXPECT_TRUE(
|
| GetOnlyFaviconBitmap(updated_favicon_id, &updated_favicon_bitmap));
|
| - EXPECT_TRUE(BitmapDataEqual('a', updated_favicon_bitmap.bitmap_data));
|
| + EXPECT_TRUE(
|
| + BitmapColorEqual(SK_ColorBLUE, updated_favicon_bitmap.bitmap_data));
|
|
|
| // Because the bitmap data is byte equivalent, no notifications should have
|
| // been broadcasted.
|
| EXPECT_EQ(1, num_broadcasted_notifications());
|
|
|
| - // 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_base::FAVICON, favicon_bitmap_data);
|
| + // Call SetFavicon() with a different bitmap of the same size.
|
| + bitmaps[0] = CreateBitmap(SK_ColorWHITE, kSmallEdgeSize);
|
| + backend_->SetFavicon(page_url, favicon_base::FAVICON, icon_url, bitmaps);
|
|
|
| updated_favicon_id = backend_->thumbnail_db_->GetFaviconIDForFaviconURL(
|
| icon_url, favicon_base::FAVICON, NULL);
|
| EXPECT_NE(0, updated_favicon_id);
|
| EXPECT_TRUE(
|
| GetOnlyFaviconBitmap(updated_favicon_id, &updated_favicon_bitmap));
|
| - EXPECT_TRUE(BitmapDataEqual('b', updated_favicon_bitmap.bitmap_data));
|
| + EXPECT_TRUE(
|
| + BitmapColorEqual(SK_ColorWHITE, updated_favicon_bitmap.bitmap_data));
|
|
|
| // There should be no churn in FaviconIDs or FaviconBitmapIds even though
|
| // the bitmap data changed.
|
| @@ -1801,17 +1716,16 @@ TEST_F(HistoryBackendTest, SetFaviconsReplaceBitmapData) {
|
|
|
| // Test that if two pages share the same FaviconID, changing the favicon for
|
| // one page does not affect the other.
|
| -TEST_F(HistoryBackendTest, SetFaviconsSameFaviconURLForTwoPages) {
|
| +TEST_F(HistoryBackendTest, SetFaviconSameFaviconURLForTwoPages) {
|
| GURL icon_url("http://www.google.com/favicon.ico");
|
| GURL icon_url_new("http://www.google.com/favicon2.ico");
|
| GURL page_url1("http://www.google.com");
|
| GURL page_url2("http://www.google.ca");
|
| + std::vector<SkBitmap> bitmaps;
|
| + bitmaps.push_back(CreateBitmap(SK_ColorBLUE, kSmallEdgeSize));
|
| + bitmaps.push_back(CreateBitmap(SK_ColorRED, kLargeEdgeSize));
|
|
|
| - std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data;
|
| - GenerateFaviconBitmapData(icon_url, GetEdgeSizesSmallAndLarge(),
|
| - &favicon_bitmap_data);
|
| -
|
| - backend_->SetFavicons(page_url1, favicon_base::FAVICON, favicon_bitmap_data);
|
| + backend_->SetFavicon(page_url1, favicon_base::FAVICON, icon_url, bitmaps);
|
|
|
| std::vector<GURL> icon_urls;
|
| icon_urls.push_back(icon_url);
|
| @@ -1838,9 +1752,9 @@ TEST_F(HistoryBackendTest, SetFaviconsSameFaviconURLForTwoPages) {
|
| EXPECT_EQ(favicon_id, icon_mappings[0].icon_id);
|
|
|
| // Change the icon URL that |page_url1| is mapped to.
|
| - GenerateFaviconBitmapData(icon_url_new, GetEdgeSizesSmall(),
|
| - &favicon_bitmap_data);
|
| - backend_->SetFavicons(page_url1, favicon_base::FAVICON, favicon_bitmap_data);
|
| + bitmaps.clear();
|
| + bitmaps.push_back(CreateBitmap(SK_ColorWHITE, kSmallEdgeSize));
|
| + backend_->SetFavicon(page_url1, favicon_base::FAVICON, icon_url_new, bitmaps);
|
|
|
| // |page_url1| should map to a new FaviconID and have valid bitmap data.
|
| icon_mappings.clear();
|
| @@ -1868,7 +1782,7 @@ TEST_F(HistoryBackendTest, SetFaviconsSameFaviconURLForTwoPages) {
|
| &favicon_bitmaps));
|
| EXPECT_EQ(2u, favicon_bitmaps.size());
|
|
|
| - // A notification should have been broadcast for each call to SetFavicons()
|
| + // A notification should have been broadcast for each call to SetFavicon()
|
| // and each call to UpdateFaviconMappingsAndFetch().
|
| EXPECT_EQ(3, num_broadcasted_notifications());
|
| }
|
| @@ -1879,11 +1793,10 @@ TEST_F(HistoryBackendTest, SetFaviconsSameFaviconURLForTwoPages) {
|
| TEST_F(HistoryBackendTest, UpdateFaviconMappingsAndFetchNoChange) {
|
| GURL page_url("http://www.google.com");
|
| GURL icon_url("http://www.google.com/favicon.ico");
|
| - std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data;
|
| - GenerateFaviconBitmapData(icon_url, GetEdgeSizesSmall(),
|
| - &favicon_bitmap_data);
|
| + std::vector<SkBitmap> bitmaps;
|
| + bitmaps.push_back(CreateBitmap(SK_ColorBLUE, kSmallEdgeSize));
|
|
|
| - backend_->SetFavicons(page_url, favicon_base::FAVICON, favicon_bitmap_data);
|
| + backend_->SetFavicon(page_url, favicon_base::FAVICON, icon_url, bitmaps);
|
|
|
| favicon_base::FaviconID icon_id =
|
| backend_->thumbnail_db_->GetFaviconIDForFaviconURL(
|
| @@ -1962,12 +1875,10 @@ TEST_F(HistoryBackendTest, MergeFaviconPageURLInDB) {
|
| GURL page_url("http://www.google.com");
|
| GURL icon_url1("http:/www.google.com/favicon.ico");
|
| GURL icon_url2("http://www.google.com/favicon2.ico");
|
| + std::vector<SkBitmap> bitmaps;
|
| + bitmaps.push_back(CreateBitmap(SK_ColorBLUE, kSmallEdgeSize));
|
|
|
| - std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data;
|
| - GenerateFaviconBitmapData(icon_url1, GetEdgeSizesSmall(),
|
| - &favicon_bitmap_data);
|
| -
|
| - backend_->SetFavicons(page_url, favicon_base::FAVICON, favicon_bitmap_data);
|
| + backend_->SetFavicon(page_url, favicon_base::FAVICON, icon_url1, bitmaps);
|
|
|
| // Test initial state.
|
| std::vector<IconMapping> icon_mappings;
|
| @@ -1979,14 +1890,14 @@ TEST_F(HistoryBackendTest, MergeFaviconPageURLInDB) {
|
| 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_TRUE(BitmapColorEqual(SK_ColorBLUE, favicon_bitmap.bitmap_data));
|
| EXPECT_EQ(kSmallSize, favicon_bitmap.pixel_size);
|
|
|
| EXPECT_EQ(1, num_broadcasted_notifications());
|
|
|
| // 1) Merge identical favicon bitmap.
|
| std::vector<unsigned char> data;
|
| - data.push_back('a');
|
| + gfx::PNGCodec::EncodeBGRASkBitmap(bitmaps[0], false, &data);
|
| scoped_refptr<base::RefCountedBytes> bitmap_data(
|
| new base::RefCountedBytes(data));
|
| backend_->MergeFavicon(
|
| @@ -2002,13 +1913,14 @@ TEST_F(HistoryBackendTest, MergeFaviconPageURLInDB) {
|
|
|
| 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_TRUE(BitmapColorEqual(SK_ColorBLUE, favicon_bitmap.bitmap_data));
|
| EXPECT_EQ(kSmallSize, favicon_bitmap.pixel_size);
|
|
|
| EXPECT_EQ(1, num_broadcasted_notifications());
|
|
|
| // 2) Merge favicon bitmap of the same size.
|
| - data[0] = 'b';
|
| + data.clear();
|
| + data.push_back('b');
|
| bitmap_data = new base::RefCountedBytes(data);
|
| backend_->MergeFavicon(
|
| page_url, icon_url1, favicon_base::FAVICON, bitmap_data, kSmallSize);
|
| @@ -2077,7 +1989,7 @@ TEST_F(HistoryBackendTest, MergeFaviconPageURLInDB) {
|
| EXPECT_TRUE(BitmapDataEqual('d', favicon_bitmaps[1].bitmap_data));
|
| EXPECT_EQ(kSmallSize, favicon_bitmaps[1].pixel_size);
|
|
|
| - // A notification should have been broadcast for each call to SetFavicons()
|
| + // A notification should have been broadcast for each call to SetFavicon()
|
| // and MergeFavicon().
|
| EXPECT_EQ(4, num_broadcasted_notifications());
|
| }
|
| @@ -2089,12 +2001,10 @@ TEST_F(HistoryBackendTest, MergeFaviconIconURLMappedToDifferentPageURL) {
|
| GURL page_url2("http://news.google.com");
|
| GURL page_url3("http://maps.google.com");
|
| GURL icon_url("http:/www.google.com/favicon.ico");
|
| + std::vector<SkBitmap> bitmaps;
|
| + bitmaps.push_back(CreateBitmap(SK_ColorBLUE, kSmallEdgeSize));
|
|
|
| - std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data;
|
| - GenerateFaviconBitmapData(icon_url, GetEdgeSizesSmall(),
|
| - &favicon_bitmap_data);
|
| -
|
| - backend_->SetFavicons(page_url1, favicon_base::FAVICON, favicon_bitmap_data);
|
| + backend_->SetFavicon(page_url1, favicon_base::FAVICON, icon_url, bitmaps);
|
|
|
| // Test initial state.
|
| std::vector<IconMapping> icon_mappings;
|
| @@ -2106,12 +2016,12 @@ TEST_F(HistoryBackendTest, MergeFaviconIconURLMappedToDifferentPageURL) {
|
| 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_TRUE(BitmapColorEqual(SK_ColorBLUE, favicon_bitmap.bitmap_data));
|
| EXPECT_EQ(kSmallSize, favicon_bitmap.pixel_size);
|
|
|
| // 1) Merge in an identical favicon bitmap data but for a different page URL.
|
| std::vector<unsigned char> data;
|
| - data.push_back('a');
|
| + gfx::PNGCodec::EncodeBGRASkBitmap(bitmaps[0], false, &data);
|
| scoped_refptr<base::RefCountedBytes> bitmap_data(
|
| new base::RefCountedBytes(data));
|
|
|
| @@ -2125,12 +2035,14 @@ TEST_F(HistoryBackendTest, MergeFaviconIconURLMappedToDifferentPageURL) {
|
|
|
| EXPECT_TRUE(GetOnlyFaviconBitmap(favicon_id, &favicon_bitmap));
|
| EXPECT_NE(base::Time(), favicon_bitmap.last_updated);
|
| - EXPECT_TRUE(BitmapDataEqual('a', favicon_bitmap.bitmap_data));
|
| + EXPECT_TRUE(BitmapColorEqual(SK_ColorBLUE, favicon_bitmap.bitmap_data));
|
| EXPECT_EQ(kSmallSize, favicon_bitmap.pixel_size);
|
|
|
| // 2) Merging a favicon bitmap with different bitmap data for the same icon
|
| // URL should overwrite the small favicon bitmap at |icon_url|.
|
| - bitmap_data->data()[0] = 'b';
|
| + data.clear();
|
| + data.push_back('b');
|
| + bitmap_data = new base::RefCountedBytes(data);
|
| backend_->MergeFavicon(
|
| page_url3, icon_url, favicon_base::FAVICON, bitmap_data, kSmallSize);
|
|
|
| @@ -2162,7 +2074,7 @@ TEST_F(HistoryBackendTest, MergeFaviconIconURLMappedToDifferentPageURL) {
|
| EXPECT_EQ(1u, icon_mappings.size());
|
| EXPECT_EQ(favicon_id, icon_mappings[0].icon_id);
|
|
|
| - // A notification should have been broadcast for each call to SetFavicons()
|
| + // A notification should have been broadcast for each call to SetFavicon()
|
| // and MergeFavicon().
|
| EXPECT_EQ(3, num_broadcasted_notifications());
|
| }
|
| @@ -2210,13 +2122,12 @@ TEST_F(HistoryBackendTest, MergeFaviconShowsUpInGetFaviconsForURLResult) {
|
| GURL page_url("http://www.google.com");
|
| GURL icon_url("http://www.google.com/favicon.ico");
|
| GURL merged_icon_url("http://wwww.google.com/favicon2.ico");
|
| -
|
| - std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data;
|
| - GenerateFaviconBitmapData(icon_url, GetEdgeSizesSmallAndLarge(),
|
| - &favicon_bitmap_data);
|
| + std::vector<SkBitmap> bitmaps;
|
| + bitmaps.push_back(CreateBitmap(SK_ColorBLUE, kSmallEdgeSize));
|
| + bitmaps.push_back(CreateBitmap(SK_ColorRED, kLargeEdgeSize));
|
|
|
| // Set some preexisting favicons for |page_url|.
|
| - backend_->SetFavicons(page_url, favicon_base::FAVICON, favicon_bitmap_data);
|
| + backend_->SetFavicon(page_url, favicon_base::FAVICON, icon_url, bitmaps);
|
|
|
| // Merge small favicon.
|
| std::vector<unsigned char> data;
|
| @@ -2251,23 +2162,18 @@ TEST_F(HistoryBackendTest, TestGetFaviconsForURLWithIconTypesPriority) {
|
| GURL icon_url("http://www.google.com/favicon.ico");
|
| GURL touch_icon_url("http://wwww.google.com/touch_icon.ico");
|
|
|
| - std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data;
|
| - std::vector<int> favicon_size;
|
| - favicon_size.push_back(16);
|
| - favicon_size.push_back(32);
|
| - GenerateFaviconBitmapData(icon_url, favicon_size, &favicon_bitmap_data);
|
| - ASSERT_EQ(2u, favicon_bitmap_data.size());
|
| -
|
| - std::vector<favicon_base::FaviconRawBitmapData> touch_icon_bitmap_data;
|
| - std::vector<int> touch_icon_size;
|
| - touch_icon_size.push_back(64);
|
| - GenerateFaviconBitmapData(icon_url, touch_icon_size, &touch_icon_bitmap_data);
|
| - ASSERT_EQ(1u, touch_icon_bitmap_data.size());
|
| + std::vector<SkBitmap> favicon_bitmaps;
|
| + favicon_bitmaps.push_back(CreateBitmap(SK_ColorBLUE, 16));
|
| + favicon_bitmaps.push_back(CreateBitmap(SK_ColorRED, 32));
|
| +
|
| + std::vector<SkBitmap> touch_bitmaps;
|
| + touch_bitmaps.push_back(CreateBitmap(SK_ColorWHITE, 64));
|
|
|
| // Set some preexisting favicons for |page_url|.
|
| - backend_->SetFavicons(page_url, favicon_base::FAVICON, favicon_bitmap_data);
|
| - backend_->SetFavicons(
|
| - page_url, favicon_base::TOUCH_ICON, touch_icon_bitmap_data);
|
| + backend_->SetFavicon(
|
| + page_url, favicon_base::FAVICON, icon_url, favicon_bitmaps);
|
| + backend_->SetFavicon(
|
| + page_url, favicon_base::TOUCH_ICON, touch_icon_url, touch_bitmaps);
|
|
|
| favicon_base::FaviconRawBitmapResult result;
|
| std::vector<int> icon_types;
|
| @@ -2293,23 +2199,18 @@ TEST_F(HistoryBackendTest, TestGetFaviconsForURLReturnFavicon) {
|
| GURL icon_url("http://www.google.com/favicon.ico");
|
| GURL touch_icon_url("http://wwww.google.com/touch_icon.ico");
|
|
|
| - std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data;
|
| - std::vector<int> favicon_size;
|
| - favicon_size.push_back(16);
|
| - favicon_size.push_back(32);
|
| - GenerateFaviconBitmapData(icon_url, favicon_size, &favicon_bitmap_data);
|
| - ASSERT_EQ(2u, favicon_bitmap_data.size());
|
| -
|
| - std::vector<favicon_base::FaviconRawBitmapData> touch_icon_bitmap_data;
|
| - std::vector<int> touch_icon_size;
|
| - touch_icon_size.push_back(32);
|
| - GenerateFaviconBitmapData(icon_url, touch_icon_size, &touch_icon_bitmap_data);
|
| - ASSERT_EQ(1u, touch_icon_bitmap_data.size());
|
| + std::vector<SkBitmap> favicon_bitmaps;
|
| + favicon_bitmaps.push_back(CreateBitmap(SK_ColorBLUE, 16));
|
| + favicon_bitmaps.push_back(CreateBitmap(SK_ColorRED, 32));
|
| +
|
| + std::vector<SkBitmap> touch_bitmaps;
|
| + touch_bitmaps.push_back(CreateBitmap(SK_ColorWHITE, 32));
|
|
|
| // Set some preexisting favicons for |page_url|.
|
| - backend_->SetFavicons(page_url, favicon_base::FAVICON, favicon_bitmap_data);
|
| - backend_->SetFavicons(
|
| - page_url, favicon_base::TOUCH_ICON, touch_icon_bitmap_data);
|
| + backend_->SetFavicon(
|
| + page_url, favicon_base::FAVICON, icon_url, favicon_bitmaps);
|
| + backend_->SetFavicon(
|
| + page_url, favicon_base::TOUCH_ICON, touch_icon_url, touch_bitmaps);
|
|
|
| favicon_base::FaviconRawBitmapResult result;
|
| std::vector<int> icon_types;
|
| @@ -2335,14 +2236,11 @@ TEST_F(HistoryBackendTest, TestGetFaviconsForURLReturnFaviconEvenItSmaller) {
|
| GURL page_url("http://www.google.com");
|
| GURL icon_url("http://www.google.com/favicon.ico");
|
|
|
| - std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data;
|
| - std::vector<int> favicon_size;
|
| - favicon_size.push_back(16);
|
| - GenerateFaviconBitmapData(icon_url, favicon_size, &favicon_bitmap_data);
|
| - ASSERT_EQ(1u, favicon_bitmap_data.size());
|
| + std::vector<SkBitmap> bitmaps;
|
| + bitmaps.push_back(CreateBitmap(SK_ColorBLUE, 16));
|
|
|
| // Set preexisting favicons for |page_url|.
|
| - backend_->SetFavicons(page_url, favicon_base::FAVICON, favicon_bitmap_data);
|
| + backend_->SetFavicon(page_url, favicon_base::FAVICON, icon_url, bitmaps);
|
|
|
| favicon_base::FaviconRawBitmapResult result;
|
| std::vector<int> icon_types;
|
| @@ -2363,26 +2261,20 @@ TEST_F(HistoryBackendTest, UpdateFaviconMappingsAndFetchMultipleIconTypes) {
|
| GURL page_url3("http://mail.google.com");
|
| GURL icon_urla("http://www.google.com/favicon1.ico");
|
| GURL icon_urlb("http://www.google.com/favicon2.ico");
|
| - GURL icon_urlc("http://www.google.com/favicon3.ico");
|
| + std::vector<SkBitmap> bitmaps;
|
| + bitmaps.push_back(CreateBitmap(SK_ColorBLUE, kSmallEdgeSize));
|
|
|
| // |page_url1| is mapped to |icon_urla| which if of type TOUCH_ICON.
|
| - std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data;
|
| - GenerateFaviconBitmapData(icon_urla, GetEdgeSizesSmall(),
|
| - &favicon_bitmap_data);
|
| - backend_->SetFavicons(
|
| - page_url1, favicon_base::TOUCH_ICON, favicon_bitmap_data);
|
| + backend_->SetFavicon(page_url1, favicon_base::TOUCH_ICON, icon_urla, bitmaps);
|
|
|
| - // |page_url2| is mapped to |icon_urlb| and |icon_urlc| which are of type
|
| + // |page_url2| is mapped to |icon_urlb| which is of type
|
| // TOUCH_PRECOMPOSED_ICON.
|
| - GenerateFaviconBitmapData(icon_urlb, GetEdgeSizesSmall(), icon_urlc,
|
| - GetEdgeSizesSmall(), &favicon_bitmap_data);
|
| - backend_->SetFavicons(
|
| - page_url2, favicon_base::TOUCH_PRECOMPOSED_ICON, favicon_bitmap_data);
|
| + backend_->SetFavicon(
|
| + page_url2, favicon_base::TOUCH_PRECOMPOSED_ICON, icon_urlb, bitmaps);
|
|
|
| std::vector<GURL> icon_urls;
|
| icon_urls.push_back(icon_urla);
|
| icon_urls.push_back(icon_urlb);
|
| - icon_urls.push_back(icon_urlc);
|
|
|
| std::vector<favicon_base::FaviconRawBitmapResult> bitmap_results;
|
| backend_->UpdateFaviconMappingsAndFetch(
|
| @@ -2402,25 +2294,20 @@ TEST_F(HistoryBackendTest, UpdateFaviconMappingsAndFetchMultipleIconTypes) {
|
|
|
| icon_mappings.clear();
|
| EXPECT_TRUE(GetSortedIconMappingsForPageURL(page_url2, &icon_mappings));
|
| - EXPECT_EQ(2u, icon_mappings.size());
|
| + EXPECT_EQ(1u, icon_mappings.size());
|
| EXPECT_EQ(icon_urlb, icon_mappings[0].icon_url);
|
| EXPECT_EQ(favicon_base::TOUCH_PRECOMPOSED_ICON, icon_mappings[0].icon_type);
|
| - EXPECT_EQ(icon_urlc, icon_mappings[1].icon_url);
|
| - EXPECT_EQ(favicon_base::TOUCH_PRECOMPOSED_ICON, icon_mappings[1].icon_type);
|
|
|
| - // |page_url3| should be mapped only to |icon_urlb| and |icon_urlc| as
|
| - // TOUCH_PRECOMPOSED_ICON is the largest IconType.
|
| + // |page_url3| should be mapped only to |icon_urlb| as TOUCH_PRECOMPOSED_ICON
|
| + // is the largest IconType.
|
| icon_mappings.clear();
|
| EXPECT_TRUE(GetSortedIconMappingsForPageURL(page_url3, &icon_mappings));
|
| - EXPECT_EQ(2u, icon_mappings.size());
|
| + EXPECT_EQ(1u, icon_mappings.size());
|
| EXPECT_EQ(icon_urlb, icon_mappings[0].icon_url);
|
| EXPECT_EQ(favicon_base::TOUCH_PRECOMPOSED_ICON, icon_mappings[0].icon_type);
|
| - EXPECT_EQ(icon_urlc, icon_mappings[1].icon_url);
|
| - EXPECT_EQ(favicon_base::TOUCH_PRECOMPOSED_ICON, icon_mappings[1].icon_type);
|
| }
|
|
|
| -// Test the results of GetFaviconsFromDB() when there are no found
|
| -// favicons.
|
| +// Test the results of GetFaviconsFromDB() when there are no found favicons.
|
| TEST_F(HistoryBackendTest, GetFaviconsFromDBEmpty) {
|
| const GURL page_url("http://www.google.com/");
|
|
|
| @@ -2456,12 +2343,12 @@ TEST_F(HistoryBackendTest, GetFaviconsFromDBNoFaviconBitmaps) {
|
| TEST_F(HistoryBackendTest, GetFaviconsFromDBSelectClosestMatch) {
|
| const GURL page_url("http://www.google.com/");
|
| const GURL icon_url("http://www.google.com/icon1");
|
| + std::vector<SkBitmap> bitmaps;
|
| + bitmaps.push_back(CreateBitmap(SK_ColorWHITE, kTinyEdgeSize));
|
| + bitmaps.push_back(CreateBitmap(SK_ColorBLUE, kSmallEdgeSize));
|
| + bitmaps.push_back(CreateBitmap(SK_ColorRED, kLargeEdgeSize));
|
|
|
| - std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data;
|
| - GenerateFaviconBitmapData(icon_url, GetEdgeSizesTinySmallAndLarge(),
|
| - &favicon_bitmap_data);
|
| -
|
| - backend_->SetFavicons(page_url, favicon_base::FAVICON, favicon_bitmap_data);
|
| + backend_->SetFavicon(page_url, favicon_base::FAVICON, icon_url, bitmaps);
|
|
|
| std::vector<favicon_base::FaviconRawBitmapResult> bitmap_results_out;
|
| EXPECT_TRUE(backend_->GetFaviconsFromDB(page_url,
|
| @@ -2480,61 +2367,31 @@ TEST_F(HistoryBackendTest, GetFaviconsFromDBSelectClosestMatch) {
|
| }
|
|
|
| EXPECT_FALSE(bitmap_results_out[0].expired);
|
| - EXPECT_TRUE(BitmapDataEqual('b', bitmap_results_out[0].bitmap_data));
|
| + EXPECT_TRUE(
|
| + BitmapColorEqual(SK_ColorBLUE, bitmap_results_out[0].bitmap_data));
|
| EXPECT_EQ(kSmallSize, bitmap_results_out[0].pixel_size);
|
| EXPECT_EQ(icon_url, bitmap_results_out[0].icon_url);
|
| EXPECT_EQ(favicon_base::FAVICON, bitmap_results_out[0].icon_type);
|
|
|
| EXPECT_FALSE(bitmap_results_out[1].expired);
|
| - EXPECT_TRUE(BitmapDataEqual('c', bitmap_results_out[1].bitmap_data));
|
| + EXPECT_TRUE(BitmapColorEqual(SK_ColorRED, bitmap_results_out[1].bitmap_data));
|
| EXPECT_EQ(kLargeSize, bitmap_results_out[1].pixel_size);
|
| EXPECT_EQ(icon_url, bitmap_results_out[1].icon_url);
|
| EXPECT_EQ(favicon_base::FAVICON, bitmap_results_out[1].icon_type);
|
| }
|
|
|
| -// Test that GetFaviconsFromDB() returns results from the icon URL whose
|
| -// bitmaps most closely match the passed in desired sizes.
|
| -TEST_F(HistoryBackendTest, GetFaviconsFromDBSingleIconURL) {
|
| - const GURL page_url("http://www.google.com/");
|
| -
|
| - const GURL icon_url1("http://www.google.com/icon1");
|
| - const GURL icon_url2("http://www.google.com/icon2");
|
| -
|
| - std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data;
|
| - GenerateFaviconBitmapData(icon_url1, GetEdgeSizesSmall(), icon_url2,
|
| - GetEdgeSizesLarge(), &favicon_bitmap_data);
|
| -
|
| - backend_->SetFavicons(page_url, favicon_base::FAVICON, favicon_bitmap_data);
|
| -
|
| - std::vector<favicon_base::FaviconRawBitmapResult> bitmap_results_out;
|
| - EXPECT_TRUE(backend_->GetFaviconsFromDB(page_url,
|
| - favicon_base::FAVICON,
|
| - GetEdgeSizesSmallAndLarge(),
|
| - &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);
|
| -}
|
| -
|
| // Test the results of GetFaviconsFromDB() when called with different
|
| // |icon_types|.
|
| TEST_F(HistoryBackendTest, GetFaviconsFromDBIconType) {
|
| const GURL page_url("http://www.google.com/");
|
| const GURL icon_url1("http://www.google.com/icon1.png");
|
| const GURL icon_url2("http://www.google.com/icon2.png");
|
| + std::vector<SkBitmap> bitmaps;
|
| + bitmaps.push_back(CreateBitmap(SK_ColorBLUE, kSmallEdgeSize));
|
|
|
| std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data;
|
| - GenerateFaviconBitmapData(icon_url1, GetEdgeSizesSmall(),
|
| - &favicon_bitmap_data);
|
| - backend_->SetFavicons(page_url, favicon_base::FAVICON, favicon_bitmap_data);
|
| -
|
| - GenerateFaviconBitmapData(
|
| - icon_url2, GetEdgeSizesSmall(), &favicon_bitmap_data);
|
| - backend_->SetFavicons(
|
| - page_url, favicon_base::TOUCH_ICON, favicon_bitmap_data);
|
| + backend_->SetFavicon(page_url, favicon_base::FAVICON, icon_url1, bitmaps);
|
| + backend_->SetFavicon(page_url, favicon_base::TOUCH_ICON, icon_url2, bitmaps);
|
|
|
| std::vector<favicon_base::FaviconRawBitmapResult> bitmap_results_out;
|
| EXPECT_TRUE(backend_->GetFaviconsFromDB(page_url,
|
| @@ -2605,12 +2462,11 @@ TEST_F(HistoryBackendTest, CloneFaviconIsRestrictedToSameDomain) {
|
| const GURL same_domain_url("http://www.google.com/subdir/index.html");
|
| const GURL foreign_domain_url("http://www.not-google.com/");
|
| const GURL icon_url("http://www.google.com/icon.png");
|
| + std::vector<SkBitmap> bitmaps;
|
| + bitmaps.push_back(CreateBitmap(SK_ColorBLUE, kSmallEdgeSize));
|
|
|
| // Add a favicon
|
| - std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data;
|
| - GenerateFaviconBitmapData(icon_url, GetEdgeSizesSmall(),
|
| - &favicon_bitmap_data);
|
| - backend_->SetFavicons(url, favicon_base::FAVICON, favicon_bitmap_data);
|
| + backend_->SetFavicon(url, favicon_base::FAVICON, icon_url, bitmaps);
|
| EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL(
|
| url, favicon_base::FAVICON, NULL));
|
|
|
|
|