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

Unified Diff: chrome/renderer/searchbox/searchbox.cc

Issue 12498002: InstantExtended: Adding InstantRestrictedIDCache. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: chrome/renderer/searchbox/searchbox.cc
diff --git a/chrome/renderer/searchbox/searchbox.cc b/chrome/renderer/searchbox/searchbox.cc
index 3631412b48337beae307be724140cdaa2384a916..fdd7b83e7c91cb7d33b9d0f1a3eca72c9bd69fc8 100644
--- a/chrome/renderer/searchbox/searchbox.cc
+++ b/chrome/renderer/searchbox/searchbox.cc
@@ -18,6 +18,8 @@ const char kThumbnailUrlPrefix[] = "chrome-search://thumb/";
// Prefix for a thumbnail URL.
const char kFaviconUrlPrefix[] = "chrome-search://favicon/";
+// Size of the results cache.
+const size_t kMaxResultsCacheSize = 1000;
}
SearchBox::SearchBox(content::RenderView* render_view)
@@ -26,9 +28,8 @@ SearchBox::SearchBox(content::RenderView* render_view)
verbatim_(false),
selection_start_(0),
selection_end_(0),
- results_base_(0),
start_margin_(0),
- last_results_base_(0),
+ autocomplete_results_cache_(kMaxResultsCacheSize),
is_key_capture_enabled_(false),
display_instant_results_(false),
omnibox_font_size_(0),
@@ -106,22 +107,17 @@ gfx::Rect SearchBox::GetPopupBounds() const {
static_cast<int>(popup_bounds_.height() / zoom));
}
-const std::vector<InstantAutocompleteResult>&
- SearchBox::GetAutocompleteResults() {
- // Remember the last requested autocomplete_results to account for race
- // conditions between autocomplete providers returning new data and the user
- // clicking on a suggestion.
- last_autocomplete_results_ = autocomplete_results_;
- last_results_base_ = results_base_;
- return autocomplete_results_;
+void SearchBox::GetAutocompleteResults(
+ std::vector<std::pair<size_t, InstantAutocompleteResult> >*
+ results) const {
+ autocomplete_results_cache_.GetCurrentItems(results);
}
-const InstantAutocompleteResult* SearchBox::GetAutocompleteResultWithId(
- size_t restricted_id) const {
- if (restricted_id < last_results_base_ ||
- restricted_id >= last_results_base_ + last_autocomplete_results_.size())
- return NULL;
- return &last_autocomplete_results_[restricted_id - last_results_base_];
+bool SearchBox::GetAutocompleteResultWithId(
+ size_t restricted_id,
+ InstantAutocompleteResult* result) const {
+ return autocomplete_results_cache_.GetItemWithRestrictedId(restricted_id,
+ result);
}
const ThemeBackgroundInfo& SearchBox::GetThemeBackgroundInfo() {
@@ -235,8 +231,7 @@ void SearchBox::OnDetermineIfPageSupportsInstant() {
void SearchBox::OnAutocompleteResults(
const std::vector<InstantAutocompleteResult>& results) {
- results_base_ += autocomplete_results_.size();
- autocomplete_results_ = results;
+ autocomplete_results_cache_.AddItems(results);
if (render_view()->GetWebView() && render_view()->GetWebView()->mainFrame()) {
DVLOG(1) << render_view() << " OnAutocompleteResults";
extensions_v8::SearchBoxExtension::DispatchAutocompleteResults(
@@ -307,10 +302,9 @@ void SearchBox::Reset() {
verbatim_ = false;
selection_start_ = 0;
selection_end_ = 0;
- results_base_ = 0;
popup_bounds_ = gfx::Rect();
+ autocomplete_results_cache_.Reset();
start_margin_ = 0;
- autocomplete_results_.clear();
is_key_capture_enabled_ = false;
theme_info_ = ThemeBackgroundInfo();
// Don't reset display_instant_results_ to prevent clearing it on committed

Powered by Google App Engine
This is Rietveld 408576698