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/remote/remote_suggestions_fetcher.h" | 5 #include "components/ntp_snippets/remote/remote_suggestions_fetcher.h" |
6 | 6 |
7 #include <cstdlib> | 7 #include <cstdlib> |
8 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "base/files/file_path.h" | 10 #include "base/files/file_path.h" |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
103 case FetchResult::INVALID_SNIPPET_CONTENT_ERROR: | 103 case FetchResult::INVALID_SNIPPET_CONTENT_ERROR: |
104 case FetchResult::JSON_PARSE_ERROR: | 104 case FetchResult::JSON_PARSE_ERROR: |
105 return Status(StatusCode::TEMPORARY_ERROR, FetchResultToString(result)); | 105 return Status(StatusCode::TEMPORARY_ERROR, FetchResultToString(result)); |
106 case FetchResult::RESULT_MAX: | 106 case FetchResult::RESULT_MAX: |
107 break; | 107 break; |
108 } | 108 } |
109 NOTREACHED(); | 109 NOTREACHED(); |
110 return Status(StatusCode::PERMANENT_ERROR, std::string()); | 110 return Status(StatusCode::PERMANENT_ERROR, std::string()); |
111 } | 111 } |
112 | 112 |
113 std::string GetFetchEndpoint() { | |
114 std::string endpoint = variations::GetVariationParamValueByFeature( | |
115 ntp_snippets::kArticleSuggestionsFeature, kContentSuggestionsBackend); | |
116 return endpoint.empty() ? kContentSuggestionsServer : endpoint; | |
117 } | |
118 | |
119 bool UsesChromeContentSuggestionsAPI(const GURL& endpoint) { | 113 bool UsesChromeContentSuggestionsAPI(const GURL& endpoint) { |
120 if (endpoint == kChromeReaderServer) { | 114 if (endpoint == kChromeReaderServer) { |
121 return false; | 115 return false; |
122 } | 116 } |
123 | 117 |
124 if (endpoint != kContentSuggestionsServer && | 118 if (endpoint != kContentSuggestionsServer && |
125 endpoint != kContentSuggestionsStagingServer && | 119 endpoint != kContentSuggestionsStagingServer && |
126 endpoint != kContentSuggestionsAlphaServer) { | 120 endpoint != kContentSuggestionsAlphaServer) { |
127 LOG(WARNING) << "Unknown value for " << kContentSuggestionsBackend << ": " | 121 LOG(WARNING) << "Unknown value for " << kContentSuggestionsBackend << ": " |
128 << endpoint << "; assuming chromecontentsuggestions-style API"; | 122 << endpoint << "; assuming chromecontentsuggestions-style API"; |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
193 categories->clear(); | 187 categories->clear(); |
194 return; | 188 return; |
195 } | 189 } |
196 RemoteSuggestionsFetcher::FetchedCategory category = std::move(*category_it); | 190 RemoteSuggestionsFetcher::FetchedCategory category = std::move(*category_it); |
197 categories->clear(); | 191 categories->clear(); |
198 categories->push_back(std::move(category)); | 192 categories->push_back(std::move(category)); |
199 } | 193 } |
200 | 194 |
201 } // namespace | 195 } // namespace |
202 | 196 |
| 197 std::string GetFetchEndpoint(bool is_stable_or_beta_channel) { |
| 198 std::string endpoint = variations::GetVariationParamValueByFeature( |
| 199 ntp_snippets::kArticleSuggestionsFeature, kContentSuggestionsBackend); |
| 200 if (endpoint.empty()) { |
| 201 endpoint = is_stable_or_beta_channel ? kContentSuggestionsServer |
| 202 : kContentSuggestionsStagingServer; |
| 203 } |
| 204 return endpoint; |
| 205 } |
| 206 |
203 CategoryInfo BuildArticleCategoryInfo( | 207 CategoryInfo BuildArticleCategoryInfo( |
204 const base::Optional<base::string16>& title) { | 208 const base::Optional<base::string16>& title) { |
205 return CategoryInfo( | 209 return CategoryInfo( |
206 title.has_value() ? title.value() | 210 title.has_value() ? title.value() |
207 : l10n_util::GetStringUTF16( | 211 : l10n_util::GetStringUTF16( |
208 IDS_NTP_ARTICLE_SUGGESTIONS_SECTION_HEADER), | 212 IDS_NTP_ARTICLE_SUGGESTIONS_SECTION_HEADER), |
209 ContentSuggestionsCardLayout::FULL_CARD, | 213 ContentSuggestionsCardLayout::FULL_CARD, |
210 /*has_fetch_action=*/true, | 214 /*has_fetch_action=*/true, |
211 /*has_view_all_action=*/false, | 215 /*has_view_all_action=*/false, |
212 /*show_if_empty=*/true, | 216 /*show_if_empty=*/true, |
(...skipping 26 matching lines...) Expand all Loading... |
239 RemoteSuggestionsFetcher::FetchedCategory::operator=(FetchedCategory&&) = | 243 RemoteSuggestionsFetcher::FetchedCategory::operator=(FetchedCategory&&) = |
240 default; | 244 default; |
241 | 245 |
242 RemoteSuggestionsFetcher::RemoteSuggestionsFetcher( | 246 RemoteSuggestionsFetcher::RemoteSuggestionsFetcher( |
243 SigninManagerBase* signin_manager, | 247 SigninManagerBase* signin_manager, |
244 OAuth2TokenService* token_service, | 248 OAuth2TokenService* token_service, |
245 scoped_refptr<URLRequestContextGetter> url_request_context_getter, | 249 scoped_refptr<URLRequestContextGetter> url_request_context_getter, |
246 PrefService* pref_service, | 250 PrefService* pref_service, |
247 LanguageModel* language_model, | 251 LanguageModel* language_model, |
248 const ParseJSONCallback& parse_json_callback, | 252 const ParseJSONCallback& parse_json_callback, |
| 253 const std::string& api_endpoint, |
249 const std::string& api_key, | 254 const std::string& api_key, |
250 const UserClassifier* user_classifier) | 255 const UserClassifier* user_classifier) |
251 : OAuth2TokenService::Consumer("ntp_snippets"), | 256 : OAuth2TokenService::Consumer("ntp_snippets"), |
252 signin_manager_(signin_manager), | 257 signin_manager_(signin_manager), |
253 token_service_(token_service), | 258 token_service_(token_service), |
254 url_request_context_getter_(std::move(url_request_context_getter)), | 259 url_request_context_getter_(std::move(url_request_context_getter)), |
255 language_model_(language_model), | 260 language_model_(language_model), |
256 parse_json_callback_(parse_json_callback), | 261 parse_json_callback_(parse_json_callback), |
257 fetch_url_(GetFetchEndpoint()), | 262 fetch_url_(api_endpoint), |
258 fetch_api_(UsesChromeContentSuggestionsAPI(fetch_url_) | 263 fetch_api_(UsesChromeContentSuggestionsAPI(fetch_url_) |
259 ? FetchAPI::CHROME_CONTENT_SUGGESTIONS_API | 264 ? FetchAPI::CHROME_CONTENT_SUGGESTIONS_API |
260 : FetchAPI::CHROME_READER_API), | 265 : FetchAPI::CHROME_READER_API), |
261 api_key_(api_key), | 266 api_key_(api_key), |
262 clock_(new base::DefaultClock()), | 267 clock_(new base::DefaultClock()), |
263 user_classifier_(user_classifier), | 268 user_classifier_(user_classifier), |
264 request_throttler_rare_ntp_user_( | 269 request_throttler_rare_ntp_user_( |
265 pref_service, | 270 pref_service, |
266 RequestThrottler::RequestType:: | 271 RequestThrottler::RequestType:: |
267 CONTENT_SUGGESTION_FETCHER_RARE_NTP_USER), | 272 CONTENT_SUGGESTION_FETCHER_RARE_NTP_USER), |
(...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
581 interactive_request); | 586 interactive_request); |
582 case UserClassifier::UserClass::ACTIVE_SUGGESTIONS_CONSUMER: | 587 case UserClassifier::UserClass::ACTIVE_SUGGESTIONS_CONSUMER: |
583 return request_throttler_active_suggestions_consumer_ | 588 return request_throttler_active_suggestions_consumer_ |
584 .DemandQuotaForRequest(interactive_request); | 589 .DemandQuotaForRequest(interactive_request); |
585 } | 590 } |
586 NOTREACHED(); | 591 NOTREACHED(); |
587 return false; | 592 return false; |
588 } | 593 } |
589 | 594 |
590 } // namespace ntp_snippets | 595 } // namespace ntp_snippets |
OLD | NEW |