Index: components/ntp_tiles/most_visited_sites.cc |
diff --git a/components/ntp_tiles/most_visited_sites.cc b/components/ntp_tiles/most_visited_sites.cc |
index 309a0b48d1568e234d25a7e34c950e3634eaf245..e9081b008e37dfea8a0ca55ce6715627ac0ca9bb 100644 |
--- a/components/ntp_tiles/most_visited_sites.cc |
+++ b/components/ntp_tiles/most_visited_sites.cc |
@@ -26,6 +26,7 @@ |
#include "base/strings/utf_string_conversions.h" |
#include "components/history/core/browser/top_sites.h" |
#include "components/ntp_tiles/constants.h" |
+#include "components/ntp_tiles/icon_cacher.h" |
#include "components/ntp_tiles/pref_names.h" |
#include "components/ntp_tiles/switches.h" |
#include "components/pref_registry/pref_registry_syncable.h" |
@@ -144,11 +145,13 @@ MostVisitedSites::MostVisitedSites(PrefService* prefs, |
scoped_refptr<history::TopSites> top_sites, |
SuggestionsService* suggestions, |
std::unique_ptr<PopularSites> popular_sites, |
+ std::unique_ptr<IconCacher> icon_cacher, |
MostVisitedSitesSupervisor* supervisor) |
: prefs_(prefs), |
top_sites_(top_sites), |
suggestions_service_(suggestions), |
popular_sites_(std::move(popular_sites)), |
+ icon_cacher_(std::move(icon_cacher)), |
supervisor_(supervisor), |
observer_(nullptr), |
num_sites_(0), |
@@ -450,6 +453,9 @@ NTPTilesVector MostVisitedSites::CreatePopularSitesTiles( |
tile.source = NTPTileSource::POPULAR; |
popular_sites_tiles.push_back(std::move(tile)); |
+ icon_cacher_->StartFetch( |
+ popular_site, base::Bind(&MostVisitedSites::OnIconMadeAvailable, |
+ base::Unretained(this), popular_site.url)); |
if (popular_sites_tiles.size() >= num_popular_sites_tiles) |
break; |
} |
@@ -518,14 +524,16 @@ void MostVisitedSites::OnPopularSitesAvailable(bool success) { |
return; |
} |
- // Pass the popular sites to the observer. This will cause it to fetch any |
- // missing icons, but will *not* cause it to display the popular sites. |
- observer_->OnPopularURLsAvailable(popular_sites_->sites()); |
- |
// Re-build the tile list. Once done, this will notify the observer. |
BuildCurrentTiles(); |
} |
+void MostVisitedSites::OnIconMadeAvailable(const GURL& site_url, |
+ bool newly_available) { |
+ if (newly_available) |
+ observer_->OnIconMadeAvailable(site_url); |
+} |
+ |
void MostVisitedSites::RecordImpressionUMAMetrics() { |
UMA_HISTOGRAM_SPARSE_SLOWLY("NewTabPage.NumberOfTiles", |
current_tiles_.size()); |