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

Unified Diff: components/omnibox/browser/url_index_private_data.cc

Issue 2187343002: Generating autocomplete results with and without word breaks in the Omnibox. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 5 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
« no previous file with comments | « AUTHORS ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/omnibox/browser/url_index_private_data.cc
diff --git a/components/omnibox/browser/url_index_private_data.cc b/components/omnibox/browser/url_index_private_data.cc
index 54123a335ca874ae527c5babe079cf242c08fc5e..e91bd928f580e15a638848c1d5e78df860706c58 100644
--- a/components/omnibox/browser/url_index_private_data.cc
+++ b/components/omnibox/browser/url_index_private_data.cc
@@ -161,10 +161,26 @@ ScoredHistoryMatches URLIndexPrivateData::HistoryItemsForTerms(
// If cursor position is set and useful (not at either end of the
// string), allow the search string to be broken at cursor position.
// We do this by pretending there's a space where the cursor is.
+ // Furthermore, we also keep a copy of the original search string
+ // without the pretend space. The rationale behind this is to
+ // build the History ID Set with both the search string with and
+ // without the pretend space.
+ base::string16 search_string_without_break;
Peter Kasting 2016/07/28 20:32:20 It would be nice to avoid the need for this temp a
Lavar Askew 2016/08/10 15:24:03 Done.
if ((cursor_position != base::string16::npos) &&
(cursor_position < search_string.length()) &&
(cursor_position > 0)) {
- search_string.insert(cursor_position, base::ASCIIToUTF16(" "));
+
+ base::string16 blank_space =
+ base::ASCIIToUTF16(" ");
+
+ if ((search_string.compare(cursor_position, 1, blank_space) != 0) ||
+ (search_string.compare(cursor_position - 1, 1, blank_space) != 0) ||
Peter Kasting 2016/07/28 20:32:20 I suspect that rather than comparing against " " s
Lavar Askew 2016/08/10 15:24:03 Done. I have removed this code after following yo
+ (search_string.compare(cursor_position + 1, 1, blank_space) != 0)) {
Peter Kasting 2016/07/28 20:32:20 I think you don't want to compare cursor_position
Lavar Askew 2016/08/10 15:24:03 Done. I have removed this code.
+
+ search_string_without_break = search_string;
+
+ search_string.insert(cursor_position, blank_space);
+ }
}
pre_filter_item_count_ = 0;
post_filter_item_count_ = 0;
@@ -198,6 +214,30 @@ ScoredHistoryMatches URLIndexPrivateData::HistoryItemsForTerms(
HistoryIDSet history_id_set = HistoryIDSetFromWords(lower_words);
+ // Add to history_id_set the ids that are related to the original search
+ // string without the break.
+ if (!search_string_without_break.empty() &&
+ search_string.compare(search_string_without_break) != 0) {
Peter Kasting 2016/07/28 20:32:20 It looks to me as if this copy-and-pastes some of
Lavar Askew 2016/08/10 15:24:03 Done.
+ base::string16 lower_raw_string_without_break(
+ base::i18n::ToLower(search_string_without_break));
+
+ base::string16 lower_unescaped_string_without_break =
+ net::UnescapeURLComponent(lower_raw_string_without_break,
+ net::UnescapeRule::SPACES | net::UnescapeRule::PATH_SEPARATORS |
+ net::UnescapeRule::URL_SPECIAL_CHARS_EXCEPT_PATH_SEPARATORS);
+
+ String16Vector lower_words_without_break(
+ String16VectorFromString16(
+ lower_unescaped_string_without_break, false, nullptr));
+
+ HistoryIDSet history_id_set_without_break =
+ HistoryIDSetFromWords(lower_words_without_break);
+
+ if (history_id_set_without_break.size() > 0) {
+ history_id_set.insert(history_id_set_without_break.begin(),
+ history_id_set_without_break.end());
+ }
+ }
// Trim the candidate pool if it is large. Note that we do not filter out
// items that do not contain the search terms as proper substrings -- doing
// so is the performance-costly operation we are trying to avoid in order
« no previous file with comments | « AUTHORS ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698