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

Unified Diff: components/ntp_snippets/remote/ntp_snippets_fetcher.cc

Issue 2421463002: FetchMore functionality backend (Closed)
Patch Set: Introduced callback, removed strategy. Created 4 years, 2 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 side-by-side diff with in-line comments
Download patch
Index: components/ntp_snippets/remote/ntp_snippets_fetcher.cc
diff --git a/components/ntp_snippets/remote/ntp_snippets_fetcher.cc b/components/ntp_snippets/remote/ntp_snippets_fetcher.cc
index 24aa318c2eff0b5925b53164554f9bca0ba9bdd2..f671f738fcaffb9c95c4fac1c364f78cb61a7e53 100644
--- a/components/ntp_snippets/remote/ntp_snippets_fetcher.cc
+++ b/components/ntp_snippets/remote/ntp_snippets_fetcher.cc
@@ -316,17 +316,14 @@ NTPSnippetsFetcher::~NTPSnippetsFetcher() {
token_service_->RemoveObserver(this);
}
-void NTPSnippetsFetcher::SetCallback(
tschumann 2016/10/24 06:38:25 it's nice to see this method gone. However, i'm st
Marc Treib 2016/10/24 09:47:40 Yes, we actually discussed this, and agree it's a
- const SnippetsAvailableCallback& callback) {
- snippets_available_callback_ = callback;
-}
-
void NTPSnippetsFetcher::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,
+ base::Optional<Category> exclusive_category) {
if (!DemandQuotaForRequest(interactive_request)) {
FetchFinished(OptionalFetchedCategories(),
interactive_request
@@ -339,6 +336,8 @@ void NTPSnippetsFetcher::FetchSnippetsFromHosts(
hosts_ = hosts;
fetch_start_time_ = tick_clock_->NowTicks();
excluded_ids_ = excluded_ids;
+ exclusive_category_ = exclusive_category;
+ snippets_available_callback_ = std::move(callback);
locale_ = PosixLocaleFromBCP47Language(language_code);
count_to_fetch_ = count;
@@ -758,6 +757,24 @@ void NTPSnippetsFetcher::OnJsonError(const std::string& error) {
/*extra_message=*/base::StringPrintf(" (error %s)", error.c_str()));
}
+void NTPSnippetsFetcher::FilterCategories(OptionalFetchedCategories* fetched) {
+ if (!fetched->has_value())
+ return;
+ if (!exclusive_category_.has_value())
+ return;
+ FetchedCategoriesVector* categories = &fetched->value();
+ Category exclusive = exclusive_category_.value();
+ auto category_it =
+ std::find_if(categories->begin(), categories->end(),
+ [exclusive](const FetchedCategory& c) -> bool {
+ return c.category == exclusive;
+ });
+ if (category_it == categories->end())
Marc Treib 2016/10/20 16:51:39 Shouldn't we erase everything in this case?
fhorschig 2016/11/02 05:05:27 Correct. Changed and tested in CL 2466863003.
+ return;
+ categories->erase(categories->begin(), category_it);
+ categories->erase(category_it + 1, categories->end());
+}
+
void NTPSnippetsFetcher::FetchFinished(
OptionalFetchedCategories fetched_categories,
FetchResult result,
@@ -765,6 +782,11 @@ void NTPSnippetsFetcher::FetchFinished(
DCHECK(result == FetchResult::SUCCESS || !fetched_categories);
last_status_ = FetchResultToString(result) + extra_message;
+ // TODO(fhorschig): Filter (un)wanted categories by modifying fetch request.
+ // As soo as backends support the parameter, there is no
+ // no reason to overfetch and filter here.
Marc Treib 2016/10/20 16:51:39 nit: We don't align after the TODO. wanted or unwa
Marc Treib 2016/10/28 14:49:49 Done.
+ FilterCategories(&fetched_categories);
+
// Don't record FetchTimes if the result indicates that a precondition
// failed and we never actually sent a network request
if (!IsFetchPreconditionFailed(result)) {
@@ -777,7 +799,7 @@ void NTPSnippetsFetcher::FetchFinished(
DVLOG(1) << "Fetch finished: " << last_status_;
if (!snippets_available_callback_.is_null())
- snippets_available_callback_.Run(std::move(fetched_categories));
+ std::move(snippets_available_callback_).Run(std::move(fetched_categories));
}
bool NTPSnippetsFetcher::DemandQuotaForRequest(bool interactive_request) {

Powered by Google App Engine
This is Rietveld 408576698