| 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);
|
| };
|
|
|
|
|