Index: chrome/browser/ui/toolbar/recent_tabs_sub_menu_model.cc |
diff --git a/chrome/browser/ui/toolbar/recent_tabs_sub_menu_model.cc b/chrome/browser/ui/toolbar/recent_tabs_sub_menu_model.cc |
index aaac0456e74576a42635edea8511d39e49862da9..938632c65fdf3c28c037b1f92f31f059374e257c 100644 |
--- a/chrome/browser/ui/toolbar/recent_tabs_sub_menu_model.cc |
+++ b/chrome/browser/ui/toolbar/recent_tabs_sub_menu_model.cc |
@@ -464,11 +464,22 @@ void RecentTabsSubMenuModel::BuildLocalEntries() { |
break; |
} |
case sessions::TabRestoreService::WINDOW: { |
- BuildLocalWindowItem( |
- entry->id, |
- static_cast<const sessions::TabRestoreService::Window&>(*entry) |
- .tabs.size(), |
- ++last_local_model_index_); |
+ auto& window = |
+ static_cast<const sessions::TabRestoreService::Window&>(*entry); |
+ // Generate a window entry if the window contained more than 1 tab. |
+ if (window.tabs.size() > 1) { |
sky
2017/05/08 22:51:36
We shouldn't need the special case here. Whether y
chrisha
2017/05/09 15:44:54
Moved this discussion to the bug, as it's slightly
|
+ BuildLocalWindowItem(entry->id, window.tabs.size(), |
+ ++last_local_model_index_); |
+ } else { |
+ // Otherwise, generate a tab entry. This fixes |
+ // http://crbug.com/56744. |
+ auto& tab = *window.tabs[0]; |
+ const sessions::SerializedNavigationEntry& current_navigation = |
+ tab.navigations.at(tab.current_navigation_index); |
+ BuildLocalTabItem(entry->id, current_navigation.title(), |
+ current_navigation.virtual_url(), |
+ ++last_local_model_index_); |
+ } |
break; |
} |
} |