| Index: chrome/browser/favicon/favicon_handler_unittest.cc
|
| diff --git a/chrome/browser/favicon/favicon_handler_unittest.cc b/chrome/browser/favicon/favicon_handler_unittest.cc
|
| index d595c75e2d28cd852f741cd0b37ba5bc44cd39da..f06312fb6e3b1e9ab4bbffd1de41f1d2921e396f 100644
|
| --- a/chrome/browser/favicon/favicon_handler_unittest.cc
|
| +++ b/chrome/browser/favicon/favicon_handler_unittest.cc
|
| @@ -823,16 +823,17 @@ TEST_F(FaviconHandlerTest, MultipleFavicon) {
|
| const GURL icon_url("http://www.google.com/favicon");
|
| const GURL icon_url_small("http://www.google.com/favicon_small");
|
| const GURL icon_url_large("http://www.google.com/favicon_large");
|
| - const GURL icon_url_preferred("http://www.google.com/favicon_preferred");
|
| + const GURL icon_url_preferred1("http://www.google.com/favicon_preferred1");
|
| + const GURL icon_url_preferred2("http://www.google.com/favicon_preferred2");
|
|
|
| TestFaviconHandlerDelegate delegate(contents());
|
| Profile* profile = Profile::FromBrowserContext(
|
| contents()->GetBrowserContext());
|
| - TestFaviconHandler helper(page_url, profile,
|
| - &delegate, FaviconHandler::FAVICON);
|
| + TestFaviconHandler handler(page_url, profile,
|
| + &delegate, FaviconHandler::FAVICON);
|
|
|
| - helper.FetchFavicon(page_url);
|
| - HistoryRequestHandler* history_handler = helper.history_handler();
|
| + handler.FetchFavicon(page_url);
|
| + HistoryRequestHandler* history_handler = handler.history_handler();
|
|
|
| // Set valid icon data.
|
| history_handler->favicon_data_.known_icon = true;
|
| @@ -852,40 +853,101 @@ TEST_F(FaviconHandlerTest, MultipleFavicon) {
|
| // preferred size is found, so icon_url_preferred must be last.
|
| urls.push_back(FaviconURL(icon_url_small, FaviconURL::FAVICON));
|
| urls.push_back(FaviconURL(icon_url_large, FaviconURL::FAVICON));
|
| - urls.push_back(FaviconURL(icon_url_preferred, FaviconURL::FAVICON));
|
| - helper.OnUpdateFaviconURL(0, urls);
|
| + urls.push_back(FaviconURL(icon_url_preferred1, FaviconURL::FAVICON));
|
| + urls.push_back(FaviconURL(icon_url_preferred2, FaviconURL::FAVICON));
|
| + handler.OnUpdateFaviconURL(0, urls);
|
| + EXPECT_EQ(4U, handler.image_urls().size());
|
|
|
| - DownloadHandler* download_handler = helper.download_handler();
|
| + DownloadHandler* download_handler = handler.download_handler();
|
|
|
| // Download the first icon (set not in history).
|
| - helper.history_handler()->favicon_data_.known_icon = false;
|
| - helper.history_handler()->InvokeCallback();
|
| + handler.history_handler()->favicon_data_.known_icon = false;
|
| + handler.history_handler()->InvokeCallback();
|
| ASSERT_TRUE(download_handler->HasDownload());
|
| EXPECT_EQ(icon_url_small, download_handler->GetImageUrl());
|
| download_handler->SetImageSize(gfx::kFaviconSize / 2);
|
| download_handler->InvokeCallback();
|
| + EXPECT_EQ(3U, handler.image_urls().size());
|
|
|
| // Download the second icon (set not in history).
|
| - helper.history_handler()->favicon_data_.known_icon = false;
|
| - helper.history_handler()->InvokeCallback();
|
| + handler.history_handler()->favicon_data_.known_icon = false;
|
| + handler.history_handler()->InvokeCallback();
|
| ASSERT_TRUE(download_handler->HasDownload());
|
| EXPECT_EQ(icon_url_large, download_handler->GetImageUrl());
|
| download_handler->SetImageSize(gfx::kFaviconSize * 2);
|
| download_handler->InvokeCallback();
|
| + EXPECT_EQ(2U, handler.image_urls().size());
|
|
|
| // Download the third icon (set not in history).
|
| - helper.history_handler()->favicon_data_.known_icon = false;
|
| - helper.history_handler()->InvokeCallback();
|
| + handler.history_handler()->favicon_data_.known_icon = false;
|
| + handler.history_handler()->InvokeCallback();
|
| ASSERT_TRUE(download_handler->HasDownload());
|
| - EXPECT_EQ(icon_url_preferred, download_handler->GetImageUrl());
|
| + EXPECT_EQ(icon_url_preferred1, download_handler->GetImageUrl());
|
| download_handler->SetImageSize(gfx::kFaviconSize);
|
| download_handler->InvokeCallback();
|
| + // Verify that this was detected as an exact match and image_urls_ is cleared.
|
| + EXPECT_EQ(0U, handler.image_urls().size());
|
|
|
| // Verify correct icon size chosen.
|
| - EXPECT_EQ(icon_url_preferred, helper.GetEntry()->GetFavicon().url);
|
| - EXPECT_TRUE(helper.GetEntry()->GetFavicon().valid);
|
| - EXPECT_FALSE(helper.GetEntry()->GetFavicon().bitmap.empty());
|
| - EXPECT_EQ(gfx::kFaviconSize, helper.GetEntry()->GetFavicon().bitmap.width());
|
| + EXPECT_EQ(icon_url_preferred1, handler.GetEntry()->GetFavicon().url);
|
| + EXPECT_TRUE(handler.GetEntry()->GetFavicon().valid);
|
| + EXPECT_FALSE(handler.GetEntry()->GetFavicon().bitmap.empty());
|
| + EXPECT_EQ(gfx::kFaviconSize, handler.GetEntry()->GetFavicon().bitmap.width());
|
| +}
|
| +
|
| +TEST_F(FaviconHandlerTest, FirstFavicon) {
|
| + const GURL page_url("http://www.google.com");
|
| + const GURL icon_url("http://www.google.com/favicon");
|
| + const GURL icon_url_preferred1("http://www.google.com/favicon_preferred1");
|
| + const GURL icon_url_large("http://www.google.com/favicon_large");
|
| +
|
| + TestFaviconHandlerDelegate delegate(contents());
|
| + Profile* profile = Profile::FromBrowserContext(
|
| + contents()->GetBrowserContext());
|
| + TestFaviconHandler handler(page_url, profile,
|
| + &delegate, FaviconHandler::FAVICON);
|
| +
|
| + handler.FetchFavicon(page_url);
|
| + HistoryRequestHandler* history_handler = handler.history_handler();
|
| +
|
| + // Set valid icon data.
|
| + history_handler->favicon_data_.known_icon = true;
|
| + history_handler->favicon_data_.icon_type = history::FAVICON;
|
| + history_handler->favicon_data_.expired = false;
|
| + history_handler->favicon_data_.icon_url = icon_url;
|
| + scoped_refptr<RefCountedBytes> data = new RefCountedBytes();
|
| + FillBitmap(gfx::kFaviconSize, gfx::kFaviconSize, &data->data());
|
| + history_handler->favicon_data_.image_data = data;
|
| +
|
| + // Send history response.
|
| + history_handler->InvokeCallback();
|
| +
|
| + // Simulates update with the different favicon url.
|
| + std::vector<FaviconURL> urls;
|
| + // Note: the code will stop making requests when an icon matching the
|
| + // preferred size is found, so icon_url_preferred must be last.
|
| + urls.push_back(FaviconURL(icon_url_preferred1, FaviconURL::FAVICON));
|
| + urls.push_back(FaviconURL(icon_url_large, FaviconURL::FAVICON));
|
| + handler.OnUpdateFaviconURL(0, urls);
|
| + EXPECT_EQ(2U, handler.image_urls().size());
|
| +
|
| + DownloadHandler* download_handler = handler.download_handler();
|
| +
|
| + // Download the first icon (set not in history).
|
| + handler.history_handler()->favicon_data_.known_icon = false;
|
| + handler.history_handler()->InvokeCallback();
|
| + ASSERT_TRUE(download_handler->HasDownload());
|
| + EXPECT_EQ(icon_url_preferred1, download_handler->GetImageUrl());
|
| + download_handler->SetImageSize(gfx::kFaviconSize);
|
| + download_handler->InvokeCallback();
|
| + // Verify that this was detected as an exact match and image_urls_ is cleared.
|
| + EXPECT_EQ(0U, handler.image_urls().size());
|
| +
|
| + // Verify correct icon size chosen.
|
| + EXPECT_EQ(icon_url_preferred1, handler.GetEntry()->GetFavicon().url);
|
| + EXPECT_TRUE(handler.GetEntry()->GetFavicon().valid);
|
| + EXPECT_FALSE(handler.GetEntry()->GetFavicon().bitmap.empty());
|
| + EXPECT_EQ(gfx::kFaviconSize, handler.GetEntry()->GetFavicon().bitmap.width());
|
| }
|
|
|
| } // namespace.
|
|
|