Index: chrome/renderer/searchbox/searchbox.cc |
diff --git a/chrome/renderer/searchbox/searchbox.cc b/chrome/renderer/searchbox/searchbox.cc |
index 287fad330eab28167e5ae9c318ab51eb2bf513d9..2c712380f7eb85f58832b845295e92da3800d81f 100644 |
--- a/chrome/renderer/searchbox/searchbox.cc |
+++ b/chrome/renderer/searchbox/searchbox.cc |
@@ -24,6 +24,39 @@ namespace { |
// Size of the results cache. |
const size_t kMaxInstantAutocompleteResultItemCacheSize = 100; |
+bool DidThemeInfoChange(const ThemeBackgroundInfo& theme_info, |
+ const ThemeBackgroundInfo& old_theme_info) { |
+ return old_theme_info.color_r != theme_info.color_r || |
+ old_theme_info.color_g != theme_info.color_g || |
+ old_theme_info.color_b != theme_info.color_b || |
+ old_theme_info.color_a != theme_info.color_a || |
+ old_theme_info.theme_id != theme_info.theme_id || |
+ old_theme_info.image_horizontal_alignment != |
+ theme_info.image_horizontal_alignment || |
+ old_theme_info.image_vertical_alignment != |
+ theme_info.image_vertical_alignment || |
+ old_theme_info.image_tiling != theme_info.image_tiling || |
+ old_theme_info.image_height != theme_info.image_height || |
+ old_theme_info.has_attribution != theme_info.has_attribution; |
+} |
+ |
+bool DidMostVisitedItemsChange( |
samarth
2013/05/04 00:41:54
Sorry for the back and forth, but one more change:
Anuj
2013/05/04 01:00:01
Done.
|
+ const std::vector<InstantMostVisitedItemIDPair>& items, |
+ const std::vector<InstantMostVisitedItemIDPair>& old_items) { |
+ bool most_visited_changed = old_items.size() != items.size(); |
+ if (!most_visited_changed) { |
+ for (size_t i = 0; i < items.size(); i++) { |
+ InstantMostVisitedItem old_item = old_items[i].second; |
+ InstantMostVisitedItem new_item = items[i].second; |
+ if (new_item.url != old_item.url || new_item.title != old_item.title) { |
+ most_visited_changed = true; |
+ break; |
+ } |
+ } |
+ } |
+ return most_visited_changed; |
+} |
+ |
} // namespace |
SearchBox::SearchBox(content::RenderView* render_view) |
@@ -329,6 +362,8 @@ void SearchBox::OnSetDisplayInstantResults(bool display_instant_results) { |
} |
void SearchBox::OnThemeChanged(const ThemeBackgroundInfo& theme_info) { |
+ if (!DidThemeInfoChange(theme_info, theme_info_)) |
+ return; |
theme_info_ = theme_info; |
if (render_view()->GetWebView() && render_view()->GetWebView()->mainFrame()) { |
extensions_v8::SearchBoxExtension::DispatchThemeChange( |
@@ -377,6 +412,11 @@ void SearchBox::SetQuery(const string16& query, bool verbatim) { |
void SearchBox::OnMostVisitedChanged( |
const std::vector<InstantMostVisitedItemIDPair>& items) { |
+ std::vector<InstantMostVisitedItemIDPair> old_items; |
+ most_visited_items_cache_.GetCurrentItems(&old_items); |
+ if (!DidMostVisitedItemsChange(items, old_items)) |
+ return; |
+ |
most_visited_items_cache_.AddItemsWithRestrictedID(items); |
if (render_view()->GetWebView() && render_view()->GetWebView()->mainFrame()) { |