diff options
author | sky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-08-15 09:12:53 +0000 |
---|---|---|
committer | sky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-08-15 09:14:38 +0000 |
commit | 2e9369e438556afe99c97ef7465744c0008abb29 (patch) | |
tree | 87443527af8f80fe4ae0e3168fbb3dffac085cfd /chrome/browser/ui/browser_command_controller.cc | |
parent | 728d945c4ba9ecaba9268927a3b3d000b3ff3273 (diff) | |
download | chromium_src-2e9369e438556afe99c97ef7465744c0008abb29.zip chromium_src-2e9369e438556afe99c97ef7465744c0008abb29.tar.gz chromium_src-2e9369e438556afe99c97ef7465744c0008abb29.tar.bz2 |
Makes restoring a tab work via accelerators on startup
Currently the accelerator tab-restore code path wasn't triggering a
load, which resulted in tab restore via accelator only working if
someone else triggered loading.
BUG=360495
TEST=covered by test now
R=brettw@chromium.org
Review URL: https://codereview.chromium.org/466523002
Cr-Commit-Position: refs/heads/master@{#289824}
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@289824 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/ui/browser_command_controller.cc')
-rw-r--r-- | chrome/browser/ui/browser_command_controller.cc | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/chrome/browser/ui/browser_command_controller.cc b/chrome/browser/ui/browser_command_controller.cc index f1750da..f50d838 100644 --- a/chrome/browser/ui/browser_command_controller.cc +++ b/chrome/browser/ui/browser_command_controller.cc @@ -816,9 +816,7 @@ void BrowserCommandController::TabBlockedStateChanged( void BrowserCommandController::TabRestoreServiceChanged( TabRestoreService* service) { - command_updater_.UpdateCommandEnabled( - IDC_RESTORE_TAB, - GetRestoreTabType(browser_) != TabStripModelDelegate::RESTORE_NONE); + UpdateTabRestoreCommandState(); } void BrowserCommandController::TabRestoreServiceDestroyed( @@ -826,6 +824,11 @@ void BrowserCommandController::TabRestoreServiceDestroyed( service->RemoveObserver(this); } +void BrowserCommandController::TabRestoreServiceLoaded( + TabRestoreService* service) { + UpdateTabRestoreCommandState(); +} + //////////////////////////////////////////////////////////////////////////////// // BrowserCommandController, private: @@ -874,7 +877,7 @@ void BrowserCommandController::InitCommandState() { command_updater_.UpdateCommandEnabled(IDC_NEW_TAB, true); command_updater_.UpdateCommandEnabled(IDC_CLOSE_TAB, true); command_updater_.UpdateCommandEnabled(IDC_DUPLICATE_TAB, true); - command_updater_.UpdateCommandEnabled(IDC_RESTORE_TAB, false); + UpdateTabRestoreCommandState(); #if defined(OS_WIN) && defined(USE_ASH) if (browser_->host_desktop_type() != chrome::HOST_DESKTOP_TYPE_ASH) command_updater_.UpdateCommandEnabled(IDC_EXIT, true); @@ -1312,6 +1315,18 @@ void BrowserCommandController::UpdateReloadStopState(bool is_loading, command_updater_.UpdateCommandEnabled(IDC_STOP, is_loading); } +void BrowserCommandController::UpdateTabRestoreCommandState() { + TabRestoreService* tab_restore_service = + TabRestoreServiceFactory::GetForProfile(profile()); + // The command is enabled if the service hasn't loaded yet to trigger loading. + // The command is updated once the load completes. + command_updater_.UpdateCommandEnabled( + IDC_RESTORE_TAB, + tab_restore_service && + (!tab_restore_service->IsLoaded() || + GetRestoreTabType(browser_) != TabStripModelDelegate::RESTORE_NONE)); +} + void BrowserCommandController::UpdateCommandsForFind() { TabStripModel* model = browser_->tab_strip_model(); bool enabled = !model->IsTabBlocked(model->active_index()) && |