| 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 228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 239 std::string json_string; | 239 std::string json_string; |
| 240 url_fetcher_->GetResponseAsString(&json_string); | 240 url_fetcher_->GetResponseAsString(&json_string); |
| 241 LOG(WARNING) << "Received invalid JSON (" << error << "): " << json_string; | 241 LOG(WARNING) << "Received invalid JSON (" << error << "): " << json_string; |
| 242 std::move(request_completed_callback_) | 242 std::move(request_completed_callback_) |
| 243 .Run(/*result=*/nullptr, FetchResult::JSON_PARSE_ERROR, | 243 .Run(/*result=*/nullptr, FetchResult::JSON_PARSE_ERROR, |
| 244 /*error_details=*/base::StringPrintf(" (error %s)", error.c_str())); | 244 /*error_details=*/base::StringPrintf(" (error %s)", error.c_str())); |
| 245 } | 245 } |
| 246 | 246 |
| 247 JsonRequest::Builder::Builder() | 247 JsonRequest::Builder::Builder() |
| 248 : fetch_api_(CHROME_READER_API), | 248 : fetch_api_(CHROME_READER_API), |
| 249 personalization_(Personalization::kBoth), | |
| 250 language_model_(nullptr) {} | 249 language_model_(nullptr) {} |
| 251 JsonRequest::Builder::Builder(JsonRequest::Builder&&) = default; | 250 JsonRequest::Builder::Builder(JsonRequest::Builder&&) = default; |
| 252 JsonRequest::Builder::~Builder() = default; | 251 JsonRequest::Builder::~Builder() = default; |
| 253 | 252 |
| 254 std::unique_ptr<JsonRequest> JsonRequest::Builder::Build() const { | 253 std::unique_ptr<JsonRequest> JsonRequest::Builder::Build() const { |
| 255 DCHECK(!url_.is_empty()); | 254 DCHECK(!url_.is_empty()); |
| 256 DCHECK(url_request_context_getter_); | 255 DCHECK(url_request_context_getter_); |
| 257 DCHECK(tick_clock_); | 256 DCHECK(tick_clock_); |
| 258 auto request = base::MakeUnique<JsonRequest>( | 257 auto request = base::MakeUnique<JsonRequest>( |
| 259 params_.exclusive_category, tick_clock_, parse_json_callback_); | 258 params_.exclusive_category, tick_clock_, parse_json_callback_); |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 293 params_ = params; | 292 params_ = params; |
| 294 return *this; | 293 return *this; |
| 295 } | 294 } |
| 296 | 295 |
| 297 JsonRequest::Builder& JsonRequest::Builder::SetParseJsonCallback( | 296 JsonRequest::Builder& JsonRequest::Builder::SetParseJsonCallback( |
| 298 ParseJSONCallback callback) { | 297 ParseJSONCallback callback) { |
| 299 parse_json_callback_ = callback; | 298 parse_json_callback_ = callback; |
| 300 return *this; | 299 return *this; |
| 301 } | 300 } |
| 302 | 301 |
| 303 JsonRequest::Builder& JsonRequest::Builder::SetPersonalization( | |
| 304 Personalization personalization) { | |
| 305 personalization_ = personalization; | |
| 306 return *this; | |
| 307 } | |
| 308 | |
| 309 JsonRequest::Builder& JsonRequest::Builder::SetTickClock( | 302 JsonRequest::Builder& JsonRequest::Builder::SetTickClock( |
| 310 base::TickClock* tick_clock) { | 303 base::TickClock* tick_clock) { |
| 311 tick_clock_ = tick_clock; | 304 tick_clock_ = tick_clock; |
| 312 return *this; | 305 return *this; |
| 313 } | 306 } |
| 314 | 307 |
| 315 JsonRequest::Builder& JsonRequest::Builder::SetUrl(const GURL& url) { | 308 JsonRequest::Builder& JsonRequest::Builder::SetUrl(const GURL& url) { |
| 316 url_ = url; | 309 url_ = url; |
| 317 return *this; | 310 return *this; |
| 318 } | 311 } |
| (...skipping 27 matching lines...) Expand all Loading... |
| 346 false, // uma_enabled | 339 false, // uma_enabled |
| 347 is_signed_in, &headers); | 340 is_signed_in, &headers); |
| 348 return headers.ToString(); | 341 return headers.ToString(); |
| 349 } | 342 } |
| 350 | 343 |
| 351 std::string JsonRequest::Builder::BuildBody() const { | 344 std::string JsonRequest::Builder::BuildBody() const { |
| 352 auto request = base::MakeUnique<base::DictionaryValue>(); | 345 auto request = base::MakeUnique<base::DictionaryValue>(); |
| 353 std::string user_locale = PosixLocaleFromBCP47Language(params_.language_code); | 346 std::string user_locale = PosixLocaleFromBCP47Language(params_.language_code); |
| 354 switch (fetch_api_) { | 347 switch (fetch_api_) { |
| 355 case CHROME_READER_API: { | 348 case CHROME_READER_API: { |
| 356 auto content_params = base::MakeUnique<base::DictionaryValue>(); | |
| 357 content_params->SetBoolean("only_return_personalized_results", | |
| 358 ReturnOnlyPersonalizedResults()); | |
| 359 | |
| 360 auto content_restricts = base::MakeUnique<base::ListValue>(); | 349 auto content_restricts = base::MakeUnique<base::ListValue>(); |
| 361 for (const auto* metadata : {"TITLE", "SNIPPET", "THUMBNAIL"}) { | 350 for (const auto* metadata : {"TITLE", "SNIPPET", "THUMBNAIL"}) { |
| 362 auto entry = base::MakeUnique<base::DictionaryValue>(); | 351 auto entry = base::MakeUnique<base::DictionaryValue>(); |
| 363 entry->SetString("type", "METADATA"); | 352 entry->SetString("type", "METADATA"); |
| 364 entry->SetString("value", metadata); | 353 entry->SetString("value", metadata); |
| 365 content_restricts->Append(std::move(entry)); | 354 content_restricts->Append(std::move(entry)); |
| 366 } | 355 } |
| 367 | 356 |
| 368 auto local_scoring_params = base::MakeUnique<base::DictionaryValue>(); | 357 auto local_scoring_params = base::MakeUnique<base::DictionaryValue>(); |
| 369 local_scoring_params->Set("content_params", std::move(content_params)); | |
| 370 local_scoring_params->Set("content_restricts", | 358 local_scoring_params->Set("content_restricts", |
| 371 std::move(content_restricts)); | 359 std::move(content_restricts)); |
| 372 | 360 |
| 373 auto global_scoring_params = base::MakeUnique<base::DictionaryValue>(); | 361 auto global_scoring_params = base::MakeUnique<base::DictionaryValue>(); |
| 374 global_scoring_params->SetInteger("num_to_return", | 362 global_scoring_params->SetInteger("num_to_return", |
| 375 params_.count_to_fetch); | 363 params_.count_to_fetch); |
| 376 global_scoring_params->SetInteger("sort_type", 1); | 364 global_scoring_params->SetInteger("sort_type", 1); |
| 377 | 365 |
| 378 auto advanced = base::MakeUnique<base::DictionaryValue>(); | 366 auto advanced = base::MakeUnique<base::DictionaryValue>(); |
| 379 advanced->Set("local_scoring_params", std::move(local_scoring_params)); | 367 advanced->Set("local_scoring_params", std::move(local_scoring_params)); |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 422 | 410 |
| 423 auto language_list = base::MakeUnique<base::ListValue>(); | 411 auto language_list = base::MakeUnique<base::ListValue>(); |
| 424 if (ui_language.frequency > 0) { | 412 if (ui_language.frequency > 0) { |
| 425 AppendLanguageInfoToList(language_list.get(), ui_language); | 413 AppendLanguageInfoToList(language_list.get(), ui_language); |
| 426 } | 414 } |
| 427 if (other_top_language.frequency > 0) { | 415 if (other_top_language.frequency > 0) { |
| 428 AppendLanguageInfoToList(language_list.get(), other_top_language); | 416 AppendLanguageInfoToList(language_list.get(), other_top_language); |
| 429 } | 417 } |
| 430 request->Set("topLanguages", std::move(language_list)); | 418 request->Set("topLanguages", std::move(language_list)); |
| 431 | 419 |
| 432 // TODO(sfiera): Support only_return_personalized_results. | |
| 433 // TODO(sfiera): Support count_to_fetch. | 420 // TODO(sfiera): Support count_to_fetch. |
| 434 break; | 421 break; |
| 435 } | 422 } |
| 436 } | 423 } |
| 437 | 424 |
| 438 std::string request_json; | 425 std::string request_json; |
| 439 bool success = base::JSONWriter::WriteWithOptions( | 426 bool success = base::JSONWriter::WriteWithOptions( |
| 440 *request, base::JSONWriter::OPTIONS_PRETTY_PRINT, &request_json); | 427 *request, base::JSONWriter::OPTIONS_PRETTY_PRINT, &request_json); |
| 441 DCHECK(success); | 428 DCHECK(success); |
| 442 return request_json; | 429 return request_json; |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 496 "NewTabPage.Languages.UILanguageRatioInTwoTopLanguages", | 483 "NewTabPage.Languages.UILanguageRatioInTwoTopLanguages", |
| 497 ratio_ui_in_both_languages * 100); | 484 ratio_ui_in_both_languages * 100); |
| 498 break; | 485 break; |
| 499 } | 486 } |
| 500 } | 487 } |
| 501 } | 488 } |
| 502 | 489 |
| 503 } // namespace internal | 490 } // namespace internal |
| 504 | 491 |
| 505 } // namespace ntp_snippets | 492 } // namespace ntp_snippets |
| OLD | NEW |