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

Side by Side Diff: components/ntp_snippets/remote/remote_suggestions_scheduler.h

Issue 2774663002: [Remote suggestions] Refactor the scheduler (Closed)
Patch Set: Marc's nits #2 Created 3 years, 8 months 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef COMPONENTS_NTP_SNIPPETS_REMOTE_REMOTE_SUGGESTIONS_SCHEDULER_H_ 5 #ifndef COMPONENTS_NTP_SNIPPETS_REMOTE_REMOTE_SUGGESTIONS_SCHEDULER_H_
6 #define COMPONENTS_NTP_SNIPPETS_REMOTE_REMOTE_SUGGESTIONS_SCHEDULER_H_ 6 #define COMPONENTS_NTP_SNIPPETS_REMOTE_REMOTE_SUGGESTIONS_SCHEDULER_H_
7 7
8 #include "base/macros.h" 8 #include "base/macros.h"
9 9
10 namespace ntp_snippets { 10 namespace ntp_snippets {
11 11
12 // Interface for informing the scheduler. 12 class RemoteSuggestionsProvider;
13 struct Status;
14
15 // The scheduler for background fetching of remote suggestions has two callers:
16 // a) The actual provider that implements the fetching informs the scheduler
17 // about relevant events and changes in its state.
18 // b) External parties (such as the UI) that need to inform the scheduler about
19 // their events.
13 class RemoteSuggestionsScheduler { 20 class RemoteSuggestionsScheduler {
14 public: 21 public:
15 // Internal triggers to consider fetching content suggestions. 22 // Set the provider that performs background fetching. Should be only called
23 // by the factory.
24 virtual void SetProvider(RemoteSuggestionsProvider* provider) = 0;
25
26 // ***** Internal triggers to consider fetching content suggestions. *****
16 27
17 // Called whenever the remote suggestions provider becomes active (on startup, 28 // Called whenever the remote suggestions provider becomes active (on startup,
18 // or later on). 29 // or later on).
19 virtual void OnProviderActivated() = 0; 30 virtual void OnProviderActivated() = 0;
20 31
21 // Called whenever the remote suggestions provider becomes inactive (on 32 // Called whenever the remote suggestions provider becomes inactive (on
22 // startup, or later on). 33 // startup, or later on).
23 virtual void OnProviderDeactivated() = 0; 34 virtual void OnProviderDeactivated() = 0;
24 35
25 // Called whenever the remote suggestions provider clears all suggestions. 36 // Called whenever the remote suggestions provider clears all suggestions.
26 virtual void OnSuggestionsCleared() = 0; 37 virtual void OnSuggestionsCleared() = 0;
27 38
28 // Called whenever the remote suggestions provider clears all suggestions 39 // Called whenever the remote suggestions provider clears all suggestions
29 // because history gets cleared (and we must not show them any more). 40 // because history gets cleared (and we must not show them any more).
30 virtual void OnHistoryCleared() = 0; 41 virtual void OnHistoryCleared() = 0;
31 42
32 // External triggers to consider fetching content suggestions. 43 // Returns true if quota is available for another request.
44 virtual bool AcquireQuotaForInteractiveFetch() = 0;
45
46 // Called whenever the remote suggestions provider finishes an interactive
47 // fetch (with provided |fetch_status|).
48 virtual void OnInteractiveFetchFinished(Status fetch_status) = 0;
49
50 // ***** External triggers to consider fetching content suggestions. *****
33 51
34 // Called whenever chrome is started warm or the user switches to Chrome. 52 // Called whenever chrome is started warm or the user switches to Chrome.
35 virtual void OnBrowserForegrounded() = 0; 53 virtual void OnBrowserForegrounded() = 0;
36 54
37 // Called whenever chrome is cold started. 55 // Called whenever chrome is cold started.
38 // To keep start ups fast, defer any work possible. 56 // To keep start ups fast, defer any work possible.
39 virtual void OnBrowserColdStart() = 0; 57 virtual void OnBrowserColdStart() = 0;
40 58
41 // Called whenever a new NTP is opened. This may be called on cold starts. 59 // Called whenever a new NTP is opened. This may be called on cold starts.
42 // So to keep start ups fast, defer heavy work for cold starts. 60 // So to keep start ups fast, defer heavy work for cold starts.
43 virtual void OnNTPOpened() = 0; 61 virtual void OnNTPOpened() = 0;
44 62
45 // Fetch content suggestions. 63 // Fetch content suggestions.
46 virtual void OnPersistentSchedulerWakeUp() = 0; 64 virtual void OnPersistentSchedulerWakeUp() = 0;
47 65
48 // Force rescheduling of fetching. 66 // Force rescheduling of fetching.
49 virtual void RescheduleFetching() = 0; 67 virtual void RescheduleFetching() = 0;
50 }; 68 };
51 69
52 } // namespace ntp_snippets 70 } // namespace ntp_snippets
53 71
54 #endif // COMPONENTS_NTP_SNIPPETS_REMOTE_REMOTE_SUGGESTIONS_SCHEDULER_H_ 72 #endif // COMPONENTS_NTP_SNIPPETS_REMOTE_REMOTE_SUGGESTIONS_SCHEDULER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698