| Index: components/ntp_snippets/remote/remote_suggestions_scheduler_impl.h
|
| diff --git a/components/ntp_snippets/remote/scheduling_remote_suggestions_provider.h b/components/ntp_snippets/remote/remote_suggestions_scheduler_impl.h
|
| similarity index 61%
|
| rename from components/ntp_snippets/remote/scheduling_remote_suggestions_provider.h
|
| rename to components/ntp_snippets/remote/remote_suggestions_scheduler_impl.h
|
| index 61853cdc95b1598a6acb787e2b194c707987a1a8..255c963e507753b2627a41ecfc96c25291945837 100644
|
| --- a/components/ntp_snippets/remote/scheduling_remote_suggestions_provider.h
|
| +++ b/components/ntp_snippets/remote/remote_suggestions_scheduler_impl.h
|
| @@ -2,8 +2,8 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#ifndef COMPONENTS_NTP_SNIPPETS_REMOTE_SCHEDULING_REMOTE_SUGGESTIONS_PROVIDER_H_
|
| -#define COMPONENTS_NTP_SNIPPETS_REMOTE_SCHEDULING_REMOTE_SUGGESTIONS_PROVIDER_H_
|
| +#ifndef COMPONENTS_NTP_SNIPPETS_REMOTE_REMOTE_SUGGESTIONS_SCHEDULER_IMPL_H_
|
| +#define COMPONENTS_NTP_SNIPPETS_REMOTE_REMOTE_SUGGESTIONS_SCHEDULER_IMPL_H_
|
|
|
| #include <memory>
|
| #include <set>
|
| @@ -34,13 +34,6 @@ class EulaState;
|
| class UserClassifier;
|
|
|
| // A wrapper around RemoteSuggestionsProvider that introduces periodic fetching.
|
| -//
|
| -// The class initiates fetches on its own in these situations:
|
| -// - initial fetch when the provider is constructed and we have no suggestions;
|
| -// - regular fetches according to its schedule.
|
| -// TODO(jkrcal): After soft fetch on Chrome startup is introduced, remove
|
| -// the initial fetch completely.
|
| -//
|
| // The class also needs to understand when last fetch trials and successful
|
| // fetches happen and thus it intercepts following interactive fetch requests:
|
| // - Fetch() - after "More" button of a remote section is pressed in the UI;
|
| @@ -57,20 +50,16 @@ class UserClassifier;
|
| // TODO(jkrcal): Change the interface to ContentSuggestionsProvider. We do not
|
| // need any special functionality, all special should be exposed in the
|
| // Scheduler interface. crbug.com/695447
|
| -class SchedulingRemoteSuggestionsProvider final
|
| - : public RemoteSuggestionsProvider,
|
| - public RemoteSuggestionsScheduler {
|
| +class RemoteSuggestionsSchedulerImpl : public RemoteSuggestionsScheduler {
|
| public:
|
| - SchedulingRemoteSuggestionsProvider(
|
| - Observer* observer,
|
| - std::unique_ptr<RemoteSuggestionsProvider> provider,
|
| - PersistentScheduler* persistent_scheduler,
|
| - const UserClassifier* user_classifier,
|
| - PrefService* profile_prefs,
|
| - PrefService* local_state_prefs,
|
| - std::unique_ptr<base::Clock> clock);
|
| + RemoteSuggestionsSchedulerImpl(RemoteSuggestionsProvider* provider,
|
| + PersistentScheduler* persistent_scheduler,
|
| + const UserClassifier* user_classifier,
|
| + PrefService* profile_prefs,
|
| + PrefService* local_state_prefs,
|
| + std::unique_ptr<base::Clock> clock);
|
|
|
| - ~SchedulingRemoteSuggestionsProvider() override;
|
| + ~RemoteSuggestionsSchedulerImpl();
|
|
|
| static void RegisterProfilePrefs(PrefRegistrySimple* registry);
|
|
|
| @@ -80,50 +69,25 @@ class SchedulingRemoteSuggestionsProvider final
|
| void OnSuggestionsCleared() override;
|
| void OnHistoryCleared() override;
|
| void RescheduleFetching() override;
|
| + bool AcquireQuotaForInteractiveFetch() override;
|
| + void OnInteractiveFetchFinished(Status fetch_status) override;
|
| void OnPersistentSchedulerWakeUp() override;
|
| void OnBrowserForegrounded() override;
|
| void OnBrowserColdStart() override;
|
| void OnNTPOpened() override;
|
|
|
| - // RemoteSuggestionsProvider implementation.
|
| - void RefetchInTheBackground(
|
| - std::unique_ptr<FetchStatusCallback> callback) override;
|
| - const RemoteSuggestionsFetcher* suggestions_fetcher_for_debugging()
|
| - const override;
|
| -
|
| - // ContentSuggestionsProvider implementation.
|
| - CategoryStatus GetCategoryStatus(Category category) override;
|
| - CategoryInfo GetCategoryInfo(Category category) override;
|
| - void DismissSuggestion(const ContentSuggestion::ID& suggestion_id) override;
|
| - void FetchSuggestionImage(const ContentSuggestion::ID& suggestion_id,
|
| - const ImageFetchedCallback& callback) override;
|
| - void Fetch(const Category& category,
|
| - const std::set<std::string>& known_suggestion_ids,
|
| - const FetchDoneCallback& callback) override;
|
| - void ReloadSuggestions() override;
|
| - void ClearHistory(
|
| - base::Time begin,
|
| - base::Time end,
|
| - const base::Callback<bool(const GURL& url)>& filter) override;
|
| - void ClearCachedSuggestions(Category category) override;
|
| - void OnSignInStateChanged() override;
|
| - void GetDismissedSuggestionsForDebugging(
|
| - Category category,
|
| - const DismissedSuggestionsCallback& callback) override;
|
| - void ClearDismissedSuggestionsForDebugging(Category category) override;
|
| -
|
| private:
|
| // Abstract description of the fetching schedule.
|
| struct FetchingSchedule {
|
| - static FetchingSchedule Empty();
|
| - bool operator==(const FetchingSchedule& other) const;
|
| - bool operator!=(const FetchingSchedule& other) const;
|
| - bool is_empty() const;
|
| -
|
| - base::TimeDelta interval_persistent_wifi;
|
| - base::TimeDelta interval_persistent_fallback;
|
| - base::TimeDelta interval_soft_on_usage_event;
|
| - base::TimeDelta interval_soft_on_ntp_opened;
|
| + static FetchingSchedule Empty();
|
| + bool operator==(const FetchingSchedule& other) const;
|
| + bool operator!=(const FetchingSchedule& other) const;
|
| + bool is_empty() const;
|
| +
|
| + base::TimeDelta interval_persistent_wifi;
|
| + base::TimeDelta interval_persistent_fallback;
|
| + base::TimeDelta interval_soft_on_usage_event;
|
| + base::TimeDelta interval_soft_on_ntp_opened;
|
| };
|
|
|
| enum class TriggerType;
|
| @@ -141,6 +105,9 @@ class SchedulingRemoteSuggestionsProvider final
|
| // Trigger a background refetch for the given |trigger| if enabled.
|
| void RefetchInTheBackgroundIfEnabled(TriggerType trigger);
|
|
|
| + // Trigger the background refetch.
|
| + void RefetchInTheBackground();
|
| +
|
| // Checks whether it is time to perform a soft background fetch, according to
|
| // |schedule|.
|
| bool ShouldRefetchInTheBackgroundNow(TriggerType trigger);
|
| @@ -151,15 +118,8 @@ class SchedulingRemoteSuggestionsProvider final
|
| // Returns true if quota is available for another request.
|
| bool AcquireQuota(bool interactive_request);
|
|
|
| - // Callback after Fetch is completed.
|
| - void FetchFinished(const FetchDoneCallback& callback,
|
| - Status fetch_status,
|
| - std::vector<ContentSuggestion> suggestions);
|
| -
|
| // Callback after RefetchInTheBackground is completed.
|
| - void RefetchInTheBackgroundFinished(
|
| - std::unique_ptr<FetchStatusCallback> callback,
|
| - Status fetch_status);
|
| + void RefetchInTheBackgroundFinished(Status fetch_status);
|
|
|
| // Common function to call after a fetch of any type is finished.
|
| void OnFetchCompleted(Status fetch_status);
|
| @@ -184,7 +144,7 @@ class SchedulingRemoteSuggestionsProvider final
|
| std::set<TriggerType> GetDefaultEnabledTriggerTypes();
|
|
|
| // Interface for doing all the actual work (apart from scheduling).
|
| - std::unique_ptr<RemoteSuggestionsProvider> provider_;
|
| + RemoteSuggestionsProvider* provider_;
|
|
|
| // Interface for scheduling hard fetches, OS dependent. Not owned, may be
|
| // null.
|
| @@ -206,13 +166,13 @@ class SchedulingRemoteSuggestionsProvider final
|
|
|
| PrefService* profile_prefs_;
|
| std::unique_ptr<base::Clock> clock_;
|
| - std::set<SchedulingRemoteSuggestionsProvider::TriggerType> enabled_triggers_;
|
| + std::set<RemoteSuggestionsSchedulerImpl::TriggerType> enabled_triggers_;
|
|
|
| base::Time background_fetches_allowed_after_;
|
|
|
| - DISALLOW_COPY_AND_ASSIGN(SchedulingRemoteSuggestionsProvider);
|
| + DISALLOW_COPY_AND_ASSIGN(RemoteSuggestionsSchedulerImpl);
|
| };
|
|
|
| } // namespace ntp_snippets
|
|
|
| -#endif // COMPONENTS_NTP_SNIPPETS_REMOTE_SCHEDULING_REMOTE_SUGGESTIONS_PROVIDER_H_
|
| +#endif // COMPONENTS_NTP_SNIPPETS_REMOTE_REMOTE_SUGGESTIONS_SCHEDULER_IMPL_H_
|
|
|