| // Copyright 2016 The Chromium Authors. All rights reserved. |
| // 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_REMOTE_SUGGESTIONS_SCHEDULER_H_ |
| #define COMPONENTS_NTP_SNIPPETS_REMOTE_REMOTE_SUGGESTIONS_SCHEDULER_H_ |
| |
| #include "base/macros.h" |
| |
| namespace ntp_snippets { |
| |
| class RemoteSuggestionsProvider; |
| struct Status; |
| |
| // The scheduler for background fetching of remote suggestions has two callers: |
| // a) The actual provider that implements the fetching informs the scheduler |
| // about relevant events and changes in its state. |
| // b) External parties (such as the UI) that need to inform the scheduler about |
| // their events. |
| class RemoteSuggestionsScheduler { |
| public: |
| virtual ~RemoteSuggestionsScheduler() = default; |
| |
| // Set the provider that performs background fetching. Should be only called |
| // by the factory. |
| virtual void SetProvider(RemoteSuggestionsProvider* provider) = 0; |
| |
| // ***** Internal triggers to consider fetching content suggestions. ***** |
| |
| // Called whenever the remote suggestions provider becomes active (on startup, |
| // or later on). |
| virtual void OnProviderActivated() = 0; |
| |
| // Called whenever the remote suggestions provider becomes inactive (on |
| // startup, or later on). |
| virtual void OnProviderDeactivated() = 0; |
| |
| // Called whenever the remote suggestions provider clears all suggestions. |
| virtual void OnSuggestionsCleared() = 0; |
| |
| // Called whenever the remote suggestions provider clears all suggestions |
| // because history gets cleared (and we must not show them any more). |
| virtual void OnHistoryCleared() = 0; |
| |
| // Returns true if quota is available for another request. |
| virtual bool AcquireQuotaForInteractiveFetch() = 0; |
| |
| // Called whenever the remote suggestions provider finishes an interactive |
| // fetch (with provided |fetch_status|). |
| virtual void OnInteractiveFetchFinished(Status fetch_status) = 0; |
| |
| // ***** External triggers to consider fetching content suggestions. ***** |
| |
| // Called whenever chrome is started warm or the user switches to Chrome. |
| virtual void OnBrowserForegrounded() = 0; |
| |
| // Called whenever chrome is cold started. |
| // To keep start ups fast, defer any work possible. |
| virtual void OnBrowserColdStart() = 0; |
| |
| // Called whenever a new suggestions surface is opened. This may be called on |
| // cold starts. So to keep start ups fast, defer heavy work for cold starts. |
| virtual void OnSuggestionsSurfaceOpened() = 0; |
| |
| // Called by PersistentScheduler implementation whenever it wakes up according |
| // to its schedule. Avoid heavy work, Chrome may be running in the background. |
| virtual void OnPersistentSchedulerWakeUp() = 0; |
| |
| virtual void OnBrowserUpgraded() = 0; |
| }; |
| |
| } // namespace ntp_snippets |
| |
| #endif // COMPONENTS_NTP_SNIPPETS_REMOTE_REMOTE_SUGGESTIONS_SCHEDULER_H_ |