| Index: chrome/browser/autocomplete/history_quick_provider.cc
|
| diff --git a/chrome/browser/autocomplete/history_quick_provider.cc b/chrome/browser/autocomplete/history_quick_provider.cc
|
| index 9ec108dc9be85330da2cecfa983496e50c8ea3b8..f961e35bcd88c9b7bd253b5728d304fee3ec287e 100644
|
| --- a/chrome/browser/autocomplete/history_quick_provider.cc
|
| +++ b/chrome/browser/autocomplete/history_quick_provider.cc
|
| @@ -19,15 +19,17 @@
|
| #include "base/time/time.h"
|
| #include "chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.h"
|
| #include "chrome/browser/autocomplete/history_url_provider.h"
|
| +#include "chrome/browser/autocomplete/scored_history_match_builder_impl.h"
|
| +#include "chrome/browser/bookmarks/bookmark_model_factory.h"
|
| #include "chrome/browser/history/history_service.h"
|
| #include "chrome/browser/history/history_service_factory.h"
|
| #include "chrome/browser/history/in_memory_url_index.h"
|
| -#include "chrome/browser/history/scored_history_match.h"
|
| #include "chrome/browser/profiles/profile.h"
|
| #include "chrome/browser/search_engines/template_url_service_factory.h"
|
| #include "chrome/common/chrome_switches.h"
|
| #include "chrome/common/pref_names.h"
|
| #include "chrome/common/url_constants.h"
|
| +#include "components/bookmarks/browser/bookmark_model.h"
|
| #include "components/history/core/browser/history_database.h"
|
| #include "components/history/core/browser/in_memory_url_index_types.h"
|
| #include "components/metrics/proto/omnibox_input_type.pb.h"
|
| @@ -48,6 +50,16 @@ using history::InMemoryURLIndex;
|
| using history::ScoredHistoryMatch;
|
| using history::ScoredHistoryMatches;
|
|
|
| +namespace {
|
| +
|
| +// Returns whether |url| is bookmarked in |bookmark_model| (which can be null
|
| +// during testing). Used for ScoredHistoryMatchBuilderImpl.
|
| +bool IsBookmarked(bookmarks::BookmarkModel* bookmark_model, const GURL& url) {
|
| + return bookmark_model && bookmark_model->IsBookmarked(url);
|
| +}
|
| +
|
| +} // namespace
|
| +
|
| bool HistoryQuickProvider::disabled_ = false;
|
|
|
| HistoryQuickProvider::HistoryQuickProvider(Profile* profile)
|
| @@ -90,10 +102,15 @@ HistoryQuickProvider::~HistoryQuickProvider() {}
|
|
|
| void HistoryQuickProvider::DoAutocomplete() {
|
| // Get the matching URLs from the DB.
|
| - ScoredHistoryMatches matches = GetIndex()->HistoryItemsForTerms(
|
| - autocomplete_input_.text(),
|
| - autocomplete_input_.cursor_position(),
|
| - AutocompleteProvider::kMaxMatches);
|
| + ScoredHistoryMatches matches;
|
| + {
|
| + ScoredHistoryMatchBuilderImpl builder(base::Bind(
|
| + &IsBookmarked,
|
| + base::Unretained(BookmarkModelFactory::GetForProfile(profile_))));
|
| + matches = GetIndex()->HistoryItemsForTerms(
|
| + autocomplete_input_.text(), autocomplete_input_.cursor_position(),
|
| + AutocompleteProvider::kMaxMatches, builder);
|
| + }
|
| if (matches.empty())
|
| return;
|
|
|
| @@ -199,7 +216,7 @@ void HistoryQuickProvider::DoAutocomplete() {
|
| TemplateURLServiceFactory::GetForProfile(profile_);
|
| TemplateURL* template_url = template_url_service ?
|
| template_url_service->GetDefaultSearchProvider() : NULL;
|
| - int max_match_score = matches.begin()->raw_score();
|
| + int max_match_score = matches.begin()->raw_score;
|
| if (will_have_url_what_you_typed_match_first) {
|
| max_match_score = std::min(max_match_score,
|
| url_what_you_typed_match_score - 1);
|
| @@ -214,7 +231,7 @@ void HistoryQuickProvider::DoAutocomplete() {
|
| !template_url->IsSearchURL(history_match.url_info.url(),
|
| template_url_service->search_terms_data())) {
|
| // Set max_match_score to the score we'll assign this result:
|
| - max_match_score = std::min(max_match_score, history_match.raw_score());
|
| + max_match_score = std::min(max_match_score, history_match.raw_score);
|
| matches_.push_back(QuickMatchToACMatch(history_match, max_match_score));
|
| // Mark this max_match_score as being used:
|
| max_match_score--;
|
| @@ -228,7 +245,7 @@ AutocompleteMatch HistoryQuickProvider::QuickMatchToACMatch(
|
| const history::URLRow& info = history_match.url_info;
|
| AutocompleteMatch match(
|
| this, score, !!info.visit_count(),
|
| - history_match.url_matches().empty() ?
|
| + history_match.url_matches.empty() ?
|
| AutocompleteMatchType::HISTORY_TITLE :
|
| AutocompleteMatchType::HISTORY_URL);
|
| match.typed_count = info.typed_count();
|
| @@ -245,19 +262,19 @@ AutocompleteMatch HistoryQuickProvider::QuickMatchToACMatch(
|
| net::UnescapeRule::SPACES, NULL, NULL, NULL),
|
| ChromeAutocompleteSchemeClassifier(profile_));
|
| std::vector<size_t> offsets =
|
| - OffsetsFromTermMatches(history_match.url_matches());
|
| + OffsetsFromTermMatches(history_match.url_matches);
|
| base::OffsetAdjuster::Adjustments adjustments;
|
| match.contents = net::FormatUrlWithAdjustments(
|
| info.url(), languages_, format_types, net::UnescapeRule::SPACES, NULL,
|
| NULL, &adjustments);
|
| base::OffsetAdjuster::AdjustOffsets(adjustments, &offsets);
|
| history::TermMatches new_matches =
|
| - ReplaceOffsetsInTermMatches(history_match.url_matches(), offsets);
|
| + ReplaceOffsetsInTermMatches(history_match.url_matches, offsets);
|
| match.contents_class =
|
| SpansFromTermMatch(new_matches, match.contents.length(), true);
|
|
|
| // Set |inline_autocompletion| and |allowed_to_be_default_match| if possible.
|
| - if (history_match.can_inline()) {
|
| + if (history_match.can_inline) {
|
| DCHECK(!new_matches.empty());
|
| size_t inline_autocomplete_offset = new_matches[0].offset +
|
| new_matches[0].length;
|
| @@ -279,7 +296,7 @@ AutocompleteMatch HistoryQuickProvider::QuickMatchToACMatch(
|
| // Format the description autocomplete presentation.
|
| match.description = info.title();
|
| match.description_class = SpansFromTermMatch(
|
| - history_match.title_matches(), match.description.length(), false);
|
| + history_match.title_matches, match.description.length(), false);
|
|
|
| match.RecordAdditionalInfo("typed count", info.typed_count());
|
| match.RecordAdditionalInfo("visit count", info.visit_count());
|
|
|