| 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 50ad60cc9aeea6ddbd76ac5bffeabb65cce1da91..b8110b186bf5bfdb69dac88a656cd0cd3cc696b5 100644
|
| --- a/chrome/browser/favicon/favicon_handler_unittest.cc
|
| +++ b/chrome/browser/favicon/favicon_handler_unittest.cc
|
| @@ -44,6 +44,30 @@ void FillBitmap(int w, int h, std::vector<unsigned char>* output) {
|
| gfx::PNGCodec::EncodeBGRASkBitmap(bitmap, false, output);
|
| }
|
|
|
| +void SetFaviconBitmapResult(
|
| + const GURL& icon_url,
|
| + history::IconType icon_type,
|
| + bool expired,
|
| + std::vector<history::FaviconBitmapResult>* favicon_bitmap_results) {
|
| + scoped_refptr<base::RefCountedBytes> data(new base::RefCountedBytes());
|
| + FillBitmap(gfx::kFaviconSize, gfx::kFaviconSize, &data->data());
|
| + history::FaviconBitmapResult bitmap_result;
|
| + bitmap_result.expired = expired;
|
| + bitmap_result.bitmap_data = data;
|
| + bitmap_result.pixel_size = gfx::Size();
|
| + bitmap_result.icon_type = icon_type;
|
| + bitmap_result.icon_url = icon_url;
|
| +
|
| + favicon_bitmap_results->push_back(bitmap_result);
|
| +}
|
| +
|
| +void SetFaviconBitmapResult(
|
| + const GURL& icon_url,
|
| + std::vector<history::FaviconBitmapResult>* favicon_bitmap_results) {
|
| + SetFaviconBitmapResult(icon_url, history::FAVICON, false /* expired */,
|
| + favicon_bitmap_results);
|
| +}
|
| +
|
| // This class is used to save the download request for verifying with test case.
|
| // It also will be used to invoke the onDidDownload callback.
|
| class DownloadHandler {
|
| @@ -100,7 +124,7 @@ class HistoryRequestHandler {
|
| HistoryRequestHandler(const GURL& page_url,
|
| const GURL& icon_url,
|
| int icon_type,
|
| - const FaviconService::FaviconDataCallback& callback)
|
| + const FaviconService::FaviconResultsCallback& callback)
|
| : page_url_(page_url),
|
| icon_url_(icon_url),
|
| icon_type_(icon_type),
|
| @@ -110,12 +134,12 @@ class HistoryRequestHandler {
|
| HistoryRequestHandler(const GURL& page_url,
|
| const GURL& icon_url,
|
| int icon_type,
|
| - const std::vector<unsigned char>& image_data,
|
| - const FaviconService::FaviconDataCallback& callback)
|
| + const std::vector<unsigned char>& bitmap_data,
|
| + const FaviconService::FaviconResultsCallback& callback)
|
| : page_url_(page_url),
|
| icon_url_(icon_url),
|
| icon_type_(icon_type),
|
| - image_data_(image_data),
|
| + bitmap_data_(bitmap_data),
|
| callback_(callback) {
|
| }
|
|
|
| @@ -125,9 +149,9 @@ class HistoryRequestHandler {
|
| const GURL page_url_;
|
| const GURL icon_url_;
|
| const int icon_type_;
|
| - const std::vector<unsigned char> image_data_;
|
| - history::FaviconData favicon_data_;
|
| - FaviconService::FaviconDataCallback callback_;
|
| + const std::vector<unsigned char> bitmap_data_;
|
| + std::vector<history::FaviconBitmapResult> history_results_;
|
| + FaviconService::FaviconResultsCallback callback_;
|
|
|
| private:
|
| DISALLOW_COPY_AND_ASSIGN(HistoryRequestHandler);
|
| @@ -222,7 +246,7 @@ class TestFaviconHandler : public FaviconHandler {
|
| const GURL& icon_url,
|
| history::IconType icon_type,
|
| CancelableRequestConsumerBase* consumer,
|
| - const FaviconService::FaviconDataCallback& callback) OVERRIDE {
|
| + const FaviconService::FaviconResultsCallback& callback) OVERRIDE {
|
| history_handler_.reset(new HistoryRequestHandler(page_url, icon_url,
|
| icon_type, callback));
|
| }
|
| @@ -231,7 +255,7 @@ class TestFaviconHandler : public FaviconHandler {
|
| const GURL& icon_url,
|
| history::IconType icon_type,
|
| CancelableRequestConsumerBase* consumer,
|
| - const FaviconService::FaviconDataCallback& callback) OVERRIDE {
|
| + const FaviconService::FaviconResultsCallback& callback) OVERRIDE {
|
| history_handler_.reset(new HistoryRequestHandler(GURL(), icon_url,
|
| icon_type, callback));
|
| }
|
| @@ -240,7 +264,7 @@ class TestFaviconHandler : public FaviconHandler {
|
| const GURL& page_url,
|
| int icon_types,
|
| CancelableRequestConsumerBase* consumer,
|
| - const FaviconService::FaviconDataCallback& callback) OVERRIDE {
|
| + const FaviconService::FaviconResultsCallback& callback) OVERRIDE {
|
| history_handler_.reset(new HistoryRequestHandler(page_url, GURL(),
|
| icon_types, callback));
|
| }
|
| @@ -253,11 +277,11 @@ class TestFaviconHandler : public FaviconHandler {
|
|
|
| virtual void SetHistoryFavicon(const GURL& page_url,
|
| const GURL& icon_url,
|
| - const std::vector<unsigned char>& image_data,
|
| + const std::vector<unsigned char>& bitmap_data,
|
| history::IconType icon_type) OVERRIDE {
|
| history_handler_.reset(new HistoryRequestHandler(
|
| - page_url, icon_url,icon_type, image_data,
|
| - FaviconService::FaviconDataCallback()));
|
| + page_url, icon_url,icon_type, bitmap_data,
|
| + FaviconService::FaviconResultsCallback()));
|
| }
|
|
|
| virtual FaviconService* GetFaviconService() OVERRIDE {
|
| @@ -291,7 +315,7 @@ namespace {
|
|
|
| void HistoryRequestHandler::InvokeCallback() {
|
| if (!callback_.is_null())
|
| - callback_.Run(0, favicon_data_);
|
| + callback_.Run(0, history_results_, history::IconURLSizesMap());
|
| }
|
|
|
| void DownloadHandler::InvokeCallback() {
|
| @@ -326,14 +350,7 @@ TEST_F(FaviconHandlerTest, GetFaviconFromHistory) {
|
| EXPECT_EQ(GURL(), history_handler->icon_url_);
|
| EXPECT_EQ(history::FAVICON, history_handler->icon_type_);
|
|
|
| - // 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<base::RefCountedBytes> data = new base::RefCountedBytes();
|
| - FillBitmap(gfx::kFaviconSize, gfx::kFaviconSize, &data->data());
|
| - history_handler->favicon_data_.image_data = data;
|
| + SetFaviconBitmapResult(icon_url, &history_handler->history_results_);
|
|
|
| // Send history response.
|
| history_handler->InvokeCallback();
|
| @@ -375,10 +392,8 @@ TEST_F(FaviconHandlerTest, DownloadFavicon) {
|
| EXPECT_EQ(history::FAVICON, history_handler->icon_type_);
|
|
|
| // Set icon data expired
|
| - history_handler->favicon_data_.known_icon = true;
|
| - history_handler->favicon_data_.icon_type = history::FAVICON;
|
| - history_handler->favicon_data_.expired = true;
|
| - history_handler->favicon_data_.icon_url = icon_url;
|
| + SetFaviconBitmapResult(icon_url, history::FAVICON, true /* expired */,
|
| + &history_handler->history_results_);
|
| // Send history response.
|
| history_handler->InvokeCallback();
|
| // Verify FaviconHandler status
|
| @@ -415,7 +430,7 @@ TEST_F(FaviconHandlerTest, DownloadFavicon) {
|
| ASSERT_TRUE(history_handler);
|
| EXPECT_EQ(icon_url, history_handler->icon_url_);
|
| EXPECT_EQ(FaviconURL::FAVICON, history_handler->icon_type_);
|
| - EXPECT_LT(0U, history_handler->image_data_.size());
|
| + EXPECT_LT(0U, history_handler->bitmap_data_.size());
|
| EXPECT_EQ(page_url, history_handler->page_url_);
|
|
|
| // Verify NavigationEntry.
|
| @@ -444,13 +459,7 @@ TEST_F(FaviconHandlerTest, UpdateAndDownloadFavicon) {
|
| EXPECT_EQ(history::FAVICON, history_handler->icon_type_);
|
|
|
| // 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<base::RefCountedBytes> data = new base::RefCountedBytes();
|
| - FillBitmap(gfx::kFaviconSize, gfx::kFaviconSize, &data->data());
|
| - history_handler->favicon_data_.image_data = data;
|
| + SetFaviconBitmapResult(icon_url, &history_handler->history_results_);
|
|
|
| // Send history response.
|
| history_handler->InvokeCallback();
|
| @@ -483,7 +492,7 @@ TEST_F(FaviconHandlerTest, UpdateAndDownloadFavicon) {
|
| EXPECT_EQ(page_url, history_handler->page_url_);
|
|
|
| // Simulate not find icon.
|
| - history_handler->favicon_data_.known_icon = false;
|
| + history_handler->history_results_.clear();
|
| history_handler->InvokeCallback();
|
|
|
| // Favicon should request to download icon now.
|
| @@ -505,7 +514,7 @@ TEST_F(FaviconHandlerTest, UpdateAndDownloadFavicon) {
|
| ASSERT_TRUE(history_handler);
|
| EXPECT_EQ(new_icon_url, history_handler->icon_url_);
|
| EXPECT_EQ(FaviconURL::FAVICON, history_handler->icon_type_);
|
| - EXPECT_LT(0U, history_handler->image_data_.size());
|
| + EXPECT_LT(0U, history_handler->bitmap_data_.size());
|
| EXPECT_EQ(page_url, history_handler->page_url_);
|
|
|
| // Verify NavigationEntry.
|
| @@ -533,14 +542,7 @@ TEST_F(FaviconHandlerTest, UpdateFavicon) {
|
| EXPECT_EQ(GURL(), history_handler->icon_url_);
|
| EXPECT_EQ(history::FAVICON, history_handler->icon_type_);
|
|
|
| - // 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<base::RefCountedBytes> data = new base::RefCountedBytes();
|
| - FillBitmap(gfx::kFaviconSize, gfx::kFaviconSize, &data->data());
|
| - history_handler->favicon_data_.image_data = data;
|
| + SetFaviconBitmapResult(icon_url, &history_handler->history_results_);
|
|
|
| // Send history response.
|
| history_handler->InvokeCallback();
|
| @@ -573,11 +575,7 @@ TEST_F(FaviconHandlerTest, UpdateFavicon) {
|
| EXPECT_EQ(page_url, history_handler->page_url_);
|
|
|
| // Simulate find icon.
|
| - 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 = new_icon_url;
|
| - history_handler->favicon_data_.image_data = data;
|
| + SetFaviconBitmapResult(new_icon_url, &history_handler->history_results_);
|
| history_handler->InvokeCallback();
|
|
|
| // Shouldn't request download favicon
|
| @@ -610,7 +608,7 @@ TEST_F(FaviconHandlerTest, Download2ndFaviconURLCandidate) {
|
| history_handler->icon_type_);
|
|
|
| // Icon not found.
|
| - history_handler->favicon_data_.known_icon = false;
|
| + history_handler->history_results_.clear();
|
| // Send history response.
|
| history_handler->InvokeCallback();
|
| // Verify FaviconHandler status.
|
| @@ -643,7 +641,7 @@ TEST_F(FaviconHandlerTest, Download2ndFaviconURLCandidate) {
|
| EXPECT_EQ(page_url, history_handler->page_url_);
|
|
|
| // Simulate not find icon.
|
| - history_handler->favicon_data_.known_icon = false;
|
| + history_handler->history_results_.clear();
|
| history_handler->InvokeCallback();
|
|
|
| // Should request download favicon.
|
| @@ -677,14 +675,9 @@ TEST_F(FaviconHandlerTest, Download2ndFaviconURLCandidate) {
|
| // Reset download handler
|
| download_handler->Reset();
|
|
|
| - // Smulates getting a expired icon from history.
|
| - history_handler->favicon_data_.known_icon = true;
|
| - history_handler->favicon_data_.icon_type = history::TOUCH_ICON;
|
| - history_handler->favicon_data_.expired = true;
|
| - history_handler->favicon_data_.icon_url = new_icon_url;
|
| - scoped_refptr<base::RefCountedBytes> data = new base::RefCountedBytes();
|
| - FillBitmap(gfx::kFaviconSize, gfx::kFaviconSize, &data->data());
|
| - history_handler->favicon_data_.image_data = data;
|
| + // Simulates getting a expired icon from history.
|
| + SetFaviconBitmapResult(new_icon_url, history::TOUCH_ICON,
|
| + true /* expired */, &history_handler->history_results_);
|
| history_handler->InvokeCallback();
|
|
|
| // Verify the download request.
|
| @@ -702,7 +695,7 @@ TEST_F(FaviconHandlerTest, Download2ndFaviconURLCandidate) {
|
| ASSERT_TRUE(history_handler);
|
| EXPECT_EQ(new_icon_url, history_handler->icon_url_);
|
| EXPECT_EQ(FaviconURL::TOUCH_ICON, history_handler->icon_type_);
|
| - EXPECT_LT(0U, history_handler->image_data_.size());
|
| + EXPECT_LT(0U, history_handler->bitmap_data_.size());
|
| EXPECT_EQ(page_url, history_handler->page_url_);
|
| }
|
|
|
| @@ -727,7 +720,7 @@ TEST_F(FaviconHandlerTest, UpdateDuringDownloading) {
|
| history_handler->icon_type_);
|
|
|
| // Icon not found.
|
| - history_handler->favicon_data_.known_icon = false;
|
| + history_handler->history_results_.clear();
|
| // Send history response.
|
| history_handler->InvokeCallback();
|
| // Verify FaviconHandler status.
|
| @@ -760,7 +753,7 @@ TEST_F(FaviconHandlerTest, UpdateDuringDownloading) {
|
| EXPECT_EQ(page_url, history_handler->page_url_);
|
|
|
| // Simulate not find icon.
|
| - history_handler->favicon_data_.known_icon = false;
|
| + history_handler->history_results_.clear();
|
| history_handler->InvokeCallback();
|
|
|
| // Should request download favicon.
|
| @@ -793,7 +786,7 @@ TEST_F(FaviconHandlerTest, UpdateDuringDownloading) {
|
| // Reset the history_handler to verify whether favicon is request from
|
| // history.
|
| // Save the callback for late use.
|
| - FaviconService::FaviconDataCallback callback = history_handler->callback_;
|
| + FaviconService::FaviconResultsCallback callback = history_handler->callback_;
|
| helper.set_history_handler(NULL);
|
|
|
| // Simulates download succeed.
|
| @@ -807,14 +800,8 @@ TEST_F(FaviconHandlerTest, UpdateDuringDownloading) {
|
| scoped_ptr<HistoryRequestHandler> handler;
|
| handler.reset(new HistoryRequestHandler(page_url, latest_icon_url,
|
| history::TOUCH_ICON, callback));
|
| - handler->favicon_data_.known_icon = true;
|
| - handler->favicon_data_.expired = false;
|
| - handler->favicon_data_.icon_type = history::TOUCH_ICON;
|
| - handler->favicon_data_.icon_url = latest_icon_url;
|
| - scoped_refptr<base::RefCountedBytes> data = new base::RefCountedBytes();
|
| - FillBitmap(gfx::kFaviconSize, gfx::kFaviconSize, &data->data());
|
| - handler->favicon_data_.image_data = data;
|
| -
|
| + SetFaviconBitmapResult(latest_icon_url, history::TOUCH_ICON,
|
| + false /* expired */, &handler->history_results_);
|
| handler->InvokeCallback();
|
|
|
| // No download request.
|
| @@ -838,14 +825,7 @@ TEST_F(FaviconHandlerTest, MultipleFavicon) {
|
| 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<base::RefCountedBytes> data = new base::RefCountedBytes();
|
| - FillBitmap(gfx::kFaviconSize, gfx::kFaviconSize, &data->data());
|
| - history_handler->favicon_data_.image_data = data;
|
| + SetFaviconBitmapResult(icon_url, &history_handler->history_results_);
|
|
|
| // Send history response.
|
| history_handler->InvokeCallback();
|
| @@ -864,7 +844,7 @@ TEST_F(FaviconHandlerTest, MultipleFavicon) {
|
| 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()->history_results_.clear();
|
| handler.history_handler()->InvokeCallback();
|
| ASSERT_TRUE(download_handler->HasDownload());
|
| EXPECT_EQ(icon_url_small, download_handler->GetImageUrl());
|
| @@ -873,7 +853,7 @@ TEST_F(FaviconHandlerTest, MultipleFavicon) {
|
| EXPECT_EQ(3U, handler.image_urls().size());
|
|
|
| // Download the second icon (set not in history).
|
| - handler.history_handler()->favicon_data_.known_icon = false;
|
| + handler.history_handler()->history_results_.clear();
|
| handler.history_handler()->InvokeCallback();
|
| ASSERT_TRUE(download_handler->HasDownload());
|
| EXPECT_EQ(icon_url_large, download_handler->GetImageUrl());
|
| @@ -882,7 +862,7 @@ TEST_F(FaviconHandlerTest, MultipleFavicon) {
|
| EXPECT_EQ(2U, handler.image_urls().size());
|
|
|
| // Download the third icon (set not in history).
|
| - handler.history_handler()->favicon_data_.known_icon = false;
|
| + handler.history_handler()->history_results_.clear();
|
| handler.history_handler()->InvokeCallback();
|
| ASSERT_TRUE(download_handler->HasDownload());
|
| EXPECT_EQ(icon_url_preferred1, download_handler->GetImageUrl());
|
| @@ -915,13 +895,7 @@ TEST_F(FaviconHandlerTest, FirstFavicon) {
|
| 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<base::RefCountedBytes> data = new base::RefCountedBytes();
|
| - FillBitmap(gfx::kFaviconSize, gfx::kFaviconSize, &data->data());
|
| - history_handler->favicon_data_.image_data = data;
|
| + SetFaviconBitmapResult(icon_url, &history_handler->history_results_);
|
|
|
| // Send history response.
|
| history_handler->InvokeCallback();
|
| @@ -938,7 +912,7 @@ TEST_F(FaviconHandlerTest, FirstFavicon) {
|
| 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()->history_results_.clear();
|
| handler.history_handler()->InvokeCallback();
|
| ASSERT_TRUE(download_handler->HasDownload());
|
| EXPECT_EQ(icon_url_preferred1, download_handler->GetImageUrl());
|
|
|