| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef CHROME_BROWSER_FAVICON_FAVICON_HANDLER_H_ | 5 #ifndef CHROME_BROWSER_FAVICON_FAVICON_HANDLER_H_ |
| 6 #define CHROME_BROWSER_FAVICON_FAVICON_HANDLER_H_ | 6 #define CHROME_BROWSER_FAVICON_FAVICON_HANDLER_H_ |
| 7 | 7 |
| 8 #include <map> | 8 #include <map> |
| 9 | 9 |
| 10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
| 11 #include "base/callback_forward.h" | 11 #include "base/callback_forward.h" |
| 12 #include "base/memory/ref_counted.h" | 12 #include "base/memory/ref_counted.h" |
| 13 #include "chrome/browser/common/cancelable_request.h" | 13 #include "chrome/browser/common/cancelable_request.h" |
| 14 #include "chrome/browser/favicon/favicon_service.h" | 14 #include "chrome/browser/favicon/favicon_service.h" |
| 15 #include "chrome/browser/favicon/favicon_tab_helper.h" | 15 #include "chrome/browser/favicon/favicon_tab_helper.h" |
| 16 #include "chrome/common/favicon_url.h" | |
| 17 #include "chrome/common/ref_counted_util.h" | 16 #include "chrome/common/ref_counted_util.h" |
| 17 #include "content/public/common/favicon_url.h" |
| 18 #include "googleurl/src/gurl.h" | 18 #include "googleurl/src/gurl.h" |
| 19 #include "ui/gfx/favicon_size.h" | 19 #include "ui/gfx/favicon_size.h" |
| 20 #include "ui/gfx/image/image.h" | 20 #include "ui/gfx/image/image.h" |
| 21 | 21 |
| 22 class FaviconHandlerDelegate; | 22 class FaviconHandlerDelegate; |
| 23 class Profile; | 23 class Profile; |
| 24 class SkBitmap; | 24 class SkBitmap; |
| 25 | 25 |
| 26 namespace base { | 26 namespace base { |
| 27 class RefCountedMemory; | 27 class RefCountedMemory; |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 87 FaviconHandlerDelegate* delegate, | 87 FaviconHandlerDelegate* delegate, |
| 88 Type icon_type); | 88 Type icon_type); |
| 89 virtual ~FaviconHandler(); | 89 virtual ~FaviconHandler(); |
| 90 | 90 |
| 91 // Initiates loading the favicon for the specified url. | 91 // Initiates loading the favicon for the specified url. |
| 92 void FetchFavicon(const GURL& url); | 92 void FetchFavicon(const GURL& url); |
| 93 | 93 |
| 94 // Message Handler. Must be public, because also called from | 94 // Message Handler. Must be public, because also called from |
| 95 // PrerenderContents. Collects the |image_urls| list. | 95 // PrerenderContents. Collects the |image_urls| list. |
| 96 void OnUpdateFaviconURL(int32 page_id, | 96 void OnUpdateFaviconURL(int32 page_id, |
| 97 const std::vector<FaviconURL>& candidates); | 97 const std::vector<content::FaviconURL>& candidates); |
| 98 | 98 |
| 99 // Processes the current image_irls_ entry, requesting the image from the | 99 // Processes the current image_irls_ entry, requesting the image from the |
| 100 // history / download service. | 100 // history / download service. |
| 101 void ProcessCurrentUrl(); | 101 void ProcessCurrentUrl(); |
| 102 | 102 |
| 103 // Message handler for IconHostMsg_DidDownloadFavicon. Called when the icon | 103 // Message handler for IconHostMsg_DidDownloadFavicon. Called when the icon |
| 104 // at |image_url| has been downloaded. | 104 // at |image_url| has been downloaded. |
| 105 // |bitmaps| is a list of all the frames of the icon at |image_url|. | 105 // |bitmaps| is a list of all the frames of the icon at |image_url|. |
| 106 void OnDidDownloadFavicon(int id, | 106 void OnDidDownloadFavicon(int id, |
| 107 const GURL& image_url, | 107 const GURL& image_url, |
| 108 bool errored, | 108 bool errored, |
| 109 int requested_size, | 109 int requested_size, |
| 110 const std::vector<SkBitmap>& bitmaps); | 110 const std::vector<SkBitmap>& bitmaps); |
| 111 | 111 |
| 112 // For testing. | 112 // For testing. |
| 113 const std::deque<FaviconURL>& image_urls() const { return image_urls_; } | 113 const std::deque<content::FaviconURL>& image_urls() const { |
| 114 return image_urls_; |
| 115 } |
| 114 | 116 |
| 115 protected: | 117 protected: |
| 116 // These virtual methods make FaviconHandler testable and are overridden by | 118 // These virtual methods make FaviconHandler testable and are overridden by |
| 117 // TestFaviconHandler. | 119 // TestFaviconHandler. |
| 118 | 120 |
| 119 // Return the NavigationEntry for the active entry, or NULL if the active | 121 // Return the NavigationEntry for the active entry, or NULL if the active |
| 120 // entries URL does not match that of the URL last passed to FetchFavicon. | 122 // entries URL does not match that of the URL last passed to FetchFavicon. |
| 121 virtual content::NavigationEntry* GetEntry(); | 123 virtual content::NavigationEntry* GetEntry(); |
| 122 | 124 |
| 123 // Asks the render to download favicon, returns the request id. | 125 // Asks the render to download favicon, returns the request id. |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 230 // NavigationEntry. | 232 // NavigationEntry. |
| 231 // If the WebContents has a delegate, it is notified of the new favicon | 233 // If the WebContents has a delegate, it is notified of the new favicon |
| 232 // (INVALIDATE_FAVICON). | 234 // (INVALIDATE_FAVICON). |
| 233 void UpdateFavicon(content::NavigationEntry* entry, | 235 void UpdateFavicon(content::NavigationEntry* entry, |
| 234 const std::vector<history::FaviconBitmapResult>& favicon_bitmap_results); | 236 const std::vector<history::FaviconBitmapResult>& favicon_bitmap_results); |
| 235 void UpdateFavicon(content::NavigationEntry* entry, const gfx::Image* image); | 237 void UpdateFavicon(content::NavigationEntry* entry, const gfx::Image* image); |
| 236 | 238 |
| 237 void FetchFaviconInternal(); | 239 void FetchFaviconInternal(); |
| 238 | 240 |
| 239 // Return the current candidate if any. | 241 // Return the current candidate if any. |
| 240 FaviconURL* current_candidate() { | 242 content::FaviconURL* current_candidate() { |
| 241 return (image_urls_.size() > 0) ? &image_urls_[0] : NULL; | 243 return (image_urls_.size() > 0) ? &image_urls_[0] : NULL; |
| 242 } | 244 } |
| 243 | 245 |
| 244 // Returns the preferred_icon_size according icon_types_, 0 means no | 246 // Returns the preferred_icon_size according icon_types_, 0 means no |
| 245 // preference. | 247 // preference. |
| 246 int preferred_icon_size() { | 248 int preferred_icon_size() { |
| 247 return icon_types_ == history::FAVICON ? gfx::kFaviconSize : 0; | 249 return icon_types_ == history::FAVICON ? gfx::kFaviconSize : 0; |
| 248 } | 250 } |
| 249 | 251 |
| 250 // Used for history requests. | 252 // Used for history requests. |
| (...skipping 13 matching lines...) Expand all Loading... |
| 264 bool favicon_expired_or_incomplete_; | 266 bool favicon_expired_or_incomplete_; |
| 265 | 267 |
| 266 // Requests to the renderer to download favicons. | 268 // Requests to the renderer to download favicons. |
| 267 typedef std::map<int, DownloadRequest> DownloadRequests; | 269 typedef std::map<int, DownloadRequest> DownloadRequests; |
| 268 DownloadRequests download_requests_; | 270 DownloadRequests download_requests_; |
| 269 | 271 |
| 270 // The combination of the supported icon types. | 272 // The combination of the supported icon types. |
| 271 const int icon_types_; | 273 const int icon_types_; |
| 272 | 274 |
| 273 // The prioritized favicon candidates from the page back from the renderer. | 275 // The prioritized favicon candidates from the page back from the renderer. |
| 274 std::deque<FaviconURL> image_urls_; | 276 std::deque<content::FaviconURL> image_urls_; |
| 275 | 277 |
| 276 // The FaviconBitmapResults from history. | 278 // The FaviconBitmapResults from history. |
| 277 std::vector<history::FaviconBitmapResult> history_results_; | 279 std::vector<history::FaviconBitmapResult> history_results_; |
| 278 | 280 |
| 279 // The Profile associated with this handler. | 281 // The Profile associated with this handler. |
| 280 Profile* profile_; | 282 Profile* profile_; |
| 281 | 283 |
| 282 // This handler's delegate. | 284 // This handler's delegate. |
| 283 FaviconHandlerDelegate* delegate_; // weak | 285 FaviconHandlerDelegate* delegate_; // weak |
| 284 | 286 |
| 285 // Current favicon candidate. | 287 // Current favicon candidate. |
| 286 FaviconCandidate favicon_candidate_; | 288 FaviconCandidate favicon_candidate_; |
| 287 | 289 |
| 288 DISALLOW_COPY_AND_ASSIGN(FaviconHandler); | 290 DISALLOW_COPY_AND_ASSIGN(FaviconHandler); |
| 289 }; | 291 }; |
| 290 | 292 |
| 291 #endif // CHROME_BROWSER_FAVICON_FAVICON_HANDLER_H_ | 293 #endif // CHROME_BROWSER_FAVICON_FAVICON_HANDLER_H_ |
| OLD | NEW |