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

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

Issue 1401053002: Make ProcessCurrentUrl() and OnFaviconDataForInitialURLFromFaviconService() share code (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@page_changed_under_us
Patch Set: Created 5 years, 2 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 | « components/favicon/core/favicon_handler.h ('k') | 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 3d15052e29d3d3b2bacc6f005d75a7c280201738..9f45d831038b99643e637439c54f903149f8bb66 100644
--- a/components/favicon/core/favicon_handler.cc
+++ b/components/favicon/core/favicon_handler.cc
@@ -377,22 +377,23 @@ void FaviconHandler::OnUpdateFaviconURL(
// TODO(davemoore) Should clear on empty url. Currently we ignore it.
// This appears to be what FF does as well.
- if (current_candidate())
- ProcessCurrentUrl();
+ if (current_candidate() && got_favicon_from_history_)
+ OnGotInitialHistoryDataAndIconURLCandidates();
}
-void FaviconHandler::ProcessCurrentUrl() {
- DCHECK(!image_urls_.empty());
-
- if (!favicon_expired_or_incomplete_ && got_favicon_from_history_ &&
- HasValidResult(history_results_) &&
+void FaviconHandler::OnGotInitialHistoryDataAndIconURLCandidates() {
+ if (!favicon_expired_or_incomplete_ && HasValidResult(history_results_) &&
DoUrlsAndIconsMatch(*current_candidate(), history_results_)) {
+ // The data from history is valid and not expired. The icon URL of the
+ // history data matches one of the page's icon URLs. We are done. No
+ // additional downloads or history requests are needed.
+ // TODO: Store all of the icon URLs associated with a page in history so
+ // that we can check whether the page's icon URLs match the page's icon URLs
+ // at the time that the favicon data was stored to the history database.
return;
}
- if (got_favicon_from_history_)
- DownloadFaviconOrAskFaviconService(current_candidate()->icon_url,
- current_candidate()->icon_type);
+ DownloadCurrentCandidateOrAskFaviconService();
}
void FaviconHandler::OnDidDownloadFavicon(
@@ -453,7 +454,7 @@ void FaviconHandler::OnDidDownloadFavicon(
if (request_next_icon && current_candidate_index_ + 1 < image_urls_.size()) {
// Process the next candidate.
++current_candidate_index_;
- ProcessCurrentUrl();
+ DownloadCurrentCandidateOrAskFaviconService();
} else {
// We have either found the ideal candidate or run out of candidates.
if (best_favicon_candidate_.icon_type != favicon_base::INVALID_ICON) {
@@ -584,32 +585,18 @@ void FaviconHandler::OnFaviconDataForInitialURLFromFaviconService(
favicon_expired_or_incomplete_ = true;
}
}
- if (has_results && !favicon_expired_or_incomplete_) {
- if (current_candidate() &&
- !DoUrlsAndIconsMatch(*current_candidate(), favicon_bitmap_results)) {
- // 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.
- DownloadFaviconOrAskFaviconService(current_candidate()->icon_url,
- current_candidate()->icon_type);
- }
- } else if (current_candidate()) {
- // We know the official url for the favicon, but either don't have the
- // favicon or it's expired. Continue on to DownloadFaviconOrAskHistory to
- // either download or check history again.
- DownloadFaviconOrAskFaviconService(current_candidate()->icon_url,
- current_candidate()->icon_type);
- }
- // else we haven't got the icon url. When we get it we'll ask the
- // renderer to download the icon.
if (has_valid_result && (handler_type_ != FAVICON || download_largest_icon_))
NotifyFaviconAvailable(favicon_bitmap_results);
+
+ if (current_candidate())
+ OnGotInitialHistoryDataAndIconURLCandidates();
}
-void FaviconHandler::DownloadFaviconOrAskFaviconService(
- const GURL& icon_url,
- favicon_base::IconType icon_type) {
+void FaviconHandler::DownloadCurrentCandidateOrAskFaviconService() {
+ GURL icon_url = current_candidate()->icon_url;
+ favicon_base::IconType icon_type = current_candidate()->icon_type;
+
if (favicon_expired_or_incomplete_) {
// We have the mapping, but the favicon is out of date. Download it now.
ScheduleDownload(icon_url, icon_type);
« no previous file with comments | « components/favicon/core/favicon_handler.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698