Chromium Code Reviews| Index: chrome/browser/favicon/favicon_handler.cc |
| diff --git a/chrome/browser/favicon/favicon_handler.cc b/chrome/browser/favicon/favicon_handler.cc |
| index 1da634c9af984ece421a93faed2c4120b41b3f9d..7de1d4476b2909d5ca5f6682f2ae8360e4fd5564 100644 |
| --- a/chrome/browser/favicon/favicon_handler.cc |
| +++ b/chrome/browser/favicon/favicon_handler.cc |
| @@ -85,7 +85,7 @@ FaviconHandler::DownloadRequest::DownloadRequest( |
| //////////////////////////////////////////////////////////////////////////////// |
| FaviconHandler::FaviconCandidate::FaviconCandidate() |
| - : bitmap_size(0), |
| + : score(0), |
| icon_type(history::INVALID_ICON) { |
| } |
| @@ -96,12 +96,12 @@ FaviconHandler::FaviconCandidate::FaviconCandidate( |
| const GURL& url, |
| const GURL& image_url, |
| const gfx::Image& image, |
| - int bitmap_size, |
| + float score, |
| history::IconType icon_type) |
| : url(url), |
| image_url(image_url), |
| image(image), |
| - bitmap_size(bitmap_size), |
| + score(score), |
| icon_type(icon_type) { |
| } |
| @@ -163,11 +163,11 @@ FaviconService* FaviconHandler::GetFaviconService() { |
| bool FaviconHandler::UpdateFaviconCandidate(const GURL& url, |
| const GURL& image_url, |
| const gfx::Image& image, |
| + float score, |
| history::IconType icon_type) { |
| bool update_candidate = false; |
| SkBitmap bitmap = *(image.ToSkBitmap()); |
| - int bitmap_size = std::max(bitmap.width(), bitmap.height()); |
| - bool exact_match = (bitmap_size == preferred_icon_size()); |
| + bool exact_match = score == 0; |
|
pkotwicz
2012/08/15 22:29:09
I might be misunderstanding, but shouldn't this ch
Nico
2012/08/15 22:30:43
Err, yes.
Nico
2012/08/15 22:39:09
(Done.)
|
| if (preferred_icon_size() == 0) { |
| // No preferred size, use this icon. |
| update_candidate = true; |
| @@ -176,21 +176,18 @@ bool FaviconHandler::UpdateFaviconCandidate(const GURL& url, |
| // No current candidate, use this. |
| update_candidate = true; |
| } else { |
| - if (bitmap_size == preferred_icon_size()) { |
| + if (exact_match) { |
| // Exact match, use this. |
| update_candidate = true; |
| } else { |
| // Compare against current candidate. |
| - int cur_size = favicon_candidate_.bitmap_size; |
| - if ((bitmap_size >= preferred_icon_size() && bitmap_size < cur_size) || |
| - (cur_size < preferred_icon_size() && bitmap_size > cur_size)) { |
| + if (score > favicon_candidate_.score) |
| update_candidate = true; |
| - } |
| } |
| } |
| if (update_candidate) { |
| favicon_candidate_ = FaviconCandidate( |
| - url, image_url, image, bitmap_size, icon_type); |
| + url, image_url, image, score, icon_type); |
| } |
| return exact_match; |
| } |
| @@ -294,7 +291,8 @@ void FaviconHandler::ProcessCurrentUrl() { |
| void FaviconHandler::OnDidDownloadFavicon(int id, |
| const GURL& image_url, |
| bool errored, |
| - const gfx::Image& image) { |
| + const gfx::Image& image, |
| + float score) { |
| DownloadRequests::iterator i = download_requests_.find(id); |
| if (i == download_requests_.end()) { |
| // Currently WebContents notifies us of ANY downloads so that it is |
| @@ -312,7 +310,7 @@ void FaviconHandler::OnDidDownloadFavicon(int id, |
| bool request_next_icon = true; |
| if (!errored) { |
| request_next_icon = !UpdateFaviconCandidate( |
| - i->second.url, image_url, image, i->second.icon_type); |
| + i->second.url, image_url, image, score, i->second.icon_type); |
| } |
| if (request_next_icon && GetEntry() && image_urls_.size() > 1) { |
| // Remove the first member of image_urls_ and process the remaining. |