| 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 <deque> | 8 #include <deque> |
| 9 #include <map> | 9 #include <map> |
| 10 #include <vector> | 10 #include <vector> |
| 11 | 11 |
| 12 #include "base/basictypes.h" | 12 #include "base/basictypes.h" |
| 13 #include "base/callback_forward.h" | 13 #include "base/callback_forward.h" |
| 14 #include "base/memory/ref_counted.h" | 14 #include "base/memory/ref_counted.h" |
| 15 #include "base/task/cancelable_task_tracker.h" | 15 #include "base/task/cancelable_task_tracker.h" |
| 16 #include "chrome/browser/favicon/favicon_service.h" | 16 #include "chrome/browser/favicon/favicon_service.h" |
| 17 #include "chrome/browser/favicon/favicon_tab_helper.h" | 17 #include "chrome/browser/favicon/favicon_tab_helper.h" |
| 18 #include "content/public/common/favicon_url.h" | 18 #include "components/favicon/core/favicon_url.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 #include "url/gurl.h" | 21 #include "url/gurl.h" |
| 22 | 22 |
| 23 class FaviconClient; | 23 class FaviconClient; |
| 24 class FaviconDriver; | 24 class FaviconDriver; |
| 25 class SkBitmap; | 25 class SkBitmap; |
| 26 | 26 |
| 27 namespace base { | 27 namespace base { |
| 28 class RefCountedMemory; | 28 class RefCountedMemory; |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 85 FaviconDriver* driver, | 85 FaviconDriver* driver, |
| 86 Type icon_type, | 86 Type icon_type, |
| 87 bool download_largest_icon); | 87 bool download_largest_icon); |
| 88 virtual ~FaviconHandler(); | 88 virtual ~FaviconHandler(); |
| 89 | 89 |
| 90 // Initiates loading the favicon for the specified url. | 90 // Initiates loading the favicon for the specified url. |
| 91 void FetchFavicon(const GURL& url); | 91 void FetchFavicon(const GURL& url); |
| 92 | 92 |
| 93 // Message Handler. Must be public, because also called from | 93 // Message Handler. Must be public, because also called from |
| 94 // PrerenderContents. Collects the |image_urls| list. | 94 // PrerenderContents. Collects the |image_urls| list. |
| 95 void OnUpdateFaviconURL(const std::vector<content::FaviconURL>& candidates); | 95 void OnUpdateFaviconURL(const std::vector<favicon::FaviconURL>& candidates); |
| 96 | 96 |
| 97 // Processes the current image_irls_ entry, requesting the image from the | 97 // Processes the current image_irls_ entry, requesting the image from the |
| 98 // history / download service. | 98 // history / download service. |
| 99 void ProcessCurrentUrl(); | 99 void ProcessCurrentUrl(); |
| 100 | 100 |
| 101 // Message handler for ImageHostMsg_DidDownloadImage. Called when the image | 101 // Message handler for ImageHostMsg_DidDownloadImage. Called when the image |
| 102 // at |image_url| has been downloaded. | 102 // at |image_url| has been downloaded. |
| 103 // |bitmaps| is a list of all the frames of the image at |image_url|. | 103 // |bitmaps| is a list of all the frames of the image at |image_url|. |
| 104 // |original_bitmap_sizes| are the sizes of |bitmaps| before they were resized | 104 // |original_bitmap_sizes| are the sizes of |bitmaps| before they were resized |
| 105 // to the maximum bitmap size passed to DownloadFavicon(). | 105 // to the maximum bitmap size passed to DownloadFavicon(). |
| 106 void OnDidDownloadFavicon( | 106 void OnDidDownloadFavicon( |
| 107 int id, | 107 int id, |
| 108 const GURL& image_url, | 108 const GURL& image_url, |
| 109 const std::vector<SkBitmap>& bitmaps, | 109 const std::vector<SkBitmap>& bitmaps, |
| 110 const std::vector<gfx::Size>& original_bitmap_sizes); | 110 const std::vector<gfx::Size>& original_bitmap_sizes); |
| 111 | 111 |
| 112 // For testing. | 112 // For testing. |
| 113 const std::vector<content::FaviconURL>& image_urls() const { | 113 const std::vector<favicon::FaviconURL>& image_urls() const { |
| 114 return image_urls_; | 114 return image_urls_; |
| 115 } | 115 } |
| 116 | 116 |
| 117 protected: | 117 protected: |
| 118 // These virtual methods make FaviconHandler testable and are overridden by | 118 // These virtual methods make FaviconHandler testable and are overridden by |
| 119 // TestFaviconHandler. | 119 // TestFaviconHandler. |
| 120 | 120 |
| 121 // Asks the render to download favicon, returns the request id. | 121 // Asks the render to download favicon, returns the request id. |
| 122 virtual int DownloadFavicon(const GURL& image_url, int max_bitmap_size); | 122 virtual int DownloadFavicon(const GURL& image_url, int max_bitmap_size); |
| 123 | 123 |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 222 const GURL& icon_url, | 222 const GURL& icon_url, |
| 223 const gfx::Image& image, | 223 const gfx::Image& image, |
| 224 favicon_base::IconType icon_type); | 224 favicon_base::IconType icon_type); |
| 225 | 225 |
| 226 // Sets the favicon's data. | 226 // Sets the favicon's data. |
| 227 void SetFaviconOnActivePage(const std::vector< | 227 void SetFaviconOnActivePage(const std::vector< |
| 228 favicon_base::FaviconBitmapResult>& favicon_bitmap_results); | 228 favicon_base::FaviconBitmapResult>& favicon_bitmap_results); |
| 229 void SetFaviconOnActivePage(const GURL& icon_url, const gfx::Image& image); | 229 void SetFaviconOnActivePage(const GURL& icon_url, const gfx::Image& image); |
| 230 | 230 |
| 231 // Return the current candidate if any. | 231 // Return the current candidate if any. |
| 232 content::FaviconURL* current_candidate() { | 232 favicon::FaviconURL* current_candidate() { |
| 233 return (!image_urls_.empty()) ? &image_urls_.front() : NULL; | 233 return (!image_urls_.empty()) ? &image_urls_.front() : NULL; |
| 234 } | 234 } |
| 235 | 235 |
| 236 // Returns whether the page's url changed since the favicon was requested. | 236 // Returns whether the page's url changed since the favicon was requested. |
| 237 bool PageChangedSinceFaviconWasRequested(); | 237 bool PageChangedSinceFaviconWasRequested(); |
| 238 | 238 |
| 239 // Returns the preferred size of the image. 0 means no preference (any size | 239 // Returns the preferred size of the image. 0 means no preference (any size |
| 240 // will do). | 240 // will do). |
| 241 int preferred_icon_size() const { | 241 int preferred_icon_size() const { |
| 242 if (download_largest_icon_) | 242 if (download_largest_icon_) |
| (...skipping 25 matching lines...) Expand all Loading... |
| 268 typedef std::map<int, DownloadRequest> DownloadRequests; | 268 typedef std::map<int, DownloadRequest> DownloadRequests; |
| 269 DownloadRequests download_requests_; | 269 DownloadRequests download_requests_; |
| 270 | 270 |
| 271 // The combination of the supported icon types. | 271 // The combination of the supported icon types. |
| 272 const int icon_types_; | 272 const int icon_types_; |
| 273 | 273 |
| 274 // Whether the largest icon should be downloaded. | 274 // Whether the largest icon should be downloaded. |
| 275 const bool download_largest_icon_; | 275 const bool download_largest_icon_; |
| 276 | 276 |
| 277 // The prioritized favicon candidates from the page back from the renderer. | 277 // The prioritized favicon candidates from the page back from the renderer. |
| 278 std::vector<content::FaviconURL> image_urls_; | 278 std::vector<favicon::FaviconURL> image_urls_; |
| 279 | 279 |
| 280 // The FaviconBitmapResults from history. | 280 // The FaviconBitmapResults from history. |
| 281 std::vector<favicon_base::FaviconBitmapResult> history_results_; | 281 std::vector<favicon_base::FaviconBitmapResult> history_results_; |
| 282 | 282 |
| 283 // The client which implements embedder-specific Favicon operations. | 283 // The client which implements embedder-specific Favicon operations. |
| 284 FaviconClient* client_; // weak | 284 FaviconClient* client_; // weak |
| 285 | 285 |
| 286 // This handler's driver. | 286 // This handler's driver. |
| 287 FaviconDriver* driver_; // weak | 287 FaviconDriver* driver_; // weak |
| 288 | 288 |
| 289 // Best image we've seen so far. As images are downloaded from the page they | 289 // Best image we've seen so far. As images are downloaded from the page they |
| 290 // are stored here. When there is an exact match, or no more images are | 290 // are stored here. When there is an exact match, or no more images are |
| 291 // available the favicon service and the current page are updated (assuming | 291 // available the favicon service and the current page are updated (assuming |
| 292 // the image is for a favicon). | 292 // the image is for a favicon). |
| 293 FaviconCandidate best_favicon_candidate_; | 293 FaviconCandidate best_favicon_candidate_; |
| 294 | 294 |
| 295 DISALLOW_COPY_AND_ASSIGN(FaviconHandler); | 295 DISALLOW_COPY_AND_ASSIGN(FaviconHandler); |
| 296 }; | 296 }; |
| 297 | 297 |
| 298 #endif // CHROME_BROWSER_FAVICON_FAVICON_HANDLER_H_ | 298 #endif // CHROME_BROWSER_FAVICON_FAVICON_HANDLER_H_ |
| OLD | NEW |