| 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 cccb791e2c4d2ed9257b1931c5873fdc4a87570d..3896eda4be4307bf43be18cbe8114d18366fa82f 100644
|
| --- a/components/ntp_snippets/content_suggestions_service.h
|
| +++ b/components/ntp_snippets/content_suggestions_service.h
|
| @@ -33,6 +33,7 @@ class PrefRegistrySimple;
|
| namespace ntp_snippets {
|
|
|
| class RemoteSuggestionsProvider;
|
| +class RemoteSuggestionsScheduler;
|
|
|
| // Retrieves suggestions from a number of ContentSuggestionsProviders and serves
|
| // them grouped into categories. There can be at most one provider per category.
|
| @@ -143,10 +144,21 @@ class ContentSuggestionsService : public KeyedService,
|
| // Fetches additional contents for the given |category|. If the fetch was
|
| // completed, the given |callback| is called with the updated content.
|
| // This includes new and old data.
|
| + // TODO(jkrcal): Consider either renaming this to FetchMore or unify the ways
|
| + // to get suggestions to just this async Fetch() API.
|
| void Fetch(const Category& category,
|
| const std::set<std::string>& known_suggestion_ids,
|
| const FetchDoneCallback& callback);
|
|
|
| + // Reloads suggestions from all categories, from all providers. If a provider
|
| + // naturally has some ability to generate fresh suggestions, it may provide a
|
| + // completely new set of suggestions. If the provider has no ability to
|
| + // generate fresh suggestions on demand, it may only fill in any vacant space
|
| + // by suggestions that were previously not included due to space limits (there
|
| + // may be vacant space because of the user dismissing suggestions in the
|
| + // meantime).
|
| + void ReloadSuggestions();
|
| +
|
| // Observer accessors.
|
| void AddObserver(Observer* observer);
|
| void RemoveObserver(Observer* observer);
|
| @@ -194,15 +206,29 @@ class ContentSuggestionsService : public KeyedService,
|
| // supports it).
|
| void ClearDismissedSuggestionsForDebugging(Category category);
|
|
|
| - // The reference to the RemoteSuggestionsProvider provider should only be set
|
| - // by the factory and only be used for scheduling, periodic fetching and
|
| - // debugging.
|
| - RemoteSuggestionsProvider* ntp_snippets_service() {
|
| - return ntp_snippets_service_;
|
| + // The reference to the RemoteSuggestionsProvider provider should
|
| + // only be set by the factory and only used for debugging.
|
| + // TODO(jkrcal) The way we deal with the circular dependency feels wrong.
|
| + // Consider swapping the dependencies: first constructing all providers, then
|
| + // constructing the service (passing the remote provider as arg), finally
|
| + // registering the service as an observer of all providers?
|
| + void set_remote_suggestions_provider(
|
| + RemoteSuggestionsProvider* remote_suggestions_provider) {
|
| + remote_suggestions_provider_ = remote_suggestions_provider;
|
| }
|
| - void set_ntp_snippets_service(
|
| - RemoteSuggestionsProvider* ntp_snippets_service) {
|
| - ntp_snippets_service_ = ntp_snippets_service;
|
| + RemoteSuggestionsProvider* remote_suggestions_provider_for_debugging() {
|
| + return remote_suggestions_provider_;
|
| + }
|
| +
|
| + // The reference to RemoteSuggestionsScheduler should only be set by the
|
| + // factory. The interface is suited for informing about external events that
|
| + // have influence on scheduling remote fetches.
|
| + void set_remote_suggestions_scheduler(
|
| + ntp_snippets::RemoteSuggestionsScheduler* remote_suggestions_scheduler) {
|
| + remote_suggestions_scheduler_ = remote_suggestions_scheduler;
|
| + }
|
| + RemoteSuggestionsScheduler* remote_suggestions_scheduler() {
|
| + return remote_suggestions_scheduler_;
|
| }
|
|
|
| UserClassifier* user_classifier() { return &user_classifier_; }
|
| @@ -308,11 +334,14 @@ class ContentSuggestionsService : public KeyedService,
|
|
|
| const std::vector<ContentSuggestion> no_suggestions_;
|
|
|
| - // Keep a direct reference to this special provider to redirect scheduling,
|
| - // background fetching and debugging calls to it. If the
|
| - // RemoteSuggestionsProvider is loaded, it is also present in |providers_|,
|
| - // otherwise this is a nullptr.
|
| - RemoteSuggestionsProvider* ntp_snippets_service_;
|
| + // Keep a direct reference to this special provider to redirect debugging
|
| + // calls to it. If the RemoteSuggestionsProvider is loaded, it is also present
|
| + // in |providers_|, otherwise this is a nullptr.
|
| + RemoteSuggestionsProvider* remote_suggestions_provider_;
|
| +
|
| + // Interface for informing about external events that have influence on
|
| + // scheduling remote fetches. Not owned.
|
| + RemoteSuggestionsScheduler* remote_suggestions_scheduler_;
|
|
|
| PrefService* pref_service_;
|
|
|
|
|