Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(363)

Unified Diff: components/favicon/core/favicon_handler.cc

Issue 1081003002: Simplify FaviconHandler::OnFaviconData() (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@fix_favicon5
Patch Set: Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/favicon/core/favicon_handler.cc
diff --git a/components/favicon/core/favicon_handler.cc b/components/favicon/core/favicon_handler.cc
index ed01175de06fc6894e6f9421809ab86e366bfa98..c753b0666c4620cfcc3a49629c72669de05011cb 100644
--- a/components/favicon/core/favicon_handler.cc
+++ b/components/favicon/core/favicon_handler.cc
@@ -643,35 +643,28 @@ void FaviconHandler::OnFaviconData(const std::vector<
bool has_expired_or_incomplete_result = HasExpiredOrIncompleteResult(
Roger McFarlane (Chromium) 2015/04/27 15:38:30 has_results && HasExpired...? See ONFaviconDataFo
pkotwicz 2015/04/27 18:26:36 I have changed HasExpiredOrIncompleteResult() to r
preferred_icon_size(), favicon_bitmap_results);
pkotwicz 2015/04/13 04:55:18 Yes, storing this in |favicon_expired_or_incomplet
bool has_valid_result = HasValidResult(favicon_bitmap_results);
+ history_results_ = favicon_bitmap_results;
Roger McFarlane (Chromium) 2015/04/13 17:45:37 Do you need to save the results if they're not val
pkotwicz 2015/04/25 01:14:48 It is unclear what the correct behavior is. - The
pkotwicz 2015/04/25 01:19:41 The reason that it might be nice to only update |h
- if (has_results && handler_type_ == FAVICON && !download_largest_icon_) {
- if (has_valid_result) {
- // 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.
- NotifyFaviconAvailable(favicon_bitmap_results);
- }
- if (has_expired_or_incomplete_result) {
- // The favicon is out of date. Request the current one.
- ScheduleDownload(driver_->GetActiveURL(),
- driver_->GetActiveFaviconURL(),
- favicon_base::FAVICON);
- }
- } else if (current_candidate() &&
- (!has_results || has_expired_or_incomplete_result ||
- !(DoUrlsAndIconsMatch(*current_candidate(), favicon_bitmap_results)))) {
- // 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.
pkotwicz 2015/04/13 04:55:18 The results should be empty if the type is differe
+ if (has_valid_result) {
+ // There is a valid favicon. Notify any observers. It is useful to notify
+ // the observers even if the favicon is expired or incomplete (incorrect
+ // size) because temporarily showing the user an expired favicon or
+ // streched favicon is preferable to showing the user the default favicon.
+ NotifyFaviconAvailable(favicon_bitmap_results);
+ }
+
+ if (!current_candidate() ||
+ (has_results &&
+ !DoUrlsAndIconsMatch(*current_candidate(), favicon_bitmap_results))) {
+ // The icon URLs have been updated since the favicon data was requested.
+ return;
+ }
+
+ if (!has_results || has_expired_or_incomplete_result) {
ScheduleDownload(driver_->GetActiveURL(),
current_candidate()->icon_url,
current_candidate()->icon_type);
}
- history_results_ = favicon_bitmap_results;
-
- if (has_valid_result &&
- (handler_type_ != FAVICON || download_largest_icon_)) {
- NotifyFaviconAvailable(favicon_bitmap_results);
- }
}
void FaviconHandler::ScheduleDownload(const GURL& url,
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698