Commit d0e4ad0c authored by mpearson@chromium.org's avatar mpearson@chromium.org

Loosen DCHECK for Omnibox Extensions

Omnibox extensions don't need a default match from SearchProvider, and
indeed they no longer get them following some refactoring I did last week
( https://codereview.chromium.org/476263002/ ).

BUG=406026

Review URL: https://codereview.chromium.org/490383002

Cr-Commit-Position: refs/heads/master@{#291461}
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@291461 0039d316-1c4b-4281-b951-d872f2087c98
parent 6ef94873
...@@ -410,10 +410,15 @@ void SearchProvider::UpdateMatches() { ...@@ -410,10 +410,15 @@ void SearchProvider::UpdateMatches() {
// These blocks attempt to repair undesirable behavior by suggested // These blocks attempt to repair undesirable behavior by suggested
// relevances with minimal impact, preserving other suggested relevances. // relevances with minimal impact, preserving other suggested relevances.
if ((providers_.GetKeywordProviderURL() != NULL) && const TemplateURL* keyword_url = providers_.GetKeywordProviderURL();
const bool is_extension_keyword = (keyword_url != NULL) &&
(keyword_url->GetType() == TemplateURL::OMNIBOX_API_EXTENSION);
if ((keyword_url != NULL) && !is_extension_keyword &&
(FindTopMatch() == matches_.end())) { (FindTopMatch() == matches_.end())) {
// In keyword mode, disregard the keyword verbatim suggested relevance // In non-extension keyword mode, disregard the keyword verbatim suggested
// if necessary, so at least one match is allowed to be default. // relevance if necessary, so at least one match is allowed to be default.
// (In extension keyword mode this is not necessary because the extension
// will return a default match.)
keyword_results_.verbatim_relevance = -1; keyword_results_.verbatim_relevance = -1;
ConvertResultsToAutocompleteMatches(); ConvertResultsToAutocompleteMatches();
} }
...@@ -428,15 +433,17 @@ void SearchProvider::UpdateMatches() { ...@@ -428,15 +433,17 @@ void SearchProvider::UpdateMatches() {
keyword_results_.verbatim_relevance = -1; keyword_results_.verbatim_relevance = -1;
ConvertResultsToAutocompleteMatches(); ConvertResultsToAutocompleteMatches();
} }
if (FindTopMatch() == matches_.end()) { if (!is_extension_keyword && (FindTopMatch() == matches_.end())) {
// Guarantee that SearchProvider returns a legal default match. (The // Guarantee that SearchProvider returns a legal default match (except
// omnibox always needs at least one legal default match, and it relies // when in extension-based keyword mode). The omnibox always needs at
// on SearchProvider to always return one.) // least one legal default match, and it relies on SearchProvider in
// combination with KeywordProvider (for extension-based keywords) to
// always return one.
ApplyCalculatedRelevance(); ApplyCalculatedRelevance();
ConvertResultsToAutocompleteMatches(); ConvertResultsToAutocompleteMatches();
} }
DCHECK(!IsTopMatchSearchWithURLInput()); DCHECK(!IsTopMatchSearchWithURLInput());
DCHECK(FindTopMatch() != matches_.end()); DCHECK(is_extension_keyword || (FindTopMatch() != matches_.end()));
} }
UMA_HISTOGRAM_CUSTOM_COUNTS( UMA_HISTOGRAM_CUSTOM_COUNTS(
"Omnibox.SearchProviderMatches", matches_.size(), 1, 6, 7); "Omnibox.SearchProviderMatches", matches_.size(), 1, 6, 7);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment