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 "chrome/browser/autocomplete/base_search_provider.h" | 5 #include "chrome/browser/autocomplete/base_search_provider.h" |
6 | 6 |
7 #include "base/i18n/case_conversion.h" | 7 #include "base/i18n/case_conversion.h" |
8 #include "base/i18n/icu_string_conversions.h" | 8 #include "base/i18n/icu_string_conversions.h" |
9 #include "base/json/json_string_value_serializer.h" | 9 #include "base/json/json_string_value_serializer.h" |
10 #include "base/json/json_writer.h" | 10 #include "base/json/json_writer.h" |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
58 return AutocompleteMatchType::SEARCH_SUGGEST_PERSONALIZED; | 58 return AutocompleteMatchType::SEARCH_SUGGEST_PERSONALIZED; |
59 if (type == "PROFILE") | 59 if (type == "PROFILE") |
60 return AutocompleteMatchType::SEARCH_SUGGEST_PROFILE; | 60 return AutocompleteMatchType::SEARCH_SUGGEST_PROFILE; |
61 if (type == "NAVIGATION") | 61 if (type == "NAVIGATION") |
62 return AutocompleteMatchType::NAVSUGGEST; | 62 return AutocompleteMatchType::NAVSUGGEST; |
63 if (type == "PERSONALIZED_NAVIGATION") | 63 if (type == "PERSONALIZED_NAVIGATION") |
64 return AutocompleteMatchType::NAVSUGGEST_PERSONALIZED; | 64 return AutocompleteMatchType::NAVSUGGEST_PERSONALIZED; |
65 return AutocompleteMatchType::SEARCH_SUGGEST; | 65 return AutocompleteMatchType::SEARCH_SUGGEST; |
66 } | 66 } |
67 | 67 |
68 base::string16 StringForURLDisplayWithAcceptLanguages(Profile* profile, | |
69 const GURL& url) { | |
70 std::string languages = profile ? | |
71 profile->GetPrefs()->GetString(prefs::kAcceptLanguages) : std::string(); | |
72 return net::FormatUrl(url, languages, | |
73 net::kFormatUrlOmitAll & ~net::kFormatUrlOmitHTTP, | |
74 net::UnescapeRule::SPACES, NULL, NULL, NULL); | |
75 } | |
76 | |
77 } // namespace | 68 } // namespace |
78 | 69 |
79 // SuggestionDeletionHandler ------------------------------------------------- | 70 // SuggestionDeletionHandler ------------------------------------------------- |
80 | 71 |
81 // This class handles making requests to the server in order to delete | 72 // This class handles making requests to the server in order to delete |
82 // personalized suggestions. | 73 // personalized suggestions. |
83 class SuggestionDeletionHandler : public net::URLFetcherDelegate { | 74 class SuggestionDeletionHandler : public net::URLFetcherDelegate { |
84 public: | 75 public: |
85 typedef base::Callback<void(bool, SuggestionDeletionHandler*)> | 76 typedef base::Callback<void(bool, SuggestionDeletionHandler*)> |
86 DeletionCompletedCallback; | 77 DeletionCompletedCallback; |
(...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
357 const AutocompleteInput& input, | 348 const AutocompleteInput& input, |
358 bool keyword_provider_requested) const { | 349 bool keyword_provider_requested) const { |
359 if (!from_keyword_provider_ && keyword_provider_requested) | 350 if (!from_keyword_provider_ && keyword_provider_requested) |
360 return 100; | 351 return 100; |
361 return ((input.type() == metrics::OmniboxInputType::URL) ? 300 : 600); | 352 return ((input.type() == metrics::OmniboxInputType::URL) ? 300 : 600); |
362 } | 353 } |
363 | 354 |
364 // BaseSearchProvider::NavigationResult ---------------------------------------- | 355 // BaseSearchProvider::NavigationResult ---------------------------------------- |
365 | 356 |
366 BaseSearchProvider::NavigationResult::NavigationResult( | 357 BaseSearchProvider::NavigationResult::NavigationResult( |
367 const AutocompleteProvider& provider, | 358 const AutocompleteSchemeClassifier& scheme_classifier, |
368 Profile* profile, | |
369 const GURL& url, | 359 const GURL& url, |
370 AutocompleteMatchType::Type type, | 360 AutocompleteMatchType::Type type, |
371 const base::string16& description, | 361 const base::string16& description, |
372 const std::string& deletion_url, | 362 const std::string& deletion_url, |
373 bool from_keyword_provider, | 363 bool from_keyword_provider, |
374 int relevance, | 364 int relevance, |
375 bool relevance_from_server, | 365 bool relevance_from_server, |
376 const base::string16& input_text, | 366 const base::string16& input_text, |
377 const std::string& languages) | 367 const std::string& languages) |
378 : Result(from_keyword_provider, relevance, relevance_from_server, type, | 368 : Result(from_keyword_provider, relevance, relevance_from_server, type, |
379 deletion_url), | 369 deletion_url), |
380 url_(url), | 370 url_(url), |
381 formatted_url_(AutocompleteInput::FormattedStringWithEquivalentMeaning( | 371 formatted_url_(AutocompleteInput::FormattedStringWithEquivalentMeaning( |
382 url, StringForURLDisplayWithAcceptLanguages(profile, url), | 372 url, net::FormatUrl(url, languages, |
383 ChromeAutocompleteSchemeClassifier(profile))), | 373 net::kFormatUrlOmitAll & ~net::kFormatUrlOmitHTTP, |
| 374 net::UnescapeRule::SPACES, NULL, NULL, NULL), |
| 375 scheme_classifier)), |
384 description_(description) { | 376 description_(description) { |
385 DCHECK(url_.is_valid()); | 377 DCHECK(url_.is_valid()); |
386 CalculateAndClassifyMatchContents(true, input_text, languages); | 378 CalculateAndClassifyMatchContents(true, input_text, languages); |
387 } | 379 } |
388 | 380 |
389 BaseSearchProvider::NavigationResult::~NavigationResult() {} | 381 BaseSearchProvider::NavigationResult::~NavigationResult() {} |
390 | 382 |
391 void BaseSearchProvider::NavigationResult::CalculateAndClassifyMatchContents( | 383 void BaseSearchProvider::NavigationResult::CalculateAndClassifyMatchContents( |
392 const bool allow_bolding_nothing, | 384 const bool allow_bolding_nothing, |
393 const base::string16& input_text, | 385 const base::string16& input_text, |
(...skipping 512 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
906 if ((match_type == AutocompleteMatchType::NAVSUGGEST) || | 898 if ((match_type == AutocompleteMatchType::NAVSUGGEST) || |
907 (match_type == AutocompleteMatchType::NAVSUGGEST_PERSONALIZED)) { | 899 (match_type == AutocompleteMatchType::NAVSUGGEST_PERSONALIZED)) { |
908 // Do not blindly trust the URL coming from the server to be valid. | 900 // Do not blindly trust the URL coming from the server to be valid. |
909 GURL url( | 901 GURL url( |
910 url_fixer::FixupURL(base::UTF16ToUTF8(suggestion), std::string())); | 902 url_fixer::FixupURL(base::UTF16ToUTF8(suggestion), std::string())); |
911 if (url.is_valid() && allow_navsuggest) { | 903 if (url.is_valid() && allow_navsuggest) { |
912 base::string16 title; | 904 base::string16 title; |
913 if (descriptions != NULL) | 905 if (descriptions != NULL) |
914 descriptions->GetString(index, &title); | 906 descriptions->GetString(index, &title); |
915 results->navigation_results.push_back(NavigationResult( | 907 results->navigation_results.push_back(NavigationResult( |
916 *this, profile_, url, match_type, title, deletion_url, | 908 ChromeAutocompleteSchemeClassifier(profile_), url, match_type, |
917 is_keyword_result, relevance, relevances != NULL, input.text(), | 909 title, deletion_url, is_keyword_result, relevance, |
918 languages)); | 910 relevances != NULL, input.text(), languages)); |
919 } | 911 } |
920 } else { | 912 } else { |
921 base::string16 match_contents = suggestion; | 913 base::string16 match_contents = suggestion; |
922 base::string16 match_contents_prefix; | 914 base::string16 match_contents_prefix; |
923 base::string16 annotation; | 915 base::string16 annotation; |
924 base::string16 answer_contents; | 916 base::string16 answer_contents; |
925 base::string16 answer_type; | 917 base::string16 answer_type; |
926 std::string suggest_query_params; | 918 std::string suggest_query_params; |
927 | 919 |
928 if (suggestion_details) { | 920 if (suggestion_details) { |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1021 } | 1013 } |
1022 | 1014 |
1023 void BaseSearchProvider::OnDeletionComplete( | 1015 void BaseSearchProvider::OnDeletionComplete( |
1024 bool success, SuggestionDeletionHandler* handler) { | 1016 bool success, SuggestionDeletionHandler* handler) { |
1025 RecordDeletionResult(success); | 1017 RecordDeletionResult(success); |
1026 SuggestionDeletionHandlers::iterator it = std::find( | 1018 SuggestionDeletionHandlers::iterator it = std::find( |
1027 deletion_handlers_.begin(), deletion_handlers_.end(), handler); | 1019 deletion_handlers_.begin(), deletion_handlers_.end(), handler); |
1028 DCHECK(it != deletion_handlers_.end()); | 1020 DCHECK(it != deletion_handlers_.end()); |
1029 deletion_handlers_.erase(it); | 1021 deletion_handlers_.erase(it); |
1030 } | 1022 } |
OLD | NEW |