Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(278)

Side by Side Diff: chrome/browser/history/url_index_private_data.cc

Issue 296743009: Pass AutocompleteProvider::kMaxMatches to InMemoryURLIndex (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « chrome/browser/history/url_index_private_data.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/history/url_index_private_data.h" 5 #include "chrome/browser/history/url_index_private_data.h"
6 6
7 #include <functional> 7 #include <functional>
8 #include <iterator> 8 #include <iterator>
9 #include <limits> 9 #include <limits>
10 #include <numeric> 10 #include <numeric>
11 #include <string> 11 #include <string>
12 #include <vector> 12 #include <vector>
13 13
14 #include "base/basictypes.h" 14 #include "base/basictypes.h"
15 #include "base/file_util.h" 15 #include "base/file_util.h"
16 #include "base/i18n/break_iterator.h" 16 #include "base/i18n/break_iterator.h"
17 #include "base/i18n/case_conversion.h" 17 #include "base/i18n/case_conversion.h"
18 #include "base/metrics/histogram.h" 18 #include "base/metrics/histogram.h"
19 #include "base/strings/string_util.h" 19 #include "base/strings/string_util.h"
20 #include "base/strings/utf_string_conversions.h" 20 #include "base/strings/utf_string_conversions.h"
21 #include "base/time/time.h" 21 #include "base/time/time.h"
22 #include "chrome/browser/autocomplete/autocomplete_provider.h"
23 #include "chrome/browser/history/history_database.h" 22 #include "chrome/browser/history/history_database.h"
24 #include "chrome/browser/history/history_db_task.h" 23 #include "chrome/browser/history/history_db_task.h"
25 #include "chrome/browser/history/history_service.h" 24 #include "chrome/browser/history/history_service.h"
26 #include "chrome/browser/history/in_memory_url_index.h" 25 #include "chrome/browser/history/in_memory_url_index.h"
27 #include "components/bookmarks/browser/bookmark_service.h" 26 #include "components/bookmarks/browser/bookmark_service.h"
28 #include "components/bookmarks/browser/bookmark_utils.h" 27 #include "components/bookmarks/browser/bookmark_utils.h"
29 #include "net/base/net_util.h" 28 #include "net/base/net_util.h"
30 29
31 #if defined(USE_SYSTEM_PROTOBUF) 30 #if defined(USE_SYSTEM_PROTOBUF)
32 #include <google/protobuf/repeated_field.h> 31 #include <google/protobuf/repeated_field.h>
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
143 : restored_cache_version_(0), 142 : restored_cache_version_(0),
144 saved_cache_version_(kCurrentCacheFileVersion), 143 saved_cache_version_(kCurrentCacheFileVersion),
145 pre_filter_item_count_(0), 144 pre_filter_item_count_(0),
146 post_filter_item_count_(0), 145 post_filter_item_count_(0),
147 post_scoring_item_count_(0) { 146 post_scoring_item_count_(0) {
148 } 147 }
149 148
150 ScoredHistoryMatches URLIndexPrivateData::HistoryItemsForTerms( 149 ScoredHistoryMatches URLIndexPrivateData::HistoryItemsForTerms(
151 base::string16 search_string, 150 base::string16 search_string,
152 size_t cursor_position, 151 size_t cursor_position,
152 size_t max_matches,
153 const std::string& languages, 153 const std::string& languages,
154 BookmarkService* bookmark_service) { 154 BookmarkService* bookmark_service) {
155 // If cursor position is set and useful (not at either end of the 155 // If cursor position is set and useful (not at either end of the
156 // string), allow the search string to be broken at cursor position. 156 // string), allow the search string to be broken at cursor position.
157 // We do this by pretending there's a space where the cursor is. 157 // We do this by pretending there's a space where the cursor is.
158 if ((cursor_position != base::string16::npos) && 158 if ((cursor_position != base::string16::npos) &&
159 (cursor_position < search_string.length()) && 159 (cursor_position < search_string.length()) &&
160 (cursor_position > 0)) { 160 (cursor_position > 0)) {
161 search_string.insert(cursor_position, base::ASCIIToUTF16(" ")); 161 search_string.insert(cursor_position, base::ASCIIToUTF16(" "));
162 } 162 }
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
239 // excludes a long list of whitespace.) One could write a scoring 239 // excludes a long list of whitespace.) One could write a scoring
240 // function that gives a reasonable order to matches when there 240 // function that gives a reasonable order to matches when there
241 // are no terms (i.e., all the words are some form of whitespace), 241 // are no terms (i.e., all the words are some form of whitespace),
242 // but this is such a rare edge case that it's not worth the time. 242 // but this is such a rare edge case that it's not worth the time.
243 return scored_items; 243 return scored_items;
244 } 244 }
245 scored_items = std::for_each(history_id_set.begin(), history_id_set.end(), 245 scored_items = std::for_each(history_id_set.begin(), history_id_set.end(),
246 AddHistoryMatch(*this, languages, bookmark_service, lower_raw_string, 246 AddHistoryMatch(*this, languages, bookmark_service, lower_raw_string,
247 lower_raw_terms, base::Time::Now())).ScoredMatches(); 247 lower_raw_terms, base::Time::Now())).ScoredMatches();
248 248
249 // Select and sort only the top kMaxMatches results. 249 // Select and sort only the top |max_matches| results.
250 if (scored_items.size() > AutocompleteProvider::kMaxMatches) { 250 if (scored_items.size() > max_matches) {
251 std::partial_sort(scored_items.begin(), 251 std::partial_sort(scored_items.begin(),
252 scored_items.begin() + 252 scored_items.begin() +
253 AutocompleteProvider::kMaxMatches, 253 max_matches,
254 scored_items.end(), 254 scored_items.end(),
255 ScoredHistoryMatch::MatchScoreGreater); 255 ScoredHistoryMatch::MatchScoreGreater);
256 scored_items.resize(AutocompleteProvider::kMaxMatches); 256 scored_items.resize(max_matches);
257 } else { 257 } else {
258 std::sort(scored_items.begin(), scored_items.end(), 258 std::sort(scored_items.begin(), scored_items.end(),
259 ScoredHistoryMatch::MatchScoreGreater); 259 ScoredHistoryMatch::MatchScoreGreater);
260 } 260 }
261 post_scoring_item_count_ = scored_items.size(); 261 post_scoring_item_count_ = scored_items.size();
262 262
263 if (was_trimmed) { 263 if (was_trimmed) {
264 search_term_cache_.clear(); // Invalidate the term cache. 264 search_term_cache_.clear(); // Invalidate the term cache.
265 } else { 265 } else {
266 // Remove any stale SearchTermCacheItems. 266 // Remove any stale SearchTermCacheItems.
(...skipping 1070 matching lines...) Expand 10 before | Expand all | Expand 10 after
1337 // recently visited (within the last 12/24 hours) as highly important. Get 1337 // recently visited (within the last 12/24 hours) as highly important. Get
1338 // input from mpearson. 1338 // input from mpearson.
1339 if (r1.typed_count() != r2.typed_count()) 1339 if (r1.typed_count() != r2.typed_count())
1340 return (r1.typed_count() > r2.typed_count()); 1340 return (r1.typed_count() > r2.typed_count());
1341 if (r1.visit_count() != r2.visit_count()) 1341 if (r1.visit_count() != r2.visit_count())
1342 return (r1.visit_count() > r2.visit_count()); 1342 return (r1.visit_count() > r2.visit_count());
1343 return (r1.last_visit() > r2.last_visit()); 1343 return (r1.last_visit() > r2.last_visit());
1344 } 1344 }
1345 1345
1346 } // namespace history 1346 } // namespace history
OLDNEW
« no previous file with comments | « chrome/browser/history/url_index_private_data.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698