Index: chrome/browser/autocomplete/shortcuts_provider.cc |
diff --git a/chrome/browser/autocomplete/shortcuts_provider.cc b/chrome/browser/autocomplete/shortcuts_provider.cc |
index cf121be0bd3a49eefebb8635c947d4decd04ccb9..06f345546a6ba1ed88da1c455df5f70b7f7db775 100644 |
--- a/chrome/browser/autocomplete/shortcuts_provider.cc |
+++ b/chrome/browser/autocomplete/shortcuts_provider.cc |
@@ -54,8 +54,7 @@ ShortcutsProvider::ShortcutsProvider(AutocompleteProviderListener* listener, |
: AutocompleteProvider(listener, profile, |
AutocompleteProvider::TYPE_SHORTCUTS), |
languages_(profile_->GetPrefs()->GetString(prefs::kAcceptLanguages)), |
- initialized_(false), |
- max_relevance_(AutocompleteResult::kLowestDefaultScore - 1) { |
+ initialized_(false) { |
scoped_refptr<history::ShortcutsBackend> backend = |
ShortcutsBackendFactory::GetForProfile(profile_); |
if (backend.get()) { |
@@ -63,9 +62,6 @@ ShortcutsProvider::ShortcutsProvider(AutocompleteProviderListener* listener, |
if (backend->initialized()) |
initialized_ = true; |
} |
- int max_relevance; |
- if (OmniboxFieldTrial::ShortcutsScoringMaxRelevance(&max_relevance)) |
- max_relevance_ = max_relevance; |
} |
void ShortcutsProvider::Start(const AutocompleteInput& input, |
@@ -157,12 +153,17 @@ void ShortcutsProvider::GetMatches(const AutocompleteInput& input) { |
string16 term_string(base::i18n::ToLower(input.text())); |
DCHECK(!term_string.empty()); |
+ int max_relevance; |
+ if (!OmniboxFieldTrial::ShortcutsScoringMaxRelevance( |
+ input.current_page_classification(), &max_relevance)) |
+ max_relevance = AutocompleteResult::kLowestDefaultScore - 1; |
+ |
for (history::ShortcutsBackend::ShortcutMap::const_iterator it = |
FindFirstMatch(term_string, backend.get()); |
it != backend->shortcuts_map().end() && |
StartsWith(it->first, term_string, true); ++it) { |
// Don't return shortcuts with zero relevance. |
- int relevance = CalculateScore(term_string, it->second); |
+ int relevance = CalculateScore(term_string, it->second, max_relevance); |
if (relevance) |
matches_.push_back(ShortcutToACMatch(relevance, term_string, it->second)); |
} |
@@ -177,7 +178,7 @@ void ShortcutsProvider::GetMatches(const AutocompleteInput& input) { |
// Reset relevance scores to guarantee no results are given an |
// inlineable score and all scores are decreasing (but not do assign |
// any scores below 1). |
- int max_relevance = AutocompleteResult::kLowestDefaultScore - 1; |
+ max_relevance = AutocompleteResult::kLowestDefaultScore - 1; |
for (ACMatches::iterator it = matches_.begin(); it != matches_.end(); ++it) { |
max_relevance = std::min(max_relevance, it->relevance); |
it->relevance = max_relevance; |
@@ -338,7 +339,8 @@ history::ShortcutsBackend::ShortcutMap::const_iterator |
int ShortcutsProvider::CalculateScore( |
const string16& terms, |
- const history::ShortcutsBackend::Shortcut& shortcut) { |
+ const history::ShortcutsBackend::Shortcut& shortcut, |
+ int max_relevance) { |
DCHECK(!terms.empty()); |
DCHECK_LE(terms.length(), shortcut.text.length()); |
@@ -348,7 +350,7 @@ int ShortcutsProvider::CalculateScore( |
// directly. This makes sense since the first characters typed are much more |
// important for determining how likely it is a user wants a particular |
// shortcut than are the remaining continued characters. |
- double base_score = max_relevance_ * |
+ double base_score = max_relevance * |
sqrt(static_cast<double>(terms.length()) / shortcut.text.length()); |
// Then we decay this by half each week. |