Index: chrome/browser/ui/search/instant_page.cc |
diff --git a/chrome/browser/ui/search/instant_page.cc b/chrome/browser/ui/search/instant_page.cc |
index 9177352ceaf91302af700ebf926b2036c93d1002..e7a52752e499490ad950de8e43869b82e7bd0788 100644 |
--- a/chrome/browser/ui/search/instant_page.cc |
+++ b/chrome/browser/ui/search/instant_page.cc |
@@ -7,13 +7,18 @@ |
#include "apps/app_launcher.h" |
#include "base/strings/utf_string_conversions.h" |
#include "chrome/browser/chrome_notification_types.h" |
+#include "chrome/browser/history/most_visited_tiles_experiment.h" |
+#include "chrome/browser/history/top_sites.h" |
#include "chrome/browser/profiles/profile.h" |
#include "chrome/browser/search/instant_service.h" |
#include "chrome/browser/search/instant_service_factory.h" |
#include "chrome/browser/search/search.h" |
+#include "chrome/browser/ui/browser_finder.h" |
#include "chrome/browser/ui/search/instant_tab.h" |
#include "chrome/browser/ui/search/search_model.h" |
#include "chrome/browser/ui/search/search_tab_helper.h" |
+#include "chrome/browser/ui/tabs/tab_strip_model.h" |
+#include "chrome/browser/ui/tabs/tab_strip_model_utils.h" |
#include "chrome/common/render_messages.h" |
#include "chrome/common/url_constants.h" |
#include "content/public/browser/navigation_controller.h" |
@@ -187,7 +192,10 @@ void InstantPage::ThemeInfoChanged(const ThemeBackgroundInfo& theme_info) { |
void InstantPage::MostVisitedItemsChanged( |
const std::vector<InstantMostVisitedItem>& items) { |
- sender()->SendMostVisitedItems(items); |
+ std::vector<InstantMostVisitedItem> items_copy(items); |
+ MaybeRemoveMostVisitedItems(&items_copy); |
+ |
+ sender()->SendMostVisitedItems(items_copy); |
content::NotificationService::current()->Notify( |
chrome::NOTIFICATION_INSTANT_SENT_MOST_VISITED_ITEMS, |
@@ -283,3 +291,28 @@ void InstantPage::ClearContents() { |
sender()->SetContents(NULL); |
Observe(NULL); |
} |
+ |
+void InstantPage::MaybeRemoveMostVisitedItems( |
+ std::vector<InstantMostVisitedItem>* items) { |
+// The code below uses APIs not available on Android and the experiment should |
+// not run there. |
+#if !defined(OS_ANDROID) |
+ if (!history::MostVisitedTilesExperiment::IsDontShowOpenURLsEnabled()) |
+ return; |
+ |
+ TabStripModel* tab_strip_model = chrome::FindBrowserWithProfile( |
+ profile_, |
+ chrome::GetActiveDesktop())->tab_strip_model(); |
+ history::TopSites* top_sites = profile_->GetTopSites(); |
+ if (!tab_strip_model || !top_sites) { |
+ NOTREACHED(); |
+ return; |
+ } |
+ |
+ std::set<std::string> open_urls; |
+ chrome::GetOpenUrls(*tab_strip_model, *top_sites, &open_urls); |
+ history::MostVisitedTilesExperiment::RemoveItemsMatchingOpenTabs( |
+ open_urls, items); |
+ |
+#endif |
+} |