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

Unified Diff: chrome/browser/favicon/favicon_tab_helper.cc

Issue 14322023: Don't request missing favicon on every page request. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Propagate HTTP Status Code to FaviconTabHelper::DidDownloadFavicon, Clear Missing Favicons on RELOA… Created 7 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
Index: chrome/browser/favicon/favicon_tab_helper.cc
diff --git a/chrome/browser/favicon/favicon_tab_helper.cc b/chrome/browser/favicon/favicon_tab_helper.cc
index 768e950c9c49e1377436549f26eee8530ec9dd0a..88f364c16672c10c3d8d0685db5cb9195b571c5b 100644
--- a/chrome/browser/favicon/favicon_tab_helper.cc
+++ b/chrome/browser/favicon/favicon_tab_helper.cc
@@ -135,6 +135,13 @@ NavigationEntry* FaviconTabHelper::GetActiveEntry() {
}
int FaviconTabHelper::StartDownload(const GURL& url, int image_size) {
+ FaviconService* favicon_service = FaviconServiceFactory::GetForProfile(
+ profile_->GetOriginalProfile(), Profile::IMPLICIT_ACCESS);
+ if (favicon_service && favicon_service->IsMissingFavicon(url)) {
+ VLOG(1) << "Skip Missing FavIcon: " << url;
sky 2013/05/03 20:24:54 DVLOG ?
mef 2013/05/03 21:45:59 Done.
+ return 0;
+ }
+
return web_contents()->DownloadImage(
url,
true,
@@ -157,8 +164,11 @@ void FaviconTabHelper::NavigateToPendingEntry(
!profile_->IsOffTheRecord()) {
FaviconService* favicon_service = FaviconServiceFactory::GetForProfile(
profile_, Profile::IMPLICIT_ACCESS);
- if (favicon_service)
+ if (favicon_service) {
favicon_service->SetFaviconOutOfDateForPage(url);
+ if (reload_type == NavigationController::RELOAD_IGNORING_CACHE)
+ favicon_service->ClearMissingFavicons();
+ }
}
}
@@ -179,9 +189,19 @@ void FaviconTabHelper::DidUpdateFaviconURL(
void FaviconTabHelper::DidDownloadFavicon(
int id,
+ int http_status_code,
const GURL& image_url,
int requested_size,
const std::vector<SkBitmap>& bitmaps) {
+
+ if (bitmaps.size() == 0 && http_status_code == 404) {
sky 2013/05/03 20:24:54 .empty()
mef 2013/05/03 21:45:59 Done.
+ VLOG(1) << "Missing Favicon:" << image_url;
+ FaviconService* favicon_service = FaviconServiceFactory::GetForProfile(
+ profile_->GetOriginalProfile(), Profile::IMPLICIT_ACCESS);
+ if (favicon_service)
+ favicon_service->AddMissingFavicon(image_url);
+ }
+
favicon_handler_->OnDidDownloadFavicon(
id, image_url, requested_size, bitmaps);
if (touch_icon_handler_.get()) {

Powered by Google App Engine
This is Rietveld 408576698