summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormsw@chromium.org <msw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-06-20 20:03:59 +0000
committermsw@chromium.org <msw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-06-20 20:03:59 +0000
commit695891bb988c755ca79881169e1a8ab544d127dd (patch)
treea4cf9e1ec1b4be9e98447a54d52ee25ac41ce74d
parent894beff8b6565603aec4e5fb966e8238fef2c128 (diff)
downloadchromium_src-695891bb988c755ca79881169e1a8ab544d127dd.zip
chromium_src-695891bb988c755ca79881169e1a8ab544d127dd.tar.gz
chromium_src-695891bb988c755ca79881169e1a8ab544d127dd.tar.bz2
Merge 142922 - Only use verbatimrelevance with other suggestions available.
PROBLEM: The suggest server may (and in some cases does) return no matches and verbatimrelevance:0, which instructs the SearchProvider to produce no matches whatsoever... This is problematic as it may leave the user unable to search from the omnibox. This may also occur if all the older results are trimmed for being unable to inline autocomplete newer input (given valid results and verbatimrelevance:0 from an older query). SOLUTION: Only respect verbatimrelevance:0 (suppression of search-what-you-typed) if there are other search or navigation results upon match generation. BUG=125871,132942 TEST=Updated unit test; manual. Review URL: https://chromiumcodereview.appspot.com/10559053 TBR=msw@chromium.org Review URL: https://chromiumcodereview.appspot.com/10577041 git-svn-id: svn://svn.chromium.org/chrome/branches/1180/src@143243 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/autocomplete/search_provider.cc13
-rw-r--r--chrome/browser/autocomplete/search_provider_unittest.cc6
2 files changed, 18 insertions, 1 deletions
diff --git a/chrome/browser/autocomplete/search_provider.cc b/chrome/browser/autocomplete/search_provider.cc
index 4da6005..256b188 100644
--- a/chrome/browser/autocomplete/search_provider.cc
+++ b/chrome/browser/autocomplete/search_provider.cc
@@ -931,8 +931,19 @@ void SearchProvider::AddSuggestResultsToMap(const SuggestResults& results,
}
int SearchProvider::GetVerbatimRelevance() const {
- if (verbatim_relevance_ >= 0 && !input_.prevent_inline_autocomplete())
+ // Use the suggested verbatim relevance score if it is non-negative (valid),
+ // if inline autocomplete isn't prevented (always show verbatim on backspace),
+ // and if there is at least one other suggestion from the default provider
+ // (otherwise, if the default provider returned no matches and was still able
+ // to suppress verbatim, the user would have no search/nav matches and may be
+ // left unable to search from the omnibox).
+ // Check for results on each verbatim calculation, as results from older
+ // queries (on previous input) may be trimmed for failing to inline new input.
+ if (verbatim_relevance_ >= 0 && !input_.prevent_inline_autocomplete() &&
+ (!default_suggest_results_.empty() ||
+ !default_navigation_results_.empty())) {
return verbatim_relevance_;
+ }
return CalculateRelevanceForVerbatim();
}
diff --git a/chrome/browser/autocomplete/search_provider_unittest.cc b/chrome/browser/autocomplete/search_provider_unittest.cc
index d1b335d..8d2d385 100644
--- a/chrome/browser/autocomplete/search_provider_unittest.cc
+++ b/chrome/browser/autocomplete/search_provider_unittest.cc
@@ -856,6 +856,12 @@ TEST_F(SearchProviderTest, SuggestRelevanceExperiment) {
"{\"google:suggestrelevance\":[9998, 9997, 9999],"
"\"google:verbatimrelevance\":0}]",
{ "a2", "a", "a1", kNotApplicable } },
+
+ // Ensure that verbatim is always generated without other suggestions.
+ { "[\"a\",[],[],[],{\"google:verbatimrelevance\":1}]",
+ { "a", kNotApplicable, kNotApplicable, kNotApplicable } },
+ { "[\"a\",[],[],[],{\"google:verbatimrelevance\":0}]",
+ { "a", kNotApplicable, kNotApplicable, kNotApplicable } },
};
for (size_t i = 0; i < ARRAYSIZE_UNSAFE(cases); i++) {