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

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

Issue 227153007: Remove dependency on Profile's IsOffTheRecord in favicon_handler. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@FAVICON_create_core_dir
Patch Set: Created 6 years, 8 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_handler.h" 5 #include "chrome/browser/favicon/favicon_handler.h"
6 6
7 #include "build/build_config.h" 7 #include "build/build_config.h"
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <vector> 10 #include <vector>
11 11
12 #include "base/bind.h" 12 #include "base/bind.h"
13 #include "base/bind_helpers.h" 13 #include "base/bind_helpers.h"
14 #include "base/memory/ref_counted_memory.h" 14 #include "base/memory/ref_counted_memory.h"
15 #include "chrome/browser/bookmarks/bookmark_service.h" 15 #include "chrome/browser/bookmarks/bookmark_service.h"
16 #include "chrome/browser/favicon/favicon_service_factory.h" 16 #include "chrome/browser/favicon/favicon_service_factory.h"
17 #include "chrome/browser/favicon/favicon_util.h" 17 #include "chrome/browser/favicon/favicon_util.h"
18 #include "chrome/browser/history/select_favicon_frames.h" 18 #include "chrome/browser/history/select_favicon_frames.h"
19 #include "chrome/browser/profiles/profile.h" 19 #include "chrome/browser/profiles/profile.h"
20 #include "components/favicon/content/content_favicon_driver.h"
blundell 2014/04/08 10:01:19 This should be the interface class, not the conten
20 #include "content/public/browser/favicon_status.h" 21 #include "content/public/browser/favicon_status.h"
21 #include "content/public/browser/navigation_entry.h" 22 #include "content/public/browser/navigation_entry.h"
22 #include "skia/ext/image_operations.h" 23 #include "skia/ext/image_operations.h"
23 #include "ui/gfx/codec/png_codec.h" 24 #include "ui/gfx/codec/png_codec.h"
24 #include "ui/gfx/image/image.h" 25 #include "ui/gfx/image/image.h"
25 #include "ui/gfx/image/image_skia.h" 26 #include "ui/gfx/image/image_skia.h"
26 #include "ui/gfx/image/image_util.h" 27 #include "ui/gfx/image/image_util.h"
27 28
28 using content::FaviconURL; 29 using content::FaviconURL;
29 using content::NavigationEntry; 30 using content::NavigationEntry;
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after
203 : url(url), 204 : url(url),
204 image_url(image_url), 205 image_url(image_url),
205 image(image), 206 image(image),
206 score(score), 207 score(score),
207 icon_type(icon_type) { 208 icon_type(icon_type) {
208 } 209 }
209 210
210 //////////////////////////////////////////////////////////////////////////////// 211 ////////////////////////////////////////////////////////////////////////////////
211 212
212 FaviconHandler::FaviconHandler(Profile* profile, 213 FaviconHandler::FaviconHandler(Profile* profile,
214 FaviconDriver* driver,
213 FaviconHandlerDelegate* delegate, 215 FaviconHandlerDelegate* delegate,
214 Type icon_type) 216 Type icon_type)
215 : got_favicon_from_history_(false), 217 : got_favicon_from_history_(false),
216 favicon_expired_or_incomplete_(false), 218 favicon_expired_or_incomplete_(false),
217 icon_types_(icon_type == FAVICON ? chrome::FAVICON : 219 icon_types_(icon_type == FAVICON
218 chrome::TOUCH_ICON | chrome::TOUCH_PRECOMPOSED_ICON), 220 ? chrome::FAVICON
221 : chrome::TOUCH_ICON | chrome::TOUCH_PRECOMPOSED_ICON),
219 profile_(profile), 222 profile_(profile),
223 driver_(driver),
220 delegate_(delegate) { 224 delegate_(delegate) {
221 DCHECK(profile_); 225 DCHECK(profile_);
226 DCHECK(driver_);
222 DCHECK(delegate_); 227 DCHECK(delegate_);
223 } 228 }
224 229
225 FaviconHandler::~FaviconHandler() { 230 FaviconHandler::~FaviconHandler() {
226 } 231 }
227 232
228 void FaviconHandler::FetchFavicon(const GURL& url) { 233 void FaviconHandler::FetchFavicon(const GURL& url) {
229 cancelable_task_tracker_.TryCancelAll(); 234 cancelable_task_tracker_.TryCancelAll();
230 235
231 url_ = url; 236 url_ = url;
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after
465 } 470 }
466 471
467 void FaviconHandler::SetHistoryFavicons(const GURL& page_url, 472 void FaviconHandler::SetHistoryFavicons(const GURL& page_url,
468 const GURL& icon_url, 473 const GURL& icon_url,
469 chrome::IconType icon_type, 474 chrome::IconType icon_type,
470 const gfx::Image& image) { 475 const gfx::Image& image) {
471 GetFaviconService()->SetFavicons(page_url, icon_url, icon_type, image); 476 GetFaviconService()->SetFavicons(page_url, icon_url, icon_type, image);
472 } 477 }
473 478
474 bool FaviconHandler::ShouldSaveFavicon(const GURL& url) { 479 bool FaviconHandler::ShouldSaveFavicon(const GURL& url) {
475 if (!profile_->IsOffTheRecord()) 480 if (!driver_->IsOffTheRecord())
476 return true; 481 return true;
477 482
478 // Otherwise store the favicon if the page is bookmarked. 483 // Otherwise store the favicon if the page is bookmarked.
479 BookmarkService* bookmark_service = 484 BookmarkService* bookmark_service =
480 BookmarkService::FromBrowserContext(profile_); 485 BookmarkService::FromBrowserContext(profile_);
481 return bookmark_service && bookmark_service->IsBookmarked(url); 486 return bookmark_service && bookmark_service->IsBookmarked(url);
482 } 487 }
483 488
484 void FaviconHandler::NotifyFaviconUpdated(bool icon_url_changed) { 489 void FaviconHandler::NotifyFaviconUpdated(bool icon_url_changed) {
485 delegate_->NotifyFaviconUpdated(icon_url_changed); 490 delegate_->NotifyFaviconUpdated(icon_url_changed);
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
542 const GURL& page_url, 547 const GURL& page_url,
543 const GURL& icon_url, 548 const GURL& icon_url,
544 chrome::IconType icon_type) { 549 chrome::IconType icon_type) {
545 if (favicon_expired_or_incomplete_) { 550 if (favicon_expired_or_incomplete_) {
546 // We have the mapping, but the favicon is out of date. Download it now. 551 // We have the mapping, but the favicon is out of date. Download it now.
547 ScheduleDownload(page_url, icon_url, icon_type); 552 ScheduleDownload(page_url, icon_url, icon_type);
548 } else if (GetFaviconService()) { 553 } else if (GetFaviconService()) {
549 // We don't know the favicon, but we may have previously downloaded the 554 // We don't know the favicon, but we may have previously downloaded the
550 // favicon for another page that shares the same favicon. Ask for the 555 // favicon for another page that shares the same favicon. Ask for the
551 // favicon given the favicon URL. 556 // favicon given the favicon URL.
552 if (profile_->IsOffTheRecord()) { 557 if (driver_->IsOffTheRecord()) {
553 GetFaviconFromFaviconService( 558 GetFaviconFromFaviconService(
554 icon_url, icon_type, 559 icon_url, icon_type,
555 base::Bind(&FaviconHandler::OnFaviconData, base::Unretained(this)), 560 base::Bind(&FaviconHandler::OnFaviconData, base::Unretained(this)),
556 &cancelable_task_tracker_); 561 &cancelable_task_tracker_);
557 } else { 562 } else {
558 // Ask the history service for the icon. This does two things: 563 // Ask the history service for the icon. This does two things:
559 // 1. Attempts to fetch the favicon data from the database. 564 // 1. Attempts to fetch the favicon data from the database.
560 // 2. If the favicon exists in the database, this updates the database to 565 // 2. If the favicon exists in the database, this updates the database to
561 // include the mapping between the page url and the favicon url. 566 // include the mapping between the page url and the favicon url.
562 // This is asynchronous. The history service will call back when done. 567 // This is asynchronous. The history service will call back when done.
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
612 GetMaximalIconSize(icon_type)); 617 GetMaximalIconSize(icon_type));
613 if (download_id) { 618 if (download_id) {
614 // Download ids should be unique. 619 // Download ids should be unique.
615 DCHECK(download_requests_.find(download_id) == download_requests_.end()); 620 DCHECK(download_requests_.find(download_id) == download_requests_.end());
616 download_requests_[download_id] = 621 download_requests_[download_id] =
617 DownloadRequest(url, image_url, icon_type); 622 DownloadRequest(url, image_url, icon_type);
618 } 623 }
619 624
620 return download_id; 625 return download_id;
621 } 626 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698