summaryrefslogtreecommitdiffstats
path: root/chrome/browser/ui/browser_command_controller.cc
diff options
context:
space:
mode:
authorsky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-08-15 09:12:53 +0000
committersky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-08-15 09:14:38 +0000
commit2e9369e438556afe99c97ef7465744c0008abb29 (patch)
tree87443527af8f80fe4ae0e3168fbb3dffac085cfd /chrome/browser/ui/browser_command_controller.cc
parent728d945c4ba9ecaba9268927a3b3d000b3ff3273 (diff)
downloadchromium_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.cc23
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()) &&