| 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,
|
|
|