Chromium Code Reviews| Index: chrome/browser/ui/views/frame/system_menu_model_delegate.cc |
| diff --git a/chrome/browser/ui/views/frame/system_menu_model_delegate.cc b/chrome/browser/ui/views/frame/system_menu_model_delegate.cc |
| index 380dc81bbee3f52b312951b737a25878575948c6..9d5444bfdddfabfb68e506ca4a81729bdfb44ff5 100644 |
| --- a/chrome/browser/ui/views/frame/system_menu_model_delegate.cc |
| +++ b/chrome/browser/ui/views/frame/system_menu_model_delegate.cc |
| @@ -37,7 +37,23 @@ bool SystemMenuModelDelegate::IsCommandIdChecked(int command_id) const { |
| } |
| bool SystemMenuModelDelegate::IsCommandIdEnabled(int command_id) const { |
| - return chrome::IsCommandEnabled(browser_, command_id); |
| + if (!chrome::IsCommandEnabled(browser_, command_id)) |
| + return false; |
| + |
| + if (command_id != IDC_RESTORE_TAB) |
| + return true; |
| + |
| + // IDC_RESTORE_TAB is initially true while TabRestoreService loads. Return |
| + // false if this is the case as we don't have a good way to dynamically update |
| + // the menu. |
|
pkotwicz
2014/08/19 21:12:14
Nit: chrome::IsCommandEnabled() returns true for I
sky
2014/08/19 21:35:08
Done.
|
| + // TODO(sky): add a way to update menu. |
| + TabRestoreService* trs = |
| + TabRestoreServiceFactory::GetForProfile(browser_->profile()); |
| + if (!trs->IsLoaded()) { |
| + trs->LoadTabsFromLastSession(); |
| + return false; |
| + } |
| + return true; |
| } |
| bool SystemMenuModelDelegate::GetAcceleratorForCommandId(int command_id, |
| @@ -57,7 +73,9 @@ base::string16 SystemMenuModelDelegate::GetLabelForCommandId( |
| if (IsCommandIdEnabled(command_id)) { |
| TabRestoreService* trs = |
| TabRestoreServiceFactory::GetForProfile(browser_->profile()); |
| - if (trs && trs->entries().front()->type == TabRestoreService::WINDOW) |
| + trs->LoadTabsFromLastSession(); |
| + if (trs && !trs->entries().empty() && |
| + trs->entries().front()->type == TabRestoreService::WINDOW) |
| string_id = IDS_RESTORE_WINDOW; |
| } |
| return l10n_util::GetStringUTF16(string_id); |