blob: d4fad75d31595b8f53b44d91f141cb7503c4ee64 [file] [log] [blame]
// 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_