Index: components/ntp_snippets/physical_web_pages/physical_web_page_suggestions_provider.h |
diff --git a/components/ntp_snippets/physical_web_pages/physical_web_page_suggestions_provider.h b/components/ntp_snippets/physical_web_pages/physical_web_page_suggestions_provider.h |
index 77f3d21c0d075c64b3c1aff55d3db819ecedf7ec..e0bc88859982ff0762b211a1d690b2feb0431fe6 100644 |
--- a/components/ntp_snippets/physical_web_pages/physical_web_page_suggestions_provider.h |
+++ b/components/ntp_snippets/physical_web_pages/physical_web_page_suggestions_provider.h |
@@ -19,6 +19,9 @@ |
#include "components/physical_web/data_source/physical_web_data_source.h" |
#include "components/physical_web/data_source/physical_web_listener.h" |
+class PrefRegistrySimple; |
+class PrefService; |
+ |
namespace ntp_snippets { |
// Provides content suggestions from the Physical Web Service. |
@@ -29,7 +32,8 @@ class PhysicalWebPageSuggestionsProvider |
PhysicalWebPageSuggestionsProvider( |
ContentSuggestionsProvider::Observer* observer, |
CategoryFactory* category_factory, |
- physical_web::PhysicalWebDataSource* physical_web_data_source); |
+ physical_web::PhysicalWebDataSource* physical_web_data_source, |
+ PrefService* pref_service); |
~PhysicalWebPageSuggestionsProvider() override; |
// ContentSuggestionsProvider implementation. |
@@ -51,6 +55,8 @@ class PhysicalWebPageSuggestionsProvider |
const DismissedSuggestionsCallback& callback) override; |
void ClearDismissedSuggestionsForDebugging(Category category) override; |
+ static void RegisterProfilePrefs(PrefRegistrySimple* registry); |
+ |
private: |
friend class PhysicalWebPageSuggestionsProviderTest; |
@@ -61,8 +67,10 @@ class PhysicalWebPageSuggestionsProvider |
void FetchPhysicalWebPages(); |
// Returns at most |max_count| ContentSuggestions with IDs not in |
- // |excluded_ids| and sorted by distance (the closest first). The raw pages |
- // are obtained from Physical Web data source. |
+ // |excluded_ids| and sorted by distance (the closest first). Dismissed |
+ // suggestions are excluded automatically (no need to add them to |
+ // |excluded_ids|) and pruned. The raw pages are obtained from Physical Web |
+ // data source. |
std::vector<ContentSuggestion> GetMostRecentPhysicalWebPagesWithFilter( |
int max_count, |
const std::set<std::string>& excluded_ids); |
@@ -77,9 +85,21 @@ class PhysicalWebPageSuggestionsProvider |
void OnDistanceChanged(const std::string& url, |
double distance_estimate) override; |
+ // Fires the |OnSuggestionInvalidated| event for the suggestion corresponding |
+ // to the given |page_id| and deletes it from the dismissed IDs list, if |
+ // necessary. |
+ void InvalidateSuggestion(const std::string& page_id); |
+ |
+ // Reads dismissed IDs from Prefs. |
+ std::set<std::string> ReadDismissedIDsFromPrefs() const; |
+ |
+ // Writes |dismissed_ids| into Prefs. |
+ void StoreDismissedIDsToPrefs(const std::set<std::string>& dismissed_ids); |
+ |
CategoryStatus category_status_; |
const Category provided_category_; |
physical_web::PhysicalWebDataSource* physical_web_data_source_; |
+ PrefService* pref_service_; |
DISALLOW_COPY_AND_ASSIGN(PhysicalWebPageSuggestionsProvider); |
}; |