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

Side by Side Diff: components/ntp_snippets/ntp_snippets_fetcher.cc

Issue 2274953002: Inform server of dismissed articles. (Closed) Base URL: https://chromium.googlesource.com/chromium/src@master
Patch Set: Created 4 years, 4 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 unified diff | Download patch
OLDNEW
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 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
209 } 209 }
210 210
211 void NTPSnippetsFetcher::SetCallback( 211 void NTPSnippetsFetcher::SetCallback(
212 const SnippetsAvailableCallback& callback) { 212 const SnippetsAvailableCallback& callback) {
213 snippets_available_callback_ = callback; 213 snippets_available_callback_ = callback;
214 } 214 }
215 215
216 void NTPSnippetsFetcher::FetchSnippetsFromHosts( 216 void NTPSnippetsFetcher::FetchSnippetsFromHosts(
217 const std::set<std::string>& hosts, 217 const std::set<std::string>& hosts,
218 const std::string& language_code, 218 const std::string& language_code,
219 const std::set<std::string>& excluded_ids,
219 int count, 220 int count,
220 bool interactive_request) { 221 bool interactive_request) {
221 if (!request_throttler_.DemandQuotaForRequest(interactive_request)) 222 if (!request_throttler_.DemandQuotaForRequest(interactive_request))
222 return; 223 return;
223 224
224 hosts_ = hosts; 225 hosts_ = hosts;
225 fetch_start_time_ = tick_clock_->NowTicks(); 226 fetch_start_time_ = tick_clock_->NowTicks();
227 excluded_ids_ = excluded_ids;
226 228
227 if (UsesHostRestrictions() && hosts_.empty()) { 229 if (UsesHostRestrictions() && hosts_.empty()) {
228 FetchFinished(OptionalSnippets(), FetchResult::EMPTY_HOSTS, 230 FetchFinished(OptionalSnippets(), FetchResult::EMPTY_HOSTS,
229 /*extra_message=*/std::string()); 231 /*extra_message=*/std::string());
230 return; 232 return;
231 } 233 }
232 234
233 locale_ = PosixLocaleFromBCP47Language(language_code); 235 locale_ = PosixLocaleFromBCP47Language(language_code);
234 count_to_fetch_ = count; 236 count_to_fetch_ = count;
235 237
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
310 if (!user_locale.empty()) { 312 if (!user_locale.empty()) {
311 request->SetString("user_locale", user_locale); 313 request->SetString("user_locale", user_locale);
312 } 314 }
313 break; 315 break;
314 } 316 }
315 317
316 case CHROME_CONTENT_SUGGESTIONS_API: { 318 case CHROME_CONTENT_SUGGESTIONS_API: {
317 if (!user_locale.empty()) { 319 if (!user_locale.empty()) {
318 request->SetString("uiLanguage", user_locale); 320 request->SetString("uiLanguage", user_locale);
319 } 321 }
322
320 auto regular_hosts = base::MakeUnique<base::ListValue>(); 323 auto regular_hosts = base::MakeUnique<base::ListValue>();
321 for (const auto& host : host_restricts) { 324 for (const auto& host : host_restricts) {
322 regular_hosts->AppendString(host); 325 regular_hosts->AppendString(host);
323 } 326 }
324 request->Set("regularlyVisitedHostNames", std::move(regular_hosts)); 327 request->Set("regularlyVisitedHostNames", std::move(regular_hosts));
325 328
329 auto excluded = base::MakeUnique<base::ListValue>();
330 for (const auto& id : excluded_ids) {
331 excluded->AppendString(id);
332 }
333 request->Set("excludedSuggestionIds", std::move(excluded));
334
326 // TODO(sfiera): support authentication and personalization 335 // TODO(sfiera): support authentication and personalization
327 // TODO(sfiera): support count_to_fetch 336 // TODO(sfiera): support count_to_fetch
328 break; 337 break;
329 } 338 }
330 } 339 }
331 340
332 std::string request_json; 341 std::string request_json;
333 bool success = base::JSONWriter::WriteWithOptions( 342 bool success = base::JSONWriter::WriteWithOptions(
334 *request, base::JSONWriter::OPTIONS_PRETTY_PRINT, &request_json); 343 *request, base::JSONWriter::OPTIONS_PRETTY_PRINT, &request_json);
335 DCHECK(success); 344 DCHECK(success);
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
385 const std::string& key = is_stable_channel_ 394 const std::string& key = is_stable_channel_
386 ? google_apis::GetAPIKey() 395 ? google_apis::GetAPIKey()
387 : google_apis::GetNonStableAPIKey(); 396 : google_apis::GetNonStableAPIKey();
388 GURL url(base::StringPrintf(kSnippetsServerNonAuthorizedFormat, 397 GURL url(base::StringPrintf(kSnippetsServerNonAuthorizedFormat,
389 fetch_url_.spec().c_str(), key.c_str())); 398 fetch_url_.spec().c_str(), key.c_str()));
390 399
391 RequestParams params; 400 RequestParams params;
392 params.fetch_api = fetch_api_; 401 params.fetch_api = fetch_api_;
393 params.host_restricts = 402 params.host_restricts =
394 UsesHostRestrictions() ? hosts_ : std::set<std::string>(); 403 UsesHostRestrictions() ? hosts_ : std::set<std::string>();
404 params.excluded_ids = excluded_ids_;
395 params.count_to_fetch = count_to_fetch_; 405 params.count_to_fetch = count_to_fetch_;
396 FetchSnippetsImpl(url, std::string(), params.BuildRequest()); 406 FetchSnippetsImpl(url, std::string(), params.BuildRequest());
397 } 407 }
398 408
399 void NTPSnippetsFetcher::FetchSnippetsAuthenticated( 409 void NTPSnippetsFetcher::FetchSnippetsAuthenticated(
400 const std::string& account_id, 410 const std::string& account_id,
401 const std::string& oauth_access_token) { 411 const std::string& oauth_access_token) {
402 RequestParams params; 412 RequestParams params;
403 params.fetch_api = fetch_api_; 413 params.fetch_api = fetch_api_;
404 params.obfuscated_gaia_id = account_id; 414 params.obfuscated_gaia_id = account_id;
405 params.only_return_personalized_results = 415 params.only_return_personalized_results =
406 personalization_ == Personalization::kPersonal; 416 personalization_ == Personalization::kPersonal;
407 params.user_locale = locale_; 417 params.user_locale = locale_;
408 params.host_restricts = 418 params.host_restricts =
409 UsesHostRestrictions() ? hosts_ : std::set<std::string>(); 419 UsesHostRestrictions() ? hosts_ : std::set<std::string>();
420 params.excluded_ids = excluded_ids_;
410 params.count_to_fetch = count_to_fetch_; 421 params.count_to_fetch = count_to_fetch_;
411 // TODO(jkrcal, treib): Add unit-tests for authenticated fetches. 422 // TODO(jkrcal, treib): Add unit-tests for authenticated fetches.
412 FetchSnippetsImpl(fetch_url_, 423 FetchSnippetsImpl(fetch_url_,
413 base::StringPrintf(kAuthorizationRequestHeaderFormat, 424 base::StringPrintf(kAuthorizationRequestHeaderFormat,
414 oauth_access_token.c_str()), 425 oauth_access_token.c_str()),
415 params.BuildRequest()); 426 params.BuildRequest());
416 } 427 }
417 428
418 void NTPSnippetsFetcher::StartTokenRequest() { 429 void NTPSnippetsFetcher::StartTokenRequest() {
419 OAuth2TokenService::ScopeSet scopes; 430 OAuth2TokenService::ScopeSet scopes;
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
594 } 605 }
595 UMA_HISTOGRAM_ENUMERATION("NewTabPage.Snippets.FetchResult", 606 UMA_HISTOGRAM_ENUMERATION("NewTabPage.Snippets.FetchResult",
596 static_cast<int>(result), 607 static_cast<int>(result),
597 static_cast<int>(FetchResult::RESULT_MAX)); 608 static_cast<int>(FetchResult::RESULT_MAX));
598 609
599 if (!snippets_available_callback_.is_null()) 610 if (!snippets_available_callback_.is_null())
600 snippets_available_callback_.Run(std::move(snippets)); 611 snippets_available_callback_.Run(std::move(snippets));
601 } 612 }
602 613
603 } // namespace ntp_snippets 614 } // namespace ntp_snippets
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698