diff options
| author | msw@chromium.org <msw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-06-20 20:03:59 +0000 |
|---|---|---|
| committer | msw@chromium.org <msw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-06-20 20:03:59 +0000 |
| commit | 695891bb988c755ca79881169e1a8ab544d127dd (patch) | |
| tree | a4cf9e1ec1b4be9e98447a54d52ee25ac41ce74d | |
| parent | 894beff8b6565603aec4e5fb966e8238fef2c128 (diff) | |
| download | chromium_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.cc | 13 | ||||
| -rw-r--r-- | chrome/browser/autocomplete/search_provider_unittest.cc | 6 |
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++) { |
