Index: chrome/browser/favicon/favicon_handler.h |
diff --git a/chrome/browser/favicon/favicon_handler.h b/chrome/browser/favicon/favicon_handler.h |
index a59e944c42e6e66b7ba81b97b05851c1de1c8a01..3e3274a548ef5f1b748a9a377c6520734eb81679 100644 |
--- a/chrome/browser/favicon/favicon_handler.h |
+++ b/chrome/browser/favicon/favicon_handler.h |
@@ -18,6 +18,7 @@ |
#include "chrome/common/ref_counted_util.h" |
#include "googleurl/src/gurl.h" |
#include "ui/gfx/favicon_size.h" |
+#include "ui/gfx/image/image.h" |
class FaviconHandlerDelegate; |
class Profile; |
@@ -29,10 +30,6 @@ namespace content { |
class NavigationEntry; |
} |
-namespace gfx { |
-class Image; |
-} |
- |
// FaviconHandler works with FaviconTabHelper to fetch the specific type of |
// favicon. |
// |
@@ -172,6 +169,22 @@ class FaviconHandler { |
history::IconType icon_type; |
}; |
+ struct FaviconCandidate { |
+ FaviconCandidate(); |
+ ~FaviconCandidate(); |
+ |
+ FaviconCandidate(const GURL& url, |
+ const GURL& image_url, |
+ const gfx::Image& image, |
+ history::IconType icon_type); |
+ |
+ GURL url; |
+ GURL image_url; |
+ gfx::Image image; |
+ history::IconType icon_type; |
+ }; |
+ typedef std::vector<FaviconCandidate> FaviconCandidates; |
+ |
// See description above class for details. |
void OnFaviconDataForInitialURL(FaviconService::Handle handle, |
history::FaviconData favicon); |
@@ -195,8 +208,10 @@ class FaviconHandler { |
history::IconType icon_type, |
const FaviconTabHelper::ImageDownloadCallback& callback); |
- // Sets the image data for the favicon. This is invoked asynchronously after |
- // we request the TabContents to download the favicon. |
+ // Once all candidates are download, this picks one and calls SetFavicon(). |
+ void SetFaviconFromCandidates(); |
+ |
+ // Sets the image data for the favicon. |
void SetFavicon(const GURL& url, |
const GURL& icon_url, |
const gfx::Image& image, |
@@ -211,8 +226,8 @@ class FaviconHandler { |
void UpdateFavicon(content::NavigationEntry* entry, const gfx::Image* image); |
// If the image is not already at its preferred size, scales the image such |
- // that either the width and/or height is 16 pixels wide. Does nothing if the |
- // image is empty. |
+ // that either the width and/or height == gfx::kFaviconSize. Does nothing if |
+ // the image is empty. |
gfx::Image ResizeFaviconIfNeeded(const gfx::Image& image); |
void FetchFaviconInternal(); |
@@ -267,6 +282,9 @@ class FaviconHandler { |
// This handler's delegate. |
FaviconHandlerDelegate* delegate_; // weak |
+ // Vector of favicon candidates. |
+ FaviconCandidates favicon_candidates_; |
+ |
DISALLOW_COPY_AND_ASSIGN(FaviconHandler); |
}; |