Index: chrome/browser/ui/webui/favicon_source.cc |
diff --git a/chrome/browser/ui/webui/favicon_source.cc b/chrome/browser/ui/webui/favicon_source.cc |
index c7977999300299d78e100628ef983d61a07ccc8d..415b85b345082eab0480bc03090053be463fe51d 100644 |
--- a/chrome/browser/ui/webui/favicon_source.cc |
+++ b/chrome/browser/ui/webui/favicon_source.cc |
@@ -19,6 +19,7 @@ |
#include "chrome/common/favicon/favicon_url_parser.h" |
#include "chrome/common/url_constants.h" |
#include "chrome/grit/locale_settings.h" |
+#include "components/favicon_base/fallback_icon_specs_builder.h" |
#include "net/url_request/url_request.h" |
#include "ui/base/l10n/l10n_util.h" |
#include "ui/base/layout.h" |
@@ -82,19 +83,33 @@ void FaviconSource::StartDataRequest( |
int desired_size_in_pixel = |
std::ceil(parsed.size_in_dip * parsed.device_scale_factor); |
- if (parsed.is_icon_url) { |
- // TODO(michaelbai): Change GetRawFavicon to support combination of |
- // IconType. |
- favicon_service->GetRawFavicon( |
- url, |
- favicon_base::FAVICON, |
- desired_size_in_pixel, |
+ if (parsed.fallback_specs_builder || parsed.is_icon_url) { |
+ favicon_base::FaviconRawBitmapCallback wrapped_callback = |
base::Bind( |
&FaviconSource::OnFaviconDataAvailable, |
base::Unretained(this), |
IconRequest( |
- callback, url, parsed.size_in_dip, parsed.device_scale_factor)), |
- &cancelable_task_tracker_); |
+ callback, url, parsed.size_in_dip, parsed.device_scale_factor)); |
+ if (parsed.fallback_specs_builder) { |
pkotwicz
2015/01/19 04:32:02
Can you move the code for parsing the URLs for fal
huangs
2015/01/20 22:20:41
Done.
|
+ favicon_service->GetRawFallbackFaviconImage( |
+ url, |
+ icon_types_ == favicon_base::FAVICON ? |
+ favicon_base::FAVICON : favicon_base::TOUCH_ICON, |
+ desired_size_in_pixel, |
+ parsed.fallback_specs_builder->Build(), |
+ wrapped_callback, |
+ &cancelable_task_tracker_); |
+ } else { |
+ DCHECK(parsed.is_icon_url); |
+ // TODO(michaelbai): Change GetRawFavicon to support combination of |
+ // IconType. |
+ favicon_service->GetRawFavicon( |
+ url, |
+ favicon_base::FAVICON, |
+ desired_size_in_pixel, |
+ wrapped_callback, |
+ &cancelable_task_tracker_); |
+ } |
} else { |
// Intercept requests for prepopulated pages. |
for (int i = 0; i < history::kPrepopulatedPagesCount; i++) { |