| Index: chrome/browser/autocomplete/search_provider.cc
|
| diff --git a/chrome/browser/autocomplete/search_provider.cc b/chrome/browser/autocomplete/search_provider.cc
|
| index 89d29257b45d18355f036406f556a99ad4426500..d4245fd34e8719b14b02a9213e22a51447052195 100644
|
| --- a/chrome/browser/autocomplete/search_provider.cc
|
| +++ b/chrome/browser/autocomplete/search_provider.cc
|
| @@ -251,11 +251,7 @@ SearchProvider::SearchProvider(AutocompleteProviderListener* listener,
|
| suggest_results_pending_(0),
|
| field_trial_triggered_(false),
|
| field_trial_triggered_in_session_(false),
|
| - omnibox_start_margin_(-1),
|
| - prevent_search_history_inlining_(
|
| - OmniboxFieldTrial::SearchHistoryPreventInlining()),
|
| - disable_search_history_(
|
| - OmniboxFieldTrial::SearchHistoryDisable()) {
|
| + omnibox_start_margin_(-1) {
|
| }
|
|
|
| // static
|
| @@ -630,7 +626,8 @@ void SearchProvider::DoHistoryQuery(bool minimal_changes) {
|
| keyword_history_results_.clear();
|
| default_history_results_.clear();
|
|
|
| - if (disable_search_history_)
|
| + if (OmniboxFieldTrial::SearchHistoryDisable(
|
| + input_.current_page_classification()))
|
| return;
|
|
|
| HistoryService* const history_service =
|
| @@ -1203,6 +1200,9 @@ SearchProvider::SuggestResults SearchProvider::ScoreHistoryResults(
|
| AutocompleteClassifier* classifier =
|
| AutocompleteClassifierFactory::GetForProfile(profile_);
|
| SuggestResults scored_results;
|
| + const bool prevent_search_history_inlining =
|
| + OmniboxFieldTrial::SearchHistoryPreventInlining(
|
| + input_.current_page_classification());
|
| for (HistoryResults::const_iterator i(results.begin()); i != results.end();
|
| ++i) {
|
| // Don't autocomplete multi-word queries that have only been seen once
|
| @@ -1230,8 +1230,9 @@ SearchProvider::SuggestResults SearchProvider::ScoreHistoryResults(
|
| !AutocompleteMatch::IsSearchType(match.type);
|
| }
|
|
|
| - int relevance = CalculateRelevanceForHistory(i->time, is_keyword,
|
| - prevent_inline_autocomplete);
|
| + int relevance = CalculateRelevanceForHistory(
|
| + i->time, is_keyword, !prevent_inline_autocomplete,
|
| + prevent_search_history_inlining);
|
| scored_results.push_back(
|
| SuggestResult(i->term, is_keyword, relevance, false));
|
| }
|
| @@ -1336,22 +1337,23 @@ int SearchProvider::GetKeywordVerbatimRelevance(
|
| int SearchProvider::CalculateRelevanceForHistory(
|
| const base::Time& time,
|
| bool is_keyword,
|
| - bool prevent_inline_autocomplete) const {
|
| + bool use_aggressive_method,
|
| + bool prevent_search_history_inlining) const {
|
| // The relevance of past searches falls off over time. There are two distinct
|
| // equations used. If the first equation is used (searches to the primary
|
| - // provider that we want to inline autocomplete), the score is in the range
|
| - // 1300-1599 (unless |prevent_search_history_inlining_|, in which case
|
| + // provider that we want to score aggressively), the score is in the range
|
| + // 1300-1599 (unless |prevent_search_history_inlining|, in which case
|
| // it's in the range 1200-1299). If the second equation is used the
|
| // relevance of a search 15 minutes ago is discounted 50 points, while the
|
| // relevance of a search two weeks ago is discounted 450 points.
|
| double elapsed_time = std::max((base::Time::Now() - time).InSecondsF(), 0.0);
|
| bool is_primary_provider = is_keyword || !providers_.has_keyword_provider();
|
| - if (is_primary_provider && !prevent_inline_autocomplete) {
|
| + if (is_primary_provider && use_aggressive_method) {
|
| // Searches with the past two days get a different curve.
|
| const double autocomplete_time = 2 * 24 * 60 * 60;
|
| if (elapsed_time < autocomplete_time) {
|
| int max_score = is_keyword ? 1599 : 1399;
|
| - if (prevent_search_history_inlining_)
|
| + if (prevent_search_history_inlining)
|
| max_score = 1299;
|
| return max_score - static_cast<int>(99 *
|
| std::pow(elapsed_time / autocomplete_time, 2.5));
|
|
|