Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1235)

Unified Diff: components/ntp_snippets/content_suggestions_service.h

Issue 2557363002: [NTP Snippets] Refactor background scheduling for remote suggestions (Closed)
Patch Set: Rebase Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 f8a96a69e416f5bef9d5bc343fa20e156febe01b..200fccc1574292fffec4644dbda39b074d7b5253 100644
--- a/components/ntp_snippets/content_suggestions_service.h
+++ b/components/ntp_snippets/content_suggestions_service.h
@@ -23,6 +23,7 @@
#include "components/ntp_snippets/category_factory.h"
#include "components/ntp_snippets/category_status.h"
#include "components/ntp_snippets/content_suggestions_provider.h"
+#include "components/ntp_snippets/remote/persistent_scheduler.h"
#include "components/ntp_snippets/user_classifier.h"
#include "components/signin/core/browser/signin_manager.h"
@@ -140,10 +141,18 @@ 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. Makes sense to call only after
tschumann 2016/12/15 19:27:00 what does "reload" mean? Would this include fetchi
jkrcal 2016/12/19 09:40:24 I've rewritten the comment. Hope it is clearer now
+ // some suggestions have been dismissed. The provider may fill in the vacant
+ // space by new suggestions that haven't been included previously due to space
+ // limits.
+ void ReloadSuggestions();
+
// Observer accessors.
void AddObserver(Observer* observer);
void RemoveObserver(Observer* observer);
@@ -193,15 +202,24 @@ class ContentSuggestionsService : public KeyedService,
CategoryFactory* category_factory() { return &category_factory_; }
- // 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.
+ void set_remote_suggestions_provider(
tschumann 2016/12/15 19:27:00 please add a TODO() to remove this setter. These i
jkrcal 2016/12/19 09:40:24 Yes, there is a cyclic dependency. Adding a setter
tschumann 2016/12/19 11:19:23 The depdencies just feel wrong: Needing the servic
jkrcal 2016/12/20 16:39:45 Thanks for the explanation. Still not totally conv
+ 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 PersistentScheduler::Listener should
+ // only be set by the factory and only used for scheduling, periodic fetching.
+ void set_persistent_scheduler_listener(
+ PersistentScheduler::Listener* persistent_scheduler_listener) {
+ persistent_scheduler_listener_ = persistent_scheduler_listener;
+ }
+ PersistentScheduler::Listener* persistent_scheduler_listener() {
+ return persistent_scheduler_listener_;
}
UserClassifier* user_classifier() { return &user_classifier_; }
@@ -312,11 +330,13 @@ 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 OS-dependent scheduling and background fetching.
+ PersistentScheduler::Listener* persistent_scheduler_listener_;
PrefService* pref_service_;

Powered by Google App Engine
This is Rietveld 408576698