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

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

Issue 18878007: Omnibox: Make the Controller Reorder Matches for Inlining (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Harry's comments Created 7 years, 4 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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 <vector> 7 #include <vector>
8 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after
201 } 201 }
202 } 202 }
203 203
204 // Loop over every result and add it to matches_. In the process, 204 // Loop over every result and add it to matches_. In the process,
205 // guarantee that scores are decreasing. |max_match_score| keeps 205 // guarantee that scores are decreasing. |max_match_score| keeps
206 // track of the highest score we can assign to any later results we 206 // track of the highest score we can assign to any later results we
207 // see. Also, if we're not allowing inline autocompletions in 207 // see. Also, if we're not allowing inline autocompletions in
208 // general or the current best suggestion isn't inlineable, 208 // general or the current best suggestion isn't inlineable,
209 // artificially reduce the starting |max_match_score| (which 209 // artificially reduce the starting |max_match_score| (which
210 // therefore applies to all results) to something low enough that 210 // therefore applies to all results) to something low enough that
211 // guarantees no result will be offered as an autocomplete 211 // guarantees no result will be offered as an inline autocomplete
212 // suggestion. Also do a similar reduction if we think there will be 212 // suggestion. Also do a similar reduction if we think there will be
213 // a URL-what-you-typed match. (We want URL-what-you-typed matches for 213 // a URL-what-you-typed match. (We want URL-what-you-typed matches for
214 // visited URLs to beat out any longer URLs, no matter how frequently 214 // visited URLs to beat out any longer URLs, no matter how frequently
215 // they're visited.) The strength of this last reduction depends on the 215 // they're visited.) The strength of this last reduction depends on the
216 // likely score for the URL-what-you-typed result. 216 // likely score for the URL-what-you-typed result.
217 217
218 // |template_url_service| or |template_url| can be NULL in unit tests. 218 // |template_url_service| or |template_url| can be NULL in unit tests.
219 TemplateURLService* template_url_service = 219 TemplateURLService* template_url_service =
220 TemplateURLServiceFactory::GetForProfile(profile_); 220 TemplateURLServiceFactory::GetForProfile(profile_);
221 TemplateURL* template_url = template_url_service ? 221 TemplateURL* template_url = template_url_service ?
222 template_url_service->GetDefaultSearchProvider() : NULL; 222 template_url_service->GetDefaultSearchProvider() : NULL;
223 int max_match_score = (PreventInlineAutocomplete(autocomplete_input_) || 223 int max_match_score =
224 !matches.begin()->can_inline) ? 224 (!OmniboxFieldTrial::ReorderForLegalDefaultMatch(
225 autocomplete_input_.current_page_classification()) &&
Peter Kasting 2013/08/06 22:56:16 Nit: No parens around unary operator application
Mark P 2013/08/07 00:44:31 It's not around the unary operator; its around the
226 (PreventInlineAutocomplete(autocomplete_input_) ||
227 !matches.begin()->can_inline)) ?
225 (AutocompleteResult::kLowestDefaultScore - 1) : 228 (AutocompleteResult::kLowestDefaultScore - 1) :
226 matches.begin()->raw_score; 229 matches.begin()->raw_score;
227 if (will_have_url_what_you_typed_match_first) { 230 if (will_have_url_what_you_typed_match_first) {
228 max_match_score = std::min(max_match_score, 231 max_match_score = std::min(max_match_score,
229 url_what_you_typed_match_score - 1); 232 url_what_you_typed_match_score - 1);
230 } 233 }
231 for (ScoredHistoryMatches::const_iterator match_iter = matches.begin(); 234 for (ScoredHistoryMatches::const_iterator match_iter = matches.begin();
232 match_iter != matches.end(); ++match_iter) { 235 match_iter != matches.end(); ++match_iter) {
233 const ScoredHistoryMatch& history_match(*match_iter); 236 const ScoredHistoryMatch& history_match(*match_iter);
234 // Culls results corresponding to queries from the default search engine. 237 // Culls results corresponding to queries from the default search engine.
(...skipping 30 matching lines...) Expand all
265 AutocompleteInput::FormattedStringWithEquivalentMeaning(info.url(), 268 AutocompleteInput::FormattedStringWithEquivalentMeaning(info.url(),
266 net::FormatUrlWithOffsets(info.url(), languages_, format_types, 269 net::FormatUrlWithOffsets(info.url(), languages_, format_types,
267 net::UnescapeRule::SPACES, NULL, NULL, &offsets)); 270 net::UnescapeRule::SPACES, NULL, NULL, &offsets));
268 history::TermMatches new_matches = 271 history::TermMatches new_matches =
269 ReplaceOffsetsInTermMatches(history_match.url_matches, offsets); 272 ReplaceOffsetsInTermMatches(history_match.url_matches, offsets);
270 match.contents = net::FormatUrl(info.url(), languages_, format_types, 273 match.contents = net::FormatUrl(info.url(), languages_, format_types,
271 net::UnescapeRule::SPACES, NULL, NULL, NULL); 274 net::UnescapeRule::SPACES, NULL, NULL, NULL);
272 match.contents_class = 275 match.contents_class =
273 SpansFromTermMatch(new_matches, match.contents.length(), true); 276 SpansFromTermMatch(new_matches, match.contents.length(), true);
274 277
275 if (history_match.can_inline) { 278 if (!history_match.can_inline ||
Peter Kasting 2013/08/06 22:56:16 Nit: Shorter: match.allowed_to_be_default_match
Mark P 2013/08/07 00:44:31 Yup, that's shorter and no less clear.
279 PreventInlineAutocomplete(autocomplete_input_)) {
280 match.allowed_to_be_default_match = false;
281 } else {
276 DCHECK(!new_matches.empty()); 282 DCHECK(!new_matches.empty());
277 size_t inline_autocomplete_offset = new_matches[0].offset + 283 size_t inline_autocomplete_offset = new_matches[0].offset +
278 new_matches[0].length; 284 new_matches[0].length;
285 match.allowed_to_be_default_match = true;
279 // |inline_autocomplete_offset| may be beyond the end of the 286 // |inline_autocomplete_offset| may be beyond the end of the
280 // |fill_into_edit| if the user has typed an URL with a scheme and the 287 // |fill_into_edit| if the user has typed an URL with a scheme and the
281 // last character typed is a slash. That slash is removed by the 288 // last character typed is a slash. That slash is removed by the
282 // FormatURLWithOffsets call above. 289 // FormatURLWithOffsets call above.
283 if (inline_autocomplete_offset < match.fill_into_edit.length()) { 290 if (inline_autocomplete_offset < match.fill_into_edit.length()) {
284 match.inline_autocompletion = 291 match.inline_autocompletion =
285 match.fill_into_edit.substr(inline_autocomplete_offset); 292 match.fill_into_edit.substr(inline_autocomplete_offset);
286 } 293 }
287 } 294 }
288 295
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
334 do { 341 do {
335 offset += matches[i].length; 342 offset += matches[i].length;
336 ++i; 343 ++i;
337 } while ((i < match_count) && (offset == matches[i].offset)); 344 } while ((i < match_count) && (offset == matches[i].offset));
338 if (offset < text_length) 345 if (offset < text_length)
339 spans.push_back(ACMatchClassification(offset, url_style)); 346 spans.push_back(ACMatchClassification(offset, url_style));
340 } 347 }
341 348
342 return spans; 349 return spans;
343 } 350 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698