Index: components/ntp_snippets/remote/ntp_snippets_fetcher.h |
diff --git a/components/ntp_snippets/remote/ntp_snippets_fetcher.h b/components/ntp_snippets/remote/ntp_snippets_fetcher.h |
index f5bbf27412cc229053c8a01e15988a324e07afc0..6056f3642106886a2289cf0a06ae075de3db1eb6 100644 |
--- a/components/ntp_snippets/remote/ntp_snippets_fetcher.h |
+++ b/components/ntp_snippets/remote/ntp_snippets_fetcher.h |
@@ -65,7 +65,7 @@ class NTPSnippetsFetcher : public OAuth2TokenService::Consumer, |
// occur, |snippets| contains no value (no actual vector in base::Optional). |
// Error details can be retrieved using last_status(). |
using SnippetsAvailableCallback = |
- base::Callback<void(OptionalFetchedCategories fetched_categories)>; |
+ base::OnceCallback<void(OptionalFetchedCategories fetched_categories)>; |
// Enumeration listing all possible outcomes for fetch attempts. Used for UMA |
// histograms, so do not change existing values. Insert new values at the end, |
@@ -102,10 +102,6 @@ class NTPSnippetsFetcher : public OAuth2TokenService::Consumer, |
const UserClassifier* user_classifier); |
~NTPSnippetsFetcher() override; |
- // Set a callback that is called when a new set of snippets are downloaded, |
- // overriding any previously set callback. |
- void SetCallback(const SnippetsAvailableCallback& callback); |
- |
// Fetches snippets from the server. |hosts| restricts the results to a set of |
// hosts, e.g. "www.google.com". If |hosts| is empty, no host restrictions are |
// applied. |
@@ -115,15 +111,20 @@ class NTPSnippetsFetcher : public OAuth2TokenService::Consumer, |
// |
// If an ongoing fetch exists, it will be cancelled and a new one started, |
// without triggering an additional callback (i.e. not noticeable by |
- // subscriber of SetCallback()). |
+ // the owner of |callback|). |
Marc Treib
2016/10/20 16:51:39
This is not accurate anymore: The owner of the pre
fhorschig
2016/11/02 05:05:27
As discussed offline, this behavior will change wi
|
// |
// Fetches snippets only if the daily quota not exceeded, unless |
// |interactive_request| is set to true (use only for user-initiated fetches). |
+ // |
+ // If an |exclusive_category| was defined, the categories passed to the |
+ // callback will only contain this category. |
void FetchSnippetsFromHosts(const std::set<std::string>& hosts, |
const std::string& language_code, |
const std::set<std::string>& excluded_ids, |
int count, |
- bool interactive_request); |
+ bool interactive_request, |
+ SnippetsAvailableCallback callback, |
Marc Treib
2016/10/20 16:51:39
nit: I'd put callback last (all the others are inp
fhorschig
2016/11/02 05:05:27
Done in CL 2466863003.
|
+ base::Optional<Category> exclusive_category); |
// Debug string representing the status/result of the last fetch attempt. |
const std::string& last_status() const { return last_status_; } |
@@ -216,6 +217,7 @@ class NTPSnippetsFetcher : public OAuth2TokenService::Consumer, |
void FetchFinished(OptionalFetchedCategories fetched_categories, |
FetchResult result, |
const std::string& extra_message); |
+ void FilterCategories(OptionalFetchedCategories* fetched); |
Marc Treib
2016/10/20 16:51:39
nit: const (or you could convert it to a non-membe
Marc Treib
2016/10/28 14:49:49
Done.
|
bool DemandQuotaForRequest(bool interactive_request); |
@@ -269,6 +271,9 @@ class NTPSnippetsFetcher : public OAuth2TokenService::Consumer, |
// Is the request user initiated? |
bool interactive_request_; |
+ // Is the request supposed to fetch one category excusively? Which one? |
Marc Treib
2016/10/20 16:51:40
Typo: excusively (but I'm not a fan of the questio
Marc Treib
2016/10/28 14:49:49
Done.
|
+ base::Optional<Category> exclusive_category_; |
+ |
// Allow for an injectable tick clock for testing. |
std::unique_ptr<base::TickClock> tick_clock_; |