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 b447572fe8b65433991268f54ec99c0a0593be8e..38785e7cd18efcbd9f9d3de5f22d9e0c8ad06e5d 100644 |
--- a/components/ntp_snippets/remote/ntp_snippets_fetcher.cc |
+++ b/components/ntp_snippets/remote/ntp_snippets_fetcher.cc |
@@ -24,6 +24,7 @@ |
#include "components/ntp_snippets/category_factory.h" |
#include "components/ntp_snippets/ntp_snippets_constants.h" |
#include "components/ntp_snippets/switches.h" |
+#include "components/ntp_snippets/user_classifier.h" |
#include "components/signin/core/browser/profile_oauth2_token_service.h" |
#include "components/signin/core/browser/signin_manager.h" |
#include "components/signin/core/browser/signin_manager_base.h" |
@@ -173,6 +174,24 @@ std::string PosixLocaleFromBCP47Language(const std::string& language_code) { |
return locale; |
} |
+RequestThrottler::RequestType GetRequestTypeForUserClass( |
+ UserClassifier::UserClass user_class) { |
+ switch (user_class) { |
+ case UserClassifier::UserClass::RARE_NTP_USER: |
+ return RequestThrottler::RequestType:: |
+ CONTENT_SUGGESTION_FETCHER_RARE_NTP_USER; |
+ case UserClassifier::UserClass::ACTIVE_NTP_USER: |
+ return RequestThrottler::RequestType:: |
+ CONTENT_SUGGESTION_FETCHER_ACTIVE_NTP_USER; |
+ case UserClassifier::UserClass::ACTIVE_SUGGESTIONS_CONSUMER: |
+ return RequestThrottler::RequestType:: |
+ CONTENT_SUGGESTION_FETCHER_ACTIVE_SUGGESTIONS_CONSUMER; |
+ } |
+ NOTREACHED(); |
+ return RequestThrottler::RequestType:: |
+ CONTENT_SUGGESTION_FETCHER_ACTIVE_NTP_USER; |
+} |
+ |
} // namespace |
NTPSnippetsFetcher::FetchedCategory::FetchedCategory(Category c) |
@@ -191,7 +210,8 @@ NTPSnippetsFetcher::NTPSnippetsFetcher( |
PrefService* pref_service, |
CategoryFactory* category_factory, |
const ParseJSONCallback& parse_json_callback, |
- const std::string& api_key) |
+ const std::string& api_key, |
+ const UserClassifier* user_classifier) |
: OAuth2TokenService::Consumer("ntp_snippets"), |
signin_manager_(signin_manager), |
token_service_(token_service), |
@@ -207,9 +227,10 @@ NTPSnippetsFetcher::NTPSnippetsFetcher( |
api_key_(api_key), |
interactive_request_(false), |
tick_clock_(new base::DefaultTickClock()), |
+ user_classifier_(user_classifier), |
request_throttler_( |
pref_service, |
- RequestThrottler::RequestType::CONTENT_SUGGESTION_FETCHER), |
+ GetRequestTypeForUserClass(user_classifier_->GetUserClass())), |
oauth_token_retried_(false), |
weak_ptr_factory_(this) { |
// Parse the variation parameters and set the defaults if missing. |
@@ -256,6 +277,8 @@ void NTPSnippetsFetcher::FetchSnippetsFromHosts( |
const std::set<std::string>& excluded_ids, |
int count, |
bool interactive_request) { |
+ request_throttler_.ChangeRequestType( |
+ GetRequestTypeForUserClass(user_classifier_->GetUserClass())); |
if (!request_throttler_.DemandQuotaForRequest(interactive_request)) { |
FetchFinished(OptionalSnippets(), |
interactive_request |
@@ -306,7 +329,8 @@ NTPSnippetsFetcher::RequestParams::RequestParams() |
user_locale(), |
host_restricts(), |
count_to_fetch(), |
- interactive_request() {} |
+ interactive_request(), |
+ user_class() {} |
NTPSnippetsFetcher::RequestParams::~RequestParams() = default; |
@@ -381,6 +405,7 @@ std::string NTPSnippetsFetcher::RequestParams::BuildRequest() { |
break; |
} |
request->Set("excludedSuggestionIds", std::move(excluded)); |
+ request->SetString("user_activeness_class", user_class); |
// TODO(sfiera): support authentication and personalization |
// TODO(sfiera): support count_to_fetch |
@@ -453,6 +478,7 @@ void NTPSnippetsFetcher::FetchSnippetsNonAuthenticated() { |
params.count_to_fetch = count_to_fetch_; |
params.interactive_request = interactive_request_; |
params.user_locale = locale_; |
+ params.user_class = user_classifier_->GetUserClassNameForProto(); |
FetchSnippetsImpl(url, std::string(), params.BuildRequest()); |
} |
@@ -470,6 +496,7 @@ void NTPSnippetsFetcher::FetchSnippetsAuthenticated( |
params.excluded_ids = excluded_ids_; |
params.count_to_fetch = count_to_fetch_; |
params.interactive_request = interactive_request_; |
+ params.user_class = user_classifier_->GetUserClassNameForProto(); |
// TODO(jkrcal, treib): Add unit-tests for authenticated fetches. |
FetchSnippetsImpl(fetch_url_, |
base::StringPrintf(kAuthorizationRequestHeaderFormat, |