Index: chrome/browser/ui/webui/ntp/recently_closed_tabs_handler.cc |
diff --git a/chrome/browser/ui/webui/ntp/recently_closed_tabs_handler.cc b/chrome/browser/ui/webui/ntp/recently_closed_tabs_handler.cc |
index 5e751f8108974652c20d2007aa690c7b00499327..f58d61b7a3e6ab95183ecfa1a09edb1b37009cf1 100644 |
--- a/chrome/browser/ui/webui/ntp/recently_closed_tabs_handler.cc |
+++ b/chrome/browser/ui/webui/ntp/recently_closed_tabs_handler.cc |
@@ -6,6 +6,7 @@ |
#include "base/metrics/histogram.h" |
#include "chrome/browser/profiles/profile.h" |
+#include "chrome/browser/sessions/session_utils.h" |
#include "chrome/browser/sessions/tab_restore_service_delegate.h" |
#include "chrome/browser/sessions/tab_restore_service_factory.h" |
#include "chrome/browser/ui/webui/ntp/new_tab_ui.h" |
@@ -14,24 +15,6 @@ |
namespace { |
-bool IsTabUnique(const DictionaryValue* tab, |
- std::set<std::string>* unique_items) { |
- DCHECK(unique_items); |
- std::string title; |
- std::string url; |
- if (tab->GetString("title", &title) && |
- tab->GetString("url", &url)) { |
- // TODO(viettrungluu): this isn't obviously reliable, since different |
- // combinations of titles/urls may conceivably yield the same string. |
- std::string unique_key = title + url; |
- if (unique_items->find(unique_key) != unique_items->end()) |
- return false; |
- else |
- unique_items->insert(unique_key); |
- } |
- return true; |
-} |
- |
bool TabToValue(const TabRestoreService::Tab& tab, |
DictionaryValue* dictionary) { |
if (tab.navigations.empty()) |
@@ -94,7 +77,8 @@ void RecentlyClosedTabsHandler::HandleReopenTab(const ListValue* args) { |
if (!ExtractIntegerValue(args, &session_to_restore)) |
return; |
- const TabRestoreService::Entries& entries = tab_restore_service_->entries(); |
+ TabRestoreService::Entries entries; |
+ SessionUtils::FilteredEntries(tab_restore_service_->entries(), &entries); |
int index = 0; |
for (TabRestoreService::Entries::const_iterator iter = entries.begin(); |
iter != entries.end(); ++iter, ++index) { |
@@ -133,7 +117,10 @@ void RecentlyClosedTabsHandler::HandleGetRecentlyClosedTabs( |
void RecentlyClosedTabsHandler::TabRestoreServiceChanged( |
TabRestoreService* service) { |
ListValue list_value; |
- AddRecentlyClosedEntries(service->entries(), &list_value); |
+ TabRestoreService::Entries entries; |
+ SessionUtils::FilteredEntries(service->entries(), &entries); |
+ |
+ AddRecentlyClosedEntries(entries, &list_value); |
web_ui_->CallJavascriptFunction("recentlyClosedTabs", list_value); |
} |
@@ -148,7 +135,6 @@ void RecentlyClosedTabsHandler::AddRecentlyClosedEntries( |
const TabRestoreService::Entries& entries, ListValue* entry_list_value) { |
const int max_count = 10; |
int added_count = 0; |
- std::set<std::string> unique_items; |
// We filter the list of recently closed to only show 'interesting' entries, |
// where an interesting entry is either a closed window or a closed tab |
// whose selected navigation is not the new tab ui. |
@@ -159,8 +145,7 @@ void RecentlyClosedTabsHandler::AddRecentlyClosedEntries( |
if ((entry->type == TabRestoreService::TAB && |
TabToValue( |
*static_cast<TabRestoreService::Tab*>(entry), |
- entry_dict.get()) && |
- IsTabUnique(entry_dict.get(), &unique_items)) || |
+ entry_dict.get())) || |
(entry->type == TabRestoreService::WINDOW && |
WindowToValue( |
*static_cast<TabRestoreService::Window*>(entry), |