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..40e856789dddeadef9046e1006430fa1ed1efa80 100644 |
| --- a/chrome/browser/favicon/favicon_handler.cc |
| +++ b/chrome/browser/favicon/favicon_handler.cc |
| @@ -282,7 +282,8 @@ void FaviconHandler::ProcessCurrentUrl() { |
| history_icon_.is_valid() && |
| DoUrlAndIconMatch( |
| *current_candidate(), |
| - history_icon_.icon_url, history_icon_.icon_type)) { |
| + history_icon_.elements[0].icon_url, |
| + history_icon_.icon_type)) { |
| return; |
| } |
| @@ -398,35 +399,39 @@ bool FaviconHandler::ShouldSaveFavicon(const GURL& url) { |
| void FaviconHandler::OnFaviconDataForInitialURL( |
| FaviconService::Handle handle, |
| - history::FaviconData favicon) { |
| + history::FaviconData favicon_data) { |
| NavigationEntry* entry = GetEntry(); |
| if (!entry) |
| return; |
| got_favicon_from_history_ = true; |
| - history_icon_ = favicon; |
| + history_icon_ = favicon_data; |
| - favicon_expired_ = (favicon.known_icon && favicon.expired); |
| + favicon_expired_ = (favicon_data.known_icon && favicon_data.expired); |
| - if (favicon.known_icon && favicon.icon_type == history::FAVICON && |
| + history::FaviconDataElement element; |
| + if (!favicon_data.elements.empty()) |
| + element = favicon_data.elements[0]; |
| + if (favicon_data.known_icon && favicon_data.icon_type == history::FAVICON && |
| !entry->GetFavicon().valid && |
| (!current_candidate() || |
| DoUrlAndIconMatch( |
| - *current_candidate(), favicon.icon_url, favicon.icon_type))) { |
| + *current_candidate(), element.icon_url, favicon_data.icon_type))) { |
| // The db knows the favicon (although it may be out of date) and the entry |
| // doesn't have an icon. Set the favicon now, and if the favicon turns out |
| // to be expired (or the wrong url) we'll fetch later on. This way the |
| // user doesn't see a flash of the default favicon. |
| - entry->GetFavicon().url = favicon.icon_url; |
| - if (favicon.is_valid()) |
| - UpdateFavicon(entry, favicon.image_data); |
| + entry->GetFavicon().url = element.icon_url; |
| + if (favicon_data.is_valid()) |
| + UpdateFavicon(entry, element.bitmap_data); |
| entry->GetFavicon().valid = true; |
| } |
| - if (favicon.known_icon && !favicon.expired) { |
| + if (favicon_data.known_icon && !favicon_data.expired) { |
| + history::FaviconDataElement element = favicon_data.elements[0]; |
| if (current_candidate() && |
| !DoUrlAndIconMatch( |
| - *current_candidate(), favicon.icon_url, favicon.icon_type)) { |
| + *current_candidate(), element.icon_url, favicon_data.icon_type)) { |
| // Mapping in the database is wrong. DownloadFavIconOrAskHistory will |
| // update the mapping for this url and download the favicon if we don't |
| // already have it. |
| @@ -475,21 +480,22 @@ void FaviconHandler::DownloadFaviconOrAskHistory( |
| } |
| void FaviconHandler::OnFaviconData(FaviconService::Handle handle, |
| - history::FaviconData favicon) { |
| + history::FaviconData favicon_data) { |
| NavigationEntry* entry = GetEntry(); |
| if (!entry) |
| return; |
| // No need to update the favicon url. By the time we get here |
| // UpdateFaviconURL will have set the favicon url. |
| - if (favicon.icon_type == history::FAVICON) { |
| - if (favicon.is_valid()) { |
| + if (favicon_data.icon_type == history::FAVICON) { |
| + if (favicon_data.is_valid()) { |
| // There is a favicon, set it now. If expired we'll download the current |
| // one again, but at least the user will get some icon instead of the |
| // default and most likely the current one is fine anyway. |
| - UpdateFavicon(entry, favicon.image_data); |
| + history::FaviconDataElement element = favicon_data.elements[0]; |
|
stevenjb
2012/08/15 22:59:18
Why do a copy here?
|
| + UpdateFavicon(entry, element.bitmap_data); |
| } |
| - if (!favicon.known_icon || favicon.expired) { |
| + if (!favicon_data.known_icon || favicon_data.expired) { |
| // We don't know the favicon, or it is out of date. Request the current |
| // one. |
| ScheduleDownload(entry->GetURL(), entry->GetFavicon().url, |
| @@ -497,9 +503,11 @@ void FaviconHandler::OnFaviconData(FaviconService::Handle handle, |
| history::FAVICON, |
| FaviconTabHelper::ImageDownloadCallback()); |
| } |
| - } else if (current_candidate() && (!favicon.known_icon || favicon.expired || |
| - !(DoUrlAndIconMatch( |
| - *current_candidate(), favicon.icon_url, favicon.icon_type)))) { |
| + } else if (current_candidate() && |
| + (!favicon_data.known_icon || favicon_data.expired || |
| + favicon_data.elements.empty() || !(DoUrlAndIconMatch( |
|
stevenjb
2012/08/15 22:59:18
nit: put !(DoUrlAndIconMatch( on a new line
|
| + *current_candidate(), favicon_data.elements[0].icon_url, |
| + favicon_data.icon_type)))) { |
| // We don't know the favicon, it is out of date or its type is not same as |
| // one got from page. Request the current one. |
| ScheduleDownload(entry->GetURL(), current_candidate()->icon_url, |
| @@ -507,7 +515,7 @@ void FaviconHandler::OnFaviconData(FaviconService::Handle handle, |
| ToHistoryIconType(current_candidate()->icon_type), |
| FaviconTabHelper::ImageDownloadCallback()); |
| } |
| - history_icon_ = favicon; |
| + history_icon_ = favicon_data; |
| } |
| int FaviconHandler::ScheduleDownload( |