Index: components/ntp_snippets/content_suggestions_service.h |
diff --git a/components/ntp_snippets/content_suggestions_service.h b/components/ntp_snippets/content_suggestions_service.h |
index 76f79cf471801cdf08b3adf07b0713ca36030656..ee74d49355da6dfa3578f10b5fbc01d3f002cef7 100644 |
--- a/components/ntp_snippets/content_suggestions_service.h |
+++ b/components/ntp_snippets/content_suggestions_service.h |
@@ -50,6 +50,16 @@ class ContentSuggestionsService : public KeyedService, |
virtual void OnCategoryStatusChanged(Category category, |
CategoryStatus new_status) = 0; |
+ // Fired when a suggestion has been invalidated. The UI must immediately |
+ // clear the suggestion even from open NTPs. Invalidation happens, for |
+ // example, when the content that the suggestion refers to is gone. |
+ // Note that this event may be fired even if the corresponding |category| is |
+ // not currently AVAILABLE, because open UIs may still be showing the |
+ // suggestion that is to be removed. This event may also be fired for |
+ // |suggestion_id|s that never existed and should be ignored in that case. |
+ virtual void OnSuggestionInvalidated(Category category, |
+ const std::string& suggestion_id) = 0; |
+ |
// Sent when the service is shutting down. After the service has shut down, |
// it will not provide any data anymore, though calling the getters is still |
// safe. |
@@ -155,6 +165,9 @@ class ContentSuggestionsService : public KeyedService, |
void OnCategoryStatusChanged(ContentSuggestionsProvider* provider, |
Category category, |
CategoryStatus new_status) override; |
+ void OnSuggestionInvalidated(ContentSuggestionsProvider* provider, |
+ Category category, |
+ const std::string& suggestion_id) override; |
// Registers the given |provider| for the given |category|, unless it is |
// already registered. Returns true if the category was newly registered or |
@@ -162,6 +175,12 @@ class ContentSuggestionsService : public KeyedService, |
bool RegisterCategoryIfRequired(ContentSuggestionsProvider* provider, |
Category category); |
+ // Removes a suggestion from the local stores |id_category_map_| and |
+ // |suggestions_by_category_|, if it exists. Returns true if a suggestion was |
+ // removed. |
+ bool RemoveSuggestionByID(Category category, |
+ const std::string& suggestion_id); |
+ |
// Fires the OnCategoryStatusChanged event for the given |category|. |
void NotifyCategoryStatusChanged(Category category); |