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

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

Issue 335233003: Convert ui::ScaleFactor -> float in favicon/history code (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: 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
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/history/history_backend.h" 9 #include "chrome/browser/history/history_backend.h"
10 #include "chrome/browser/history/history_service.h" 10 #include "chrome/browser/history/history_service.h"
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
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::FaviconRawBitmapResult>())); 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<float>& desired_favicon_scales,
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;
56 base::CancelableTaskTracker::TaskId id = 56 base::CancelableTaskTracker::TaskId id =
57 tracker->NewTrackedTaskId(&is_canceled_cb); 57 tracker->NewTrackedTaskId(&is_canceled_cb);
58 favicon_base::FaviconResultsCallback cancelable_cb = 58 favicon_base::FaviconResultsCallback cancelable_cb =
59 Bind(&CancelOrRunFaviconResultsCallback, is_canceled_cb, callback); 59 Bind(&CancelOrRunFaviconResultsCallback, is_canceled_cb, callback);
60 ChromeWebUIControllerFactory::GetInstance()->GetFaviconForURL(profile, 60 ChromeWebUIControllerFactory::GetInstance()->GetFaviconForURL(
61 page_url, desired_scale_factors, cancelable_cb); 61 profile, page_url, desired_favicon_scales, cancelable_cb);
62 return id; 62 return id;
63 } 63 }
64 64
65 } // namespace 65 } // namespace
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 }
(...skipping 13 matching lines...) Expand all
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(icon_urls, 92 return history_service_->GetFavicons(icon_urls,
93 icon_type, 93 icon_type,
94 desired_size_in_dip, 94 desired_size_in_dip,
95 favicon_base::GetFaviconScaleFactors(), 95 favicon_base::GetFaviconScales(),
96 callback_runner, 96 callback_runner,
97 tracker); 97 tracker);
98 } 98 }
99 return RunWithEmptyResultAsync(callback_runner, tracker); 99 return RunWithEmptyResultAsync(callback_runner, tracker);
100 } 100 }
101 101
102 base::CancelableTaskTracker::TaskId FaviconService::GetRawFavicon( 102 base::CancelableTaskTracker::TaskId FaviconService::GetRawFavicon(
103 const GURL& icon_url, 103 const GURL& icon_url,
104 favicon_base::IconType icon_type, 104 favicon_base::IconType icon_type,
105 int desired_size_in_dip, 105 int desired_size_in_dip,
106 ui::ScaleFactor desired_scale_factor, 106 float desired_favicon_scale,
107 const favicon_base::FaviconRawBitmapCallback& callback, 107 const favicon_base::FaviconRawBitmapCallback& callback,
108 base::CancelableTaskTracker* tracker) { 108 base::CancelableTaskTracker* tracker) {
109 favicon_base::FaviconResultsCallback callback_runner = 109 favicon_base::FaviconResultsCallback callback_runner =
110 Bind(&FaviconService::RunFaviconRawBitmapCallbackWithBitmapResults, 110 Bind(&FaviconService::RunFaviconRawBitmapCallbackWithBitmapResults,
111 base::Unretained(this), 111 base::Unretained(this),
112 callback, 112 callback,
113 desired_size_in_dip, 113 desired_size_in_dip,
114 desired_scale_factor); 114 desired_favicon_scale);
115 115
116 if (history_service_) { 116 if (history_service_) {
117 std::vector<GURL> icon_urls; 117 std::vector<GURL> icon_urls;
118 icon_urls.push_back(icon_url); 118 icon_urls.push_back(icon_url);
119 std::vector<ui::ScaleFactor> desired_scale_factors; 119 std::vector<float> desired_favicon_scales;
120 desired_scale_factors.push_back(desired_scale_factor); 120 desired_favicon_scales.push_back(desired_favicon_scale);
121 121
122 return history_service_->GetFavicons( 122 return history_service_->GetFavicons(icon_urls,
123 icon_urls, icon_type, desired_size_in_dip, desired_scale_factors, 123 icon_type,
124 callback_runner, tracker); 124 desired_size_in_dip,
125 desired_favicon_scales,
126 callback_runner,
127 tracker);
125 } 128 }
126 return RunWithEmptyResultAsync(callback_runner, tracker); 129 return RunWithEmptyResultAsync(callback_runner, tracker);
127 } 130 }
128 131
129 base::CancelableTaskTracker::TaskId FaviconService::GetFavicon( 132 base::CancelableTaskTracker::TaskId FaviconService::GetFavicon(
130 const GURL& icon_url, 133 const GURL& icon_url,
131 favicon_base::IconType icon_type, 134 favicon_base::IconType icon_type,
132 int desired_size_in_dip, 135 int desired_size_in_dip,
133 const favicon_base::FaviconResultsCallback& callback, 136 const favicon_base::FaviconResultsCallback& callback,
134 base::CancelableTaskTracker* tracker) { 137 base::CancelableTaskTracker* tracker) {
135 if (history_service_) { 138 if (history_service_) {
136 std::vector<GURL> icon_urls; 139 std::vector<GURL> icon_urls;
137 icon_urls.push_back(icon_url); 140 icon_urls.push_back(icon_url);
138 return history_service_->GetFavicons(icon_urls, 141 return history_service_->GetFavicons(icon_urls,
139 icon_type, 142 icon_type,
140 desired_size_in_dip, 143 desired_size_in_dip,
141 favicon_base::GetFaviconScaleFactors(), 144 favicon_base::GetFaviconScales(),
142 callback, 145 callback,
143 tracker); 146 tracker);
144 } 147 }
145 return RunWithEmptyResultAsync(callback, tracker); 148 return RunWithEmptyResultAsync(callback, tracker);
146 } 149 }
147 150
148 base::CancelableTaskTracker::TaskId 151 base::CancelableTaskTracker::TaskId
149 FaviconService::UpdateFaviconMappingsAndFetch( 152 FaviconService::UpdateFaviconMappingsAndFetch(
150 const GURL& page_url, 153 const GURL& page_url,
151 const std::vector<GURL>& icon_urls, 154 const std::vector<GURL>& icon_urls,
152 int icon_types, 155 int icon_types,
153 int desired_size_in_dip, 156 int desired_size_in_dip,
154 const favicon_base::FaviconResultsCallback& callback, 157 const favicon_base::FaviconResultsCallback& callback,
155 base::CancelableTaskTracker* tracker) { 158 base::CancelableTaskTracker* tracker) {
156 if (history_service_) { 159 if (history_service_) {
157 return history_service_->UpdateFaviconMappingsAndFetch( 160 return history_service_->UpdateFaviconMappingsAndFetch(
158 page_url, 161 page_url,
159 icon_urls, 162 icon_urls,
160 icon_types, 163 icon_types,
161 desired_size_in_dip, 164 desired_size_in_dip,
162 favicon_base::GetFaviconScaleFactors(), 165 favicon_base::GetFaviconScales(),
163 callback, 166 callback,
164 tracker); 167 tracker);
165 } 168 }
166 return RunWithEmptyResultAsync(callback, tracker); 169 return RunWithEmptyResultAsync(callback, tracker);
167 } 170 }
168 171
169 base::CancelableTaskTracker::TaskId FaviconService::GetFaviconImageForPageURL( 172 base::CancelableTaskTracker::TaskId FaviconService::GetFaviconImageForPageURL(
170 const FaviconForPageURLParams& params, 173 const FaviconForPageURLParams& params,
171 const favicon_base::FaviconImageCallback& callback, 174 const favicon_base::FaviconImageCallback& callback,
172 base::CancelableTaskTracker* tracker) { 175 base::CancelableTaskTracker* tracker) {
173 return GetFaviconForPageURLImpl( 176 return GetFaviconForPageURLImpl(
174 params, 177 params,
175 favicon_base::GetFaviconScaleFactors(), 178 favicon_base::GetFaviconScales(),
176 Bind(&FaviconService::RunFaviconImageCallbackWithBitmapResults, 179 Bind(&FaviconService::RunFaviconImageCallbackWithBitmapResults,
177 base::Unretained(this), 180 base::Unretained(this),
178 callback, 181 callback,
179 params.desired_size_in_dip), 182 params.desired_size_in_dip),
180 tracker); 183 tracker);
181 } 184 }
182 185
183 base::CancelableTaskTracker::TaskId FaviconService::GetRawFaviconForPageURL( 186 base::CancelableTaskTracker::TaskId FaviconService::GetRawFaviconForPageURL(
184 const FaviconForPageURLParams& params, 187 const FaviconForPageURLParams& params,
185 ui::ScaleFactor desired_scale_factor, 188 float desired_favicon_scale,
186 const favicon_base::FaviconRawBitmapCallback& callback, 189 const favicon_base::FaviconRawBitmapCallback& callback,
187 base::CancelableTaskTracker* tracker) { 190 base::CancelableTaskTracker* tracker) {
188 std::vector<ui::ScaleFactor> desired_scale_factors; 191 std::vector<float> desired_favicon_scales;
189 desired_scale_factors.push_back(desired_scale_factor); 192 desired_favicon_scales.push_back(desired_favicon_scale);
190 return GetFaviconForPageURLImpl( 193 return GetFaviconForPageURLImpl(
191 params, 194 params,
192 desired_scale_factors, 195 desired_favicon_scales,
193 Bind(&FaviconService::RunFaviconRawBitmapCallbackWithBitmapResults, 196 Bind(&FaviconService::RunFaviconRawBitmapCallbackWithBitmapResults,
194 base::Unretained(this), 197 base::Unretained(this),
195 callback, 198 callback,
196 params.desired_size_in_dip, 199 params.desired_size_in_dip,
197 desired_scale_factor), 200 desired_favicon_scale),
198 tracker); 201 tracker);
199 } 202 }
200 203
201 base::CancelableTaskTracker::TaskId 204 base::CancelableTaskTracker::TaskId
202 FaviconService::GetLargestRawFaviconForPageURL( 205 FaviconService::GetLargestRawFaviconForPageURL(
203 Profile* profile, 206 Profile* profile,
204 const GURL& page_url, 207 const GURL& page_url,
205 const std::vector<int>& icon_types, 208 const std::vector<int>& icon_types,
206 int minimum_size_in_pixels, 209 int minimum_size_in_pixels,
207 const favicon_base::FaviconRawBitmapCallback& callback, 210 const favicon_base::FaviconRawBitmapCallback& callback,
208 base::CancelableTaskTracker* tracker) { 211 base::CancelableTaskTracker* tracker) {
209 favicon_base::FaviconResultsCallback favicon_results_callback = 212 favicon_base::FaviconResultsCallback favicon_results_callback =
210 Bind(&FaviconService::RunFaviconRawBitmapCallbackWithBitmapResults, 213 Bind(&FaviconService::RunFaviconRawBitmapCallbackWithBitmapResults,
211 base::Unretained(this), 214 base::Unretained(this),
212 callback, 215 callback,
213 0, 216 0,
214 ui::ScaleFactor()); 217 1.0f);
215 if (page_url.SchemeIs(content::kChromeUIScheme) || 218 if (page_url.SchemeIs(content::kChromeUIScheme) ||
216 page_url.SchemeIs(extensions::kExtensionScheme)) { 219 page_url.SchemeIs(extensions::kExtensionScheme)) {
217 std::vector<ui::ScaleFactor> scale_factor; 220 std::vector<float> scale;
218 scale_factor.push_back(ui::SCALE_FACTOR_100P); 221 scale.push_back(1.0f);
219 return GetFaviconForChromeURL(profile, page_url, scale_factor, 222 return GetFaviconForChromeURL(
220 favicon_results_callback, tracker); 223 profile, page_url, scale, favicon_results_callback, tracker);
221 } 224 }
222 if (history_service_) { 225 if (history_service_) {
223 return history_service_->GetLargestFaviconForURL(page_url, icon_types, 226 return history_service_->GetLargestFaviconForURL(page_url, icon_types,
224 minimum_size_in_pixels, callback, tracker); 227 minimum_size_in_pixels, callback, tracker);
225 } 228 }
226 return RunWithEmptyResultAsync(favicon_results_callback, tracker); 229 return RunWithEmptyResultAsync(favicon_results_callback, tracker);
227 } 230 }
228 231
229 base::CancelableTaskTracker::TaskId FaviconService::GetFaviconForPageURL( 232 base::CancelableTaskTracker::TaskId FaviconService::GetFaviconForPageURL(
230 const FaviconForPageURLParams& params, 233 const FaviconForPageURLParams& params,
231 const favicon_base::FaviconResultsCallback& callback, 234 const favicon_base::FaviconResultsCallback& callback,
232 base::CancelableTaskTracker* tracker) { 235 base::CancelableTaskTracker* tracker) {
233 return GetFaviconForPageURLImpl( 236 return GetFaviconForPageURLImpl(
234 params, favicon_base::GetFaviconScaleFactors(), callback, tracker); 237 params, favicon_base::GetFaviconScales(), callback, tracker);
235 } 238 }
236 239
237 base::CancelableTaskTracker::TaskId FaviconService::GetLargestRawFaviconForID( 240 base::CancelableTaskTracker::TaskId FaviconService::GetLargestRawFaviconForID(
238 favicon_base::FaviconID favicon_id, 241 favicon_base::FaviconID favicon_id,
239 const favicon_base::FaviconRawBitmapCallback& callback, 242 const favicon_base::FaviconRawBitmapCallback& callback,
240 base::CancelableTaskTracker* tracker) { 243 base::CancelableTaskTracker* tracker) {
241 // Use 0 as |desired_size_in_dip| to get the largest bitmap for |favicon_id| 244 // Use 0 as |desired_size_in_dip| to get the largest bitmap for |favicon_id|
242 // without any resizing. 245 // without any resizing.
243 int desired_size_in_dip = 0; 246 int desired_size_in_dip = 0;
244 ui::ScaleFactor desired_scale_factor = ui::SCALE_FACTOR_100P; 247 float desired_favicon_scale = 1.0f;
245 favicon_base::FaviconResultsCallback callback_runner = 248 favicon_base::FaviconResultsCallback callback_runner =
246 Bind(&FaviconService::RunFaviconRawBitmapCallbackWithBitmapResults, 249 Bind(&FaviconService::RunFaviconRawBitmapCallbackWithBitmapResults,
247 base::Unretained(this), 250 base::Unretained(this),
248 callback, 251 callback,
249 desired_size_in_dip, 252 desired_size_in_dip,
250 desired_scale_factor); 253 desired_favicon_scale);
251 254
252 if (history_service_) { 255 if (history_service_) {
253 return history_service_->GetFaviconForID( 256 return history_service_->GetFaviconForID(favicon_id,
254 favicon_id, desired_size_in_dip, desired_scale_factor, 257 desired_size_in_dip,
255 callback_runner, tracker); 258 desired_favicon_scale,
259 callback_runner,
260 tracker);
256 } 261 }
257 return RunWithEmptyResultAsync(callback_runner, tracker); 262 return RunWithEmptyResultAsync(callback_runner, tracker);
258 } 263 }
259 264
260 void FaviconService::SetFaviconOutOfDateForPage(const GURL& page_url) { 265 void FaviconService::SetFaviconOutOfDateForPage(const GURL& page_url) {
261 if (history_service_) 266 if (history_service_)
262 history_service_->SetFaviconsOutOfDateForPage(page_url); 267 history_service_->SetFaviconsOutOfDateForPage(page_url);
263 } 268 }
264 269
265 void FaviconService::CloneFavicon(const GURL& old_page_url, 270 void FaviconService::CloneFavicon(const GURL& old_page_url,
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
328 } 333 }
329 334
330 void FaviconService::ClearUnableToDownloadFavicons() { 335 void FaviconService::ClearUnableToDownloadFavicons() {
331 missing_favicon_urls_.clear(); 336 missing_favicon_urls_.clear();
332 } 337 }
333 338
334 FaviconService::~FaviconService() {} 339 FaviconService::~FaviconService() {}
335 340
336 base::CancelableTaskTracker::TaskId FaviconService::GetFaviconForPageURLImpl( 341 base::CancelableTaskTracker::TaskId FaviconService::GetFaviconForPageURLImpl(
337 const FaviconForPageURLParams& params, 342 const FaviconForPageURLParams& params,
338 const std::vector<ui::ScaleFactor>& desired_scale_factors, 343 const std::vector<float>& desired_favicon_scales,
339 const favicon_base::FaviconResultsCallback& callback, 344 const favicon_base::FaviconResultsCallback& callback,
340 base::CancelableTaskTracker* tracker) { 345 base::CancelableTaskTracker* tracker) {
341 if (params.page_url.SchemeIs(content::kChromeUIScheme) || 346 if (params.page_url.SchemeIs(content::kChromeUIScheme) ||
342 params.page_url.SchemeIs(extensions::kExtensionScheme)) { 347 params.page_url.SchemeIs(extensions::kExtensionScheme)) {
343 return GetFaviconForChromeURL(profile_, params.page_url, 348 return GetFaviconForChromeURL(
344 desired_scale_factors, callback, tracker); 349 profile_, params.page_url, desired_favicon_scales, callback, tracker);
345 } 350 }
346 if (history_service_) { 351 if (history_service_) {
347 return history_service_->GetFaviconsForURL(params.page_url, 352 return history_service_->GetFaviconsForURL(params.page_url,
348 params.icon_types, 353 params.icon_types,
349 params.desired_size_in_dip, 354 params.desired_size_in_dip,
350 desired_scale_factors, 355 desired_favicon_scales,
351 callback, 356 callback,
352 tracker); 357 tracker);
353 } 358 }
354 return RunWithEmptyResultAsync(callback, tracker); 359 return RunWithEmptyResultAsync(callback, tracker);
355 } 360 }
356 361
357 void FaviconService::RunFaviconImageCallbackWithBitmapResults( 362 void FaviconService::RunFaviconImageCallbackWithBitmapResults(
358 const favicon_base::FaviconImageCallback& callback, 363 const favicon_base::FaviconImageCallback& callback,
359 int desired_size_in_dip, 364 int desired_size_in_dip,
360 const std::vector<favicon_base::FaviconRawBitmapResult>& 365 const std::vector<favicon_base::FaviconRawBitmapResult>&
361 favicon_bitmap_results) { 366 favicon_bitmap_results) {
362 favicon_base::FaviconImageResult image_result; 367 favicon_base::FaviconImageResult image_result;
363 image_result.image = favicon_base::SelectFaviconFramesFromPNGs( 368 image_result.image = favicon_base::SelectFaviconFramesFromPNGs(
364 favicon_bitmap_results, 369 favicon_bitmap_results,
365 favicon_base::GetFaviconScaleFactors(), 370 favicon_base::GetFaviconScales(),
366 desired_size_in_dip); 371 desired_size_in_dip);
367 favicon_base::SetFaviconColorSpace(&image_result.image); 372 favicon_base::SetFaviconColorSpace(&image_result.image);
368 373
369 image_result.icon_url = image_result.image.IsEmpty() ? 374 image_result.icon_url = image_result.image.IsEmpty() ?
370 GURL() : favicon_bitmap_results[0].icon_url; 375 GURL() : favicon_bitmap_results[0].icon_url;
371 callback.Run(image_result); 376 callback.Run(image_result);
372 } 377 }
373 378
374 void FaviconService::RunFaviconRawBitmapCallbackWithBitmapResults( 379 void FaviconService::RunFaviconRawBitmapCallbackWithBitmapResults(
375 const favicon_base::FaviconRawBitmapCallback& callback, 380 const favicon_base::FaviconRawBitmapCallback& callback,
376 int desired_size_in_dip, 381 int desired_size_in_dip,
377 ui::ScaleFactor desired_scale_factor, 382 float desired_favicon_scale,
378 const std::vector<favicon_base::FaviconRawBitmapResult>& 383 const std::vector<favicon_base::FaviconRawBitmapResult>&
379 favicon_bitmap_results) { 384 favicon_bitmap_results) {
380 if (favicon_bitmap_results.empty() || !favicon_bitmap_results[0].is_valid()) { 385 if (favicon_bitmap_results.empty() || !favicon_bitmap_results[0].is_valid()) {
381 callback.Run(favicon_base::FaviconRawBitmapResult()); 386 callback.Run(favicon_base::FaviconRawBitmapResult());
382 return; 387 return;
383 } 388 }
384 389
385 DCHECK_EQ(1u, favicon_bitmap_results.size()); 390 DCHECK_EQ(1u, favicon_bitmap_results.size());
386 favicon_base::FaviconRawBitmapResult bitmap_result = 391 favicon_base::FaviconRawBitmapResult bitmap_result =
387 favicon_bitmap_results[0]; 392 favicon_bitmap_results[0];
388 393
389 // If the desired size is 0, SelectFaviconFrames() will return the largest 394 // If the desired size is 0, SelectFaviconFrames() will return the largest
390 // bitmap without doing any resizing. As |favicon_bitmap_results| has bitmap 395 // bitmap without doing any resizing. As |favicon_bitmap_results| has bitmap
391 // data for a single bitmap, return it and avoid an unnecessary decode. 396 // data for a single bitmap, return it and avoid an unnecessary decode.
392 if (desired_size_in_dip == 0) { 397 if (desired_size_in_dip == 0) {
393 callback.Run(bitmap_result); 398 callback.Run(bitmap_result);
394 return; 399 return;
395 } 400 }
396 401
397 // If history bitmap is already desired pixel size, return early. 402 // If history bitmap is already desired pixel size, return early.
398 float desired_scale = ui::GetScaleForScaleFactor(desired_scale_factor); 403 int desired_edge_width_in_pixel =
399 int desired_edge_width_in_pixel = static_cast<int>( 404 static_cast<int>(desired_size_in_dip * desired_favicon_scale + 0.5f);
400 desired_size_in_dip * desired_scale + 0.5f);
401 405
402 gfx::Size desired_size_in_pixel(desired_edge_width_in_pixel, 406 gfx::Size desired_size_in_pixel(desired_edge_width_in_pixel,
403 desired_edge_width_in_pixel); 407 desired_edge_width_in_pixel);
404 if (bitmap_result.pixel_size == desired_size_in_pixel) { 408 if (bitmap_result.pixel_size == desired_size_in_pixel) {
405 callback.Run(bitmap_result); 409 callback.Run(bitmap_result);
406 return; 410 return;
407 } 411 }
408 412
409 // Convert raw bytes to SkBitmap, resize via SelectFaviconFrames(), then 413 // Convert raw bytes to SkBitmap, resize via SelectFaviconFrames(), then
410 // convert back. 414 // convert back.
411 std::vector<ui::ScaleFactor> desired_scale_factors; 415 std::vector<float> desired_favicon_scales;
412 desired_scale_factors.push_back(desired_scale_factor); 416 desired_favicon_scales.push_back(desired_favicon_scale);
413 gfx::Image resized_image = favicon_base::SelectFaviconFramesFromPNGs( 417 gfx::Image resized_image = favicon_base::SelectFaviconFramesFromPNGs(
414 favicon_bitmap_results, desired_scale_factors, desired_size_in_dip); 418 favicon_bitmap_results, desired_favicon_scales, desired_size_in_dip);
415 419
416 std::vector<unsigned char> resized_bitmap_data; 420 std::vector<unsigned char> resized_bitmap_data;
417 if (!gfx::PNGCodec::EncodeBGRASkBitmap(resized_image.AsBitmap(), false, 421 if (!gfx::PNGCodec::EncodeBGRASkBitmap(resized_image.AsBitmap(), false,
418 &resized_bitmap_data)) { 422 &resized_bitmap_data)) {
419 callback.Run(favicon_base::FaviconRawBitmapResult()); 423 callback.Run(favicon_base::FaviconRawBitmapResult());
420 return; 424 return;
421 } 425 }
422 426
423 bitmap_result.bitmap_data = base::RefCountedBytes::TakeVector( 427 bitmap_result.bitmap_data = base::RefCountedBytes::TakeVector(
424 &resized_bitmap_data); 428 &resized_bitmap_data);
425 callback.Run(bitmap_result); 429 callback.Run(bitmap_result);
426 } 430 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698