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

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

Issue 98463012: Infinite Suggest for mac (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed comments, updated bug Created 7 years 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
« no previous file with comments | « no previous file | chrome/browser/ui/cocoa/omnibox/omnibox_popup_cell.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/autocomplete/search_provider.cc
diff --git a/chrome/browser/autocomplete/search_provider.cc b/chrome/browser/autocomplete/search_provider.cc
index 143e4661205fe63682dea1a77529a34811f1e0dd..d53fb405dcfdba11bcae8897473c8758ac2b1ecd 100644
--- a/chrome/browser/autocomplete/search_provider.cc
+++ b/chrome/browser/autocomplete/search_provider.cc
@@ -109,13 +109,19 @@ void SetAndClassifyMatchContents(const base::string16& query_string,
const base::string16& match_contents,
AutocompleteMatch* match) {
match->contents = match_contents.empty() ? query_string : match_contents;
-
+ base::string16 lookup_text = input_text;
+ if (match->type == AutocompleteMatchType::SEARCH_SUGGEST_INFINITE) {
+ const base::string16 prefix =
+ query_string.substr(0, query_string.rfind(match_contents));
Mark P 2013/12/13 16:58:01 What if query_string does not contain match_conten
Anuj 2013/12/13 18:57:49 Done.
+ lookup_text = input_text.find(prefix) == 0 ?
+ input_text.substr(prefix.length()) : input_text;
Mark P 2013/12/13 16:58:01 Should the latter case ever happen on matches mark
Anuj 2013/12/13 18:57:49 It should never happen, but like you said in previ
Mark P 2013/12/14 00:49:53 Okay, But why don't you structure this the same w
Anuj 2013/12/16 02:53:19 Done.
+ }
// We do intra-string highlighting for suggestions - the suggested segment
// will be highlighted, e.g. for input_text = "you" the suggestion may be
// "youtube", so we'll bold the "tube" section: you*tube*.
- if (input_text != match_contents) {
- size_t input_position = match->contents.find(input_text);
- if (input_position == base::string16::npos) {
+ if (lookup_text != match_contents) {
+ size_t lookup_position = match->contents.find(lookup_text);
+ if (lookup_position == base::string16::npos) {
// The input text is not a substring of the query string, e.g. input
// text is "slasdot" and the query string is "slashdot", so we bold the
// whole thing.
@@ -129,13 +135,13 @@ void SetAndClassifyMatchContents(const base::string16& query_string,
// short as a single character highlighted in a query suggestion result,
// e.g. for input text "s" and query string "southwest airlines", it
// looks odd if both the first and last s are highlighted.
- if (input_position != 0) {
+ if (lookup_position != 0) {
match->contents_class.push_back(ACMatchClassification(
0, ACMatchClassification::MATCH));
}
match->contents_class.push_back(
- ACMatchClassification(input_position, ACMatchClassification::NONE));
- size_t next_fragment_position = input_position + input_text.length();
+ ACMatchClassification(lookup_position, ACMatchClassification::NONE));
+ size_t next_fragment_position = lookup_position + lookup_text.length();
if (next_fragment_position < query_string.length()) {
match->contents_class.push_back(ACMatchClassification(
next_fragment_position, ACMatchClassification::MATCH));
« no previous file with comments | « no previous file | chrome/browser/ui/cocoa/omnibox/omnibox_popup_cell.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698