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

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

Issue 11953016: Omnibox: Better Enforce Suggest Relevance Constraints in Keyword Mode (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: comments and spacing Created 7 years, 11 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/search_provider.cc
diff --git a/chrome/browser/autocomplete/search_provider.cc b/chrome/browser/autocomplete/search_provider.cc
index 713af35fd7e0e65b091f63f1af5cbb4e3990949e..3397aa56d68565e7b0ff4713215118feb7ca8de8 100644
--- a/chrome/browser/autocomplete/search_provider.cc
+++ b/chrome/browser/autocomplete/search_provider.cc
@@ -846,19 +846,29 @@ void SearchProvider::ConvertResultsToAutocompleteMatches() {
matches_.resize(max_total_matches);
}
-bool SearchProvider::IsTopMatchScoreTooLow() const {
- return matches_.front().relevance < CalculateRelevanceForVerbatim();
+bool SearchProvider::IsTopMatchScoreTooLow(
+ int keyword_search_what_you_typed_relevance) const {
+ return std::max(matches_.front().relevance,
+ keyword_search_what_you_typed_relevance) <
+ CalculateRelevanceForVerbatim();
}
-bool SearchProvider::IsTopMatchHighRankSearchForURL() const {
+bool SearchProvider::IsTopMatchHighRankSearchForURL(
+ int keyword_search_what_you_typed_relevance) const {
return input_.type() == AutocompleteInput::URL &&
- matches_.front().relevance > CalculateRelevanceForVerbatim() &&
- (matches_.front().type == AutocompleteMatch::SEARCH_SUGGEST ||
- matches_.front().type == AutocompleteMatch::SEARCH_WHAT_YOU_TYPED);
+ ((keyword_search_what_you_typed_relevance >
msw 2013/01/23 19:15:19 Shouldn't this only kick in when keyword_search_wh
+ matches_.front().relevance) ||
+ (matches_.front().relevance > CalculateRelevanceForVerbatim() &&
+ (matches_.front().type == AutocompleteMatch::SEARCH_SUGGEST ||
+ matches_.front().type ==
+ AutocompleteMatch::SEARCH_WHAT_YOU_TYPED)));
}
-bool SearchProvider::IsTopMatchNotInlinable() const {
- return matches_.front().type != AutocompleteMatch::SEARCH_WHAT_YOU_TYPED &&
+bool SearchProvider::IsTopMatchNotInlinable(
+ int keyword_search_what_you_typed_relevance) const {
+ return (keyword_search_what_you_typed_relevance <
+ matches_.front().relevance) &&
+ matches_.front().type != AutocompleteMatch::SEARCH_WHAT_YOU_TYPED &&
matches_.front().type != AutocompleteMatch::URL_WHAT_YOU_TYPED &&
matches_.front().inline_autocomplete_offset == string16::npos &&
matches_.front().fill_into_edit != input_.text();
@@ -867,12 +877,17 @@ bool SearchProvider::IsTopMatchNotInlinable() const {
void SearchProvider::UpdateMatches() {
ConvertResultsToAutocompleteMatches();
+ const int keyword_search_what_you_typed_relevance =
+ providers_.keyword_provider().empty() ? 0 :
+ KeywordProvider::CalculateRelevance(input_.type(), true, true,
msw 2013/01/23 19:15:19 It seems odd that you're just passing in true for
+ input_.prefer_keyword(), input_.allow_exact_keyword_match());
+
// Check constraints that may be violated by suggested relevances.
if (!matches_.empty() &&
(has_suggested_relevance_ || verbatim_relevance_ >= 0)) {
// These two blocks attempt to repair undesriable behavior by suggested
// relevances with minimal impact, preserving other suggested relevances.
- if (IsTopMatchScoreTooLow()) {
+ if (IsTopMatchScoreTooLow(keyword_search_what_you_typed_relevance)) {
// Disregard the suggested verbatim relevance if the top score is below
// the usual verbatim value. For example, a BarProvider may rely on
// SearchProvider's verbatim or inlineable matches for input "foo" to
@@ -880,7 +895,8 @@ void SearchProvider::UpdateMatches() {
verbatim_relevance_ = -1;
ConvertResultsToAutocompleteMatches();
}
- if (IsTopMatchHighRankSearchForURL()) {
+ if (IsTopMatchHighRankSearchForURL(
+ keyword_search_what_you_typed_relevance)) {
// Disregard the suggested search and verbatim relevances if the input
// type is URL and the top match is a highly-ranked search suggestion.
// For example, prevent a search for "foo.com" from outranking another
@@ -890,7 +906,7 @@ void SearchProvider::UpdateMatches() {
verbatim_relevance_ = -1;
ConvertResultsToAutocompleteMatches();
}
- if (IsTopMatchNotInlinable()) {
+ if (IsTopMatchNotInlinable(keyword_search_what_you_typed_relevance)) {
// Disregard suggested relevances if the top match is not SWYT, inlinable,
// or URL_WHAT_YOU_TYPED (which may be top match regardless of inlining).
// For example, input "foo" should not invoke a search for "bar", which
@@ -898,9 +914,10 @@ void SearchProvider::UpdateMatches() {
ApplyCalculatedRelevance();
ConvertResultsToAutocompleteMatches();
}
- DCHECK(!IsTopMatchScoreTooLow());
- DCHECK(!IsTopMatchHighRankSearchForURL());
- DCHECK(!IsTopMatchNotInlinable());
+ DCHECK(!IsTopMatchScoreTooLow(keyword_search_what_you_typed_relevance));
+ DCHECK(!IsTopMatchHighRankSearchForURL(
+ keyword_search_what_you_typed_relevance));
+ DCHECK(!IsTopMatchNotInlinable(keyword_search_what_you_typed_relevance));
}
UpdateStarredStateOfMatches();

Powered by Google App Engine
This is Rietveld 408576698