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

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

Issue 331163003: [Refactor] Change FaviconService API to take in a desired pixel size (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 5 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 | Annotate | Revision Log
« no previous file with comments | « chrome/browser/favicon/favicon_service.h ('k') | chrome/browser/jumplist_win.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_service.h" 5 #include "chrome/browser/favicon/favicon_service.h"
6 6
7 #include <cmath> 7 #include <cmath>
8 8
9 #include "base/hash.h" 9 #include "base/hash.h"
10 #include "base/message_loop/message_loop_proxy.h" 10 #include "base/message_loop/message_loop_proxy.h"
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
87 87
88 // static 88 // static
89 void FaviconService::FaviconResultsCallbackRunner( 89 void FaviconService::FaviconResultsCallbackRunner(
90 const favicon_base::FaviconResultsCallback& callback, 90 const favicon_base::FaviconResultsCallback& callback,
91 const std::vector<favicon_base::FaviconRawBitmapResult>* results) { 91 const std::vector<favicon_base::FaviconRawBitmapResult>* results) {
92 callback.Run(*results); 92 callback.Run(*results);
93 } 93 }
94 94
95 base::CancelableTaskTracker::TaskId FaviconService::GetFaviconImage( 95 base::CancelableTaskTracker::TaskId FaviconService::GetFaviconImage(
96 const GURL& icon_url, 96 const GURL& icon_url,
97 favicon_base::IconType icon_type,
98 int desired_size_in_dip,
99 const favicon_base::FaviconImageCallback& callback, 97 const favicon_base::FaviconImageCallback& callback,
100 base::CancelableTaskTracker* tracker) { 98 base::CancelableTaskTracker* tracker) {
101 favicon_base::FaviconResultsCallback callback_runner = 99 favicon_base::FaviconResultsCallback callback_runner =
102 Bind(&FaviconService::RunFaviconImageCallbackWithBitmapResults, 100 Bind(&FaviconService::RunFaviconImageCallbackWithBitmapResults,
103 base::Unretained(this), callback, desired_size_in_dip); 101 base::Unretained(this), callback, gfx::kFaviconSize);
104 if (history_service_) { 102 if (history_service_) {
105 std::vector<GURL> icon_urls; 103 std::vector<GURL> icon_urls;
106 icon_urls.push_back(icon_url); 104 icon_urls.push_back(icon_url);
107 return history_service_->GetFavicons( 105 return history_service_->GetFavicons(
108 icon_urls, 106 icon_urls,
109 icon_type, 107 favicon_base::FAVICON,
110 GetPixelSizesForFaviconScales(desired_size_in_dip), 108 GetPixelSizesForFaviconScales(gfx::kFaviconSize),
111 callback_runner, 109 callback_runner,
112 tracker); 110 tracker);
113 } 111 }
114 return RunWithEmptyResultAsync(callback_runner, tracker); 112 return RunWithEmptyResultAsync(callback_runner, tracker);
115 } 113 }
116 114
117 base::CancelableTaskTracker::TaskId FaviconService::GetRawFavicon( 115 base::CancelableTaskTracker::TaskId FaviconService::GetRawFavicon(
118 const GURL& icon_url, 116 const GURL& icon_url,
119 favicon_base::IconType icon_type, 117 favicon_base::IconType icon_type,
120 int desired_size_in_dip, 118 int desired_size_in_pixel,
121 float desired_favicon_scale,
122 const favicon_base::FaviconRawBitmapCallback& callback, 119 const favicon_base::FaviconRawBitmapCallback& callback,
123 base::CancelableTaskTracker* tracker) { 120 base::CancelableTaskTracker* tracker) {
124 int desired_size_in_pixel =
125 std::ceil(desired_size_in_dip * desired_favicon_scale);
126 favicon_base::FaviconResultsCallback callback_runner = 121 favicon_base::FaviconResultsCallback callback_runner =
127 Bind(&FaviconService::RunFaviconRawBitmapCallbackWithBitmapResults, 122 Bind(&FaviconService::RunFaviconRawBitmapCallbackWithBitmapResults,
128 base::Unretained(this), 123 base::Unretained(this),
129 callback, 124 callback,
130 desired_size_in_pixel); 125 desired_size_in_pixel);
131 126
132 if (history_service_) { 127 if (history_service_) {
133 std::vector<GURL> icon_urls; 128 std::vector<GURL> icon_urls;
134 icon_urls.push_back(icon_url); 129 icon_urls.push_back(icon_url);
135 std::vector<int> desired_sizes_in_pixel; 130 std::vector<int> desired_sizes_in_pixel;
(...skipping 17 matching lines...) Expand all
153 return history_service_->GetFavicons( 148 return history_service_->GetFavicons(
154 icon_urls, 149 icon_urls,
155 icon_type, 150 icon_type,
156 GetPixelSizesForFaviconScales(desired_size_in_dip), 151 GetPixelSizesForFaviconScales(desired_size_in_dip),
157 callback, 152 callback,
158 tracker); 153 tracker);
159 } 154 }
160 return RunWithEmptyResultAsync(callback, tracker); 155 return RunWithEmptyResultAsync(callback, tracker);
161 } 156 }
162 157
163 base::CancelableTaskTracker::TaskId
164 FaviconService::UpdateFaviconMappingsAndFetch(
165 const GURL& page_url,
166 const std::vector<GURL>& icon_urls,
167 int icon_types,
168 int desired_size_in_dip,
169 const favicon_base::FaviconResultsCallback& callback,
170 base::CancelableTaskTracker* tracker) {
171 if (history_service_) {
172 return history_service_->UpdateFaviconMappingsAndFetch(
173 page_url,
174 icon_urls,
175 icon_types,
176 GetPixelSizesForFaviconScales(desired_size_in_dip),
177 callback,
178 tracker);
179 }
180 return RunWithEmptyResultAsync(callback, tracker);
181 }
182
183 base::CancelableTaskTracker::TaskId FaviconService::GetFaviconImageForPageURL( 158 base::CancelableTaskTracker::TaskId FaviconService::GetFaviconImageForPageURL(
184 const FaviconForPageURLParams& params, 159 const GURL& page_url,
185 const favicon_base::FaviconImageCallback& callback, 160 const favicon_base::FaviconImageCallback& callback,
186 base::CancelableTaskTracker* tracker) { 161 base::CancelableTaskTracker* tracker) {
187 return GetFaviconForPageURLImpl( 162 return GetFaviconForPageURLImpl(
188 params, 163 page_url,
189 GetPixelSizesForFaviconScales(params.desired_size_in_dip), 164 favicon_base::FAVICON,
165 GetPixelSizesForFaviconScales(gfx::kFaviconSize),
190 Bind(&FaviconService::RunFaviconImageCallbackWithBitmapResults, 166 Bind(&FaviconService::RunFaviconImageCallbackWithBitmapResults,
191 base::Unretained(this), 167 base::Unretained(this),
192 callback, 168 callback,
193 params.desired_size_in_dip), 169 gfx::kFaviconSize),
194 tracker); 170 tracker);
195 } 171 }
196 172
197 base::CancelableTaskTracker::TaskId FaviconService::GetRawFaviconForPageURL( 173 base::CancelableTaskTracker::TaskId FaviconService::GetRawFaviconForPageURL(
198 const FaviconForPageURLParams& params, 174 const GURL& page_url,
199 float desired_favicon_scale, 175 int icon_types,
176 int desired_size_in_pixel,
200 const favicon_base::FaviconRawBitmapCallback& callback, 177 const favicon_base::FaviconRawBitmapCallback& callback,
201 base::CancelableTaskTracker* tracker) { 178 base::CancelableTaskTracker* tracker) {
202 int desired_size_in_pixel =
203 std::ceil(params.desired_size_in_dip * desired_favicon_scale);
204 std::vector<int> desired_sizes_in_pixel; 179 std::vector<int> desired_sizes_in_pixel;
205 desired_sizes_in_pixel.push_back(desired_size_in_pixel); 180 desired_sizes_in_pixel.push_back(desired_size_in_pixel);
206 return GetFaviconForPageURLImpl( 181 return GetFaviconForPageURLImpl(
207 params, 182 page_url,
183 icon_types,
208 desired_sizes_in_pixel, 184 desired_sizes_in_pixel,
209 Bind(&FaviconService::RunFaviconRawBitmapCallbackWithBitmapResults, 185 Bind(&FaviconService::RunFaviconRawBitmapCallbackWithBitmapResults,
210 base::Unretained(this), 186 base::Unretained(this),
211 callback, 187 callback,
212 desired_size_in_pixel), 188 desired_size_in_pixel),
213 tracker); 189 tracker);
214 } 190 }
215 191
216 base::CancelableTaskTracker::TaskId 192 base::CancelableTaskTracker::TaskId
217 FaviconService::GetLargestRawFaviconForPageURL( 193 FaviconService::GetLargestRawFaviconForPageURL(
(...skipping 18 matching lines...) Expand all
236 tracker); 212 tracker);
237 } 213 }
238 if (history_service_) { 214 if (history_service_) {
239 return history_service_->GetLargestFaviconForURL(page_url, icon_types, 215 return history_service_->GetLargestFaviconForURL(page_url, icon_types,
240 minimum_size_in_pixels, callback, tracker); 216 minimum_size_in_pixels, callback, tracker);
241 } 217 }
242 return RunWithEmptyResultAsync(favicon_results_callback, tracker); 218 return RunWithEmptyResultAsync(favicon_results_callback, tracker);
243 } 219 }
244 220
245 base::CancelableTaskTracker::TaskId FaviconService::GetFaviconForPageURL( 221 base::CancelableTaskTracker::TaskId FaviconService::GetFaviconForPageURL(
246 const FaviconForPageURLParams& params, 222 const GURL& page_url,
223 int icon_types,
224 int desired_size_in_dip,
247 const favicon_base::FaviconResultsCallback& callback, 225 const favicon_base::FaviconResultsCallback& callback,
248 base::CancelableTaskTracker* tracker) { 226 base::CancelableTaskTracker* tracker) {
249 return GetFaviconForPageURLImpl( 227 return GetFaviconForPageURLImpl(
250 params, 228 page_url,
251 GetPixelSizesForFaviconScales(params.desired_size_in_dip), 229 icon_types,
230 GetPixelSizesForFaviconScales(desired_size_in_dip),
252 callback, 231 callback,
253 tracker); 232 tracker);
254 } 233 }
255 234
235 base::CancelableTaskTracker::TaskId
236 FaviconService::UpdateFaviconMappingsAndFetch(
237 const GURL& page_url,
238 const std::vector<GURL>& icon_urls,
239 int icon_types,
240 int desired_size_in_dip,
241 const favicon_base::FaviconResultsCallback& callback,
242 base::CancelableTaskTracker* tracker) {
243 if (history_service_) {
244 return history_service_->UpdateFaviconMappingsAndFetch(
245 page_url,
246 icon_urls,
247 icon_types,
248 GetPixelSizesForFaviconScales(desired_size_in_dip),
249 callback,
250 tracker);
251 }
252 return RunWithEmptyResultAsync(callback, tracker);
253 }
254
256 base::CancelableTaskTracker::TaskId FaviconService::GetLargestRawFaviconForID( 255 base::CancelableTaskTracker::TaskId FaviconService::GetLargestRawFaviconForID(
257 favicon_base::FaviconID favicon_id, 256 favicon_base::FaviconID favicon_id,
258 const favicon_base::FaviconRawBitmapCallback& callback, 257 const favicon_base::FaviconRawBitmapCallback& callback,
259 base::CancelableTaskTracker* tracker) { 258 base::CancelableTaskTracker* tracker) {
260 // Use 0 as |desired_size| to get the largest bitmap for |favicon_id| without 259 // Use 0 as |desired_size| to get the largest bitmap for |favicon_id| without
261 // any resizing. 260 // any resizing.
262 int desired_size = 0; 261 int desired_size = 0;
263 favicon_base::FaviconResultsCallback callback_runner = 262 favicon_base::FaviconResultsCallback callback_runner =
264 Bind(&FaviconService::RunFaviconRawBitmapCallbackWithBitmapResults, 263 Bind(&FaviconService::RunFaviconRawBitmapCallbackWithBitmapResults,
265 base::Unretained(this), 264 base::Unretained(this),
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
350 return missing_favicon_urls_.find(url_hash) != missing_favicon_urls_.end(); 349 return missing_favicon_urls_.find(url_hash) != missing_favicon_urls_.end();
351 } 350 }
352 351
353 void FaviconService::ClearUnableToDownloadFavicons() { 352 void FaviconService::ClearUnableToDownloadFavicons() {
354 missing_favicon_urls_.clear(); 353 missing_favicon_urls_.clear();
355 } 354 }
356 355
357 FaviconService::~FaviconService() {} 356 FaviconService::~FaviconService() {}
358 357
359 base::CancelableTaskTracker::TaskId FaviconService::GetFaviconForPageURLImpl( 358 base::CancelableTaskTracker::TaskId FaviconService::GetFaviconForPageURLImpl(
360 const FaviconForPageURLParams& params, 359 const GURL& page_url,
360 int icon_types,
361 const std::vector<int>& desired_sizes_in_pixel, 361 const std::vector<int>& desired_sizes_in_pixel,
362 const favicon_base::FaviconResultsCallback& callback, 362 const favicon_base::FaviconResultsCallback& callback,
363 base::CancelableTaskTracker* tracker) { 363 base::CancelableTaskTracker* tracker) {
364 if (params.page_url.SchemeIs(content::kChromeUIScheme) || 364 if (page_url.SchemeIs(content::kChromeUIScheme) ||
365 params.page_url.SchemeIs(extensions::kExtensionScheme)) { 365 page_url.SchemeIs(extensions::kExtensionScheme)) {
366 return GetFaviconForChromeURL( 366 return GetFaviconForChromeURL(
367 profile_, params.page_url, desired_sizes_in_pixel, callback, tracker); 367 profile_, page_url, desired_sizes_in_pixel, callback, tracker);
368 } 368 }
369 if (history_service_) { 369 if (history_service_) {
370 return history_service_->GetFaviconsForURL(params.page_url, 370 return history_service_->GetFaviconsForURL(page_url,
371 params.icon_types, 371 icon_types,
372 desired_sizes_in_pixel, 372 desired_sizes_in_pixel,
373 callback, 373 callback,
374 tracker); 374 tracker);
375 } 375 }
376 return RunWithEmptyResultAsync(callback, tracker); 376 return RunWithEmptyResultAsync(callback, tracker);
377 } 377 }
378 378
379 void FaviconService::RunFaviconImageCallbackWithBitmapResults( 379 void FaviconService::RunFaviconImageCallbackWithBitmapResults(
380 const favicon_base::FaviconImageCallback& callback, 380 const favicon_base::FaviconImageCallback& callback,
381 int desired_size_in_dip, 381 int desired_size_in_dip,
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
433 if (!gfx::PNGCodec::EncodeBGRASkBitmap(resized_image.AsBitmap(), false, 433 if (!gfx::PNGCodec::EncodeBGRASkBitmap(resized_image.AsBitmap(), false,
434 &resized_bitmap_data)) { 434 &resized_bitmap_data)) {
435 callback.Run(favicon_base::FaviconRawBitmapResult()); 435 callback.Run(favicon_base::FaviconRawBitmapResult());
436 return; 436 return;
437 } 437 }
438 438
439 bitmap_result.bitmap_data = base::RefCountedBytes::TakeVector( 439 bitmap_result.bitmap_data = base::RefCountedBytes::TakeVector(
440 &resized_bitmap_data); 440 &resized_bitmap_data);
441 callback.Run(bitmap_result); 441 callback.Run(bitmap_result);
442 } 442 }
OLDNEW
« no previous file with comments | « chrome/browser/favicon/favicon_service.h ('k') | chrome/browser/jumplist_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698