Add support for components/ntp_tiles in InstantService
This will allow us to get server-side suggestions on the local NTP.
BUG=514752
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:closure_compilation
Review-Url: https://codereview.chromium.org/2532103002
Cr-Commit-Position: refs/heads/master@{#437576}
diff --git a/components/ntp_tiles/most_visited_sites.cc b/components/ntp_tiles/most_visited_sites.cc
index fe51e1d..397b9e4 100644
--- a/components/ntp_tiles/most_visited_sites.cc
+++ b/components/ntp_tiles/most_visited_sites.cc
@@ -109,6 +109,10 @@
// SuggestionsService's cache or, if that is empty, sites from TopSites.
BuildCurrentTiles();
// Also start a request for fresh suggestions.
+ Refresh();
+}
+
+void MostVisitedSites::Refresh() {
suggestions_service_->FetchSuggestionsData();
}
@@ -131,6 +135,18 @@
}
}
+void MostVisitedSites::ClearBlacklistedUrls() {
+ if (top_sites_) {
+ // Always update the blacklist in the local TopSites.
+ top_sites_->ClearBlacklistedURLs();
+ }
+
+ // Only update the server-side blacklist if it's active.
+ if (mv_source_ == NTPTileSource::SUGGESTIONS_SERVICE) {
+ suggestions_service_->ClearBlacklist();
+ }
+}
+
void MostVisitedSites::OnBlockedSitesChanged() {
BuildCurrentTiles();
}
@@ -219,6 +235,8 @@
tile.url = url;
tile.source = NTPTileSource::SUGGESTIONS_SERVICE;
tile.whitelist_icon_path = GetWhitelistLargeIconPath(url);
+ tile.thumbnail_url = GURL(suggestion_pb.thumbnail());
+ tile.favicon_url = GURL(suggestion_pb.favicon_url());
tiles.push_back(std::move(tile));
}
diff --git a/components/ntp_tiles/most_visited_sites.h b/components/ntp_tiles/most_visited_sites.h
index 158d0d06..d097b1bc 100644
--- a/components/ntp_tiles/most_visited_sites.h
+++ b/components/ntp_tiles/most_visited_sites.h
@@ -102,11 +102,17 @@
~MostVisitedSites() override;
+ // Sets the observer, and immediately fetches the current suggestions.
// Does not take ownership of |observer|, which must outlive this object and
// must not be null.
void SetMostVisitedURLsObserver(Observer* observer, int num_sites);
+ // Requests an asynchronous refresh of the suggestions. Notifies the observer
+ // once the request completes.
+ void Refresh();
+
void AddOrRemoveBlacklistedUrl(const GURL& url, bool add_url);
+ void ClearBlacklistedUrls();
// MostVisitedSitesSupervisor::Observer implementation.
void OnBlockedSitesChanged() override;
diff --git a/components/ntp_tiles/ntp_tile.h b/components/ntp_tiles/ntp_tile.h
index 8baa4565..e64a19f 100644
--- a/components/ntp_tiles/ntp_tile.h
+++ b/components/ntp_tiles/ntp_tile.h
@@ -26,6 +26,12 @@
// is also available from another, higher-priority source.
base::FilePath whitelist_icon_path;
+ // Only valid for source == SUGGESTIONS_SERVICE (empty otherwise).
+ // May point to a local chrome:// URL or to a remote one. May be empty.
+ GURL thumbnail_url;
+ // This won't be empty, but might 404 etc.
+ GURL favicon_url;
+
NTPTile();
NTPTile(const NTPTile&);
~NTPTile();