Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(299)

Side by Side Diff: chrome/browser/autocomplete/history_quick_provider.cc

Issue 6256010: Revert 72380 - Remove wstring from autocomplete.... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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/history_quick_provider.h" 5 #include "chrome/browser/autocomplete/history_quick_provider.h"
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/i18n/break_iterator.h" 8 #include "base/i18n/break_iterator.h"
9 #include "base/string_util.h" 9 #include "base/string_util.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
45 return; 45 return;
46 46
47 autocomplete_input_ = input; 47 autocomplete_input_ = input;
48 trim_http_ = !HasHTTPScheme(input.text()); 48 trim_http_ = !HasHTTPScheme(input.text());
49 49
50 // Do some fixup on the user input before matching against it, so we provide 50 // Do some fixup on the user input before matching against it, so we provide
51 // good results for local file paths, input with spaces, etc. 51 // good results for local file paths, input with spaces, etc.
52 // NOTE: This purposefully doesn't take input.desired_tld() into account; if 52 // NOTE: This purposefully doesn't take input.desired_tld() into account; if
53 // it did, then holding "ctrl" would change all the results from the 53 // it did, then holding "ctrl" would change all the results from the
54 // HistoryQuickProvider provider, not just the What You Typed Result. 54 // HistoryQuickProvider provider, not just the What You Typed Result.
55 const string16 fixed_text(FixupUserInput(input)); 55 const std::wstring fixed_text(FixupUserInput(input));
56 if (fixed_text.empty()) { 56 if (fixed_text.empty()) {
57 // Conceivably fixup could result in an empty string (although I don't 57 // Conceivably fixup could result in an empty string (although I don't
58 // have cases where this happens offhand). We can't do anything with 58 // have cases where this happens offhand). We can't do anything with
59 // empty input, so just bail; otherwise we'd crash later. 59 // empty input, so just bail; otherwise we'd crash later.
60 return; 60 return;
61 } 61 }
62 autocomplete_input_.set_text(fixed_text); 62 autocomplete_input_.set_text(fixed_text);
63 63
64 // TODO(pkasting): We should just block here until this loads. Any time 64 // TODO(pkasting): We should just block here until this loads. Any time
65 // someone unloads the history backend, we'll get inconsistent inline 65 // someone unloads the history backend, we'll get inconsistent inline
66 // autocomplete behavior here. 66 // autocomplete behavior here.
67 if (GetIndex()) { 67 if (GetIndex()) {
68 DoAutocomplete(); 68 DoAutocomplete();
69 UpdateStarredStateOfMatches(); 69 UpdateStarredStateOfMatches();
70 } 70 }
71 } 71 }
72 72
73 // HistoryQuickProvider matches are currently not deletable. 73 // HistoryQuickProvider matches are currently not deletable.
74 // TODO(mrossetti): Determine when a match should be deletable. 74 // TODO(mrossetti): Determine when a match should be deletable.
75 void HistoryQuickProvider::DeleteMatch(const AutocompleteMatch& match) {} 75 void HistoryQuickProvider::DeleteMatch(const AutocompleteMatch& match) {}
76 76
77 void HistoryQuickProvider::DoAutocomplete() { 77 void HistoryQuickProvider::DoAutocomplete() {
78 // Get the matching URLs from the DB. 78 // Get the matching URLs from the DB.
79 string16 term_string = autocomplete_input_.text(); 79 string16 term_string(WideToUTF16(autocomplete_input_.text()));
80 term_string = UnescapeURLComponent(term_string, 80 term_string = UnescapeURLComponent(term_string,
81 UnescapeRule::SPACES | UnescapeRule::URL_SPECIAL_CHARS); 81 UnescapeRule::SPACES | UnescapeRule::URL_SPECIAL_CHARS);
82 history::InMemoryURLIndex::String16Vector terms( 82 history::InMemoryURLIndex::String16Vector terms(
83 HistoryQuickProvider::WordVectorFromString16(term_string)); 83 HistoryQuickProvider::WordVectorFromString16(term_string));
84 ScoredHistoryMatches matches = GetIndex()->HistoryItemsForTerms(terms); 84 ScoredHistoryMatches matches = GetIndex()->HistoryItemsForTerms(terms);
85 85
86 size_t match_num = matches.size() - 1; 86 size_t match_num = matches.size() - 1;
87 for (ScoredHistoryMatches::const_iterator match_iter = matches.begin(); 87 for (ScoredHistoryMatches::const_iterator match_iter = matches.begin();
88 match_iter != matches.end(); ++match_iter, --match_num) { 88 match_iter != matches.end(); ++match_iter, --match_num) {
89 const ScoredHistoryMatch& history_match(*match_iter); 89 const ScoredHistoryMatch& history_match(*match_iter);
(...skipping 17 matching lines...) Expand all
107 DCHECK(match.destination_url.is_valid()); 107 DCHECK(match.destination_url.is_valid());
108 size_t inline_autocomplete_offset = 108 size_t inline_autocomplete_offset =
109 history_match.input_location + autocomplete_input_.text().length(); 109 history_match.input_location + autocomplete_input_.text().length();
110 const net::FormatUrlTypes format_types = net::kFormatUrlOmitAll & 110 const net::FormatUrlTypes format_types = net::kFormatUrlOmitAll &
111 ~((trim_http_ && !history_match.match_in_scheme) ? 111 ~((trim_http_ && !history_match.match_in_scheme) ?
112 0 : net::kFormatUrlOmitHTTP); 112 0 : net::kFormatUrlOmitHTTP);
113 std::string languages = 113 std::string languages =
114 match_type == WHAT_YOU_TYPED ? std::string() : languages_; 114 match_type == WHAT_YOU_TYPED ? std::string() : languages_;
115 match.fill_into_edit = 115 match.fill_into_edit =
116 AutocompleteInput::FormattedStringWithEquivalentMeaning(info.url(), 116 AutocompleteInput::FormattedStringWithEquivalentMeaning(info.url(),
117 net::FormatUrl(info.url(), languages, format_types, 117 UTF16ToWide(net::FormatUrl(info.url(), languages, format_types,
118 UnescapeRule::SPACES, NULL, NULL, 118 UnescapeRule::SPACES, NULL, NULL,
119 &inline_autocomplete_offset)); 119 &inline_autocomplete_offset)));
120 if (!autocomplete_input_.prevent_inline_autocomplete()) 120 if (!autocomplete_input_.prevent_inline_autocomplete())
121 match.inline_autocomplete_offset = inline_autocomplete_offset; 121 match.inline_autocomplete_offset = inline_autocomplete_offset;
122 DCHECK((match.inline_autocomplete_offset == string16::npos) || 122 DCHECK((match.inline_autocomplete_offset == std::wstring::npos) ||
123 (match.inline_autocomplete_offset <= match.fill_into_edit.length())); 123 (match.inline_autocomplete_offset <= match.fill_into_edit.length()));
124 124
125 size_t match_start = history_match.input_location; 125 size_t match_start = history_match.input_location;
126 match.contents = net::FormatUrl(info.url(), languages, format_types, 126 match.contents =
127 UnescapeRule::SPACES, NULL, NULL, 127 UTF16ToWide(net::FormatUrl(info.url(), languages, format_types,
128 &match_start); 128 UnescapeRule::SPACES, NULL, NULL,
129 if ((match_start != string16::npos) && 129 &match_start));
130 (inline_autocomplete_offset != string16::npos) && 130 if ((match_start != std::wstring::npos) &&
131 (inline_autocomplete_offset != std::wstring::npos) &&
131 (inline_autocomplete_offset != match_start)) { 132 (inline_autocomplete_offset != match_start)) {
132 DCHECK(inline_autocomplete_offset > match_start); 133 DCHECK(inline_autocomplete_offset > match_start);
133 AutocompleteMatch::ClassifyLocationInString(match_start, 134 AutocompleteMatch::ClassifyLocationInString(match_start,
134 inline_autocomplete_offset - match_start, match.contents.length(), 135 inline_autocomplete_offset - match_start, match.contents.length(),
135 ACMatchClassification::URL, &match.contents_class); 136 ACMatchClassification::URL, &match.contents_class);
136 } else { 137 } else {
137 AutocompleteMatch::ClassifyLocationInString(string16::npos, 0, 138 AutocompleteMatch::ClassifyLocationInString(std::wstring::npos, 0,
138 match.contents.length(), ACMatchClassification::URL, 139 match.contents.length(), ACMatchClassification::URL,
139 &match.contents_class); 140 &match.contents_class);
140 } 141 }
141 match.description = info.title(); 142 match.description = UTF16ToWide(info.title());
142 AutocompleteMatch::ClassifyMatchInString(autocomplete_input_.text(), 143 AutocompleteMatch::ClassifyMatchInString(autocomplete_input_.text(),
143 info.title(), 144 UTF16ToWide(info.title()),
144 ACMatchClassification::NONE, 145 ACMatchClassification::NONE,
145 &match.description_class); 146 &match.description_class);
146 147
147 return match; 148 return match;
148 } 149 }
149 150
150 history::InMemoryURLIndex* HistoryQuickProvider::GetIndex() { 151 history::InMemoryURLIndex* HistoryQuickProvider::GetIndex() {
151 if (index_for_testing_.get()) 152 if (index_for_testing_.get())
152 return index_for_testing_.get(); 153 return index_for_testing_.get();
153 154
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
189 case INLINE_AUTOCOMPLETE: 190 case INLINE_AUTOCOMPLETE:
190 return 1400; 191 return 1400;
191 192
192 case WHAT_YOU_TYPED: 193 case WHAT_YOU_TYPED:
193 return 1200; 194 return 1200;
194 195
195 default: 196 default:
196 return 900 + static_cast<int>(match_number); 197 return 900 + static_cast<int>(match_number);
197 } 198 }
198 } 199 }
OLDNEW
« no previous file with comments | « chrome/browser/autocomplete/history_provider_util.cc ('k') | chrome/browser/autocomplete/history_quick_provider_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698