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

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

Issue 26563004: Find Favicon in priority of icon_type. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: add a new method Created 7 years, 2 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
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 27 matching lines...) Expand all
38 // service. 38 // service.
39 CancelableTaskTracker::TaskId RunWithEmptyResultAsync( 39 CancelableTaskTracker::TaskId RunWithEmptyResultAsync(
40 const FaviconService::FaviconResultsCallback& callback, 40 const FaviconService::FaviconResultsCallback& callback,
41 CancelableTaskTracker* tracker) { 41 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<chrome::FaviconBitmapResult>())); 45 Bind(callback, std::vector<chrome::FaviconBitmapResult>()));
46 } 46 }
47 47
48 CancelableTaskTracker::TaskId GetFaviconForChromeURL(
sky 2013/10/15 15:03:47 Add description.
michaelbai 2013/10/15 19:36:31 Done.
49 Profile* profile,
50 const GURL& page_url,
51 const std::vector<ui::ScaleFactor>& desired_scale_factors,
52 const FaviconService::FaviconResultsCallback& callback,
53 CancelableTaskTracker* tracker) {
54 CancelableTaskTracker::IsCanceledCallback is_canceled_cb;
55 CancelableTaskTracker::TaskId id = tracker->NewTrackedTaskId(&is_canceled_cb);
56 FaviconService::FaviconResultsCallback cancelable_cb =
57 Bind(&CancelOrRunFaviconResultsCallback, is_canceled_cb, callback);
58 ChromeWebUIControllerFactory::GetInstance()->GetFaviconForURL(profile,
59 page_url, desired_scale_factors, cancelable_cb);
60 return id;
sky 2013/10/15 15:03:47 nit: indentation is off.
michaelbai 2013/10/15 19:36:31 Done.
61 }
62
48 } // namespace 63 } // namespace
49 64
50 FaviconService::FaviconService(HistoryService* history_service) 65 FaviconService::FaviconService(HistoryService* history_service)
51 : history_service_(history_service) { 66 : history_service_(history_service) {
52 } 67 }
53 68
54 // static 69 // static
55 void FaviconService::FaviconResultsCallbackRunner( 70 void FaviconService::FaviconResultsCallbackRunner(
56 const FaviconResultsCallback& callback, 71 const FaviconResultsCallback& callback,
57 const std::vector<chrome::FaviconBitmapResult>* results) { 72 const std::vector<chrome::FaviconBitmapResult>* results) {
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
162 params, 177 params,
163 desired_scale_factors, 178 desired_scale_factors,
164 Bind(&FaviconService::RunFaviconRawCallbackWithBitmapResults, 179 Bind(&FaviconService::RunFaviconRawCallbackWithBitmapResults,
165 base::Unretained(this), 180 base::Unretained(this),
166 callback, 181 callback,
167 params.desired_size_in_dip, 182 params.desired_size_in_dip,
168 desired_scale_factor), 183 desired_scale_factor),
169 tracker); 184 tracker);
170 } 185 }
171 186
187 CancelableTaskTracker::TaskId FaviconService::GetLargestRawFaviconForURL(
188 Profile* profile,
189 const GURL& page_url,
190 const std::vector<int>& icon_types,
191 int minimal_size_in_pixel,
192 const FaviconRawCallback& callback,
193 CancelableTaskTracker* tracker) {
194 return GetLargestRawFaviconForURLImpl(
195 profile, page_url, icon_types, minimal_size_in_pixel,
196 Bind(&FaviconService::RunFaviconRawCallbackWithBitmapResults,
197 base::Unretained(this),
198 callback,
199 0,
200 ui::ScaleFactor()),
201 tracker);
202 }
203
172 CancelableTaskTracker::TaskId FaviconService::GetFaviconForURL( 204 CancelableTaskTracker::TaskId FaviconService::GetFaviconForURL(
173 const FaviconForURLParams& params, 205 const FaviconForURLParams& params,
174 const FaviconResultsCallback& callback, 206 const FaviconResultsCallback& callback,
175 CancelableTaskTracker* tracker) { 207 CancelableTaskTracker* tracker) {
176 return GetFaviconForURLImpl(params, 208 return GetFaviconForURLImpl(params,
177 FaviconUtil::GetFaviconScaleFactors(), 209 FaviconUtil::GetFaviconScaleFactors(),
178 callback, 210 callback,
179 tracker); 211 tracker);
180 } 212 }
181 213
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
277 309
278 FaviconService::~FaviconService() {} 310 FaviconService::~FaviconService() {}
279 311
280 CancelableTaskTracker::TaskId FaviconService::GetFaviconForURLImpl( 312 CancelableTaskTracker::TaskId FaviconService::GetFaviconForURLImpl(
281 const FaviconForURLParams& params, 313 const FaviconForURLParams& params,
282 const std::vector<ui::ScaleFactor>& desired_scale_factors, 314 const std::vector<ui::ScaleFactor>& desired_scale_factors,
283 const FaviconResultsCallback& callback, 315 const FaviconResultsCallback& callback,
284 CancelableTaskTracker* tracker) { 316 CancelableTaskTracker* tracker) {
285 if (params.page_url.SchemeIs(chrome::kChromeUIScheme) || 317 if (params.page_url.SchemeIs(chrome::kChromeUIScheme) ||
286 params.page_url.SchemeIs(extensions::kExtensionScheme)) { 318 params.page_url.SchemeIs(extensions::kExtensionScheme)) {
287 CancelableTaskTracker::IsCanceledCallback is_canceled_cb; 319 return GetFaviconForChromeURL(params.profile, params.page_url,
288 CancelableTaskTracker::TaskId id = 320 desired_scale_factors, callback, tracker);
289 tracker->NewTrackedTaskId(&is_canceled_cb);
290
291 FaviconResultsCallback cancelable_cb =
292 Bind(&CancelOrRunFaviconResultsCallback, is_canceled_cb, callback);
293 ChromeWebUIControllerFactory::GetInstance()->GetFaviconForURL(
294 params.profile, params.page_url, desired_scale_factors, cancelable_cb);
295 return id;
296 } else if (history_service_) { 321 } else if (history_service_) {
297 return history_service_->GetFaviconsForURL(params.page_url, 322 return history_service_->GetFaviconsForURL(params.page_url,
298 params.icon_types, 323 params.icon_types,
299 params.desired_size_in_dip, 324 params.desired_size_in_dip,
300 desired_scale_factors, 325 desired_scale_factors,
301 callback, 326 callback,
302 tracker); 327 tracker);
303 } else { 328 } else {
sky 2013/10/15 15:03:47 nit: no else here and 347.
michaelbai 2013/10/15 19:36:31 Done.
304 return RunWithEmptyResultAsync(callback, tracker); 329 return RunWithEmptyResultAsync(callback, tracker);
305 } 330 }
306 } 331 }
307 332
333 CancelableTaskTracker::TaskId FaviconService::GetLargestRawFaviconForURLImpl(
334 Profile* profile,
335 const GURL& page_url,
336 const std::vector<int>& icon_types,
337 int minimal_size_in_pixel,
338 const FaviconResultsCallback& callback,
339 CancelableTaskTracker* tracker) {
340 if (page_url.SchemeIs(chrome::kChromeUIScheme) ||
341 page_url.SchemeIs(extensions::kExtensionScheme)) {
342 return GetFaviconForChromeURL(profile, page_url,
343 std::vector<ui::ScaleFactor>(), callback, tracker);
344 } else if (history_service_) {
345 return history_service_->GetLargestFaviconForURL(page_url, icon_types,
346 minimal_size_in_pixel, callback, tracker);
347 } else {
348 return RunWithEmptyResultAsync(callback, tracker);
349 }
350 }
351
308 void FaviconService::RunFaviconImageCallbackWithBitmapResults( 352 void FaviconService::RunFaviconImageCallbackWithBitmapResults(
309 const FaviconImageCallback& callback, 353 const FaviconImageCallback& callback,
310 int desired_size_in_dip, 354 int desired_size_in_dip,
311 const std::vector<chrome::FaviconBitmapResult>& favicon_bitmap_results) { 355 const std::vector<chrome::FaviconBitmapResult>& favicon_bitmap_results) {
312 chrome::FaviconImageResult image_result; 356 chrome::FaviconImageResult image_result;
313 image_result.image = FaviconUtil::SelectFaviconFramesFromPNGs( 357 image_result.image = FaviconUtil::SelectFaviconFramesFromPNGs(
314 favicon_bitmap_results, 358 favicon_bitmap_results,
315 FaviconUtil::GetFaviconScaleFactors(), 359 FaviconUtil::GetFaviconScaleFactors(),
316 desired_size_in_dip); 360 desired_size_in_dip);
317 FaviconUtil::SetFaviconColorSpace(&image_result.image); 361 FaviconUtil::SetFaviconColorSpace(&image_result.image);
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
364 if (!gfx::PNGCodec::EncodeBGRASkBitmap(resized_image.AsBitmap(), false, 408 if (!gfx::PNGCodec::EncodeBGRASkBitmap(resized_image.AsBitmap(), false,
365 &resized_bitmap_data)) { 409 &resized_bitmap_data)) {
366 callback.Run(chrome::FaviconBitmapResult()); 410 callback.Run(chrome::FaviconBitmapResult());
367 return; 411 return;
368 } 412 }
369 413
370 bitmap_result.bitmap_data = base::RefCountedBytes::TakeVector( 414 bitmap_result.bitmap_data = base::RefCountedBytes::TakeVector(
371 &resized_bitmap_data); 415 &resized_bitmap_data);
372 callback.Run(bitmap_result); 416 callback.Run(bitmap_result);
373 } 417 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698