OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/omnibox/search_suggestion_parser.h" | 5 #include "components/omnibox/search_suggestion_parser.h" |
6 | 6 |
7 #include "base/i18n/icu_string_conversions.h" | 7 #include "base/i18n/icu_string_conversions.h" |
8 #include "base/json/json_string_value_serializer.h" | 8 #include "base/json/json_string_value_serializer.h" |
9 #include "base/json/json_writer.h" | 9 #include "base/json/json_writer.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 482 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
493 | 493 |
494 // Extract the Answer, if provided. | 494 // Extract the Answer, if provided. |
495 const base::DictionaryValue* answer_json = NULL; | 495 const base::DictionaryValue* answer_json = NULL; |
496 if (suggestion_detail->GetDictionary("ansa", &answer_json) && | 496 if (suggestion_detail->GetDictionary("ansa", &answer_json) && |
497 suggestion_detail->GetString("ansb", &answer_type_str)) { | 497 suggestion_detail->GetString("ansb", &answer_type_str)) { |
498 bool answer_parsed_successfully = false; | 498 bool answer_parsed_successfully = false; |
499 answer = SuggestionAnswer::ParseAnswer(answer_json); | 499 answer = SuggestionAnswer::ParseAnswer(answer_json); |
500 int answer_type = 0; | 500 int answer_type = 0; |
501 if (answer && base::StringToInt(answer_type_str, &answer_type)) { | 501 if (answer && base::StringToInt(answer_type_str, &answer_type)) { |
502 answer_parsed_successfully = true; | 502 answer_parsed_successfully = true; |
503 match_type = AutocompleteMatchType::SEARCH_SUGGEST_ANSWER; | |
504 | 503 |
505 answer->set_type(answer_type); | 504 answer->set_type(answer_type); |
506 answer->AddImageURLsTo(&results->answers_image_urls); | 505 answer->AddImageURLsTo(&results->answers_image_urls); |
507 | 506 |
508 std::string contents; | 507 std::string contents; |
509 base::JSONWriter::Write(answer_json, &contents); | 508 base::JSONWriter::Write(answer_json, &contents); |
510 answer_contents = base::UTF8ToUTF16(contents); | 509 answer_contents = base::UTF8ToUTF16(contents); |
511 } else { | 510 } else { |
512 answer_type_str = base::string16(); | 511 answer_type_str = base::string16(); |
513 } | 512 } |
514 UMA_HISTOGRAM_BOOLEAN("Omnibox.AnswerParseSuccess", | 513 UMA_HISTOGRAM_BOOLEAN("Omnibox.AnswerParseSuccess", |
515 answer_parsed_successfully); | 514 answer_parsed_successfully); |
516 } | 515 } |
517 } | 516 } |
518 } | 517 } |
519 | 518 |
520 bool should_prefetch = static_cast<int>(index) == prefetch_index; | 519 bool should_prefetch = static_cast<int>(index) == prefetch_index; |
521 // TODO(kochi): Improve calculator suggestion presentation. | 520 // TODO(kochi): Improve calculator suggestion presentation. |
522 results->suggest_results.push_back(SuggestResult( | 521 results->suggest_results.push_back(SuggestResult( |
523 base::CollapseWhitespace(suggestion, false), match_type, | 522 base::CollapseWhitespace(suggestion, false), match_type, |
524 base::CollapseWhitespace(match_contents, false), | 523 base::CollapseWhitespace(match_contents, false), |
525 match_contents_prefix, annotation, answer_contents, answer_type_str, | 524 match_contents_prefix, annotation, answer_contents, answer_type_str, |
526 answer.Pass(), suggest_query_params, deletion_url, is_keyword_result, | 525 answer.Pass(), suggest_query_params, deletion_url, is_keyword_result, |
527 relevance, relevances != NULL, should_prefetch, trimmed_input)); | 526 relevance, relevances != NULL, should_prefetch, trimmed_input)); |
528 } | 527 } |
529 } | 528 } |
530 results->relevances_from_server = relevances != NULL; | 529 results->relevances_from_server = relevances != NULL; |
531 return true; | 530 return true; |
532 } | 531 } |
OLD | NEW |