| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "components/favicon/core/favicon_driver_impl.h" | 5 #include "components/favicon/core/favicon_driver_impl.h" |
| 6 | 6 |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/logging.h" | 8 #include "base/logging.h" |
| 9 #include "base/metrics/field_trial.h" | 9 #include "base/metrics/field_trial.h" |
| 10 #include "base/strings/string_util.h" | 10 #include "base/strings/string_util.h" |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 43 | 43 |
| 44 FaviconDriverImpl::FaviconDriverImpl(FaviconService* favicon_service, | 44 FaviconDriverImpl::FaviconDriverImpl(FaviconService* favicon_service, |
| 45 history::HistoryService* history_service, | 45 history::HistoryService* history_service, |
| 46 bookmarks::BookmarkModel* bookmark_model) | 46 bookmarks::BookmarkModel* bookmark_model) |
| 47 : favicon_service_(favicon_service), | 47 : favicon_service_(favicon_service), |
| 48 history_service_(history_service), | 48 history_service_(history_service), |
| 49 bookmark_model_(bookmark_model) { | 49 bookmark_model_(bookmark_model) { |
| 50 favicon_handler_.reset(new FaviconHandler( | 50 favicon_handler_.reset(new FaviconHandler( |
| 51 favicon_service_, this, kEnableTouchIcon ? FaviconHandler::LARGEST_FAVICON | 51 favicon_service_, this, kEnableTouchIcon ? FaviconHandler::LARGEST_FAVICON |
| 52 : FaviconHandler::FAVICON)); | 52 : FaviconHandler::FAVICON)); |
| 53 if (kEnableTouchIcon) { | 53 if (kEnableTouchIcon || IsIconNTPEnabled()) { |
| 54 touch_icon_handler_.reset(new FaviconHandler( | 54 touch_icon_handler_.reset(new FaviconHandler( |
| 55 favicon_service_, this, FaviconHandler::LARGEST_TOUCH)); | 55 favicon_service_, this, FaviconHandler::LARGEST_TOUCH)); |
| 56 } | 56 } |
| 57 if (IsIconNTPEnabled()) { | |
| 58 large_icon_handler_.reset(new FaviconHandler( | |
| 59 favicon_service_, this, FaviconHandler::LARGEST_TOUCH)); | |
| 60 } | |
| 61 } | 57 } |
| 62 | 58 |
| 63 FaviconDriverImpl::~FaviconDriverImpl() { | 59 FaviconDriverImpl::~FaviconDriverImpl() { |
| 64 } | 60 } |
| 65 | 61 |
| 66 void FaviconDriverImpl::FetchFavicon(const GURL& url) { | 62 void FaviconDriverImpl::FetchFavicon(const GURL& url) { |
| 67 favicon_handler_->FetchFavicon(url); | 63 favicon_handler_->FetchFavicon(url); |
| 68 if (touch_icon_handler_.get()) | 64 if (touch_icon_handler_.get()) |
| 69 touch_icon_handler_->FetchFavicon(url); | 65 touch_icon_handler_->FetchFavicon(url); |
| 70 if (large_icon_handler_.get()) | |
| 71 large_icon_handler_->FetchFavicon(url); | |
| 72 } | 66 } |
| 73 | 67 |
| 74 void FaviconDriverImpl::DidDownloadFavicon( | 68 void FaviconDriverImpl::DidDownloadFavicon( |
| 75 int id, | 69 int id, |
| 76 int http_status_code, | 70 int http_status_code, |
| 77 const GURL& image_url, | 71 const GURL& image_url, |
| 78 const std::vector<SkBitmap>& bitmaps, | 72 const std::vector<SkBitmap>& bitmaps, |
| 79 const std::vector<gfx::Size>& original_bitmap_sizes) { | 73 const std::vector<gfx::Size>& original_bitmap_sizes) { |
| 80 if (bitmaps.empty() && http_status_code == 404) { | 74 if (bitmaps.empty() && http_status_code == 404) { |
| 81 DVLOG(1) << "Failed to Download Favicon:" << image_url; | 75 DVLOG(1) << "Failed to Download Favicon:" << image_url; |
| 82 if (favicon_service_) | 76 if (favicon_service_) |
| 83 favicon_service_->UnableToDownloadFavicon(image_url); | 77 favicon_service_->UnableToDownloadFavicon(image_url); |
| 84 } | 78 } |
| 85 | 79 |
| 86 favicon_handler_->OnDidDownloadFavicon(id, image_url, bitmaps, | 80 favicon_handler_->OnDidDownloadFavicon(id, image_url, bitmaps, |
| 87 original_bitmap_sizes); | 81 original_bitmap_sizes); |
| 88 if (touch_icon_handler_.get()) { | 82 if (touch_icon_handler_.get()) { |
| 89 touch_icon_handler_->OnDidDownloadFavicon(id, image_url, bitmaps, | 83 touch_icon_handler_->OnDidDownloadFavicon(id, image_url, bitmaps, |
| 90 original_bitmap_sizes); | 84 original_bitmap_sizes); |
| 91 } | 85 } |
| 92 if (large_icon_handler_.get()) { | |
| 93 large_icon_handler_->OnDidDownloadFavicon(id, image_url, bitmaps, | |
| 94 original_bitmap_sizes); | |
| 95 } | |
| 96 } | 86 } |
| 97 | 87 |
| 98 bool FaviconDriverImpl::IsBookmarked(const GURL& url) { | 88 bool FaviconDriverImpl::IsBookmarked(const GURL& url) { |
| 99 return bookmark_model_ && bookmark_model_->IsBookmarked(url); | 89 return bookmark_model_ && bookmark_model_->IsBookmarked(url); |
| 100 } | 90 } |
| 101 | 91 |
| 102 void FaviconDriverImpl::OnFaviconAvailable(const GURL& page_url, | 92 void FaviconDriverImpl::OnFaviconAvailable(const GURL& page_url, |
| 103 const GURL& icon_url, | 93 const GURL& icon_url, |
| 104 const gfx::Image& image, | 94 const gfx::Image& image, |
| 105 bool is_active_favicon) { | 95 bool is_active_favicon) { |
| (...skipping 18 matching lines...) Expand all Loading... |
| 124 } | 114 } |
| 125 if (!image.IsEmpty()) | 115 if (!image.IsEmpty()) |
| 126 NotifyFaviconAvailable(image); | 116 NotifyFaviconAvailable(image); |
| 127 } | 117 } |
| 128 | 118 |
| 129 bool FaviconDriverImpl::HasPendingTasksForTest() { | 119 bool FaviconDriverImpl::HasPendingTasksForTest() { |
| 130 if (favicon_handler_->HasPendingTasksForTest()) | 120 if (favicon_handler_->HasPendingTasksForTest()) |
| 131 return true; | 121 return true; |
| 132 if (touch_icon_handler_ && touch_icon_handler_->HasPendingTasksForTest()) | 122 if (touch_icon_handler_ && touch_icon_handler_->HasPendingTasksForTest()) |
| 133 return true; | 123 return true; |
| 134 if (large_icon_handler_ && large_icon_handler_->HasPendingTasksForTest()) | |
| 135 return true; | |
| 136 return false; | 124 return false; |
| 137 } | 125 } |
| 138 | 126 |
| 139 bool FaviconDriverImpl::WasUnableToDownloadFavicon(const GURL& url) { | 127 bool FaviconDriverImpl::WasUnableToDownloadFavicon(const GURL& url) { |
| 140 return favicon_service_ && favicon_service_->WasUnableToDownloadFavicon(url); | 128 return favicon_service_ && favicon_service_->WasUnableToDownloadFavicon(url); |
| 141 } | 129 } |
| 142 | 130 |
| 143 void FaviconDriverImpl::SetFaviconOutOfDateForPage(const GURL& url, | 131 void FaviconDriverImpl::SetFaviconOutOfDateForPage(const GURL& url, |
| 144 bool force_reload) { | 132 bool force_reload) { |
| 145 if (favicon_service_) { | 133 if (favicon_service_) { |
| 146 favicon_service_->SetFaviconOutOfDateForPage(url); | 134 favicon_service_->SetFaviconOutOfDateForPage(url); |
| 147 if (force_reload) | 135 if (force_reload) |
| 148 favicon_service_->ClearUnableToDownloadFavicons(); | 136 favicon_service_->ClearUnableToDownloadFavicons(); |
| 149 } | 137 } |
| 150 } | 138 } |
| 151 | 139 |
| 152 void FaviconDriverImpl::OnUpdateFaviconURL( | 140 void FaviconDriverImpl::OnUpdateFaviconURL( |
| 153 const GURL& page_url, | 141 const GURL& page_url, |
| 154 const std::vector<FaviconURL>& candidates) { | 142 const std::vector<FaviconURL>& candidates) { |
| 155 DCHECK(!candidates.empty()); | 143 DCHECK(!candidates.empty()); |
| 156 favicon_handler_->OnUpdateFaviconURL(page_url, candidates); | 144 favicon_handler_->OnUpdateFaviconURL(page_url, candidates); |
| 157 if (touch_icon_handler_.get()) | 145 if (touch_icon_handler_.get()) |
| 158 touch_icon_handler_->OnUpdateFaviconURL(page_url, candidates); | 146 touch_icon_handler_->OnUpdateFaviconURL(page_url, candidates); |
| 159 if (large_icon_handler_.get()) | |
| 160 large_icon_handler_->OnUpdateFaviconURL(page_url, candidates); | |
| 161 } | 147 } |
| 162 | 148 |
| 163 } // namespace favicon | 149 } // namespace favicon |
| OLD | NEW |