Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(148)

Side by Side Diff: chrome/browser/favicon/favicon_tab_helper.cc

Issue 1010783002: [Icons NTP] Working prototype to fetch, store, and display big icons. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 #include "chrome/browser/favicon/favicon_tab_helper.h" 5 #include "chrome/browser/favicon/favicon_tab_helper.h"
6 6
7 #include "chrome/browser/chrome_notification_types.h" 7 #include "chrome/browser/chrome_notification_types.h"
8 #include "chrome/browser/favicon/chrome_favicon_client.h" 8 #include "chrome/browser/favicon/chrome_favicon_client.h"
9 #include "chrome/browser/favicon/chrome_favicon_client_factory.h" 9 #include "chrome/browser/favicon/chrome_favicon_client_factory.h"
10 #include "chrome/browser/favicon/favicon_handler.h" 10 #include "chrome/browser/favicon/favicon_handler.h"
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
47 #if defined(OS_ANDROID) || defined(OS_IOS) 47 #if defined(OS_ANDROID) || defined(OS_IOS)
48 bool download_largest_icon = true; 48 bool download_largest_icon = true;
49 #else 49 #else
50 bool download_largest_icon = false; 50 bool download_largest_icon = false;
51 #endif 51 #endif
52 favicon_handler_.reset(new FaviconHandler( 52 favicon_handler_.reset(new FaviconHandler(
53 client_, this, FaviconHandler::FAVICON, download_largest_icon)); 53 client_, this, FaviconHandler::FAVICON, download_largest_icon));
54 if (chrome::kEnableTouchIcon) 54 if (chrome::kEnableTouchIcon)
55 touch_icon_handler_.reset(new FaviconHandler( 55 touch_icon_handler_.reset(new FaviconHandler(
56 client_, this, FaviconHandler::TOUCH, download_largest_icon)); 56 client_, this, FaviconHandler::TOUCH, download_largest_icon));
57 big_icon_handler_.reset(
Roger McFarlane (Chromium) 2015/03/16 19:00:59 maybe put these derefs behind a check for null? So
huangs 2015/03/17 01:43:52 Done.
58 new FaviconHandler(client_, this, FaviconHandler::BIG, true));
57 } 59 }
58 60
59 FaviconTabHelper::~FaviconTabHelper() { 61 FaviconTabHelper::~FaviconTabHelper() {
60 } 62 }
61 63
62 void FaviconTabHelper::FetchFavicon(const GURL& url) { 64 void FaviconTabHelper::FetchFavicon(const GURL& url) {
63 favicon_handler_->FetchFavicon(url); 65 favicon_handler_->FetchFavicon(url);
64 if (touch_icon_handler_.get()) 66 if (touch_icon_handler_.get())
65 touch_icon_handler_->FetchFavicon(url); 67 touch_icon_handler_->FetchFavicon(url);
68 big_icon_handler_->FetchFavicon(url);
66 } 69 }
67 70
68 gfx::Image FaviconTabHelper::GetFavicon() const { 71 gfx::Image FaviconTabHelper::GetFavicon() const {
69 // Like GetTitle(), we also want to use the favicon for the last committed 72 // Like GetTitle(), we also want to use the favicon for the last committed
70 // entry rather than a pending navigation entry. 73 // entry rather than a pending navigation entry.
71 const NavigationController& controller = web_contents()->GetController(); 74 const NavigationController& controller = web_contents()->GetController();
72 NavigationEntry* entry = controller.GetTransientEntry(); 75 NavigationEntry* entry = controller.GetTransientEntry();
73 if (entry) 76 if (entry)
74 return entry->GetFavicon().image; 77 return entry->GetFavicon().image;
75 78
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after
275 for (size_t i = 0; i < candidates.size(); i++) { 278 for (size_t i = 0; i < candidates.size(); i++) {
276 const content::FaviconURL& candidate = candidates[i]; 279 const content::FaviconURL& candidate = candidates[i];
277 favicon_urls.push_back( 280 favicon_urls.push_back(
278 favicon::FaviconURL(candidate.icon_url, 281 favicon::FaviconURL(candidate.icon_url,
279 ToChromeIconType(candidate.icon_type), 282 ToChromeIconType(candidate.icon_type),
280 candidate.icon_sizes)); 283 candidate.icon_sizes));
281 } 284 }
282 favicon_handler_->OnUpdateFaviconURL(favicon_urls); 285 favicon_handler_->OnUpdateFaviconURL(favicon_urls);
283 if (touch_icon_handler_.get()) 286 if (touch_icon_handler_.get())
284 touch_icon_handler_->OnUpdateFaviconURL(favicon_urls); 287 touch_icon_handler_->OnUpdateFaviconURL(favicon_urls);
288 big_icon_handler_->OnUpdateFaviconURL(favicon_urls);
285 } 289 }
286 290
287 void FaviconTabHelper::DidDownloadFavicon( 291 void FaviconTabHelper::DidDownloadFavicon(
288 int id, 292 int id,
289 int http_status_code, 293 int http_status_code,
290 const GURL& image_url, 294 const GURL& image_url,
291 const std::vector<SkBitmap>& bitmaps, 295 const std::vector<SkBitmap>& bitmaps,
292 const std::vector<gfx::Size>& original_bitmap_sizes) { 296 const std::vector<gfx::Size>& original_bitmap_sizes) {
293 297
294 if (bitmaps.empty() && http_status_code == 404) { 298 if (bitmaps.empty() && http_status_code == 404) {
295 DVLOG(1) << "Failed to Download Favicon:" << image_url; 299 DVLOG(1) << "Failed to Download Favicon:" << image_url;
296 FaviconService* favicon_service = FaviconServiceFactory::GetForProfile( 300 FaviconService* favicon_service = FaviconServiceFactory::GetForProfile(
297 profile_->GetOriginalProfile(), ServiceAccessType::IMPLICIT_ACCESS); 301 profile_->GetOriginalProfile(), ServiceAccessType::IMPLICIT_ACCESS);
298 if (favicon_service) 302 if (favicon_service)
299 favicon_service->UnableToDownloadFavicon(image_url); 303 favicon_service->UnableToDownloadFavicon(image_url);
300 } 304 }
301 305
302 favicon_handler_->OnDidDownloadFavicon( 306 favicon_handler_->OnDidDownloadFavicon(
303 id, image_url, bitmaps, original_bitmap_sizes); 307 id, image_url, bitmaps, original_bitmap_sizes);
304 if (touch_icon_handler_.get()) { 308 if (touch_icon_handler_.get()) {
305 touch_icon_handler_->OnDidDownloadFavicon( 309 touch_icon_handler_->OnDidDownloadFavicon(
306 id, image_url, bitmaps, original_bitmap_sizes); 310 id, image_url, bitmaps, original_bitmap_sizes);
307 } 311 }
312 big_icon_handler_->OnDidDownloadFavicon(
313 id, image_url, bitmaps, original_bitmap_sizes);
308 } 314 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698