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 #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/favicon_handler.h" | 8 #include "chrome/browser/favicon/favicon_handler.h" |
9 #include "chrome/browser/favicon/favicon_service_factory.h" | 9 #include "chrome/browser/favicon/favicon_service_factory.h" |
10 #include "chrome/browser/favicon/favicon_util.h" | 10 #include "chrome/browser/favicon/favicon_util.h" |
(...skipping 21 matching lines...) Expand all Loading... |
32 using content::NavigationController; | 32 using content::NavigationController; |
33 using content::NavigationEntry; | 33 using content::NavigationEntry; |
34 using content::WebContents; | 34 using content::WebContents; |
35 | 35 |
36 DEFINE_WEB_CONTENTS_USER_DATA_KEY(FaviconTabHelper); | 36 DEFINE_WEB_CONTENTS_USER_DATA_KEY(FaviconTabHelper); |
37 | 37 |
38 FaviconTabHelper::FaviconTabHelper(WebContents* web_contents) | 38 FaviconTabHelper::FaviconTabHelper(WebContents* web_contents) |
39 : content::WebContentsObserver(web_contents), | 39 : content::WebContentsObserver(web_contents), |
40 driver_(web_contents), | 40 driver_(web_contents), |
41 profile_(Profile::FromBrowserContext(web_contents->GetBrowserContext())) { | 41 profile_(Profile::FromBrowserContext(web_contents->GetBrowserContext())) { |
42 favicon_handler_.reset( | 42 favicon_handler_.reset(new FaviconHandler( |
43 new FaviconHandler(profile_, &driver_, this, FaviconHandler::FAVICON)); | 43 profile_, this, &driver_, this, FaviconHandler::FAVICON)); |
44 if (chrome::kEnableTouchIcon) | 44 if (chrome::kEnableTouchIcon) |
45 touch_icon_handler_.reset( | 45 touch_icon_handler_.reset(new FaviconHandler( |
46 new FaviconHandler(profile_, &driver_, this, FaviconHandler::TOUCH)); | 46 profile_, this, &driver_, this, FaviconHandler::TOUCH)); |
47 } | 47 } |
48 | 48 |
49 FaviconTabHelper::~FaviconTabHelper() { | 49 FaviconTabHelper::~FaviconTabHelper() { |
50 } | 50 } |
51 | 51 |
52 void FaviconTabHelper::FetchFavicon(const GURL& url) { | 52 void FaviconTabHelper::FetchFavicon(const GURL& url) { |
53 favicon_handler_->FetchFavicon(url); | 53 favicon_handler_->FetchFavicon(url); |
54 if (touch_icon_handler_.get()) | 54 if (touch_icon_handler_.get()) |
55 touch_icon_handler_->FetchFavicon(url); | 55 touch_icon_handler_->FetchFavicon(url); |
56 } | 56 } |
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
181 int32 page_id, | 181 int32 page_id, |
182 const std::vector<content::FaviconURL>& candidates) { | 182 const std::vector<content::FaviconURL>& candidates) { |
183 DCHECK(!candidates.empty()); | 183 DCHECK(!candidates.empty()); |
184 favicon_urls_ = candidates; | 184 favicon_urls_ = candidates; |
185 | 185 |
186 favicon_handler_->OnUpdateFaviconURL(page_id, candidates); | 186 favicon_handler_->OnUpdateFaviconURL(page_id, candidates); |
187 if (touch_icon_handler_.get()) | 187 if (touch_icon_handler_.get()) |
188 touch_icon_handler_->OnUpdateFaviconURL(page_id, candidates); | 188 touch_icon_handler_->OnUpdateFaviconURL(page_id, candidates); |
189 } | 189 } |
190 | 190 |
| 191 FaviconService* FaviconTabHelper::GetFaviconService() { |
| 192 return FaviconServiceFactory::GetForProfile(profile_, |
| 193 Profile::EXPLICIT_ACCESS); |
| 194 } |
| 195 |
191 void FaviconTabHelper::DidDownloadFavicon( | 196 void FaviconTabHelper::DidDownloadFavicon( |
192 int id, | 197 int id, |
193 int http_status_code, | 198 int http_status_code, |
194 const GURL& image_url, | 199 const GURL& image_url, |
195 const std::vector<SkBitmap>& bitmaps, | 200 const std::vector<SkBitmap>& bitmaps, |
196 const std::vector<gfx::Size>& original_bitmap_sizes) { | 201 const std::vector<gfx::Size>& original_bitmap_sizes) { |
197 | 202 |
198 if (bitmaps.empty() && http_status_code == 404) { | 203 if (bitmaps.empty() && http_status_code == 404) { |
199 DVLOG(1) << "Failed to Download Favicon:" << image_url; | 204 DVLOG(1) << "Failed to Download Favicon:" << image_url; |
200 FaviconService* favicon_service = FaviconServiceFactory::GetForProfile( | 205 FaviconService* favicon_service = FaviconServiceFactory::GetForProfile( |
201 profile_->GetOriginalProfile(), Profile::IMPLICIT_ACCESS); | 206 profile_->GetOriginalProfile(), Profile::IMPLICIT_ACCESS); |
202 if (favicon_service) | 207 if (favicon_service) |
203 favicon_service->UnableToDownloadFavicon(image_url); | 208 favicon_service->UnableToDownloadFavicon(image_url); |
204 } | 209 } |
205 | 210 |
206 favicon_handler_->OnDidDownloadFavicon( | 211 favicon_handler_->OnDidDownloadFavicon( |
207 id, image_url, bitmaps, original_bitmap_sizes); | 212 id, image_url, bitmaps, original_bitmap_sizes); |
208 if (touch_icon_handler_.get()) { | 213 if (touch_icon_handler_.get()) { |
209 touch_icon_handler_->OnDidDownloadFavicon( | 214 touch_icon_handler_->OnDidDownloadFavicon( |
210 id, image_url, bitmaps, original_bitmap_sizes); | 215 id, image_url, bitmaps, original_bitmap_sizes); |
211 } | 216 } |
212 } | 217 } |
OLD | NEW |