| Index: chrome/browser/favicon/favicon_service.cc | 
| diff --git a/chrome/browser/favicon/favicon_service.cc b/chrome/browser/favicon/favicon_service.cc | 
| index f32b61e3bdb5b80471a9f6c26f9f61019cdbcff0..7707f5aa5ff70c8bb98eaf14a34a1cfc9ce97fea 100644 | 
| --- a/chrome/browser/favicon/favicon_service.cc | 
| +++ b/chrome/browser/favicon/favicon_service.cc | 
| @@ -4,6 +4,7 @@ | 
|  | 
| #include "chrome/browser/favicon/favicon_service.h" | 
|  | 
| +#include "base/hash.h" | 
| #include "base/message_loop/message_loop_proxy.h" | 
| #include "chrome/browser/favicon/favicon_util.h" | 
| #include "chrome/browser/history/history_backend.h" | 
| @@ -259,6 +260,20 @@ void FaviconService::SetFavicons( | 
| history_service_->SetFavicons(page_url, icon_type, favicon_bitmap_data); | 
| } | 
|  | 
| +void FaviconService::UnableToDownloadFavicon(const GURL& icon_url) { | 
| +  MissingFaviconURLHash url_hash = base::Hash(icon_url.spec()); | 
| +  missing_favicon_urls_.insert(url_hash); | 
| +} | 
| + | 
| +bool FaviconService::WasUnableToDownloadFavicon(const GURL& icon_url) const { | 
| +  MissingFaviconURLHash url_hash = base::Hash(icon_url.spec()); | 
| +  return missing_favicon_urls_.find(url_hash) != missing_favicon_urls_.end(); | 
| +} | 
| + | 
| +void FaviconService::ClearUnableToDownloadFavicons() { | 
| +  missing_favicon_urls_.clear(); | 
| +} | 
| + | 
| FaviconService::~FaviconService() {} | 
|  | 
| CancelableTaskTracker::TaskId FaviconService::GetFaviconForURLImpl( | 
| @@ -353,3 +368,4 @@ void FaviconService::RunFaviconRawCallbackWithBitmapResults( | 
| &resized_bitmap_data); | 
| callback.Run(bitmap_result); | 
| } | 
| + | 
|  |