| 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/json_request.h" | 5 #include "components/ntp_snippets/remote/json_request.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <utility> | 8 #include <utility> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 246 std::string json_string; | 246 std::string json_string; |
| 247 url_fetcher_->GetResponseAsString(&json_string); | 247 url_fetcher_->GetResponseAsString(&json_string); |
| 248 LOG(WARNING) << "Received invalid JSON (" << error << "): " << json_string; | 248 LOG(WARNING) << "Received invalid JSON (" << error << "): " << json_string; |
| 249 std::move(request_completed_callback_) | 249 std::move(request_completed_callback_) |
| 250 .Run(/*result=*/nullptr, FetchResult::JSON_PARSE_ERROR, | 250 .Run(/*result=*/nullptr, FetchResult::JSON_PARSE_ERROR, |
| 251 /*error_details=*/base::StringPrintf(" (error %s)", error.c_str())); | 251 /*error_details=*/base::StringPrintf(" (error %s)", error.c_str())); |
| 252 } | 252 } |
| 253 | 253 |
| 254 JsonRequest::Builder::Builder() | 254 JsonRequest::Builder::Builder() |
| 255 : fetch_api_(CHROME_READER_API), | 255 : fetch_api_(CHROME_READER_API), |
| 256 personalization_(Personalization::kBoth), | |
| 257 language_model_(nullptr) {} | 256 language_model_(nullptr) {} |
| 258 JsonRequest::Builder::Builder(JsonRequest::Builder&&) = default; | 257 JsonRequest::Builder::Builder(JsonRequest::Builder&&) = default; |
| 259 JsonRequest::Builder::~Builder() = default; | 258 JsonRequest::Builder::~Builder() = default; |
| 260 | 259 |
| 261 std::unique_ptr<JsonRequest> JsonRequest::Builder::Build() const { | 260 std::unique_ptr<JsonRequest> JsonRequest::Builder::Build() const { |
| 262 DCHECK(!url_.is_empty()); | 261 DCHECK(!url_.is_empty()); |
| 263 DCHECK(url_request_context_getter_); | 262 DCHECK(url_request_context_getter_); |
| 264 DCHECK(tick_clock_); | 263 DCHECK(tick_clock_); |
| 265 auto request = base::MakeUnique<JsonRequest>( | 264 auto request = base::MakeUnique<JsonRequest>( |
| 266 params_.exclusive_category, tick_clock_, parse_json_callback_); | 265 params_.exclusive_category, tick_clock_, parse_json_callback_); |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 300 params_ = params; | 299 params_ = params; |
| 301 return *this; | 300 return *this; |
| 302 } | 301 } |
| 303 | 302 |
| 304 JsonRequest::Builder& JsonRequest::Builder::SetParseJsonCallback( | 303 JsonRequest::Builder& JsonRequest::Builder::SetParseJsonCallback( |
| 305 ParseJSONCallback callback) { | 304 ParseJSONCallback callback) { |
| 306 parse_json_callback_ = callback; | 305 parse_json_callback_ = callback; |
| 307 return *this; | 306 return *this; |
| 308 } | 307 } |
| 309 | 308 |
| 310 JsonRequest::Builder& JsonRequest::Builder::SetPersonalization( | |
| 311 Personalization personalization) { | |
| 312 personalization_ = personalization; | |
| 313 return *this; | |
| 314 } | |
| 315 | |
| 316 JsonRequest::Builder& JsonRequest::Builder::SetTickClock( | 309 JsonRequest::Builder& JsonRequest::Builder::SetTickClock( |
| 317 base::TickClock* tick_clock) { | 310 base::TickClock* tick_clock) { |
| 318 tick_clock_ = tick_clock; | 311 tick_clock_ = tick_clock; |
| 319 return *this; | 312 return *this; |
| 320 } | 313 } |
| 321 | 314 |
| 322 JsonRequest::Builder& JsonRequest::Builder::SetUrl(const GURL& url) { | 315 JsonRequest::Builder& JsonRequest::Builder::SetUrl(const GURL& url) { |
| 323 url_ = url; | 316 url_ = url; |
| 324 return *this; | 317 return *this; |
| 325 } | 318 } |
| (...skipping 27 matching lines...) Expand all Loading... |
| 353 false, // uma_enabled | 346 false, // uma_enabled |
| 354 is_signed_in, &headers); | 347 is_signed_in, &headers); |
| 355 return headers.ToString(); | 348 return headers.ToString(); |
| 356 } | 349 } |
| 357 | 350 |
| 358 std::string JsonRequest::Builder::BuildBody() const { | 351 std::string JsonRequest::Builder::BuildBody() const { |
| 359 auto request = base::MakeUnique<base::DictionaryValue>(); | 352 auto request = base::MakeUnique<base::DictionaryValue>(); |
| 360 std::string user_locale = PosixLocaleFromBCP47Language(params_.language_code); | 353 std::string user_locale = PosixLocaleFromBCP47Language(params_.language_code); |
| 361 switch (fetch_api_) { | 354 switch (fetch_api_) { |
| 362 case CHROME_READER_API: { | 355 case CHROME_READER_API: { |
| 363 auto content_params = base::MakeUnique<base::DictionaryValue>(); | |
| 364 content_params->SetBoolean("only_return_personalized_results", | |
| 365 ReturnOnlyPersonalizedResults()); | |
| 366 | |
| 367 auto content_restricts = base::MakeUnique<base::ListValue>(); | 356 auto content_restricts = base::MakeUnique<base::ListValue>(); |
| 368 for (const auto* metadata : {"TITLE", "SNIPPET", "THUMBNAIL"}) { | 357 for (const auto* metadata : {"TITLE", "SNIPPET", "THUMBNAIL"}) { |
| 369 auto entry = base::MakeUnique<base::DictionaryValue>(); | 358 auto entry = base::MakeUnique<base::DictionaryValue>(); |
| 370 entry->SetString("type", "METADATA"); | 359 entry->SetString("type", "METADATA"); |
| 371 entry->SetString("value", metadata); | 360 entry->SetString("value", metadata); |
| 372 content_restricts->Append(std::move(entry)); | 361 content_restricts->Append(std::move(entry)); |
| 373 } | 362 } |
| 374 | 363 |
| 375 auto local_scoring_params = base::MakeUnique<base::DictionaryValue>(); | 364 auto local_scoring_params = base::MakeUnique<base::DictionaryValue>(); |
| 376 local_scoring_params->Set("content_params", std::move(content_params)); | |
| 377 local_scoring_params->Set("content_restricts", | 365 local_scoring_params->Set("content_restricts", |
| 378 std::move(content_restricts)); | 366 std::move(content_restricts)); |
| 379 | 367 |
| 380 auto global_scoring_params = base::MakeUnique<base::DictionaryValue>(); | 368 auto global_scoring_params = base::MakeUnique<base::DictionaryValue>(); |
| 381 global_scoring_params->SetInteger("num_to_return", | 369 global_scoring_params->SetInteger("num_to_return", |
| 382 params_.count_to_fetch); | 370 params_.count_to_fetch); |
| 383 global_scoring_params->SetInteger("sort_type", 1); | 371 global_scoring_params->SetInteger("sort_type", 1); |
| 384 | 372 |
| 385 auto advanced = base::MakeUnique<base::DictionaryValue>(); | 373 auto advanced = base::MakeUnique<base::DictionaryValue>(); |
| 386 advanced->Set("local_scoring_params", std::move(local_scoring_params)); | 374 advanced->Set("local_scoring_params", std::move(local_scoring_params)); |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 429 | 417 |
| 430 auto language_list = base::MakeUnique<base::ListValue>(); | 418 auto language_list = base::MakeUnique<base::ListValue>(); |
| 431 if (ui_language.frequency > 0) { | 419 if (ui_language.frequency > 0) { |
| 432 AppendLanguageInfoToList(language_list.get(), ui_language); | 420 AppendLanguageInfoToList(language_list.get(), ui_language); |
| 433 } | 421 } |
| 434 if (other_top_language.frequency > 0) { | 422 if (other_top_language.frequency > 0) { |
| 435 AppendLanguageInfoToList(language_list.get(), other_top_language); | 423 AppendLanguageInfoToList(language_list.get(), other_top_language); |
| 436 } | 424 } |
| 437 request->Set("topLanguages", std::move(language_list)); | 425 request->Set("topLanguages", std::move(language_list)); |
| 438 | 426 |
| 439 // TODO(sfiera): Support only_return_personalized_results. | |
| 440 // TODO(sfiera): Support count_to_fetch. | 427 // TODO(sfiera): Support count_to_fetch. |
| 441 break; | 428 break; |
| 442 } | 429 } |
| 443 } | 430 } |
| 444 | 431 |
| 445 std::string request_json; | 432 std::string request_json; |
| 446 bool success = base::JSONWriter::WriteWithOptions( | 433 bool success = base::JSONWriter::WriteWithOptions( |
| 447 *request, base::JSONWriter::OPTIONS_PRETTY_PRINT, &request_json); | 434 *request, base::JSONWriter::OPTIONS_PRETTY_PRINT, &request_json); |
| 448 DCHECK(success); | 435 DCHECK(success); |
| 449 return request_json; | 436 return request_json; |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 503 "NewTabPage.Languages.UILanguageRatioInTwoTopLanguages", | 490 "NewTabPage.Languages.UILanguageRatioInTwoTopLanguages", |
| 504 ratio_ui_in_both_languages * 100); | 491 ratio_ui_in_both_languages * 100); |
| 505 break; | 492 break; |
| 506 } | 493 } |
| 507 } | 494 } |
| 508 } | 495 } |
| 509 | 496 |
| 510 } // namespace internal | 497 } // namespace internal |
| 511 | 498 |
| 512 } // namespace ntp_snippets | 499 } // namespace ntp_snippets |
| OLD | NEW |