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

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
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 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
85 85
86 // static 86 // static
87 void FaviconService::FaviconResultsCallbackRunner( 87 void FaviconService::FaviconResultsCallbackRunner(
88 const favicon_base::FaviconResultsCallback& callback, 88 const favicon_base::FaviconResultsCallback& callback,
89 const std::vector<favicon_base::FaviconRawBitmapResult>* results) { 89 const std::vector<favicon_base::FaviconRawBitmapResult>* results) {
90 callback.Run(*results); 90 callback.Run(*results);
91 } 91 }
92 92
93 base::CancelableTaskTracker::TaskId FaviconService::GetFaviconImage( 93 base::CancelableTaskTracker::TaskId FaviconService::GetFaviconImage(
94 const GURL& icon_url, 94 const GURL& icon_url,
95 favicon_base::IconType icon_type,
96 int desired_size_in_dip,
97 const favicon_base::FaviconImageCallback& callback, 95 const favicon_base::FaviconImageCallback& callback,
98 base::CancelableTaskTracker* tracker) { 96 base::CancelableTaskTracker* tracker) {
99 favicon_base::FaviconResultsCallback callback_runner = 97 favicon_base::FaviconResultsCallback callback_runner =
100 Bind(&FaviconService::RunFaviconImageCallbackWithBitmapResults, 98 Bind(&FaviconService::RunFaviconImageCallbackWithBitmapResults,
101 base::Unretained(this), callback, desired_size_in_dip); 99 base::Unretained(this), callback, gfx::kFaviconSize);
102 if (history_service_) { 100 if (history_service_) {
103 std::vector<GURL> icon_urls; 101 std::vector<GURL> icon_urls;
104 icon_urls.push_back(icon_url); 102 icon_urls.push_back(icon_url);
105 return history_service_->GetFavicons( 103 return history_service_->GetFavicons(
106 icon_urls, 104 icon_urls,
107 icon_type, 105 favicon_base::FAVICON,
108 GetPixelSizesForFaviconScales(desired_size_in_dip), 106 GetPixelSizesForFaviconScales(gfx::kFaviconSize),
109 callback_runner, 107 callback_runner,
110 tracker); 108 tracker);
111 } 109 }
112 return RunWithEmptyResultAsync(callback_runner, tracker); 110 return RunWithEmptyResultAsync(callback_runner, tracker);
113 } 111 }
114 112
115 base::CancelableTaskTracker::TaskId FaviconService::GetRawFavicon( 113 base::CancelableTaskTracker::TaskId FaviconService::GetRawFavicon(
116 const GURL& icon_url, 114 const GURL& icon_url,
117 favicon_base::IconType icon_type, 115 favicon_base::IconType icon_type,
118 int desired_size_in_dip, 116 int desired_size_in_pixel,
119 float desired_favicon_scale,
120 const favicon_base::FaviconRawBitmapCallback& callback, 117 const favicon_base::FaviconRawBitmapCallback& callback,
121 base::CancelableTaskTracker* tracker) { 118 base::CancelableTaskTracker* tracker) {
122 int desired_size_in_pixel =
123 std::ceil(desired_size_in_dip * desired_favicon_scale);
124 favicon_base::FaviconResultsCallback callback_runner = 119 favicon_base::FaviconResultsCallback callback_runner =
125 Bind(&FaviconService::RunFaviconRawBitmapCallbackWithBitmapResults, 120 Bind(&FaviconService::RunFaviconRawBitmapCallbackWithBitmapResults,
126 base::Unretained(this), 121 base::Unretained(this),
127 callback, 122 callback,
128 desired_size_in_pixel); 123 desired_size_in_pixel);
129 124
130 if (history_service_) { 125 if (history_service_) {
131 std::vector<GURL> icon_urls; 126 std::vector<GURL> icon_urls;
132 icon_urls.push_back(icon_url); 127 icon_urls.push_back(icon_url);
133 std::vector<int> desired_sizes_in_pixel; 128 std::vector<int> desired_sizes_in_pixel;
(...skipping 17 matching lines...) Expand all
151 return history_service_->GetFavicons( 146 return history_service_->GetFavicons(
152 icon_urls, 147 icon_urls,
153 icon_type, 148 icon_type,
154 GetPixelSizesForFaviconScales(desired_size_in_dip), 149 GetPixelSizesForFaviconScales(desired_size_in_dip),
155 callback, 150 callback,
156 tracker); 151 tracker);
157 } 152 }
158 return RunWithEmptyResultAsync(callback, tracker); 153 return RunWithEmptyResultAsync(callback, tracker);
159 } 154 }
160 155
161 base::CancelableTaskTracker::TaskId
162 FaviconService::UpdateFaviconMappingsAndFetch(
163 const GURL& page_url,
164 const std::vector<GURL>& icon_urls,
165 int icon_types,
166 int desired_size_in_dip,
167 const favicon_base::FaviconResultsCallback& callback,
168 base::CancelableTaskTracker* tracker) {
169 if (history_service_) {
170 return history_service_->UpdateFaviconMappingsAndFetch(
171 page_url,
172 icon_urls,
173 icon_types,
174 GetPixelSizesForFaviconScales(desired_size_in_dip),
175 callback,
176 tracker);
177 }
178 return RunWithEmptyResultAsync(callback, tracker);
179 }
180
181 base::CancelableTaskTracker::TaskId FaviconService::GetFaviconImageForPageURL( 156 base::CancelableTaskTracker::TaskId FaviconService::GetFaviconImageForPageURL(
182 const FaviconForPageURLParams& params, 157 const GURL& page_url,
183 const favicon_base::FaviconImageCallback& callback, 158 const favicon_base::FaviconImageCallback& callback,
184 base::CancelableTaskTracker* tracker) { 159 base::CancelableTaskTracker* tracker) {
185 return GetFaviconForPageURLImpl( 160 return GetFaviconForPageURLImpl(
186 params, 161 page_url,
187 GetPixelSizesForFaviconScales(params.desired_size_in_dip), 162 favicon_base::FAVICON,
163 GetPixelSizesForFaviconScales(gfx::kFaviconSize),
188 Bind(&FaviconService::RunFaviconImageCallbackWithBitmapResults, 164 Bind(&FaviconService::RunFaviconImageCallbackWithBitmapResults,
189 base::Unretained(this), 165 base::Unretained(this),
190 callback, 166 callback,
191 params.desired_size_in_dip), 167 gfx::kFaviconSize),
192 tracker); 168 tracker);
193 } 169 }
194 170
195 base::CancelableTaskTracker::TaskId FaviconService::GetRawFaviconForPageURL( 171 base::CancelableTaskTracker::TaskId FaviconService::GetRawFaviconForPageURL(
196 const FaviconForPageURLParams& params, 172 const GURL& page_url,
197 float desired_favicon_scale, 173 int icon_types,
174 int desired_size_in_pixel,
198 const favicon_base::FaviconRawBitmapCallback& callback, 175 const favicon_base::FaviconRawBitmapCallback& callback,
199 base::CancelableTaskTracker* tracker) { 176 base::CancelableTaskTracker* tracker) {
200 int desired_size_in_pixel =
201 std::ceil(params.desired_size_in_dip * desired_favicon_scale);
202 std::vector<int> desired_sizes_in_pixel; 177 std::vector<int> desired_sizes_in_pixel;
203 desired_sizes_in_pixel.push_back(desired_size_in_pixel); 178 desired_sizes_in_pixel.push_back(desired_size_in_pixel);
204 return GetFaviconForPageURLImpl( 179 return GetFaviconForPageURLImpl(
205 params, 180 page_url,
181 icon_types,
206 desired_sizes_in_pixel, 182 desired_sizes_in_pixel,
207 Bind(&FaviconService::RunFaviconRawBitmapCallbackWithBitmapResults, 183 Bind(&FaviconService::RunFaviconRawBitmapCallbackWithBitmapResults,
208 base::Unretained(this), 184 base::Unretained(this),
209 callback, 185 callback,
210 desired_size_in_pixel), 186 desired_size_in_pixel),
211 tracker); 187 tracker);
212 } 188 }
213 189
214 base::CancelableTaskTracker::TaskId 190 base::CancelableTaskTracker::TaskId
215 FaviconService::GetLargestRawFaviconForPageURL( 191 FaviconService::GetLargestRawFaviconForPageURL(
(...skipping 18 matching lines...) Expand all
234 tracker); 210 tracker);
235 } 211 }
236 if (history_service_) { 212 if (history_service_) {
237 return history_service_->GetLargestFaviconForURL(page_url, icon_types, 213 return history_service_->GetLargestFaviconForURL(page_url, icon_types,
238 minimum_size_in_pixels, callback, tracker); 214 minimum_size_in_pixels, callback, tracker);
239 } 215 }
240 return RunWithEmptyResultAsync(favicon_results_callback, tracker); 216 return RunWithEmptyResultAsync(favicon_results_callback, tracker);
241 } 217 }
242 218
243 base::CancelableTaskTracker::TaskId FaviconService::GetFaviconForPageURL( 219 base::CancelableTaskTracker::TaskId FaviconService::GetFaviconForPageURL(
244 const FaviconForPageURLParams& params, 220 const GURL& page_url,
221 int icon_types,
222 int desired_size_in_dip,
245 const favicon_base::FaviconResultsCallback& callback, 223 const favicon_base::FaviconResultsCallback& callback,
246 base::CancelableTaskTracker* tracker) { 224 base::CancelableTaskTracker* tracker) {
247 return GetFaviconForPageURLImpl( 225 return GetFaviconForPageURLImpl(
248 params, 226 page_url,
249 GetPixelSizesForFaviconScales(params.desired_size_in_dip), 227 icon_types,
228 GetPixelSizesForFaviconScales(desired_size_in_dip),
250 callback, 229 callback,
251 tracker); 230 tracker);
252 } 231 }
253 232
233 base::CancelableTaskTracker::TaskId
234 FaviconService::UpdateFaviconMappingsAndFetch(
235 const GURL& page_url,
236 const std::vector<GURL>& icon_urls,
237 int icon_types,
238 int desired_size_in_dip,
239 const favicon_base::FaviconResultsCallback& callback,
240 base::CancelableTaskTracker* tracker) {
241 if (history_service_) {
242 return history_service_->UpdateFaviconMappingsAndFetch(
243 page_url,
244 icon_urls,
245 icon_types,
246 GetPixelSizesForFaviconScales(desired_size_in_dip),
247 callback,
248 tracker);
249 }
250 return RunWithEmptyResultAsync(callback, tracker);
251 }
252
253
sky 2014/07/10 00:03:39 nit: onlye one newline.
254 base::CancelableTaskTracker::TaskId FaviconService::GetLargestRawFaviconForID( 254 base::CancelableTaskTracker::TaskId FaviconService::GetLargestRawFaviconForID(
255 favicon_base::FaviconID favicon_id, 255 favicon_base::FaviconID favicon_id,
256 const favicon_base::FaviconRawBitmapCallback& callback, 256 const favicon_base::FaviconRawBitmapCallback& callback,
257 base::CancelableTaskTracker* tracker) { 257 base::CancelableTaskTracker* tracker) {
258 // Use 0 as |desired_size| to get the largest bitmap for |favicon_id| without 258 // Use 0 as |desired_size| to get the largest bitmap for |favicon_id| without
259 // any resizing. 259 // any resizing.
260 int desired_size = 0; 260 int desired_size = 0;
261 favicon_base::FaviconResultsCallback callback_runner = 261 favicon_base::FaviconResultsCallback callback_runner =
262 Bind(&FaviconService::RunFaviconRawBitmapCallbackWithBitmapResults, 262 Bind(&FaviconService::RunFaviconRawBitmapCallbackWithBitmapResults,
263 base::Unretained(this), 263 base::Unretained(this),
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
348 return missing_favicon_urls_.find(url_hash) != missing_favicon_urls_.end(); 348 return missing_favicon_urls_.find(url_hash) != missing_favicon_urls_.end();
349 } 349 }
350 350
351 void FaviconService::ClearUnableToDownloadFavicons() { 351 void FaviconService::ClearUnableToDownloadFavicons() {
352 missing_favicon_urls_.clear(); 352 missing_favicon_urls_.clear();
353 } 353 }
354 354
355 FaviconService::~FaviconService() {} 355 FaviconService::~FaviconService() {}
356 356
357 base::CancelableTaskTracker::TaskId FaviconService::GetFaviconForPageURLImpl( 357 base::CancelableTaskTracker::TaskId FaviconService::GetFaviconForPageURLImpl(
358 const FaviconForPageURLParams& params, 358 const GURL& page_url,
359 int icon_types,
359 const std::vector<int>& desired_sizes_in_pixel, 360 const std::vector<int>& desired_sizes_in_pixel,
360 const favicon_base::FaviconResultsCallback& callback, 361 const favicon_base::FaviconResultsCallback& callback,
361 base::CancelableTaskTracker* tracker) { 362 base::CancelableTaskTracker* tracker) {
362 if (params.page_url.SchemeIs(content::kChromeUIScheme) || 363 if (page_url.SchemeIs(content::kChromeUIScheme) ||
363 params.page_url.SchemeIs(extensions::kExtensionScheme)) { 364 page_url.SchemeIs(extensions::kExtensionScheme)) {
364 return GetFaviconForChromeURL( 365 return GetFaviconForChromeURL(
365 profile_, params.page_url, desired_sizes_in_pixel, callback, tracker); 366 profile_, page_url, desired_sizes_in_pixel, callback, tracker);
366 } 367 }
367 if (history_service_) { 368 if (history_service_) {
368 return history_service_->GetFaviconsForURL(params.page_url, 369 return history_service_->GetFaviconsForURL(page_url,
369 params.icon_types, 370 icon_types,
370 desired_sizes_in_pixel, 371 desired_sizes_in_pixel,
371 callback, 372 callback,
372 tracker); 373 tracker);
373 } 374 }
374 return RunWithEmptyResultAsync(callback, tracker); 375 return RunWithEmptyResultAsync(callback, tracker);
375 } 376 }
376 377
377 void FaviconService::RunFaviconImageCallbackWithBitmapResults( 378 void FaviconService::RunFaviconImageCallbackWithBitmapResults(
378 const favicon_base::FaviconImageCallback& callback, 379 const favicon_base::FaviconImageCallback& callback,
379 int desired_size_in_dip, 380 int desired_size_in_dip,
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
431 if (!gfx::PNGCodec::EncodeBGRASkBitmap(resized_image.AsBitmap(), false, 432 if (!gfx::PNGCodec::EncodeBGRASkBitmap(resized_image.AsBitmap(), false,
432 &resized_bitmap_data)) { 433 &resized_bitmap_data)) {
433 callback.Run(favicon_base::FaviconRawBitmapResult()); 434 callback.Run(favicon_base::FaviconRawBitmapResult());
434 return; 435 return;
435 } 436 }
436 437
437 bitmap_result.bitmap_data = base::RefCountedBytes::TakeVector( 438 bitmap_result.bitmap_data = base::RefCountedBytes::TakeVector(
438 &resized_bitmap_data); 439 &resized_bitmap_data);
439 callback.Run(bitmap_result); 440 callback.Run(bitmap_result);
440 } 441 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698