Index: components/omnibox/search_suggestion_parser.cc |
diff --git a/components/omnibox/search_suggestion_parser.cc b/components/omnibox/search_suggestion_parser.cc |
index 89eabe519d005fe28b28583421232af2dfc6024d..4909d3ac75ee4d5aa131f6e4169a3e9539f8032c 100644 |
--- a/components/omnibox/search_suggestion_parser.cc |
+++ b/components/omnibox/search_suggestion_parser.cc |
@@ -4,6 +4,8 @@ |
#include "components/omnibox/search_suggestion_parser.h" |
+#include <algorithm> |
+ |
#include "base/i18n/icu_string_conversions.h" |
#include "base/json/json_string_value_serializer.h" |
#include "base/json/json_writer.h" |
@@ -152,8 +154,11 @@ void SearchSuggestionParser::SuggestResult::ClassifyMatchContents( |
lookup_text = input_text.substr(contents_index); |
} |
} |
- size_t lookup_position = match_contents_.find(lookup_text); |
- if (!allow_bolding_all && (lookup_position == base::string16::npos)) { |
+ // Do a case-insensitive search for |lookup_text|. |
+ base::string16::const_iterator lookup_position = std::search( |
+ match_contents_.begin(), match_contents_.end(), lookup_text.begin(), |
+ lookup_text.end(), base::CaseInsensitiveCompare<wchar_t>()); |
Peter Kasting
2015/05/11 23:40:37
wchar_t seems wrong, shouldn't it be char16?
Mark P
2015/05/11 23:45:56
Already fixed; the new patchset was being uploaded
|
+ if (!allow_bolding_all && (lookup_position == match_contents_.end())) { |
// Bail if the code below to update the bolding would bold the whole |
// string. Note that the string may already be entirely bolded; if |
// so, leave it as is. |
@@ -164,7 +169,7 @@ void SearchSuggestionParser::SuggestResult::ClassifyMatchContents( |
// 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_) { |
- if (lookup_position == base::string16::npos) { |
+ if (lookup_position == match_contents_.end()) { |
// 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. |
@@ -176,13 +181,14 @@ void SearchSuggestionParser::SuggestResult::ClassifyMatchContents( |
// 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 (lookup_position != 0) { |
+ const size_t lookup_index = lookup_position - match_contents_.begin(); |
+ if (lookup_index != 0) { |
match_contents_class_.push_back( |
ACMatchClassification(0, ACMatchClassification::MATCH)); |
} |
match_contents_class_.push_back( |
- ACMatchClassification(lookup_position, ACMatchClassification::NONE)); |
- size_t next_fragment_position = lookup_position + lookup_text.length(); |
+ ACMatchClassification(lookup_index, ACMatchClassification::NONE)); |
+ size_t next_fragment_position = lookup_index + lookup_text.length(); |
if (next_fragment_position < match_contents_.length()) { |
match_contents_class_.push_back(ACMatchClassification( |
next_fragment_position, ACMatchClassification::MATCH)); |