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

Unified Diff: chrome/browser/autocomplete/shortcuts_provider.cc

Issue 229733004: Omnibox: Make Bookmarks Set Inline_Autocompletion (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Peter's comments Created 6 years, 8 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/autocomplete/shortcuts_provider.cc
diff --git a/chrome/browser/autocomplete/shortcuts_provider.cc b/chrome/browser/autocomplete/shortcuts_provider.cc
index 1dfc7ebbc6d8f12f51e5d114f622452558417b3d..4cdbde5cbcc92909cd50dd304e4a35fe1230a4df 100644
--- a/chrome/browser/autocomplete/shortcuts_provider.cc
+++ b/chrome/browser/autocomplete/shortcuts_provider.cc
@@ -47,27 +47,6 @@ class DestinationURLEqualsURL {
const GURL url_;
};
-// Like URLPrefix::BestURLPrefix() except also handles the prefix of
-// "www.". This is needed because sometimes the string we're matching
-// against here (which comes from |fill_into_edit|) can start with
-// "www." without having a protocol at the beginning. Because "www."
-// is not on the default prefix list, we test for it explicitly here
-// and use that match if the default list didn't have a match or the
-// default list's match was shorter than it could've been.
-const URLPrefix* BestURLPrefixWithWWWCase(
- const base::string16& text,
- const base::string16& prefix_suffix) {
- CR_DEFINE_STATIC_LOCAL(URLPrefix, www_prefix,
- (base::ASCIIToUTF16("www."), 1));
- const URLPrefix* best_prefix = URLPrefix::BestURLPrefix(text, prefix_suffix);
- if ((best_prefix == NULL) ||
- (best_prefix->num_components < www_prefix.num_components)) {
- if (URLPrefix::PrefixMatch(www_prefix, text, prefix_suffix))
- best_prefix = &www_prefix;
- }
- return best_prefix;
-}
-
} // namespace
ShortcutsProvider::ShortcutsProvider(AutocompleteProviderListener* listener,
@@ -158,12 +137,10 @@ void ShortcutsProvider::GetMatches(const AutocompleteInput& input) {
base::string16 term_string(base::i18n::ToLower(input.text()));
DCHECK(!term_string.empty());
- base::string16 fixed_up_term_string(term_string);
AutocompleteInput fixed_up_input(input);
- if (FixupUserInput(&fixed_up_input))
- fixed_up_term_string = fixed_up_input.text();
- const GURL& term_string_as_gurl = URLFixerUpper::FixupURL(
- base::UTF16ToUTF8(term_string), std::string());
+ FixupUserInput(&fixed_up_input);
+ const GURL& input_as_gurl = URLFixerUpper::FixupURL(
+ base::UTF16ToUTF8(input.text()), std::string());
int max_relevance;
if (!OmniboxFieldTrial::ShortcutsScoringMaxRelevance(
@@ -178,8 +155,7 @@ void ShortcutsProvider::GetMatches(const AutocompleteInput& input) {
int relevance = CalculateScore(term_string, it->second, max_relevance);
if (relevance) {
matches_.push_back(ShortcutToACMatch(
- it->second, relevance, term_string, fixed_up_term_string,
- term_string_as_gurl, input.prevent_inline_autocomplete()));
+ it->second, relevance, input, fixed_up_input, input_as_gurl));
matches_.back().ComputeStrippedDestinationURL(profile_);
}
}
@@ -221,11 +197,10 @@ void ShortcutsProvider::GetMatches(const AutocompleteInput& input) {
AutocompleteMatch ShortcutsProvider::ShortcutToACMatch(
const history::ShortcutsDatabase::Shortcut& shortcut,
int relevance,
- const base::string16& term_string,
- const base::string16& fixed_up_term_string,
- const GURL& term_string_as_gurl,
- const bool prevent_inline_autocomplete) {
- DCHECK(!term_string.empty());
+ const AutocompleteInput& input,
+ const AutocompleteInput& fixed_up_input,
+ const GURL& input_as_gurl) {
+ DCHECK(!input.text().empty());
AutocompleteMatch match;
match.provider = this;
match.relevance = relevance;
@@ -252,48 +227,43 @@ AutocompleteMatch ShortcutsProvider::ShortcutToACMatch(
// If the match is a search query this is easy: simply check whether the
// user text is a prefix of the query. If the match is a navigation, we
// assume the fill_into_edit looks something like a URL, so we use
- // BestURLPrefix() to try and strip off any prefixes that the user might
- // not think would change the meaning, but would otherwise prevent inline
- // autocompletion. This allows, for example, the input of "foo.c" to
- // autocomplete to "foo.com" for a fill_into_edit of "http://foo.com".
+ // URLPrefix::ComputeMatchStartAndInlineAutocompleteOffset() to try and strip
+ // off any prefixes that the user might not think would change the meaning,
+ // but would otherwise prevent inline autocompletion. This allows, for
+ // example, the input of "foo.c" to autocomplete to "foo.com" for a
+ // fill_into_edit of "http://foo.com".
if (AutocompleteMatch::IsSearchType(match.type)) {
- if (StartsWith(match.fill_into_edit, term_string, false)) {
+ if (StartsWith(match.fill_into_edit, input.text(), false)) {
match.inline_autocompletion =
- match.fill_into_edit.substr(term_string.length());
+ match.fill_into_edit.substr(input.text().length());
match.allowed_to_be_default_match =
- !prevent_inline_autocomplete || match.inline_autocompletion.empty();
+ !input.prevent_inline_autocomplete() ||
+ match.inline_autocompletion.empty();
}
} else {
- const URLPrefix* best_prefix =
- BestURLPrefixWithWWWCase(match.fill_into_edit, term_string);
- const base::string16* matching_string = &term_string;
- // If we failed to find a best_prefix initially, try again using a
- // fixed-up version of the user input. This is especially useful to
- // get about: URLs to inline against chrome:// shortcuts. (about:
- // URLs are fixed up to the chrome:// scheme.)
- if ((best_prefix == NULL) && !fixed_up_term_string.empty() &&
- (fixed_up_term_string != term_string)) {
- best_prefix = BestURLPrefixWithWWWCase(
- match.fill_into_edit, fixed_up_term_string);
- matching_string = &fixed_up_term_string;
- }
- if (best_prefix != NULL) {
- match.inline_autocompletion = match.fill_into_edit.substr(
- best_prefix->prefix.length() + matching_string->length());
+ size_t match_start, inline_autocomplete_offset;
+ URLPrefix::ComputeMatchStartAndInlineAutocompleteOffset(
+ input, fixed_up_input, true, match.fill_into_edit,
+ &match_start, &inline_autocomplete_offset);
+ if (inline_autocomplete_offset != base::string16::npos) {
+ match.inline_autocompletion =
+ match.fill_into_edit.substr(inline_autocomplete_offset);
match.allowed_to_be_default_match =
- !prevent_inline_autocomplete || match.inline_autocompletion.empty();
+ !HistoryProvider::PreventInlineAutocomplete(input) ||
+ match.inline_autocompletion.empty();
} else {
// Also allow a user's input to be marked as default if it would be fixed
// up to the same thing as the fill_into_edit. This handles cases like
// the user input containing a trailing slash absent in fill_into_edit.
- match.allowed_to_be_default_match = (term_string_as_gurl ==
+ match.allowed_to_be_default_match = (input_as_gurl ==
URLFixerUpper::FixupURL(base::UTF16ToUTF8(match.fill_into_edit),
std::string()));
}
}
// Try to mark pieces of the contents and description as matches if they
- // appear in |term_string|.
+ // appear in |input.text()|.
+ const base::string16 term_string = base::i18n::ToLower(input.text());
WordMap terms_map(CreateWordMapForString(term_string));
if (!terms_map.empty()) {
match.contents_class = ClassifyAllMatchesInString(term_string, terms_map,
« no previous file with comments | « chrome/browser/autocomplete/shortcuts_provider.h ('k') | chrome/browser/autocomplete/shortcuts_provider_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698