| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/search_provider.h" | 5 #include "chrome/browser/autocomplete/search_provider.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <cmath> | 8 #include <cmath> |
| 9 | 9 |
| 10 #include "app/l10n_util.h" | 10 #include "app/l10n_util.h" |
| 11 #include "base/callback.h" | 11 #include "base/callback.h" |
| (...skipping 398 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 410 have_suggest_results_ = false; | 410 have_suggest_results_ = false; |
| 411 } | 411 } |
| 412 | 412 |
| 413 URLFetcher* SearchProvider::CreateSuggestFetcher(int id, | 413 URLFetcher* SearchProvider::CreateSuggestFetcher(int id, |
| 414 const TemplateURL& provider, | 414 const TemplateURL& provider, |
| 415 const std::wstring& text) { | 415 const std::wstring& text) { |
| 416 const TemplateURLRef* const suggestions_url = provider.suggestions_url(); | 416 const TemplateURLRef* const suggestions_url = provider.suggestions_url(); |
| 417 DCHECK(suggestions_url->SupportsReplacement()); | 417 DCHECK(suggestions_url->SupportsReplacement()); |
| 418 URLFetcher* fetcher = URLFetcher::Create(id, | 418 URLFetcher* fetcher = URLFetcher::Create(id, |
| 419 GURL(suggestions_url->ReplaceSearchTerms( | 419 GURL(suggestions_url->ReplaceSearchTerms( |
| 420 provider, text, TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, | 420 provider, WideToUTF16Hack(text), |
| 421 std::wstring())), | 421 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())), |
| 422 URLFetcher::GET, this); | 422 URLFetcher::GET, this); |
| 423 fetcher->set_request_context(profile_->GetRequestContext()); | 423 fetcher->set_request_context(profile_->GetRequestContext()); |
| 424 fetcher->Start(); | 424 fetcher->Start(); |
| 425 return fetcher; | 425 return fetcher; |
| 426 } | 426 } |
| 427 | 427 |
| 428 bool SearchProvider::ParseSuggestResults(Value* root_val, | 428 bool SearchProvider::ParseSuggestResults(Value* root_val, |
| 429 bool is_keyword, | 429 bool is_keyword, |
| 430 const std::wstring& input_text, | 430 const std::wstring& input_text, |
| 431 SuggestResults* suggest_results) { | 431 SuggestResults* suggest_results) { |
| (...skipping 339 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 771 | 771 |
| 772 // When the user forced a query, we need to make sure all the fill_into_edit | 772 // When the user forced a query, we need to make sure all the fill_into_edit |
| 773 // values preserve that property. Otherwise, if the user starts editing a | 773 // values preserve that property. Otherwise, if the user starts editing a |
| 774 // suggestion, non-Search results will suddenly appear. | 774 // suggestion, non-Search results will suddenly appear. |
| 775 size_t search_start = 0; | 775 size_t search_start = 0; |
| 776 if (input_.type() == AutocompleteInput::FORCED_QUERY) { | 776 if (input_.type() == AutocompleteInput::FORCED_QUERY) { |
| 777 match.fill_into_edit.assign(L"?"); | 777 match.fill_into_edit.assign(L"?"); |
| 778 ++search_start; | 778 ++search_start; |
| 779 } | 779 } |
| 780 if (is_keyword) { | 780 if (is_keyword) { |
| 781 match.fill_into_edit.append(providers_.keyword_provider().keyword() + L" "); | 781 match.fill_into_edit.append(UTF16ToWideHack( |
| 782 providers_.keyword_provider().keyword() + char16(' '))); |
| 782 match.template_url = &providers_.keyword_provider(); | 783 match.template_url = &providers_.keyword_provider(); |
| 783 } | 784 } |
| 784 match.fill_into_edit.append(query_string); | 785 match.fill_into_edit.append(query_string); |
| 785 // Not all suggestions start with the original input. | 786 // Not all suggestions start with the original input. |
| 786 if (!prevent_inline_autocomplete && | 787 if (!prevent_inline_autocomplete && |
| 787 !match.fill_into_edit.compare(search_start, input_text.length(), | 788 !match.fill_into_edit.compare(search_start, input_text.length(), |
| 788 input_text)) | 789 input_text)) |
| 789 match.inline_autocomplete_offset = search_start + input_text.length(); | 790 match.inline_autocomplete_offset = search_start + input_text.length(); |
| 790 | 791 |
| 791 const TemplateURLRef* const search_url = provider.url(); | 792 const TemplateURLRef* const search_url = provider.url(); |
| 792 DCHECK(search_url->SupportsReplacement()); | 793 DCHECK(search_url->SupportsReplacement()); |
| 793 match.destination_url = | 794 match.destination_url = |
| 794 GURL(search_url->ReplaceSearchTerms(provider, | 795 GURL(search_url->ReplaceSearchTerms(provider, |
| 795 query_string, | 796 WideToUTF16Hack(query_string), |
| 796 accepted_suggestion, | 797 accepted_suggestion, |
| 797 input_text)); | 798 WideToUTF16Hack(input_text))); |
| 798 | 799 |
| 799 // Search results don't look like URLs. | 800 // Search results don't look like URLs. |
| 800 match.transition = | 801 match.transition = |
| 801 is_keyword ? PageTransition::KEYWORD : PageTransition::GENERATED; | 802 is_keyword ? PageTransition::KEYWORD : PageTransition::GENERATED; |
| 802 | 803 |
| 803 // Try to add |match| to |map|. If a match for |query_string| is already in | 804 // Try to add |match| to |map|. If a match for |query_string| is already in |
| 804 // |map|, replace it if |match| is more relevant. | 805 // |map|, replace it if |match| is more relevant. |
| 805 // NOTE: Keep this ToLower() call in sync with url_database.cc. | 806 // NOTE: Keep this ToLower() call in sync with url_database.cc. |
| 806 const std::pair<MatchMap::iterator, bool> i = map->insert( | 807 const std::pair<MatchMap::iterator, bool> i = map->insert( |
| 807 std::pair<std::wstring, AutocompleteMatch>( | 808 std::pair<std::wstring, AutocompleteMatch>( |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 865 | 866 |
| 866 for (ACMatches::iterator i = matches_.begin(); i != matches_.end(); ++i) { | 867 for (ACMatches::iterator i = matches_.begin(); i != matches_.end(); ++i) { |
| 867 AutocompleteMatch& match = *i; | 868 AutocompleteMatch& match = *i; |
| 868 switch (match.type) { | 869 switch (match.type) { |
| 869 case AutocompleteMatch::SEARCH_WHAT_YOU_TYPED: | 870 case AutocompleteMatch::SEARCH_WHAT_YOU_TYPED: |
| 870 case AutocompleteMatch::SEARCH_HISTORY: | 871 case AutocompleteMatch::SEARCH_HISTORY: |
| 871 case AutocompleteMatch::SEARCH_SUGGEST: | 872 case AutocompleteMatch::SEARCH_SUGGEST: |
| 872 match.description.assign( | 873 match.description.assign( |
| 873 UTF16ToWideHack(l10n_util::GetStringFUTF16( | 874 UTF16ToWideHack(l10n_util::GetStringFUTF16( |
| 874 IDS_AUTOCOMPLETE_SEARCH_DESCRIPTION, | 875 IDS_AUTOCOMPLETE_SEARCH_DESCRIPTION, |
| 875 WideToUTF16Hack(providers_.default_provider(). | 876 providers_.default_provider(). |
| 876 AdjustedShortNameForLocaleDirection())))); | 877 AdjustedShortNameForLocaleDirection()))); |
| 877 match.description_class.push_back( | 878 match.description_class.push_back( |
| 878 ACMatchClassification(0, ACMatchClassification::DIM)); | 879 ACMatchClassification(0, ACMatchClassification::DIM)); |
| 879 // Only the first search match gets a description. | 880 // Only the first search match gets a description. |
| 880 return; | 881 return; |
| 881 | 882 |
| 882 default: | 883 default: |
| 883 break; | 884 break; |
| 884 } | 885 } |
| 885 } | 886 } |
| 886 } | 887 } |
| OLD | NEW |