| Index: chrome/browser/history/history_backend.cc
|
| diff --git a/chrome/browser/history/history_backend.cc b/chrome/browser/history/history_backend.cc
|
| index 2fa226dc351f2c6164ef8c762e32fcbc7ae33726..26a97e4e26a387a5e16e7a10f41107bef52712dd 100644
|
| --- a/chrome/browser/history/history_backend.cc
|
| +++ b/chrome/browser/history/history_backend.cc
|
| @@ -1699,13 +1699,35 @@ void HistoryBackend::GetFavicons(
|
|
|
| void HistoryBackend::GetFaviconsForURL(
|
| const GURL& page_url,
|
| - int icon_types,
|
| + const std::vector<int>& icon_types_priority,
|
| int desired_size_in_dip,
|
| const std::vector<ui::ScaleFactor>& desired_scale_factors,
|
| + int threshold_for_next_icon_types,
|
| std::vector<chrome::FaviconBitmapResult>* bitmap_results) {
|
| - DCHECK(bitmap_results);
|
| - GetFaviconsFromDB(page_url, icon_types, desired_size_in_dip,
|
| - desired_scale_factors, bitmap_results);
|
| + chrome::FaviconBitmapResult bitmap_result;
|
| + int bitmap_size_in_pixel = 0;
|
| + for (std::vector<int>::const_iterator i = icon_types_priority.begin();
|
| + i != icon_types_priority.end(); i++) {
|
| + GetFaviconsFromDB(page_url, *i, desired_size_in_dip, desired_scale_factors,
|
| + bitmap_results);
|
| + if (icon_types_priority.size() == 1)
|
| + return;
|
| +
|
| + for (std::vector<chrome::FaviconBitmapResult>::const_iterator j =
|
| + bitmap_results->begin(); j != bitmap_results->end(); j++) {
|
| + if (bitmap_size_in_pixel < j->pixel_size.width() &&
|
| + bitmap_size_in_pixel < j->pixel_size.height()) {
|
| + bitmap_size_in_pixel = std::min(j->pixel_size.width(),
|
| + j->pixel_size.height());
|
| + bitmap_result = *j;
|
| + }
|
| + }
|
| + bitmap_results->clear();
|
| + if (bitmap_size_in_pixel > threshold_for_next_icon_types)
|
| + break;
|
| + }
|
| + if (bitmap_size_in_pixel != 0)
|
| + bitmap_results->push_back(bitmap_result);
|
| }
|
|
|
| void HistoryBackend::GetFaviconForID(
|
|
|