Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 #include "components/ntp_snippets/ntp_snippets_fetcher.h" | 5 #include "components/ntp_snippets/ntp_snippets_fetcher.h" |
| 6 | 6 |
| 7 #include <stdlib.h> | 7 #include <stdlib.h> |
| 8 | 8 |
| 9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
| 10 #include "base/files/file_path.h" | 10 #include "base/files/file_path.h" |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 69 | 69 |
| 70 // Constants for possible values of the "fetching_personalization" parameter. | 70 // Constants for possible values of the "fetching_personalization" parameter. |
| 71 const char kPersonalizationPersonalString[] = "personal"; | 71 const char kPersonalizationPersonalString[] = "personal"; |
| 72 const char kPersonalizationNonPersonalString[] = "non_personal"; | 72 const char kPersonalizationNonPersonalString[] = "non_personal"; |
| 73 const char kPersonalizationBothString[] = "both"; // the default value | 73 const char kPersonalizationBothString[] = "both"; // the default value |
| 74 | 74 |
| 75 // Constants for possible values of the "fetching_host_restrict" parameter. | 75 // Constants for possible values of the "fetching_host_restrict" parameter. |
| 76 const char kHostRestrictionOnString[] = "on"; // the default value | 76 const char kHostRestrictionOnString[] = "on"; // the default value |
| 77 const char kHostRestrictionOffString[] = "off"; | 77 const char kHostRestrictionOffString[] = "off"; |
| 78 | 78 |
| 79 const int kArticlesQuotaPerDay = 20; | |
|
Marc Treib
2016/07/22 13:52:52
This sounds like "number of articles per day", but
jkrcal
2016/07/25 10:05:38
Done.
Overriding by variation params is built in
Marc Treib
2016/07/25 10:11:55
I see... this is surprising to me. Since everythin
jkrcal
2016/07/25 10:26:59
Makes sense. Done.
| |
| 80 | |
| 79 std::string FetchResultToString(NTPSnippetsFetcher::FetchResult result) { | 81 std::string FetchResultToString(NTPSnippetsFetcher::FetchResult result) { |
| 80 switch (result) { | 82 switch (result) { |
| 81 case NTPSnippetsFetcher::FetchResult::SUCCESS: | 83 case NTPSnippetsFetcher::FetchResult::SUCCESS: |
| 82 return "OK"; | 84 return "OK"; |
| 83 case NTPSnippetsFetcher::FetchResult::EMPTY_HOSTS: | 85 case NTPSnippetsFetcher::FetchResult::EMPTY_HOSTS: |
| 84 return "Cannot fetch for empty hosts list."; | 86 return "Cannot fetch for empty hosts list."; |
| 85 case NTPSnippetsFetcher::FetchResult::URL_REQUEST_STATUS_ERROR: | 87 case NTPSnippetsFetcher::FetchResult::URL_REQUEST_STATUS_ERROR: |
| 86 return "URLRequestStatus error"; | 88 return "URLRequestStatus error"; |
| 87 case NTPSnippetsFetcher::FetchResult::HTTP_ERROR: | 89 case NTPSnippetsFetcher::FetchResult::HTTP_ERROR: |
| 88 return "HTTP error"; | 90 return "HTTP error"; |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 151 << "Error in translating language code to a locale string: " << error; | 153 << "Error in translating language code to a locale string: " << error; |
| 152 return locale; | 154 return locale; |
| 153 } | 155 } |
| 154 | 156 |
| 155 } // namespace | 157 } // namespace |
| 156 | 158 |
| 157 NTPSnippetsFetcher::NTPSnippetsFetcher( | 159 NTPSnippetsFetcher::NTPSnippetsFetcher( |
| 158 SigninManagerBase* signin_manager, | 160 SigninManagerBase* signin_manager, |
| 159 OAuth2TokenService* token_service, | 161 OAuth2TokenService* token_service, |
| 160 scoped_refptr<URLRequestContextGetter> url_request_context_getter, | 162 scoped_refptr<URLRequestContextGetter> url_request_context_getter, |
| 163 PrefService* pref_service, | |
| 161 const ParseJSONCallback& parse_json_callback, | 164 const ParseJSONCallback& parse_json_callback, |
| 162 bool is_stable_channel) | 165 bool is_stable_channel) |
| 163 : OAuth2TokenService::Consumer("ntp_snippets"), | 166 : OAuth2TokenService::Consumer("ntp_snippets"), |
| 164 signin_manager_(signin_manager), | 167 signin_manager_(signin_manager), |
| 165 token_service_(token_service), | 168 token_service_(token_service), |
| 166 waiting_for_refresh_token_(false), | 169 waiting_for_refresh_token_(false), |
| 167 url_request_context_getter_(url_request_context_getter), | 170 url_request_context_getter_(url_request_context_getter), |
| 168 parse_json_callback_(parse_json_callback), | 171 parse_json_callback_(parse_json_callback), |
| 169 fetch_url_(GetFetchEndpoint()), | 172 fetch_url_(GetFetchEndpoint()), |
| 170 fetch_api_(UsesChromeContentSuggestionsAPI(fetch_url_) | 173 fetch_api_(UsesChromeContentSuggestionsAPI(fetch_url_) |
| 171 ? CHROME_CONTENT_SUGGESTIONS_API | 174 ? CHROME_CONTENT_SUGGESTIONS_API |
| 172 : CHROME_READER_API), | 175 : CHROME_READER_API), |
| 173 is_stable_channel_(is_stable_channel), | 176 is_stable_channel_(is_stable_channel), |
| 174 tick_clock_(new base::DefaultTickClock()), | 177 tick_clock_(new base::DefaultTickClock()), |
| 178 request_throttler_( | |
| 179 pref_service, | |
| 180 RequestThrottler::RequestType::CONTENT_SUGGESTION_FETCHER, | |
| 181 kArticlesQuotaPerDay), | |
| 175 weak_ptr_factory_(this) { | 182 weak_ptr_factory_(this) { |
| 176 // Parse the variation parameters and set the defaults if missing. | 183 // Parse the variation parameters and set the defaults if missing. |
| 177 std::string personalization = variations::GetVariationParamValue( | 184 std::string personalization = variations::GetVariationParamValue( |
| 178 ntp_snippets::kStudyName, kPersonalizationName); | 185 ntp_snippets::kStudyName, kPersonalizationName); |
| 179 if (personalization == kPersonalizationNonPersonalString) { | 186 if (personalization == kPersonalizationNonPersonalString) { |
| 180 personalization_ = Personalization::kNonPersonal; | 187 personalization_ = Personalization::kNonPersonal; |
| 181 } else if (personalization == kPersonalizationPersonalString) { | 188 } else if (personalization == kPersonalizationPersonalString) { |
| 182 personalization_ = Personalization::kPersonal; | 189 personalization_ = Personalization::kPersonal; |
| 183 } else { | 190 } else { |
| 184 personalization_ = Personalization::kBoth; | 191 personalization_ = Personalization::kBoth; |
| (...skipping 22 matching lines...) Expand all Loading... | |
| 207 } | 214 } |
| 208 | 215 |
| 209 void NTPSnippetsFetcher::SetCallback( | 216 void NTPSnippetsFetcher::SetCallback( |
| 210 const SnippetsAvailableCallback& callback) { | 217 const SnippetsAvailableCallback& callback) { |
| 211 snippets_available_callback_ = callback; | 218 snippets_available_callback_ = callback; |
| 212 } | 219 } |
| 213 | 220 |
| 214 void NTPSnippetsFetcher::FetchSnippetsFromHosts( | 221 void NTPSnippetsFetcher::FetchSnippetsFromHosts( |
| 215 const std::set<std::string>& hosts, | 222 const std::set<std::string>& hosts, |
| 216 const std::string& language_code, | 223 const std::string& language_code, |
| 217 int count) { | 224 int count, |
| 225 bool force_request) { | |
| 226 if (!request_throttler_.DemandQuotaForRequest(force_request)) | |
| 227 return; | |
| 228 | |
| 218 hosts_ = hosts; | 229 hosts_ = hosts; |
| 219 fetch_start_time_ = tick_clock_->NowTicks(); | 230 fetch_start_time_ = tick_clock_->NowTicks(); |
| 220 | 231 |
| 221 if (UsesHostRestrictions() && hosts_.empty()) { | 232 if (UsesHostRestrictions() && hosts_.empty()) { |
| 222 FetchFinished(OptionalSnippets(), FetchResult::EMPTY_HOSTS, | 233 FetchFinished(OptionalSnippets(), FetchResult::EMPTY_HOSTS, |
| 223 /*extra_message=*/std::string()); | 234 /*extra_message=*/std::string()); |
| 224 return; | 235 return; |
| 225 } | 236 } |
| 226 | 237 |
| 227 locale_ = PosixLocaleFromBCP47Language(language_code); | 238 locale_ = PosixLocaleFromBCP47Language(language_code); |
| (...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 524 tick_clock_->NowTicks() - fetch_start_time_); | 535 tick_clock_->NowTicks() - fetch_start_time_); |
| 525 UMA_HISTOGRAM_ENUMERATION("NewTabPage.Snippets.FetchResult", | 536 UMA_HISTOGRAM_ENUMERATION("NewTabPage.Snippets.FetchResult", |
| 526 static_cast<int>(result), | 537 static_cast<int>(result), |
| 527 static_cast<int>(FetchResult::RESULT_MAX)); | 538 static_cast<int>(FetchResult::RESULT_MAX)); |
| 528 | 539 |
| 529 if (!snippets_available_callback_.is_null()) | 540 if (!snippets_available_callback_.is_null()) |
| 530 snippets_available_callback_.Run(std::move(snippets)); | 541 snippets_available_callback_.Run(std::move(snippets)); |
| 531 } | 542 } |
| 532 | 543 |
| 533 } // namespace ntp_snippets | 544 } // namespace ntp_snippets |
| OLD | NEW |