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

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

Issue 330603004: Rename FaviconBitmapXxx to FaviconRawBitmapXxx (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix android Created 6 years, 6 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/favicon/favicon_util.h » ('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 "base/hash.h" 7 #include "base/hash.h"
8 #include "base/message_loop/message_loop_proxy.h" 8 #include "base/message_loop/message_loop_proxy.h"
9 #include "chrome/browser/favicon/favicon_util.h" 9 #include "chrome/browser/favicon/favicon_util.h"
10 #include "chrome/browser/history/history_backend.h" 10 #include "chrome/browser/history/history_backend.h"
(...skipping 10 matching lines...) Expand all
21 #include "ui/gfx/favicon_size.h" 21 #include "ui/gfx/favicon_size.h"
22 #include "ui/gfx/image/image_skia.h" 22 #include "ui/gfx/image/image_skia.h"
23 23
24 using base::Bind; 24 using base::Bind;
25 25
26 namespace { 26 namespace {
27 27
28 void CancelOrRunFaviconResultsCallback( 28 void CancelOrRunFaviconResultsCallback(
29 const base::CancelableTaskTracker::IsCanceledCallback& is_canceled, 29 const base::CancelableTaskTracker::IsCanceledCallback& is_canceled,
30 const favicon_base::FaviconResultsCallback& callback, 30 const favicon_base::FaviconResultsCallback& callback,
31 const std::vector<favicon_base::FaviconBitmapResult>& results) { 31 const std::vector<favicon_base::FaviconRawBitmapResult>& results) {
32 if (is_canceled.Run()) 32 if (is_canceled.Run())
33 return; 33 return;
34 callback.Run(results); 34 callback.Run(results);
35 } 35 }
36 36
37 // Helper to run callback with empty results if we cannot get the history 37 // Helper to run callback with empty results if we cannot get the history
38 // service. 38 // service.
39 base::CancelableTaskTracker::TaskId RunWithEmptyResultAsync( 39 base::CancelableTaskTracker::TaskId RunWithEmptyResultAsync(
40 const favicon_base::FaviconResultsCallback& callback, 40 const favicon_base::FaviconResultsCallback& callback,
41 base::CancelableTaskTracker* tracker) { 41 base::CancelableTaskTracker* tracker) {
42 return tracker->PostTask( 42 return tracker->PostTask(
43 base::MessageLoopProxy::current().get(), 43 base::MessageLoopProxy::current().get(),
44 FROM_HERE, 44 FROM_HERE,
45 Bind(callback, std::vector<favicon_base::FaviconBitmapResult>())); 45 Bind(callback, std::vector<favicon_base::FaviconRawBitmapResult>()));
46 } 46 }
47 47
48 // Return the TaskId to retreive the favicon from chrome specific URL. 48 // Return the TaskId to retreive the favicon from chrome specific URL.
49 base::CancelableTaskTracker::TaskId GetFaviconForChromeURL( 49 base::CancelableTaskTracker::TaskId GetFaviconForChromeURL(
50 Profile* profile, 50 Profile* profile,
51 const GURL& page_url, 51 const GURL& page_url,
52 const std::vector<ui::ScaleFactor>& desired_scale_factors, 52 const std::vector<ui::ScaleFactor>& desired_scale_factors,
53 const favicon_base::FaviconResultsCallback& callback, 53 const favicon_base::FaviconResultsCallback& callback,
54 base::CancelableTaskTracker* tracker) { 54 base::CancelableTaskTracker* tracker) {
55 base::CancelableTaskTracker::IsCanceledCallback is_canceled_cb; 55 base::CancelableTaskTracker::IsCanceledCallback is_canceled_cb;
(...skipping 10 matching lines...) Expand all
66 66
67 FaviconService::FaviconService(Profile* profile) 67 FaviconService::FaviconService(Profile* profile)
68 : history_service_(HistoryServiceFactory::GetForProfile( 68 : history_service_(HistoryServiceFactory::GetForProfile(
69 profile, Profile::EXPLICIT_ACCESS)), 69 profile, Profile::EXPLICIT_ACCESS)),
70 profile_(profile) { 70 profile_(profile) {
71 } 71 }
72 72
73 // static 73 // static
74 void FaviconService::FaviconResultsCallbackRunner( 74 void FaviconService::FaviconResultsCallbackRunner(
75 const favicon_base::FaviconResultsCallback& callback, 75 const favicon_base::FaviconResultsCallback& callback,
76 const std::vector<favicon_base::FaviconBitmapResult>* results) { 76 const std::vector<favicon_base::FaviconRawBitmapResult>* results) {
77 callback.Run(*results); 77 callback.Run(*results);
78 } 78 }
79 79
80 base::CancelableTaskTracker::TaskId FaviconService::GetFaviconImage( 80 base::CancelableTaskTracker::TaskId FaviconService::GetFaviconImage(
81 const GURL& icon_url, 81 const GURL& icon_url,
82 favicon_base::IconType icon_type, 82 favicon_base::IconType icon_type,
83 int desired_size_in_dip, 83 int desired_size_in_dip,
84 const favicon_base::FaviconImageCallback& callback, 84 const favicon_base::FaviconImageCallback& callback,
85 base::CancelableTaskTracker* tracker) { 85 base::CancelableTaskTracker* tracker) {
86 favicon_base::FaviconResultsCallback callback_runner = 86 favicon_base::FaviconResultsCallback callback_runner =
87 Bind(&FaviconService::RunFaviconImageCallbackWithBitmapResults, 87 Bind(&FaviconService::RunFaviconImageCallbackWithBitmapResults,
88 base::Unretained(this), callback, desired_size_in_dip); 88 base::Unretained(this), callback, desired_size_in_dip);
89 if (history_service_) { 89 if (history_service_) {
90 std::vector<GURL> icon_urls; 90 std::vector<GURL> icon_urls;
91 icon_urls.push_back(icon_url); 91 icon_urls.push_back(icon_url);
92 return history_service_->GetFavicons( 92 return history_service_->GetFavicons(
93 icon_urls, icon_type, desired_size_in_dip, 93 icon_urls, icon_type, desired_size_in_dip,
94 FaviconUtil::GetFaviconScaleFactors(), callback_runner, tracker); 94 FaviconUtil::GetFaviconScaleFactors(), callback_runner, tracker);
95 } 95 }
96 return RunWithEmptyResultAsync(callback_runner, tracker); 96 return RunWithEmptyResultAsync(callback_runner, tracker);
97 } 97 }
98 98
99 base::CancelableTaskTracker::TaskId FaviconService::GetRawFavicon( 99 base::CancelableTaskTracker::TaskId FaviconService::GetRawFavicon(
100 const GURL& icon_url, 100 const GURL& icon_url,
101 favicon_base::IconType icon_type, 101 favicon_base::IconType icon_type,
102 int desired_size_in_dip, 102 int desired_size_in_dip,
103 ui::ScaleFactor desired_scale_factor, 103 ui::ScaleFactor desired_scale_factor,
104 const favicon_base::FaviconRawCallback& callback, 104 const favicon_base::FaviconRawBitmapCallback& callback,
105 base::CancelableTaskTracker* tracker) { 105 base::CancelableTaskTracker* tracker) {
106 favicon_base::FaviconResultsCallback callback_runner = 106 favicon_base::FaviconResultsCallback callback_runner =
107 Bind(&FaviconService::RunFaviconRawCallbackWithBitmapResults, 107 Bind(&FaviconService::RunFaviconRawBitmapCallbackWithBitmapResults,
108 base::Unretained(this), 108 base::Unretained(this),
109 callback, desired_size_in_dip, desired_scale_factor); 109 callback,
110 desired_size_in_dip,
111 desired_scale_factor);
110 112
111 if (history_service_) { 113 if (history_service_) {
112 std::vector<GURL> icon_urls; 114 std::vector<GURL> icon_urls;
113 icon_urls.push_back(icon_url); 115 icon_urls.push_back(icon_url);
114 std::vector<ui::ScaleFactor> desired_scale_factors; 116 std::vector<ui::ScaleFactor> desired_scale_factors;
115 desired_scale_factors.push_back(desired_scale_factor); 117 desired_scale_factors.push_back(desired_scale_factor);
116 118
117 return history_service_->GetFavicons( 119 return history_service_->GetFavicons(
118 icon_urls, icon_type, desired_size_in_dip, desired_scale_factors, 120 icon_urls, icon_type, desired_size_in_dip, desired_scale_factors,
119 callback_runner, tracker); 121 callback_runner, tracker);
(...skipping 26 matching lines...) Expand all
146 const favicon_base::FaviconResultsCallback& callback, 148 const favicon_base::FaviconResultsCallback& callback,
147 base::CancelableTaskTracker* tracker) { 149 base::CancelableTaskTracker* tracker) {
148 if (history_service_) { 150 if (history_service_) {
149 return history_service_->UpdateFaviconMappingsAndFetch( 151 return history_service_->UpdateFaviconMappingsAndFetch(
150 page_url, icon_urls, icon_types, desired_size_in_dip, 152 page_url, icon_urls, icon_types, desired_size_in_dip,
151 FaviconUtil::GetFaviconScaleFactors(), callback, tracker); 153 FaviconUtil::GetFaviconScaleFactors(), callback, tracker);
152 } 154 }
153 return RunWithEmptyResultAsync(callback, tracker); 155 return RunWithEmptyResultAsync(callback, tracker);
154 } 156 }
155 157
156 base::CancelableTaskTracker::TaskId FaviconService::GetFaviconImageForURL( 158 base::CancelableTaskTracker::TaskId FaviconService::GetFaviconImageForPageURL(
157 const FaviconForURLParams& params, 159 const FaviconForPageURLParams& params,
158 const favicon_base::FaviconImageCallback& callback, 160 const favicon_base::FaviconImageCallback& callback,
159 base::CancelableTaskTracker* tracker) { 161 base::CancelableTaskTracker* tracker) {
160 return GetFaviconForURLImpl( 162 return GetFaviconForPageURLImpl(
161 params, 163 params,
162 FaviconUtil::GetFaviconScaleFactors(), 164 FaviconUtil::GetFaviconScaleFactors(),
163 Bind(&FaviconService::RunFaviconImageCallbackWithBitmapResults, 165 Bind(&FaviconService::RunFaviconImageCallbackWithBitmapResults,
164 base::Unretained(this), 166 base::Unretained(this),
165 callback, 167 callback,
166 params.desired_size_in_dip), 168 params.desired_size_in_dip),
167 tracker); 169 tracker);
168 } 170 }
169 171
170 base::CancelableTaskTracker::TaskId FaviconService::GetRawFaviconForURL( 172 base::CancelableTaskTracker::TaskId FaviconService::GetRawFaviconForPageURL(
171 const FaviconForURLParams& params, 173 const FaviconForPageURLParams& params,
172 ui::ScaleFactor desired_scale_factor, 174 ui::ScaleFactor desired_scale_factor,
173 const favicon_base::FaviconRawCallback& callback, 175 const favicon_base::FaviconRawBitmapCallback& callback,
174 base::CancelableTaskTracker* tracker) { 176 base::CancelableTaskTracker* tracker) {
175 std::vector<ui::ScaleFactor> desired_scale_factors; 177 std::vector<ui::ScaleFactor> desired_scale_factors;
176 desired_scale_factors.push_back(desired_scale_factor); 178 desired_scale_factors.push_back(desired_scale_factor);
177 return GetFaviconForURLImpl( 179 return GetFaviconForPageURLImpl(
178 params, 180 params,
179 desired_scale_factors, 181 desired_scale_factors,
180 Bind(&FaviconService::RunFaviconRawCallbackWithBitmapResults, 182 Bind(&FaviconService::RunFaviconRawBitmapCallbackWithBitmapResults,
181 base::Unretained(this), 183 base::Unretained(this),
182 callback, 184 callback,
183 params.desired_size_in_dip, 185 params.desired_size_in_dip,
184 desired_scale_factor), 186 desired_scale_factor),
185 tracker); 187 tracker);
186 } 188 }
187 189
188 base::CancelableTaskTracker::TaskId FaviconService::GetLargestRawFaviconForURL( 190 base::CancelableTaskTracker::TaskId
191 FaviconService::GetLargestRawFaviconForPageURL(
189 Profile* profile, 192 Profile* profile,
190 const GURL& page_url, 193 const GURL& page_url,
191 const std::vector<int>& icon_types, 194 const std::vector<int>& icon_types,
192 int minimum_size_in_pixels, 195 int minimum_size_in_pixels,
193 const favicon_base::FaviconRawCallback& callback, 196 const favicon_base::FaviconRawBitmapCallback& callback,
194 base::CancelableTaskTracker* tracker) { 197 base::CancelableTaskTracker* tracker) {
195 favicon_base::FaviconResultsCallback favicon_results_callback = 198 favicon_base::FaviconResultsCallback favicon_results_callback =
196 Bind(&FaviconService::RunFaviconRawCallbackWithBitmapResults, 199 Bind(&FaviconService::RunFaviconRawBitmapCallbackWithBitmapResults,
197 base::Unretained(this), callback, 0, ui::ScaleFactor()); 200 base::Unretained(this),
201 callback,
202 0,
203 ui::ScaleFactor());
198 if (page_url.SchemeIs(content::kChromeUIScheme) || 204 if (page_url.SchemeIs(content::kChromeUIScheme) ||
199 page_url.SchemeIs(extensions::kExtensionScheme)) { 205 page_url.SchemeIs(extensions::kExtensionScheme)) {
200 std::vector<ui::ScaleFactor> scale_factor; 206 std::vector<ui::ScaleFactor> scale_factor;
201 scale_factor.push_back(ui::SCALE_FACTOR_100P); 207 scale_factor.push_back(ui::SCALE_FACTOR_100P);
202 return GetFaviconForChromeURL(profile, page_url, scale_factor, 208 return GetFaviconForChromeURL(profile, page_url, scale_factor,
203 favicon_results_callback, tracker); 209 favicon_results_callback, tracker);
204 } 210 }
205 if (history_service_) { 211 if (history_service_) {
206 return history_service_->GetLargestFaviconForURL(page_url, icon_types, 212 return history_service_->GetLargestFaviconForURL(page_url, icon_types,
207 minimum_size_in_pixels, callback, tracker); 213 minimum_size_in_pixels, callback, tracker);
208 } 214 }
209 return RunWithEmptyResultAsync(favicon_results_callback, tracker); 215 return RunWithEmptyResultAsync(favicon_results_callback, tracker);
210 } 216 }
211 217
212 base::CancelableTaskTracker::TaskId FaviconService::GetFaviconForURL( 218 base::CancelableTaskTracker::TaskId FaviconService::GetFaviconForPageURL(
213 const FaviconForURLParams& params, 219 const FaviconForPageURLParams& params,
214 const favicon_base::FaviconResultsCallback& callback, 220 const favicon_base::FaviconResultsCallback& callback,
215 base::CancelableTaskTracker* tracker) { 221 base::CancelableTaskTracker* tracker) {
216 return GetFaviconForURLImpl(params, 222 return GetFaviconForPageURLImpl(
217 FaviconUtil::GetFaviconScaleFactors(), 223 params, FaviconUtil::GetFaviconScaleFactors(), callback, tracker);
218 callback,
219 tracker);
220 } 224 }
221 225
222 base::CancelableTaskTracker::TaskId FaviconService::GetLargestRawFaviconForID( 226 base::CancelableTaskTracker::TaskId FaviconService::GetLargestRawFaviconForID(
223 favicon_base::FaviconID favicon_id, 227 favicon_base::FaviconID favicon_id,
224 const favicon_base::FaviconRawCallback& callback, 228 const favicon_base::FaviconRawBitmapCallback& callback,
225 base::CancelableTaskTracker* tracker) { 229 base::CancelableTaskTracker* tracker) {
226 // Use 0 as |desired_size_in_dip| to get the largest bitmap for |favicon_id| 230 // Use 0 as |desired_size_in_dip| to get the largest bitmap for |favicon_id|
227 // without any resizing. 231 // without any resizing.
228 int desired_size_in_dip = 0; 232 int desired_size_in_dip = 0;
229 ui::ScaleFactor desired_scale_factor = ui::SCALE_FACTOR_100P; 233 ui::ScaleFactor desired_scale_factor = ui::SCALE_FACTOR_100P;
230 favicon_base::FaviconResultsCallback callback_runner = 234 favicon_base::FaviconResultsCallback callback_runner =
231 Bind(&FaviconService::RunFaviconRawCallbackWithBitmapResults, 235 Bind(&FaviconService::RunFaviconRawBitmapCallbackWithBitmapResults,
232 base::Unretained(this), 236 base::Unretained(this),
233 callback, desired_size_in_dip, desired_scale_factor); 237 callback,
238 desired_size_in_dip,
239 desired_scale_factor);
234 240
235 if (history_service_) { 241 if (history_service_) {
236 return history_service_->GetFaviconForID( 242 return history_service_->GetFaviconForID(
237 favicon_id, desired_size_in_dip, desired_scale_factor, 243 favicon_id, desired_size_in_dip, desired_scale_factor,
238 callback_runner, tracker); 244 callback_runner, tracker);
239 } 245 }
240 return RunWithEmptyResultAsync(callback_runner, tracker); 246 return RunWithEmptyResultAsync(callback_runner, tracker);
241 } 247 }
242 248
243 void FaviconService::SetFaviconOutOfDateForPage(const GURL& page_url) { 249 void FaviconService::SetFaviconOutOfDateForPage(const GURL& page_url) {
(...skipping 28 matching lines...) Expand all
272 void FaviconService::SetFavicons(const GURL& page_url, 278 void FaviconService::SetFavicons(const GURL& page_url,
273 const GURL& icon_url, 279 const GURL& icon_url,
274 favicon_base::IconType icon_type, 280 favicon_base::IconType icon_type,
275 const gfx::Image& image) { 281 const gfx::Image& image) {
276 if (!history_service_) 282 if (!history_service_)
277 return; 283 return;
278 284
279 gfx::ImageSkia image_skia = image.AsImageSkia(); 285 gfx::ImageSkia image_skia = image.AsImageSkia();
280 image_skia.EnsureRepsForSupportedScales(); 286 image_skia.EnsureRepsForSupportedScales();
281 const std::vector<gfx::ImageSkiaRep>& image_reps = image_skia.image_reps(); 287 const std::vector<gfx::ImageSkiaRep>& image_reps = image_skia.image_reps();
282 std::vector<favicon_base::FaviconBitmapData> favicon_bitmap_data; 288 std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data;
283 for (size_t i = 0; i < image_reps.size(); ++i) { 289 for (size_t i = 0; i < image_reps.size(); ++i) {
284 scoped_refptr<base::RefCountedBytes> bitmap_data( 290 scoped_refptr<base::RefCountedBytes> bitmap_data(
285 new base::RefCountedBytes()); 291 new base::RefCountedBytes());
286 if (gfx::PNGCodec::EncodeBGRASkBitmap(image_reps[i].sk_bitmap(), 292 if (gfx::PNGCodec::EncodeBGRASkBitmap(image_reps[i].sk_bitmap(),
287 false, 293 false,
288 &bitmap_data->data())) { 294 &bitmap_data->data())) {
289 gfx::Size pixel_size(image_reps[i].pixel_width(), 295 gfx::Size pixel_size(image_reps[i].pixel_width(),
290 image_reps[i].pixel_height()); 296 image_reps[i].pixel_height());
291 favicon_base::FaviconBitmapData bitmap_data_element; 297 favicon_base::FaviconRawBitmapData bitmap_data_element;
292 bitmap_data_element.bitmap_data = bitmap_data; 298 bitmap_data_element.bitmap_data = bitmap_data;
293 bitmap_data_element.pixel_size = pixel_size; 299 bitmap_data_element.pixel_size = pixel_size;
294 bitmap_data_element.icon_url = icon_url; 300 bitmap_data_element.icon_url = icon_url;
295 301
296 favicon_bitmap_data.push_back(bitmap_data_element); 302 favicon_bitmap_data.push_back(bitmap_data_element);
297 } 303 }
298 } 304 }
299 305
300 history_service_->SetFavicons(page_url, icon_type, favicon_bitmap_data); 306 history_service_->SetFavicons(page_url, icon_type, favicon_bitmap_data);
301 } 307 }
302 308
303 void FaviconService::UnableToDownloadFavicon(const GURL& icon_url) { 309 void FaviconService::UnableToDownloadFavicon(const GURL& icon_url) {
304 MissingFaviconURLHash url_hash = base::Hash(icon_url.spec()); 310 MissingFaviconURLHash url_hash = base::Hash(icon_url.spec());
305 missing_favicon_urls_.insert(url_hash); 311 missing_favicon_urls_.insert(url_hash);
306 } 312 }
307 313
308 bool FaviconService::WasUnableToDownloadFavicon(const GURL& icon_url) const { 314 bool FaviconService::WasUnableToDownloadFavicon(const GURL& icon_url) const {
309 MissingFaviconURLHash url_hash = base::Hash(icon_url.spec()); 315 MissingFaviconURLHash url_hash = base::Hash(icon_url.spec());
310 return missing_favicon_urls_.find(url_hash) != missing_favicon_urls_.end(); 316 return missing_favicon_urls_.find(url_hash) != missing_favicon_urls_.end();
311 } 317 }
312 318
313 void FaviconService::ClearUnableToDownloadFavicons() { 319 void FaviconService::ClearUnableToDownloadFavicons() {
314 missing_favicon_urls_.clear(); 320 missing_favicon_urls_.clear();
315 } 321 }
316 322
317 FaviconService::~FaviconService() {} 323 FaviconService::~FaviconService() {}
318 324
319 base::CancelableTaskTracker::TaskId FaviconService::GetFaviconForURLImpl( 325 base::CancelableTaskTracker::TaskId FaviconService::GetFaviconForPageURLImpl(
320 const FaviconForURLParams& params, 326 const FaviconForPageURLParams& params,
321 const std::vector<ui::ScaleFactor>& desired_scale_factors, 327 const std::vector<ui::ScaleFactor>& desired_scale_factors,
322 const favicon_base::FaviconResultsCallback& callback, 328 const favicon_base::FaviconResultsCallback& callback,
323 base::CancelableTaskTracker* tracker) { 329 base::CancelableTaskTracker* tracker) {
324 if (params.page_url.SchemeIs(content::kChromeUIScheme) || 330 if (params.page_url.SchemeIs(content::kChromeUIScheme) ||
325 params.page_url.SchemeIs(extensions::kExtensionScheme)) { 331 params.page_url.SchemeIs(extensions::kExtensionScheme)) {
326 return GetFaviconForChromeURL(profile_, params.page_url, 332 return GetFaviconForChromeURL(profile_, params.page_url,
327 desired_scale_factors, callback, tracker); 333 desired_scale_factors, callback, tracker);
328 } 334 }
329 if (history_service_) { 335 if (history_service_) {
330 return history_service_->GetFaviconsForURL(params.page_url, 336 return history_service_->GetFaviconsForURL(params.page_url,
331 params.icon_types, 337 params.icon_types,
332 params.desired_size_in_dip, 338 params.desired_size_in_dip,
333 desired_scale_factors, 339 desired_scale_factors,
334 callback, 340 callback,
335 tracker); 341 tracker);
336 } 342 }
337 return RunWithEmptyResultAsync(callback, tracker); 343 return RunWithEmptyResultAsync(callback, tracker);
338 } 344 }
339 345
340 void FaviconService::RunFaviconImageCallbackWithBitmapResults( 346 void FaviconService::RunFaviconImageCallbackWithBitmapResults(
341 const favicon_base::FaviconImageCallback& callback, 347 const favicon_base::FaviconImageCallback& callback,
342 int desired_size_in_dip, 348 int desired_size_in_dip,
343 const std::vector<favicon_base::FaviconBitmapResult>& 349 const std::vector<favicon_base::FaviconRawBitmapResult>&
344 favicon_bitmap_results) { 350 favicon_bitmap_results) {
345 favicon_base::FaviconImageResult image_result; 351 favicon_base::FaviconImageResult image_result;
346 image_result.image = FaviconUtil::SelectFaviconFramesFromPNGs( 352 image_result.image = FaviconUtil::SelectFaviconFramesFromPNGs(
347 favicon_bitmap_results, 353 favicon_bitmap_results,
348 FaviconUtil::GetFaviconScaleFactors(), 354 FaviconUtil::GetFaviconScaleFactors(),
349 desired_size_in_dip); 355 desired_size_in_dip);
350 FaviconUtil::SetFaviconColorSpace(&image_result.image); 356 FaviconUtil::SetFaviconColorSpace(&image_result.image);
351 357
352 image_result.icon_url = image_result.image.IsEmpty() ? 358 image_result.icon_url = image_result.image.IsEmpty() ?
353 GURL() : favicon_bitmap_results[0].icon_url; 359 GURL() : favicon_bitmap_results[0].icon_url;
354 callback.Run(image_result); 360 callback.Run(image_result);
355 } 361 }
356 362
357 void FaviconService::RunFaviconRawCallbackWithBitmapResults( 363 void FaviconService::RunFaviconRawBitmapCallbackWithBitmapResults(
358 const favicon_base::FaviconRawCallback& callback, 364 const favicon_base::FaviconRawBitmapCallback& callback,
359 int desired_size_in_dip, 365 int desired_size_in_dip,
360 ui::ScaleFactor desired_scale_factor, 366 ui::ScaleFactor desired_scale_factor,
361 const std::vector<favicon_base::FaviconBitmapResult>& 367 const std::vector<favicon_base::FaviconRawBitmapResult>&
362 favicon_bitmap_results) { 368 favicon_bitmap_results) {
363 if (favicon_bitmap_results.empty() || !favicon_bitmap_results[0].is_valid()) { 369 if (favicon_bitmap_results.empty() || !favicon_bitmap_results[0].is_valid()) {
364 callback.Run(favicon_base::FaviconBitmapResult()); 370 callback.Run(favicon_base::FaviconRawBitmapResult());
365 return; 371 return;
366 } 372 }
367 373
368 DCHECK_EQ(1u, favicon_bitmap_results.size()); 374 DCHECK_EQ(1u, favicon_bitmap_results.size());
369 favicon_base::FaviconBitmapResult bitmap_result = favicon_bitmap_results[0]; 375 favicon_base::FaviconRawBitmapResult bitmap_result =
376 favicon_bitmap_results[0];
370 377
371 // If the desired size is 0, SelectFaviconFrames() will return the largest 378 // If the desired size is 0, SelectFaviconFrames() will return the largest
372 // bitmap without doing any resizing. As |favicon_bitmap_results| has bitmap 379 // bitmap without doing any resizing. As |favicon_bitmap_results| has bitmap
373 // data for a single bitmap, return it and avoid an unnecessary decode. 380 // data for a single bitmap, return it and avoid an unnecessary decode.
374 if (desired_size_in_dip == 0) { 381 if (desired_size_in_dip == 0) {
375 callback.Run(bitmap_result); 382 callback.Run(bitmap_result);
376 return; 383 return;
377 } 384 }
378 385
379 // If history bitmap is already desired pixel size, return early. 386 // If history bitmap is already desired pixel size, return early.
(...skipping 11 matching lines...) Expand all
391 // Convert raw bytes to SkBitmap, resize via SelectFaviconFrames(), then 398 // Convert raw bytes to SkBitmap, resize via SelectFaviconFrames(), then
392 // convert back. 399 // convert back.
393 std::vector<ui::ScaleFactor> desired_scale_factors; 400 std::vector<ui::ScaleFactor> desired_scale_factors;
394 desired_scale_factors.push_back(desired_scale_factor); 401 desired_scale_factors.push_back(desired_scale_factor);
395 gfx::Image resized_image = FaviconUtil::SelectFaviconFramesFromPNGs( 402 gfx::Image resized_image = FaviconUtil::SelectFaviconFramesFromPNGs(
396 favicon_bitmap_results, desired_scale_factors, desired_size_in_dip); 403 favicon_bitmap_results, desired_scale_factors, desired_size_in_dip);
397 404
398 std::vector<unsigned char> resized_bitmap_data; 405 std::vector<unsigned char> resized_bitmap_data;
399 if (!gfx::PNGCodec::EncodeBGRASkBitmap(resized_image.AsBitmap(), false, 406 if (!gfx::PNGCodec::EncodeBGRASkBitmap(resized_image.AsBitmap(), false,
400 &resized_bitmap_data)) { 407 &resized_bitmap_data)) {
401 callback.Run(favicon_base::FaviconBitmapResult()); 408 callback.Run(favicon_base::FaviconRawBitmapResult());
402 return; 409 return;
403 } 410 }
404 411
405 bitmap_result.bitmap_data = base::RefCountedBytes::TakeVector( 412 bitmap_result.bitmap_data = base::RefCountedBytes::TakeVector(
406 &resized_bitmap_data); 413 &resized_bitmap_data);
407 callback.Run(bitmap_result); 414 callback.Run(bitmap_result);
408 } 415 }
OLDNEW
« no previous file with comments | « chrome/browser/favicon/favicon_service.h ('k') | chrome/browser/favicon/favicon_util.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698