| Index: chrome/browser/autocomplete/bookmark_provider.cc
|
| diff --git a/chrome/browser/autocomplete/bookmark_provider.cc b/chrome/browser/autocomplete/bookmark_provider.cc
|
| index dd734cec20b1d693dbe60feb0243a3ec147fba14..b465cba359e42e4ef082885862dc0dbe8884239f 100644
|
| --- a/chrome/browser/autocomplete/bookmark_provider.cc
|
| +++ b/chrome/browser/autocomplete/bookmark_provider.cc
|
| @@ -22,6 +22,7 @@
|
| #include "components/omnibox/autocomplete_result.h"
|
| #include "components/omnibox/url_prefix.h"
|
| #include "net/base/net_util.h"
|
| +#include "url/url_constants.h"
|
|
|
| using bookmarks::BookmarkMatch;
|
|
|
| @@ -261,10 +262,9 @@ AutocompleteMatch BookmarkProvider::BookmarkMatchToACMatch(
|
| // between these high-quality bookmarks.
|
| //
|
| // The normalized value is multiplied against the scoring range available,
|
| - // which is 299. The 299 is calculated by subtracting the minimum possible
|
| - // score, 900, from the maximum possible score, 1199. This product, ranging
|
| - // from 0 to 299, is added to the minimum possible score, 900, giving the
|
| - // preliminary score.
|
| + // which is the difference between the minimum possible score and the maximum
|
| + // possible score. This product is added to the minimum possible score to
|
| + // give the preliminary score.
|
| //
|
| // If the preliminary score is less than the maximum possible score, 1199,
|
| // it can be boosted up to that maximum possible score if the URL referenced
|
| @@ -286,12 +286,19 @@ AutocompleteMatch BookmarkProvider::BookmarkMatchToACMatch(
|
| for_each(bookmark_match.url_match_positions.begin(),
|
| bookmark_match.url_match_positions.end(),
|
| ScoringFunctor(bookmark_match.node->url().spec().length()));
|
| - const double summed_factors = title_position_functor.ScoringFactor() +
|
| + const double title_match_strength = title_position_functor.ScoringFactor();
|
| + const double summed_factors = title_match_strength +
|
| url_position_functor.ScoringFactor();
|
| const double normalized_sum =
|
| std::min(summed_factors / (title.size() + 10), 1.0);
|
| - const int kBaseBookmarkScore = 900;
|
| - const int kMaxBookmarkScore = 1199;
|
| + // Bookmarks with javascript scheme ("bookmarklets") that do not have title
|
| + // matches get a lower base and lower maximum score because returning them
|
| + // for matches in their (often very long) URL looks stupid and is often not
|
| + // intended by the user.
|
| + const bool bookmarklet_without_title_match =
|
| + url.SchemeIs(url::kJavaScriptScheme) && (title_match_strength == 0.0);
|
| + const int kBaseBookmarkScore = bookmarklet_without_title_match ? 400 : 900;
|
| + const int kMaxBookmarkScore = bookmarklet_without_title_match ? 799 : 1199;
|
| const double kBookmarkScoreRange =
|
| static_cast<double>(kMaxBookmarkScore - kBaseBookmarkScore);
|
| match.relevance = static_cast<int>(normalized_sum * kBookmarkScoreRange) +
|
|
|