summaryrefslogtreecommitdiffstats
path: root/chrome/browser/browser.cc
diff options
context:
space:
mode:
authorestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-05-27 22:05:13 +0000
committerestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-05-27 22:05:13 +0000
commit28191891f2389382e4e53d004e04a74bcb1b152e (patch)
treeba47a955a1347bf43585c6e5c8ae23116eb8b49e /chrome/browser/browser.cc
parent1f05db25d586c82e8420a8a28c1d0b6a7bcf44e6 (diff)
downloadchromium_src-28191891f2389382e4e53d004e04a74bcb1b152e.zip
chromium_src-28191891f2389382e4e53d004e04a74bcb1b152e.tar.gz
chromium_src-28191891f2389382e4e53d004e04a74bcb1b152e.tar.bz2
Inform the command updater of the tab restore state.
BUG=14428 TEST=TabRestoreUITest.* Review URL: http://codereview.chromium.org/2228004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@48437 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/browser.cc')
-rw-r--r--chrome/browser/browser.cc29
1 files changed, 24 insertions, 5 deletions
diff --git a/chrome/browser/browser.cc b/chrome/browser/browser.cc
index 0687eca..608b963 100644
--- a/chrome/browser/browser.cc
+++ b/chrome/browser/browser.cc
@@ -64,7 +64,6 @@
#include "chrome/browser/renderer_host/site_instance.h"
#include "chrome/browser/sessions/session_service.h"
#include "chrome/browser/sessions/session_types.h"
-#include "chrome/browser/sessions/tab_restore_service.h"
#include "chrome/browser/status_bubble.h"
#include "chrome/browser/sync/profile_sync_service.h"
#include "chrome/browser/sync/sync_ui_util.h"
@@ -232,6 +231,12 @@ Browser::Browser(Type type, Profile* profile)
use_vertical_tabs_.SetValue(false);
}
UpdateTabStripModelInsertionPolicy();
+
+ tab_restore_service_ = profile->GetTabRestoreService();
+ if (tab_restore_service_) {
+ tab_restore_service_->AddObserver(this);
+ TabRestoreServiceChanged(tab_restore_service_);
+ }
}
Browser::~Browser() {
@@ -275,6 +280,8 @@ Browser::~Browser() {
// away so they don't try and call back to us.
if (select_file_dialog_.get())
select_file_dialog_->ListenerDestroyed();
+
+ TabRestoreServiceDestroyed(tab_restore_service_);
}
// static
@@ -969,8 +976,7 @@ void Browser::ReplaceRestoredTab(
}
bool Browser::CanRestoreTab() {
- TabRestoreService* service = profile_->GetTabRestoreService();
- return service && !service->entries().empty();
+ return command_updater_.IsCommandEnabled(IDC_RESTORE_TAB);
}
bool Browser::NavigateToIndexWithDisposition(int index,
@@ -3005,6 +3011,7 @@ void Browser::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);
command_updater_.UpdateCommandEnabled(IDC_FULLSCREEN, true);
command_updater_.UpdateCommandEnabled(IDC_EXIT, true);
@@ -3111,8 +3118,6 @@ void Browser::InitCommandState() {
command_updater_.UpdateCommandEnabled(IDC_SELECT_TAB_6, normal_window);
command_updater_.UpdateCommandEnabled(IDC_SELECT_TAB_7, normal_window);
command_updater_.UpdateCommandEnabled(IDC_SELECT_LAST_TAB, normal_window);
- command_updater_.UpdateCommandEnabled(IDC_RESTORE_TAB,
- !profile_->IsOffTheRecord());
// Page-related commands
command_updater_.UpdateCommandEnabled(IDC_BOOKMARK_PAGE, normal_window);
@@ -3881,6 +3886,20 @@ bool Browser::RunUnloadEventsHelper(TabContents* contents) {
return false;
}
+void Browser::TabRestoreServiceChanged(TabRestoreService* service) {
+ command_updater_.UpdateCommandEnabled(IDC_RESTORE_TAB,
+ !service->entries().empty());
+}
+
+void Browser::TabRestoreServiceDestroyed(TabRestoreService* service) {
+ if (!tab_restore_service_)
+ return;
+
+ DCHECK_EQ(tab_restore_service_, service);
+ tab_restore_service_->RemoveObserver(this);
+ tab_restore_service_ = NULL;
+}
+
bool Browser::IsPinned(TabContents* source) {
int index = tabstrip_model_.GetIndexOfTabContents(source);
if (index == TabStripModel::kNoTab) {